Even in 2020, I was pleasantly surprised that my kids school teaches Logo at the elementary school level!
However, I had a hard time convincing parents who were suggesting it to be replaced with Python or a more modern programming language :(
You lucky! My kid's school teaches Delphi/TurboPascal (8. grade, first programming language course), which they replaced with Lazarus unable to install Delphi on modern PCs.
On one hand, Lazarus and Free Pascal are great so it is nice to see it being used as an introduction to programming.
On the other hand... Lazarus is way too complicated for someone's first foray into programming, IMO. The IDE throws at you a barrage of windows, buttons, lists, etc that can be almost as overwhelming as an airplane's cockpit :-P.
I always maintained that Free Pascal should either ditch the text mode IDE (outside of looking weird to anyone who didn't grew up with Turbo Pascal, almost no terminal/console works reliably enough for it and even in cases where it works, the IDE itself is very buggy - especially in the recent versions) and develop a simple GUI-based one akin to Turbo Pascal for Windows (ie. something that focuses only on small-sized programs) and have Lazarus as the "next step". Hell, it could even be based on Lazarus since most of its functionality is in the form of reusable components.
There's some merit to both sides. As a kid in the eighties, I remember being annoyed by Logo -- it seemed a toy, and even as I child I wanted to learn the tools with which "real programs" (mostly games) could be written.
Berkeley Logo has higher order mapping functions like "cascade" and "crossmap" which I miss in modern Emacs Lisp with its countless packages for example.
If you want something more fancier, NetLogo provides agent based parallelism which is more suitable for games.
The only thing I miss in (Berkeley) Logo is a better fill function.
Snap! has the full power of Scheme (first class functions, user defined blocks, recursion, closures, continuations, JavaScript integration, etc), with a visual block syntax and playful graphical environment with turtle graphics like Scratch.
The following post is a couple years old, but maybe somebody can provide some updates and recent info!
Edit: I should have RTFA first, which is totally up to date, just published in 2020, from the turtle's mouth:
>Brian Harvey’s Personal Narrative on Snap!: Scheme Disguised as Scratch
>In 2009, the University of California, Berkeley, was one of several universities developing a new kind of introductory computer science course, meant for non-CS majors, to include aspects of the social implications of computing along with the programming content. Scratch wasn’t quite expressive enough to support such a course (it lacked the ability to write recursive functions), soProf. Daniel Garcia and I thought “What’s the smallest change we could make to Scratch to make it usable in our course?” After 20 years teachingStructure and Interpretation of Computer Programs[Abelson et al.1984], the best computer science text ever written, I knew that the answer to “what’s the smallest change” is generally “add lambda.” I joined forces with German programmer Jens Mönig, who had developed BYOB (Build Your Own Blocks), an extension to Scratch with custom (user-defined) blocks, including reporters and predicates. [...]
DonHopkins on July 23, 2018 | parent | favorite | on: Ask HN: Best Lego Mindstorms alternative for fun p...
One of the coolest ways to learn programming I've ever seen is the Snap! visual programming language, which is written in JavaScript and runs in the browser.
https://snap.berkeley.edu
It's the culmination of years of work by Brian Harvey and Jens Mönig and other Smalltalk and education experts. It benefits from their experience and expert understanding about constructionist education, Smalltalk, Scratch, E-Toys, Lisp, Logo, Star Logo, and many other excellent systems.
Snap! takes the best ideas, then freshly and coherently synthesizes them into a visual programming language that kids can use, but is also satisfying to professional programmers, with all the power of Scheme (lexical closures, special forms, macros, continuations, user defined functions and control structures), but deeply integrating and leveraging the web browser and the internet (JavaScript primitives, everything is a first class object, dynamically loaded extensions, etc).
Here's an excellent mind-blowing example by Ken Kahn of what's possible: teaching kids AI programming by integrating Snap! with existing JavaScript libraries and cloud services like AI, machine learning, speech synthesis and recognition, Arduino programming, etc:
AI extensions of Snap! for the eCraft2Learn project
>The eCraft2Learn project is developing a set of extensions to the Snap! programming language to enable children (and non-expert programmers) to build AI programs. You can use all the AI blocks after importing this file into Snap! or Snap4Arduino. Or you can see examples of using these blocks inside this Snap! project.
pgtan|5 years ago
badsectoracula|5 years ago
On the other hand... Lazarus is way too complicated for someone's first foray into programming, IMO. The IDE throws at you a barrage of windows, buttons, lists, etc that can be almost as overwhelming as an airplane's cockpit :-P.
I always maintained that Free Pascal should either ditch the text mode IDE (outside of looking weird to anyone who didn't grew up with Turbo Pascal, almost no terminal/console works reliably enough for it and even in cases where it works, the IDE itself is very buggy - especially in the recent versions) and develop a simple GUI-based one akin to Turbo Pascal for Windows (ie. something that focuses only on small-sized programs) and have Lazarus as the "next step". Hell, it could even be based on Lazarus since most of its functionality is in the form of reusable components.
new2628|5 years ago
pgtan|5 years ago
If you want something more fancier, NetLogo provides agent based parallelism which is more suitable for games.
The only thing I miss in (Berkeley) Logo is a better fill function.
DonHopkins|5 years ago
The following post is a couple years old, but maybe somebody can provide some updates and recent info!
Edit: I should have RTFA first, which is totally up to date, just published in 2020, from the turtle's mouth:
https://escholarship.org/uc/item/1623m1p3
>Brian Harvey’s Personal Narrative on Snap!: Scheme Disguised as Scratch
>In 2009, the University of California, Berkeley, was one of several universities developing a new kind of introductory computer science course, meant for non-CS majors, to include aspects of the social implications of computing along with the programming content. Scratch wasn’t quite expressive enough to support such a course (it lacked the ability to write recursive functions), soProf. Daniel Garcia and I thought “What’s the smallest change we could make to Scratch to make it usable in our course?” After 20 years teachingStructure and Interpretation of Computer Programs[Abelson et al.1984], the best computer science text ever written, I knew that the answer to “what’s the smallest change” is generally “add lambda.” I joined forces with German programmer Jens Mönig, who had developed BYOB (Build Your Own Blocks), an extension to Scratch with custom (user-defined) blocks, including reporters and predicates. [...]
https://news.ycombinator.com/item?id=17594403
DonHopkins on July 23, 2018 | parent | favorite | on: Ask HN: Best Lego Mindstorms alternative for fun p...
One of the coolest ways to learn programming I've ever seen is the Snap! visual programming language, which is written in JavaScript and runs in the browser. https://snap.berkeley.edu
It's the culmination of years of work by Brian Harvey and Jens Mönig and other Smalltalk and education experts. It benefits from their experience and expert understanding about constructionist education, Smalltalk, Scratch, E-Toys, Lisp, Logo, Star Logo, and many other excellent systems.
Snap! takes the best ideas, then freshly and coherently synthesizes them into a visual programming language that kids can use, but is also satisfying to professional programmers, with all the power of Scheme (lexical closures, special forms, macros, continuations, user defined functions and control structures), but deeply integrating and leveraging the web browser and the internet (JavaScript primitives, everything is a first class object, dynamically loaded extensions, etc).
Y Combinator demo:
https://i.imgur.com/cOq8tvR.png
https://snap.berkeley.edu/snapsource/snap.html#present:Usern...
Here's an excellent mind-blowing example by Ken Kahn of what's possible: teaching kids AI programming by integrating Snap! with existing JavaScript libraries and cloud services like AI, machine learning, speech synthesis and recognition, Arduino programming, etc:
AI extensions of Snap! for the eCraft2Learn project
https://ecraft2learn.github.io/ai/
>The eCraft2Learn project is developing a set of extensions to the Snap! programming language to enable children (and non-expert programmers) to build AI programs. You can use all the AI blocks after importing this file into Snap! or Snap4Arduino. Or you can see examples of using these blocks inside this Snap! project.
https://github.com/ecraft2learn/ai
http://lntrg.education.ox.ac.uk/presentation-of-ai-cloud-ser...
Use devices with Snap!:
Orbotix Sphero guide by Connor Hudson and Dan Garcia:
https://docs.google.com/document/d/11wR53OTnofRtTtxZCmxnCUjI...
Lego NXT package by Connor Hudson:
https://github.com/technoboy10/snap-nxt
Nintendo Wiimote package by Connor Hudson:
https://github.com/technoboy10/wiisnap
Finch and Hummingbird robots package by Tom Lauwers:
https://www.hummingbirdkit.com/learning/snap-programming/
Parallax S2 robot package by Connor Hudson:
https://github.com/blockext/s2
LEAP Motion by Connor Hudson:
https://github.com/technoboy10/snapmotion
Speech synthesis by Connor Hudson:
https://github.com/technoboy10/snap2speech
Arduino package by Alan Yorinks:
https://github.com/MrYsLab/s2a_fm
Arduino package by Bernat Romagosa/Citilab:
http://snap4arduino.rocks/
Fischertechnik ROBOTICS TXT Controller by Richard Kunze:
https://github.com/rkunze/ft-robo-snap
Snap! for Raspberry Pi by rasplay.org:
http://downloads.rasplay.org/pisnap/
More Snap! extensions for CS education:
snap-apps.org provides Edgy for graphs, Cellular for multi-agent simulation, and more.
http://snap-apps.org/
http://www.snap-apps.org/edgy.html
http://www.flipt.org/#cellular
Netsblox for multiplayer networking.
https://netsblox.org/