5 ms·
Ask HN: Which programming languages teach learners the most?
- elviejo 13y agoEiffel Teaches Design By Contract and really good object oriented programming.
- faizshah 13y agoCan you expand on what makes Eiffel a particularly good language to learn these things?
- elviejo 13y agoSmalltalk - Teaches what OOP should look like what is to leave with "objects all the way down" What is the difference between a class method and an instance method. How an IDE and syntax aware source control looks like
- faizshah 13y agoThat's interesting, so you would say that Smalltalk is more enlightening than other languages on the ideas of OOP? Could you expand on how Smalltalk achieves that? I have never programmed in Smalltalk before, but I found Java and Ruby taught me the most about OOP concepts, I might have to take a dive into Smalltalk now.
- mpstreeter 13y agoI teach high school computer science near Stanford. Depends on the age of the learners. For kids in school, programs like Alice or Scratch are a fun way to start because they're more visual. Lego Mindstorms are a fun step up b/c you also get to build something that moves based on your code. After that Python is great. Then HTML/CSS/JS/Ruby on Rails so they can build their own web portfolio or web app. MIT has a program called App Inventor (http://appinventor.mit.edu/ http://appinventor.mit.edu/) that is similar to Scratch and lets you make Android apps using drag and drop code pieces.
- faizshah 13y agoI agree with you on the other languages, but I have to disagree on Scratch(I have not tried Alice). I found it was more difficult to teach basic programming concepts in Scratch than it was to teach those concepts in Processing, which also provides a very visual programming experience, as well as the instant satisfaction of seeing a solution. I also found that once those that I was teaching were proficient in Processing it was easier to transition to other languages like python, ruby, and java. I also think that Processing gets learners interested in programming much more than other languages because they see how easy it is to make their ideas come to life. Granted it's the same idea as Scratch, but the transition from Processing to "more difficult" languages is much easier than from say Scratch to Python. Thanks for the App Inventor recommendation, I'll have a look.
- elviejo 13y agoHaskell Teaches what functional programming really looks.
- faizshah 13y agoIn my opinion each "family" of languages provides interesting lessons for programmers who learn them. For learning the high level concepts of programming I think that languages like Clojure, Haskell, Python and Ruby are best. They allowed me to easily play around with complex libraries and technologies. This helped me learn about how to evaluate and integrate others code into my own, they also introduced me to many concepts that I don't think I would have studied had I not chosen to learn the language. For learning the elegance of programming I honestly think Javascript is the best. Some might disagree, but because of Javascript's weirdness and inconsistencies when I came across a really elegant solution, it really made me rethink the process I use to program solutions. I also learned a lot about "elegant" programming from reading and learning about Haskell and J. For learning about the lower level mechanics of programming, I think that the C/C++. The languages are less forgiving and it forced me to think about the repercussions of my sloppy code. I'm curious to know what others think.