10 ms·
I really feel like they should teach LISP in elementary school. It has extremely simple rules to get started and helps people intuitively understand programming
by proximitysauce 7y ago
I really feel like they should teach LISP in elementary school. It has extremely simple rules to get started and helps people intuitively understand programming concepts. Maybe an updated The Little Schemer style curriculum:
https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992 https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0...
- haolez 7y agoI would prefer Forth. It's simple and yet manages to be close to the hardware.
- proximitysauce 7y agoForth would be great too. I think there's value in learning a stack based language. That being said I suspect LISP is more practical.
- jes5199 7y agothey’re practically two sides of the same coin. I keep thinking it should be possible to build a toy language that has both a forth-like mode and a lisp-like mode, that use the same standard library
- dfox 7y agoForth is more low level, ie. there is no object memory/GC at what one would describe as implementation level. On the other hand all the Lisp Machines essentially are hardware implementations of something vaguely Forth-like with some level of hardware support for lisp-style tagged pointers.
- zentiggr 7y agoA good way to jump over the low level implementation details is to look at Factor. Forth style but much better library and most of the low level constructs are baked in. I can't say the documentation / tutorials that I've found are the best but it's definitely something.
- abecedarius 7y agoThere was a language for calculators called Reverse Polish Lisp. (That's all I know about it.) If I were to design a language matching that name, I guess it'd be basically Logo written backwards. This might be interesting for a live programming environment, because in Lisp you type a whole expression and and nothing happens till you hit enter; but on e.g. an old HP RPN calculator you see the state of the data change after every keypress. You could design an "RPL" to work that way too, though after every word instead of every key.
- RodgerTheGreat 7y agoI think you'd have to hobble Forth pretty badly to make it stand on the same level as Lisp. Lisp has too much hidden machinery- a garbage collector, environment structures, etc. You couldn't even represent forth's "/mod" without resorting to packing results into tuples. Forth is good because every piece of the compiler/interpreter is exposed, usable, and extensible. Lisp wants to keep its innards sealed off and abstracted from the hardware.
- LargoLasskhyfv 7y agoHave you ever heard of [1] https://en.wikipedia.org/wiki/POP-11 https://en.wikipedia.org/wiki/POP-11 ?
- flavio81 7y agoHP's "RPL" language, Reverse Polish Lisp, was basically that.
- agumonkey 7y agothe first who makes his 7yo write a scheme in Forth gets my grid laptop
- kick 7y agoThis isn't at all implausible: one of you should take 'agumonkey up on this! I wrote my first Scheme interpreter at 11, and an older friend of mine taught me Forth a bit before that. I wrote my interpreter with a bootleg (and ancient) APL2 copy, though. With parental guidance, a 7 year old could totally do this. Figuring out how to handle the stack will be the trickiest part, and there are a few examples online of this, so if you nudge them in the direction of others' work, they should be able to get it pretty quickly. They'd finish it by the time they're 8, at least.
- jhbadger 7y agoIn a way they did. in the 1980s, Logo was popularly taught in elementary schools, and while lacking sexps, it was clearly inspired by Lisp in the way it was a functional language in the way the other popular teaching language BASIC clearly wasn't.
- bitwalker 7y agoYeah, I learned Logo in elementary school and it was something that stuck with me until I actually started programming later on in school. I particularly remember having to write a program to navigate a maze, it was a blast!
- qznc 7y agoThe point of Logo is not to teach programming but to teach geometry. At least that is what I took from the Paperts Mindstorms book. I never had Logo in school myself.
- kamaal 7y agoYup. Turtle Geometry is a great book on this. However if you dig deeper geometry is just the beginning eventual goal is to teach you to simulate movement of insects around light, predator-hunted scenarios etc.
- perl4ever 7y agoLogo may have more potential than it seemed at the time, but as it was presented in my school, there was not much to it, and I never investigated further after turning to BASIC and then compiled languages like Pascal and C. I certainly agree with the comment that what matters at an early age is what you can do with a language. I wanted to make GUI applications or games, and Java and Javascript hadn't been invented yet.
- SkyMarshal 7y agoOn the subject of education, pg links to a great story on Scheme (a Lisp 1) in education [1] from his essay "Beating the Averages" [2]. The story references a book, "A Schemer's Guide" that is a good Scheme/Lisp or programming learning reference [3]. If you know folks learning programming for the first time and maybe struggling with Java or whatever they're using, these references may help. Sometimes you just need to see things like recursion or currying in a different way for it to click. [1]:http://www.trollope.org/scheme.html http://www.trollope.org/scheme.html [2]:http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html [3]:https://www.worldcat.org/title/schemers-guide/oclc/24430531 https://www.worldcat.org/title/schemers-guide/oclc/24430531 [4]:https://schemers.org/Documents/ https://schemers.org/Documents/ (more Scheme resources) [5]:https://en.wikipedia.org/wiki/Lisp-1 https://en.wikipedia.org/wiki/Lisp-1
- SomeHacker44 7y agoI did teach my son Racket at age 8, as his first programming language. He was able to make a number guessing game in it. I think we used "Realm of Racket," but I don't recall, as it was some years ago. He's now midway through high school and not a single course at his STEM middle school or high school has come close to teaching him as much as he learned at age 8.
- gowld 7y agoThat difference is more because classes are designed to be extremely slow and low paced so the worst student can pass. Learning anything with a personal tutor is much more efficient.
- cocktailpeanuts 7y agoYou don't understand why kids would want to learn programming. At least those who do, want to learn because they can build cool things they can show off to friends. It's not about whether a programming language is simple or not. (I actually think LISP is not as simple to understand as imperative languages, unlike most nerds think) It's about what you can build with it. For example, my first experience with programming was to build a game. If someone had tried to force-teach me LISP, it would have actually had opposite effect on me because then it would be no different from someone trying to force teach me some boring subject I have no interest in. The best way to teach something is to provide gratification. LISP is only gratifying to nerds who marvel at its "elegance", but it has no ecosystem which has tons of cool projects like fancy graphic engine or fancy game engine. It's just a "cool" language to nerds. DON'T teach your kids LISP if you want them to love programming. Teach them JavaScript or Python, or anything they can build something tangible with which they can show off to their friends.
- bgorman 7y agoWhy not Clojurescript? It has access to the whole JS ecosystem.
- Scarbutt 7y agoToo much friction and incidental complexity for a kid, they will have to be familiar with JS anyway.
- Oreb 7y agoWhy? Even as a professional developer, it’s extremely unusual that my cljs work requires any JS familiarity. I don’t see why a complete beginner would even need to know that JS exists.
- scythe 7y agoI've been teaching myself Clojurescript for the past three months, and while this might, in theory, be a good idea someday, the state of the Clojurescript tooling and learning materials I've used means that it is certainly not a good idea today.
- dnautics 7y agoI learned lisp (edscheme) in elementary school. Wrote a language interpreter in 4 weeks. Interestingly, 2 of my 3 my favorite languages are very lisp-inspired (but of course, without the parentheses)
- Impossible 7y agoWhich languages? JavaScript and Lua?
- dnautics 7y agoElixir and Julia. The third is Zig.
- gowld 7y agoScratch is a better introduction and wildly popular. Scheme is good middle school math classes -- it's smart but doesn't get things done easily. Python is great for getting cool stuff built once kids can handle syntax.
- kyle_grove 7y agoOne might not to want to teach LISP first, for the same reason I wouldn't teach explicit shot mechanics to a six year old playing basketball.
- astrobe_ 7y agoI think being interested in programming or not is pretty much like sexual preferences: there's nothing you can do about it, and it is not their fault ;-).
- shagie 7y agoThey did teach it in elementary school once upon a time. From https://en.wikipedia.org/wiki/Logo_(programming_language) https://en.wikipedia.org/wiki/Logo_(programming_language) > Logo is a multi-paradigm adaptation and dialect of Lisp, a functional programming language. A summary of the language: http://wla.berkeley.edu/~cs61a/fa11/61a-python/content/section_notes/week12/week12.pdf http://wla.berkeley.edu/~cs61a/fa11/61a-python/content/secti... Or the guide for grade schoolers http://www.educa.fmf.uni-lj.si/logo/doc/Apr.96/chpt8.pdf http://www.educa.fmf.uni-lj.si/logo/doc/Apr.96/chpt8.pdf And yes, I remember making the snowflake back in the early 80's on an Apple ][+ in the grade school computer lab.
- pyuser583 7y agoWith great simplicity comes great complexity.
- todd8 7y agoI've programmed for a very long time, and I've rather incidentally taught and tutored programmers at many levels of ability over the years including some friends that were trying to learn LISP. I see very little benefit in teaching elementary school kids to program in LISP. My daughter took her first programming course in college and used the excellent book (HTDP), see [1], intended for beginners that used Racket as the programming language. By the end of the semester she was able to make a simple graphical game. I thought the course was very good and she liked it and still has a fondness for Racket although I believe that she has only used Java, C++, and Python since that class (she is now a CS major). Learning Racket (which is Scheme and very closely related to LISP) worked out well for my daughter, so why would I say that LISP in elementary school isn't a good choice? Several reasons: • Lisp isn't a popular language, ranking 28th on the TIOBE list of programming languages so there is far less opportunities to make use of programming ability in LISP than in other languages. • Lisp isn't easy. The Common Lisp Standard is well over 1000 pages long. It lists over 1000 functions. Take a look at the basic iteration constructs, the most general is LOOP and has a whole chapter, see [2], in Peter Seibel's excellent Practical Common Lisp, but even the simpler DO construct is no cake walk[3]. • Recursion for elementary students... LOL • Smart people have tried introducing LISP based programming to youngsters already and it didn't seem to take off. See Papert's LOGO language from the 80's. I've actually written some programs in it, but I don't remember where I got to use the language. (Perhaps it ran on the PLATO system?). I agree with a number of his insights[4]. Elementary school children don't understand functions and they really don't even understand basic math. The problem with LISP is that while it has an abstract simplicity that I find appealing and really quite beautiful, it's abstract nature is going to make it difficult for children. Less abstract systems like ALICE or SCRATCH seem a better fit if we insist on teaching kids to code. I personally don't see the need to teach kids to code. Why not teach them math first. Why would programming come before understanding how to divide fractions or how polynomials work or what simple logical operations mean? [1] https://en.wikipedia.org/wiki/How_to_Design_Programs https://en.wikipedia.org/wiki/How_to_Design_Programs [2] http://www.gigamonkeys.com/book/loop-for-black-belts.html http://www.gigamonkeys.com/book/loop-for-black-belts.html [3] http://www.lispworks.com/documentation/HyperSpec/Body/m_do_do.htm http://www.lispworks.com/documentation/HyperSpec/Body/m_do_d... [4] https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbWFpbnxha2hsYWdoZWF8Z3g6NzgyOWYxNWNjMjE5ZjVh https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsd...
- goatinaboat 7y agoI really feel like they should teach LISP in elementary school They used to... LOGO is a LISP.
- VLM 7y agoThe entire discussion has so far had no educational perspective. There are only five memes to make educational curriculum decisions. 1) Most arguments for programming are from programmers who had fun learning to program and if the purpose of K12 is fun, then all kids should have mandatory enforced fun time which means learning to program. Which will not work for maybe 99% of society, although they will be subject to the curriculum. I had fun playing kickball; the purpose of school is to create an entertaining daycare like environment; therefore all kids should be forced to spend lots of time playing kickball. What about learning, or kids that don't enjoy kickball (or lisp?) 2) We have to prep our 5 year olds by teaching solely vocational skills because nothing will change in programming for the next 12-16 years. I'm old enough to remember "vocational training" that amounted to memorizing ancient versions of already obsolete Excel menus and keystrokes. Utterly useless. We like to think "Clojure K12" would be teaching Clojure, we all know its going to degenerate to drill and kill multiple choice tests about emacs keystrokes. A giant scantron test of multiple guess questions asking what C-X C-C does in emacs or what does M-f do, isn't going to help kids in the real world 30 years later. Better off teaching them welding, industry trends seem to imply TIG is a forever skill? 3) We teach critical thinking skills and frankly kids that can't conceptually understand and solve X+1=2 for X are not going to get anything out of programming that they wouldn't get better out of algebra or geometry. And what do we drop from the curriculum to add Clojure? Sorry kids you're not going to learn Trig? 4) We'll do what the cool kids do. If the cool kids district buys ipads, we need ipads. We had millions invested involving no further reasoning. Is the cool kids district using LISP? No? Well at least a third of districts won't even consider it, then. 5) The school board makes all curriculum decisions and they got and keep their job based on religion and/or politics and LISP isn't hitting the election issue hot buttons quite like a nice argument about creation science in biology class or sex ed or the new stadium for the football team. Industry does not like LISP because is its very expressive and the programmer has the freedom to express any crazy problem solving idea they have in their head. The problem is the human condition of education for the last couple millennia shows its really kinda hard to take a hyper-customized brain dump of ... anything ... from one head into the other. So, it can do anything, any way you'd like, is too much anarchy for any shared work. How this applies to K-12 is if you think grading essays is a PITA imagine trying to grade large LISP projects.