Beginner to programming. References to understand terms.

classic Classic list List threaded Threaded
71 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

steve donovan
On Thu, Apr 27, 2017 at 8:27 PM, Coda Highland <[hidden email]> wrote:
> since then and I see no reason to teach the structured programming
> paradigm the way it was originally designed. Better to focus on modern
> best practices.

Of course. Pascal was important for its time (Fortran was Basic
scramble at a huge scale) but things have moved on. When classic OOP
was introduced, it made sense because it was a better way to structure
large programs. The people who adopted it had learned structured
programming and knew its strengths and weaknesses. A person learning
Java these days has no such background, and so has no feeling for
important things like refactoring methods. OO Design tended to
over-emphasize the nouns, and neglected the verbs. So a little sense
of history may be an important part of programming education.

> I need to learn Rust one of these days. Go... does not impress me, and
> I'm a Xoogler. I just don't get it.

Rust is very ... educational, in a good sense of the word. It's a
useful corrective for people who have been swimming in a sea of
mutable references all their lives, and are tired of shark bites.
Ultimately less complex than C++, but it's sufficiently different to
be hard for both new comers and experienced pros.

http://stevedonovan.github.io/rust-gentle-intro/

> Absolutely! That's why I said Scheme is a great second language --
> introduce it after the students have gotten past the "this is how to
> make the computer do what you want it to do" stage, bring in some new
> fundamentals, really broaden horizons.

Computer science departments used to do this, alas. My old friend who
used to work in the CS department where I grew up, said that it
leveled the field and got people thinking.

But our dear Lua is in fact descended from Scheme as much as she is an
Algol derivative, so I think we can make that 'second language' case
for her as well.

Double alas, people focus too much on vocational training rather than
foundational education. Students want something 'useful' on their
resume, and haven't had enough exposure to know that it's more
important to know how to learn a programming language, than to learn a
specific one.  They want their takeaway fish, and aren't interested in
a fishing rod.

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Enrico Colombini
On 28-Apr-17 11:34, steve donovan wrote:
> http://stevedonovan.github.io/rust-gentle-intro/

Thanks for the tutorial!

--
   Enrico

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Coda Highland
In reply to this post by Dirk Laurie-2
On Thu, Apr 27, 2017 at 5:41 PM, Dirk Laurie <[hidden email]> wrote:

> 2017-04-27 20:27 GMT+02:00 Coda Highland <[hidden email]>:
>
>> That's why I said Scheme is a great second language --
>> introduce it after the students have gotten past the "this is how to
>> make the computer do what you want it to do" stage, bring in some new
>> fundamentals, really broaden horizons.
>
> I have no experience of Scheme, but I have written some Guile,
> which I'm told is litlle more than a rebranding of Scheme. The sheer
> size of the vocabulary is daunting. Doesn't suit my taste at all. Its
> Zen seems to "more is less".
>

Guile isn't a programming language, per se. It's an entire extension
system designed with C++ interop in mind. The programming language at
the core of this system is a dialect of Scheme, but it's had tons of
stuff bolted onto it -- keep in mind that these are the same people
who made EMACS what it is today.

Scheme itself is actually a pretty minimalistic language. There are a
few places where it gets dense, particularly around coroutines, but
for the most part it's a small number of primitives and everything
else is library functions.

/s/ Adam

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Coda Highland
In reply to this post by steve donovan
On Fri, Apr 28, 2017 at 2:34 AM, steve donovan
<[hidden email]> wrote:

> On Thu, Apr 27, 2017 at 8:27 PM, Coda Highland <[hidden email]> wrote:
>> I need to learn Rust one of these days. Go... does not impress me, and
>> I'm a Xoogler. I just don't get it.
>
> Rust is very ... educational, in a good sense of the word. It's a
> useful corrective for people who have been swimming in a sea of
> mutable references all their lives, and are tired of shark bites.
> Ultimately less complex than C++, but it's sufficiently different to
> be hard for both new comers and experienced pros.
>
> http://stevedonovan.github.io/rust-gentle-intro/

*bookmarks* Someday...

