8 ms·
You 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 frie
by cocktailpeanuts 7y ago
You 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.
- abraxas 7y agoIt feels like the Clojure community is kind of withering. Or maybe it's just perpetually stuck in the Lisp niche.
- fulafel 7y agoInteresting observation... not sure I get that from the Clojure community or from looking around. Last year Clojure made it to #1 (2019), improving from #3 (2018) in the SO salary cahrts. (https://insights.stackoverflow.com/survey/2019#top-paying-technologies https://insights.stackoverflow.com/survey/2019#top-paying-te... vs https://insights.stackoverflow.com/survey/2018#top-paying-technologies https://insights.stackoverflow.com/survey/2018#top-paying-te...)
- deleted 7y ago[deleted]
- invalidOrTaken 7y agoThis really is true. I learned Logo in middle school, didn't want to be a programmer, took a Java class in college because it was required for actuarial science, then read some PG essays. Lisp should be forbidden to young programmers, precisely so they'll go seek it out.
- YawningAngel 7y agoYeah but they won't. JavaScript is the most popular programming language precisely because people in general use whatever is put in front of them.
- strken 7y agoJS is popular because it runs in browsers and therefore has a thriving ecosystem with lots of educational resources, lots of opportunity to show your work to other people, and lots of jobs, not because it's taught in schools. Examples of educational languages would be Alice and Logo, and they're both pretty bad at actually doing anything.
- ksaj 7y agoHere's something that might surprise you: https://ccl.northwestern.edu/netlogo/index.shtml https://ccl.northwestern.edu/netlogo/index.shtml This provides a 2D and 3D NetLogo installation. The 3D version blows my mind. You can spend days going through the samples. When you look at the code after you watch a simulation, it's a bit of a shock how compact and readable it is. It's definitely a whole lot more than what they taught you and I alike in middle school. > Lisp should be forbidden to young programmers, precisely so they'll go seek it out. Unless it comes with a turtle, of course. Then they might end up writing the next greatest flocking algorithm.
- kccqzy 7y agoI learned Logo in elementary school. I thought it was required for everyone just because learning about line segments and angles are a part of the maths curriculum and Logo just fits so well.
- mdtusz 7y agoI'd argue that racket's ecosystem is ideal for getting young people interested. You can build gui tools and do graphics programming out of the box, very easily. My go to language to refer people who want to learn is Processing though. Easy to use, and the documentation is fantastic (and Dan Shiffman is IMO the best programming educator out there for kids and adults alike, whether or not you like his high-energy style).
- chairmanwow1 7y agoI absolutely agree. I watched many of his videos as a professional programmer just because it’s fun to watch him build cool visualizations. He’s super charismatic and looks like he’s having genuine fun in figuring things out.
- WalterBright 7y ago> You don't understand why kids would want to learn programming. I started by typing in listings from a book (101 Basic Games). Then I'd start modifying the games. Then I'd write my own. It's how people learn. For a famous example, look at the Beatles. They started by copying other tunes. Then they modified the copies. Then they wrote their own.
- kick 7y agoJohn Carmack seems to disagree. https://twitter.com/id_aa_carmack/status/569688211158511616?lang=en https://twitter.com/id_aa_carmack/status/569688211158511616?... https://groups.google.com/forum/#!topic/racket-users/yjRuIxypUQc https://groups.google.com/forum/#!topic/racket-users/yjRuIxy... (Make sure to look around in this thread; he has a few comments.) https://twitter.com/id_aa_carmack/status/635839636754038784?lang=en https://twitter.com/id_aa_carmack/status/635839636754038784?...
- cocktailpeanuts 7y agoThis is because people who are really great at something have already forgotten what they used to be like when they first started out. They just tend to think everybody would be excited about the cool thing they themselves are excited about. In most cases, people who are masters at something tend to be the worst teachers because by becoming the master they have forgotten how to sympathize with complete newbies.
- kick 7y agoHe successfully taught his child Lisp, in a way that caused that child to release a video game. He didn't forget anything.
- Gatsky 7y agoI think this only proves that you should teach your kid Lisp if you are John Carmack.
- erik_seaberg 7y agoOr that you should teach a kid Lisp if he is a descendent of John Carmack (or probably Paul Graham).
- westoncb 7y agoMaybe descendants of Paul Graham should be taught C if Carmack's kids are learning Lisp.
- Oreb 7y agoLisp (especially Common Lisp) works just fine as an imperative language, even if it’s not the most common style. And there are entire books written about using Lisp for game development. If the goal is for a beginner (whether child or adult) to be able to make cool things fast, Lisp is a great choice. The interactivity and the simple syntax makes it very easy to get up and running compared to more mainstream languages.
- cocktailpeanuts 7y agoWhen was the last time you saw a kid who made a cool game or software and made money using LISP? The best motivator is recognition. Kids don't care if a language has books and whether there "exists" a game development kit. They only care about how much satisfaction they will get by learning something and building something with it. If you want your kid to learn programming, the best approach is to teach them Swift or Java, or Javascript, so they can build a mobile app or web app and show off to their friends. And they will get the joy of building something that is actually used by others. That's how you get people to be interested. LISP won't get you anywhere in that sense. Sure you may learn some programming concepts, but the ROI is not worth it. Kids might as well spend a bit more effort to learn languages with more exposure and actually feel the satisfaction of having real users.
- kazinator 7y ago> teach them Swift or Java That's basically child abuse.
- cocktailpeanuts 7y agoI would say teaching LISP is more of a child abuse than teaching Swift or Java (FYI I am not a fan of Swift or Java either)
- abraxas 7y agoThis is such hipster arrogance it makes me angry.
- __s 7y agoYep. From age 12 to 15 I messed around in Game Maker, didn't need anything else
- serf 7y ago>You 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. I mean, this isn't true for everyone of course, but I began learning to code at around 8 or 9 years old because I was heavily interested in math and numbers, and precisely because I didn't have many friends (or brothers or sisters) to occupy my time with when I was very young. I agree with the premise that the majority of folks learn better with a practical goal in mind, but I disagree with you that there exists only one kind of curious child. I had a second-hand IBM XT from my fathers' shop at first, and I wanted to learn how to do things with it. That equipment being available, in my opinion, was the biggest motivator in learning how to use it. It was there for me to use, the limit was simply my knowledge of how to use it, and that was a very enticing proposition. My first project as an 8 or 9 year old was a prime number generator (a naive sieve). I had read a book about patterns, and primes had been mentioned. I took a trip to the city library (another rarity statistically?) and picked up a guide to Pascal that was written towards small business owners and non-CS college students to help them with simple automation, and got to work looking up terms. A week or two later I had a CLI program that spat out primes as fast as my computer (or my poor implementation..) could make them. I then tried to use those primes to draw trippy pictures, which began another foray into programming topic that were new to me, necessitating more work looking up terms and generally haunting the library. Years later, when I was a teenager, when I ran into like-minded computer folks and we'd get to talking, that same prime generator got spun into a small benchmarking suite that my friends and I toyed with before the multi-core trends. so.. I guess that the "show it off to friends" thing still happened, but knowing myself and how I learn, I doubt that i'd have ever been interested in a hobby that was pushed towards me by authority figures as being useful. I have a hard time conceiving how I would become a 'computer person' now-a-days, in fact. I was so anti-social and actively hostile towards teachers that the idea that one of them could have tutored me in the hobby , quite counter-intuitively, may have been the exact reason I would have avoided it as a child. really, my grand tl;dr : "There is no one teaching method."
- chrisseaton 7y ago> I actually think LISP is not as simple to understand as imperative languages Lisp is an imperative language. The order of execution is defined and you use side effects.
- jacobwilliamroy 7y agoThere is a LISP textbook now that teaches LISP by writing videogames. It's called Land Of Lisp. And there are LISP game dev communities operating on twitter or IRC, organizing game jams: https://itch.io/jam/autumn-lisp-game-jam-2019/results https://itch.io/jam/autumn-lisp-game-jam-2019/results
- blondin 7y ago> ...my first experience with programming was to build a game most of us! we have made it difficult to show our games and stuff to friends. except for minecraft and game mods. that's why kids gravitate towards those. as a side note, i was thinking last time that programming is difficult to teach nowadays because when you boot your computer or phone, it doesn't drop you into a shell or command prompt. so few people nowadays know that you can actually give commands to your computer or phone. so the concepts is not familiar to most!
- gtycomb 7y ago> At least those who do, want to learn because they can build cool things they can show off to friends. I have no doubt about what you say. I had a really broken laptop that my 3rd grader happily tookover as his laptop, a linux machine mind you, about which he knew nothing about. I showed him how to open a terminal and use some bash commands, and how to invoke the Python interpreter and import a turtle graphics module. He was hooked and had lots of fun moving the turtle around (along with the incentive to learn some math at his level). I remember the day he walked to school with this duck taped laptop on a show and tell day, which ended up with the school's IT departement making Python available on all computers in that elementary school lab. I don't think he could have pulled this off in lisp. Beautiful language Lisp,but I don't see how I could have helped with graphics programming within an hour or so -- which was all what he was interested in.
- taeric 7y agoPretty sure Logo was originally implemented with a lisp, no? Don't fall into the trap thinking lisp is just functional.
- gumby 7y agoLogo basically was Lisp -- a small parser on top of MACLISP. There were some later small implementations (e.g. for the Apple II) that were written from scratch and didn't need to implement all of Lisp (e.g. lambda, plists, etc).
- mst 7y agoDoes that make logo the sole truly successful form of m-expressions?
- lonelappde 7y agoNo, because m+expressions are syntax and logo has a different syntax, and because Mathematica is a successful use of something much closer to m-expressions.
- 7y ago
- didibus 7y agoQuil is pretty cool for that: http://quil.info/ http://quil.info/ Also Clojure can use all of Java and JavaScript, so there's lots of tangible thing you can build. That said, here I'd mostly agree with you, the barrier to entry should be as small as possible, you just won't find the amount of tutorials and guides, and tooling that JS or Java would have on its own.
- thom 7y agoIn case someone hasn't come across it, there are actually Clojure bindings for Unity: https://github.com/arcadia-unity/Arcadia https://github.com/arcadia-unity/Arcadia Build on top of Clojure's CLR support, obv.
- Waterluvian 7y ago100% agree. As a kid all I cared about was making cool stuff. My code was a disaster. And I did just fine with Java anyways. Python is great because of the massive ecosystem and the language is really simple. JavaScript is great because websites.
- scythe 7y agoSo on the one hand, I wrote a Tactix GUI in Java/AWT in my first high school programming class which covered mostly Java with turtle graphics. I can agree that kids who want to learn programming want to make games. But that Tactix GUI took me two months of sustained effort, lasting longer than any of the actual class projects. Most of the students struggled to draw a circle. It took weeks for us to get to "implement a method that takes an argument". If you're looking at teaching programming concepts to elementary school children, i.e. to most kids, building applications doesn't seem very likely to me. It takes a long time and small children have poor memories for long-running projects. If the programming is supposed to support elementary math and logic for kids who are getting used to the notion of "variable" in both programming and math contexts, teaching the kids to write the sieve of Eratosthenes or Babylonian algorithm really does seem like the way to go. Not because it teaches them to be good programmers or to like programming, but because it teaches them to think, and they're mostly not going to grow up to be programmers. If, however, you want to entertain the minority of schoolchildren who do like computers and want to learn to program, then using an easy graphics library with good deployment tooling makes sense. Those kids do want to spend two months or so making a game. But that doesn't, to me, seem to be in the spirit of 'proximitysauce's comment.
- crazypython 7y agoArras.io is an MMO with 50,000 monthly players. You can remix a version here. https://glitch.com/edit/#!/arras-template?path=README.md https://glitch.com/edit/#!/arras-template?path=README.md https://discord.gg/JrwVT3F https://discord.gg/JrwVT3F Multiple people have learned to code using only Arras.io and its community. I am doing a rearchitecture of the game's code.
- earthboundkid 7y agoFWIW, I was taught Scheme as a kid in nerd camp (maybe seventh grade?). I had previously learned BASIC. I didn’t notice anything very different. I didn’t understand it really. I didn’t use it once the summer was over, probably just because of lack of learning material.
- pmelendez 7y agoSome people would disagree with you. https://twitter.com/id_aa_carmack/status/569688211158511616?s=21 https://twitter.com/id_aa_carmack/status/569688211158511616?...
- Raphael_Amiard 7y agoI sympathize with the general message of what you say but: - it is completely possible to build cool things with lisp, as highlighted by some other people who answered your message. - your pejorative use of the word "nerd" above is really annoying and doesn't bring anything to your argument.
- Annatar 7y agohttps://m.youtube.com/watch?v=6pMyhrDcMzw https://m.youtube.com/watch?v=6pMyhrDcMzw
- GFischer 7y agoI went to a talk by cognitive psychologist Dan Ariely, and he very much agreed: said that he tried to get girls into computer science, in Israel they had a 6-week introductory course, and that class SUCKED at getting kids interested (actually negative effect). Ariely said there are actually better ways to get people interested, which is to show them something meaningful. https://www.pscp.tv/w/1yNGapZbZElKj https://www.pscp.tv/w/1yNGapZbZElKj (see minute 15 and ahead)
- gdubs 7y agoI can totally imagine a LISP inspired course of learning in a Montessori classroom. Elements, lists, functions — all somehow through physical, tactile objects.