4 ms·
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
by crznthndr 6y ago
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 :(
- new2628 6y agoThere'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.
- pgtan 6y agoBerkeley 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.
- bharvey 6y ago> The only thing I miss in (Berkeley) Logo is a better fill function. Thanks for volunteering! :) The code's at https://github.com/jrincayc/ucblogo-code https://github.com/jrincayc/ucblogo-code
- DonHopkins 6y agoSnap! 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: https://escholarship.org/uc/item/1623m1p3 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 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 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://i.imgur.com/cOq8tvR.png https://snap.berkeley.edu/snapsource/snap.html#present:Username=jens&ProjectName=y%20combinator 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/ 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 https://github.com/ecraft2learn/ai http://lntrg.education.ox.ac.uk/presentation-of-ai-cloud-services-integrated-with-snap-at-the-connective-ubiquitous-technology-for-embodiments-center-of-the-national-university-of-singapore-and-keio-university-on-16-march-2017-by-k/ 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/11wR53OTnofRtTtxZCmxnCUjIlFQjnGewM21A0vmjtFw/edit?usp=sharing https://docs.google.com/document/d/11wR53OTnofRtTtxZCmxnCUjI... Lego NXT package by Connor Hudson: https://github.com/technoboy10/snap-nxt https://github.com/technoboy10/snap-nxt Nintendo Wiimote package by Connor Hudson: https://github.com/technoboy10/wiisnap https://github.com/technoboy10/wiisnap Finch and Hummingbird robots package by Tom Lauwers: https://www.hummingbirdkit.com/learning/snap-programming/ https://www.hummingbirdkit.com/learning/snap-programming/ Parallax S2 robot package by Connor Hudson: https://github.com/blockext/s2 https://github.com/blockext/s2 LEAP Motion by Connor Hudson: https://github.com/technoboy10/snapmotion https://github.com/technoboy10/snapmotion Speech synthesis by Connor Hudson: https://github.com/technoboy10/snap2speech https://github.com/technoboy10/snap2speech Arduino package by Alan Yorinks: https://github.com/MrYsLab/s2a_fm https://github.com/MrYsLab/s2a_fm Arduino package by Bernat Romagosa/Citilab: http://snap4arduino.rocks/ http://snap4arduino.rocks/ Fischertechnik ROBOTICS TXT Controller by Richard Kunze: https://github.com/rkunze/ft-robo-snap https://github.com/rkunze/ft-robo-snap Snap! for Raspberry Pi by rasplay.org: http://downloads.rasplay.org/pisnap/ 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://snap-apps.org/ http://www.snap-apps.org/edgy.html http://www.snap-apps.org/edgy.html http://www.flipt.org/#cellular http://www.flipt.org/#cellular Netsblox for multiplayer networking. https://netsblox.org/ https://netsblox.org/
- bharvey 6y agoThanks for the kind words both about Logo and about Snap!. That article is in fact not yet officially published, but if I'm reading the ACM legalbol correctly, authors are allowed to put an "author's last draft" version on their institutions' web archives, so that's what you found. The article has eight authors, and of course the time required to write something is \Theta(n^2) in the number of authors, so it was a long slog, although worth it because in between yelling at each other we had some great conversations about education and computers and Logo technology. I am inordinately proud of Snap!, which is almost entirely the work of Jens Mönig. My big contribution was to talk him into lambda. (Coming in the next version: APL-style vector and matrix operations. After that we just have to find a way to shoehorn in Prolog and we'll be the unification (pun not intended) of all the good programming languages.)
- DonHopkins 6y agoHey, how about throwing in a perverted, fetishistic, masochistic programming language like FORTH, too? ;) Where do you think Logo and Snap fit into the three basic mental structures of psychosis, perversion, and neurosis, as W Watson describes in "The Pervert's Guide to Programming Languages"? https://news.ycombinator.com/item?id=22910702 https://news.ycombinator.com/item?id=22910702 https://www.youtube.com/watch?v=mZyvIHYn2zk https://www.youtube.com/watch?v=mZyvIHYn2zk https://s3-us-west-2.amazonaws.com/vulk-blog/ThePervertsGuidetoComputerProgramming-ThePaper.pdf https://s3-us-west-2.amazonaws.com/vulk-blog/ThePervertsGuid... I have hope that Snap! has transcended the self-indulgent Turing Tarpit of Melancholy Languages like Scheme, Lisp (which spawned Scheme during a hysterical event), Smalltalk, and languages that never were, as described on the penultimate page. ;) Snap! strikes me more as a Hysterical language, frantically pursuing the object of desire, in pursuit of the perfect syntax. >Hysterical Languages: Hysterical development lends itself to languages that facilitate endless refinements in the code base. The delivered code is never good enough, not merely because of pragmatic reasons but often because of ascetic reasons. The final goal of capturing the elusive domain jargon [59] seems just around the corner, where just one refinement may perfectly represent the domain. Within the hysterical languages there can be two extremes. One extreme is to work towards the capability to easily represent any aesthetic. In this extreme the work and enjoyment are in the development of the language itself [60]. The other extreme is to consciously implement the aesthetic using the language as is [61]. This extreme bends the language to look more aesthetically pleasing. Somewhere in between are refinements to extremely large code bases that must stay available. >[59] “The overhead cost of all the translation, plus the risk of misunderstanding, is just too high. A project needs a common language that is more robust than the lowest common denominator. With a conscious effort by the team, the domain model can provide the backbone for that common language, while connecting team communication to the software implementation. That language can be ubiquitous in the team’s work.”, Evans, Eric (2003-08-22). Domain-Driven Design: Tackling Complexity in the Heart of Software (Kindle Locations 829-832). Pearson Education. Kindle Edition. >[60] “Also, I’m a great fan of evolving as opposed to just starting out new. You might fall in love with one particular idea, and then in order to implement it, you go create a brand-new language that’s great at this new thing. Then, by the way, the 90% that every language must have, it kind of sucks at. There’s just so much of that, whereas if you can evolve an existing language — for example, with C# most recently we’ve really evolved it a lot toward functional programming — it’s all gravy at that point, I feel.”, Biancuzzi, Federico; Chromatic (2009-03-21). Masterminds of Programming: Conversations with the Creators of Major Programming Languages (Theory in Practice (O'Reilly)) (Kindle Locations 7017-7021). O'Reilly Media. Kindle Edition. >[61] “A big part of the modus operandi of the Ruby community is a more fluent approach— trying to make interacting with a library feel like programming in a specialized language. This is a strand of thinking that goes back to one of oldest programming languages, Lisp.”, Fowler, Martin (2010-09-23). Domain-Specific Languages (Addison-Wesley Signature Series (Fowler)) (Kindle Locations 473-475). Pearson Education (USA). Kindle Edition.
- pgtan 6y agoYou 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.
- badsectoracula 6y agoOn 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.
- zozbot234 6y ago> I always maintained that Free Pascal should either ditch the text mode IDE Why not fix the bugs instead? And it shouldn't look weird to anyone who has used TUI programs. In fact, we really should have support for these TUI features (stackable text windows, mouse-controlled menubar and widgets, context-sensitive status-bar) right inside emacs, or some other generic editor. They have stood the test of time wrt. intuitiveness and ergonomics, and it's weird that we still lack them in terminal-like environments.
- badsectoracula 6y agoFor the other reasons besides the bugs. I have used the text mode IDE a lot to write smaller programs and it is always a PITA (just not enough of a PITA to open Lazarus, create a brand new project, etc). And some of that is outside FP's control, like Linux terminal emulators being universally broken when it comes to complex shortcut keys that involve function keys and modifiers. Add to that the the Windows console window now also tries to behave more like a Linux terminal (though even before you still had to manually modify the shortcut to not create a 200 line buffer or whatever that causes the IDE to try and use all those lines as its 'screen' - which is especially annoying when it also decides to display a dialog, which is centered at that 'screen' and you have to scroll to see it, usually after pressing a few keys like Alt+F to open the menu and noticing that nothing happens) and you get even more issues. Honestly the only environments where the FP seems to work (outside other bugs not related to the UI) is DOS and Linux's own console/terminal when running by itself without a window system. In any case i submitted that message too quickly, that "either" part should have been followed with the alternative to keep it around as a fallback for the platforms where a GUI isn't available or in case someone wants it (though considering how broken it is, i doubt anyone is actually seriously using it).