>> Absolutely! That's why I said Scheme is a great second language --
>> introduce it after the students have gotten past the "this is how to
>> make the computer do what you want it to do" stage, bring in some new
>> fundamentals, really broaden horizons.
>
> Computer science departments used to do this, alas. My old friend who
> used to work in the CS department where I grew up, said that it
> leveled the field and got people thinking.

Heh. "Leveling the field" might be a less accurate description than
"winnowing the chaff." My CS senior capstone class in college was
taught in Scheme, and I think that one class did more for me as an
engineer than the rest of my four years, but I couldn't believe how
many people had theoretically gone through essentially the same
curriculum I had leading up to that point but couldn't hash it in that
class.

I lost points on one assignment because we were supposed to take a
module written in the previous assignment by another student and use
that to implement a larger program. Unfortunately, the module I
received was completely nonfunctional -- so utterly wrong that there
was no hope of merely debugging it; I had to completely rewrite it,
and my professor chewed me out for not following the instructions.

> But our dear Lua is in fact descended from Scheme as much as she is an
> Algol derivative, so I think we can make that 'second language' case
> for her as well.

Eh. That same argument could be used to justify Javascript in that
role. Not sure I'd recommend THAT, and largely for the same reason --
just because they SUPPORT functional programming doesn't mean anyone
actually writes code that way.

> Double alas, people focus too much on vocational training rather than
> foundational education. Students want something 'useful' on their
> resume, and haven't had enough exposure to know that it's more
> important to know how to learn a programming language, than to learn a
> specific one.  They want their takeaway fish, and aren't interested in
> a fishing rod.

Well, there's two sides of the coin there, as I mentioned upthread:
For the people for whom programming is incidental to their careers,
vocational training is probably the RIGHT choice.

/s/ Adam

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

steve donovan
On Fri, Apr 28, 2017 at 6:05 PM, Coda Highland <[hidden email]> wrote:
> Heh. "Leveling the field" might be a less accurate description than
> "winnowing the chaff."

Point taken. But these were CS majors, so no excuse ;)

> Eh. That same argument could be used to justify Javascript in that
> role. Not sure I'd recommend THAT, and largely for the same reason --
> just because they SUPPORT functional programming doesn't mean anyone
> actually writes code that way.

Well I'm a multi-paradigm kind of person, so I'm cool with that. Point
is you could do a very Scheme-y introduction in Lua (_or_ Javascript,
I'm not proud)

> For the people for whom programming is incidental to their careers,
> vocational training is probably the RIGHT choice.

Oh yes, like an intro to Python for 'data science' students, etc. But
I was definitely thinking of CS majors here.

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

nobody
In reply to this post by Dirk Laurie-2
On 2017-04-26 19:55, Dirk Laurie wrote:

(sorry for the delay)

> 2017-04-26 5:18 GMT+02:00 nobody <[hidden email]>:
>
>> I'd say that if you have a good idea of what you want & have looked
>> at how love2d is structured, it's feasible to get a runnable
>> prototype of a beginner-friendly environment in about 1-2 hours.
>> (Yes, it really is very hackable & close to usable.)  After a few
>> more hours of polishing it should be in acceptable shape to try it
>> on real beginners.  (And then you improve it over the next
>> weeks/months – better error messages, …)
>
> Is this a description of something you are actually working on?

Short answer:  No.

Long answer:  Well, something like that is "simmering" in the
background, but I think such an environment without a tutorial or at
least good documentation is worthless (for the purpose of teaching
beginners), and that would take much more time.  And then there's also this:

   http://worrydream.com/LearnableProgramming/

which is closer to what I'd like to have, and if you take those ideas
and compare them, you'll see that this "beginner-friendly" environment
isn't all that friendly.  ('"Properly" teaching programming/CS' is on my
"long-term todo list", so I'm slowly accumulating stuff that will be
helpful for reaching this.  But that will still take a long time.)

> Some time ago I tried to produce something of the kind […]. When I
> tried running it now, it wouldn't (Love has made some breaking
> changes since 2011).

I had a look at your code.  The history approach is interesting, the
rest is… meh (primarily quite large).  But have this!

diff -urw vilua.A.love/main.lua vilua.B.love/main.lua
--- vilua.A.love/main.lua 2011-11-20 21:44:21.000000000 +0100
+++ vilua.B.love/main.lua 2017-04-27 17:42:23.000000005 +0200
#
# Some time back they split love.graphics, adding love.window.  They
# also renamed some functions.  I think this is the only necessary
# change:
#
@@ -30,3 +30,3 @@
  function love.load()
-   love.graphics.setCaption('Lua with graphics')
+   love.window.setTitle('Lua with graphics')
     deg = math.pi/180
#
# I don't know if this change is necessary, but there's a designated
# function for that purpose:
#
@@ -50 +50 @@
-function signal_quit() love.event.push "q" end
+signal_quit = love.event.quit
#
# Not bored enough to fix it crashing non-reversibly on any error.
# (Also don't know if that's new or always was like that.)
# Try (my favourite) `circle( 100, 100, 50 )` to see what I mean.

> But I can distinctly remember that it took me more than two hours

Right, so that estimate probably mostly applies to me.  (I've explored
most of the necessary features and know how to work around most of the
quirks.)  So the logical conclusion is this:

If anyone wants this ("friendly" REPL and/or (drag&drop?) script runner)
badly enough and has a good idea of what they want, ping me in about a
month (most seminar-related work should be through by then), send a
spec, and I'll build it.  (No fancy stuff like what Bret Victor is doing
– that would need much more research.)

-- nobody

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Russell Haley
On Wed, May 3, 2017 at 11:27 AM, nobody <[hidden email]> wrote:

> On 2017-04-26 19:55, Dirk Laurie wrote:
>
> (sorry for the delay)
>
>> 2017-04-26 5:18 GMT+02:00 nobody <[hidden email]>:
>>
>>> I'd say that if you have a good idea of what you want & have looked
>>> at how love2d is structured, it's feasible to get a runnable
>>> prototype of a beginner-friendly environment in about 1-2 hours.
>>> (Yes, it really is very hackable & close to usable.)  After a few
>>> more hours of polishing it should be in acceptable shape to try it
>>> on real beginners.  (And then you improve it over the next
>>> weeks/months – better error messages, …)
>>
>>
>> Is this a description of something you are actually working on?
>
>
> Short answer:  No.
>
> Long answer:  Well, something like that is "simmering" in the background,
> but I think such an environment without a tutorial or at least good
> documentation is worthless (for the purpose of teaching beginners), and that
> would take much more time.  And then there's also this:
>
>   http://worrydream.com/LearnableProgramming/
>
> which is closer to what I'd like to have, and if you take those ideas
> and compare them, you'll see that this "beginner-friendly" environment
> isn't all that friendly.  ('"Properly" teaching programming/CS' is on my
> "long-term todo list", so I'm slowly accumulating stuff that will be
> helpful for reaching this.  But that will still take a long time.)
>
>> Some time ago I tried to produce something of the kind […]. When I
>> tried running it now, it wouldn't (Love has made some breaking
>> changes since 2011).
>
>
> I had a look at your code.  The history approach is interesting, the
> rest is… meh (primarily quite large).  But have this!
>
> diff -urw vilua.A.love/main.lua vilua.B.love/main.lua
> --- vilua.A.love/main.lua       2011-11-20 21:44:21.000000000 +0100
> +++ vilua.B.love/main.lua       2017-04-27 17:42:23.000000005 +0200
> #
> # Some time back they split love.graphics, adding love.window.  They
> # also renamed some functions.  I think this is the only necessary
> # change:
> #
> @@ -30,3 +30,3 @@
>  function love.load()
> -   love.graphics.setCaption('Lua with graphics')
> +   love.window.setTitle('Lua with graphics')
>     deg = math.pi/180
> #
> # I don't know if this change is necessary, but there's a designated
> # function for that purpose:
> #
> @@ -50 +50 @@
> -function signal_quit() love.event.push "q" end
> +signal_quit = love.event.quit
> #
> # Not bored enough to fix it crashing non-reversibly on any error.
> # (Also don't know if that's new or always was like that.)
> # Try (my favourite) `circle( 100, 100, 50 )` to see what I mean.
>
>> But I can distinctly remember that it took me more than two hours
>
>
> Right, so that estimate probably mostly applies to me.  (I've explored most
> of the necessary features and know how to work around most of the quirks.)
> So the logical conclusion is this:
>
> If anyone wants this ("friendly" REPL and/or (drag&drop?) script runner)
> badly enough and has a good idea of what they want, ping me in about a month
> (most seminar-related work should be through by then), send a spec, and I'll
> build it.  (No fancy stuff like what Bret Victor is doing – that would need
> much more research.)
>
> -- nobody

All these ideas point back to having a "foundation" dedicated to this
sort of thing (i.e. binary distribution, beginner documentation. We
don't need search though. We'll just put a link to Paul Merrells email
address because he knows where it all is! tee hee!). A foundation
would give continuity across the various contributions to these goals
because nobody really wants to do this stuff ALL the time.

Russ

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Paul E. Merrell, J.D.
On Wed, May 3, 2017 at 12:28 PM, Russell Haley [via Lua]
<[hidden email]> wrote:

> All these ideas point back to having a "foundation" dedicated to this
> sort of thing (i.e. binary distribution, beginner documentation. We
> don't need search though. We'll just put a link to Paul Merrells email
> address because he knows where it all is! tee hee!).

Ackkkkkk!!!!! :-)

Please  point  them instead to Lua Resource Links,
<https://sites.google.com/site/marbux/home/lua-resource-links>. Just
finished fixing the malformed links,so hopefully ready for prime-time.
It's a set of links aimed at novice programmers.

Please let me know if you have links that should be added.

Best regards,

Paul

--
[Notice not included in the above original message:  The U.S. National
Security Agency neither confirms nor denies that it intercepted this
message.]
Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Martin
On 05/03/2017 02:15 PM, Paul E. Merrell, J.D. wrote:
> Please  point  them instead to Lua Resource Links,
> <https://sites.google.com/site/marbux/home/lua-resource-links>. Just
> finished fixing the malformed links,so hopefully ready for prime-time.
> It's a set of links aimed at novice programmers.
>
> Please let me know if you have links that should be added.

Good work! I've spotted some probably broken links by random clicking on
your page:

* http://www.dmoz.org/Computers/Programming/Languages/Lua/

* http://luaforge.net/softwaremap/trove_list.php?form_cat=65 (Lua
Integrated Development Environments)

-- Martin

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Paul E. Merrell, J.D.
On Thu, May 4, 2017 at 1:48 AM, Martin <[hidden email]> wrote:

>> Please let me know if you have links that should be added.
>
> Good work! I've spotted some probably broken links by random clicking on
> your page:
>
> * http://www.dmoz.org/Computers/Programming/Languages/Lua/

Good grief! dmoz is  no more. See
<https://en.wikipedia.org/wiki/DMOZ>.  I didn't  see that one  coming.


> * http://luaforge.net/softwaremap/trove_list.php?form_cat=65 (Lua
> Integrated Development Environments)

Looks like they eliminated the landing page for that category. You can
still access the category via the tags page.
<http://luaforge.net/tags/>.

Thanks for the bug reports. Will fix next thing.

Best regards,

Paul

--
[Notice not included in the above original message:  The U.S. National
Security Agency neither confirms nor denies that it intercepted this
message.]

Reply | Threaded
Open this post in threaded view
|

Re: Beginner to programming. References to understand terms.

Paul E. Merrell, J.D.
On Wed, May 3, 2017 at 6:28 PM, Paul Merrell <[hidden email]> wrote:

> Good grief! dmoz is  no more. See
> <https://en.wikipedia.org/wiki/DMOZ>.  I didn't  see that one  coming.
>
>
>> * http://luaforge.net/softwaremap/trove_list.php?form_cat=65 (Lua
>> Integrated Development Environments)
>
> Looks like they eliminated the landing page for that category. You can
> still access the category via the tags page.
> <http://luaforge.net/tags/>.
>
> Thanks for the bug reports. Will fix next thing.

Fixed version plus a few new links is now up at
<https://sites.google.com/site/marbux/home/lua-resource-links>.

Best regards,

Paul

1234