5 ms·
Programming Languages and Learning
- askonomm 5y ago> A number of experiments have been performed that show a positive impact of static type systems over dynamic type systems And here we have it folks, static typing is superior.
- dang 5y agoPlease don't post shallow comments like this, especially not on divisive topics like that one. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- deleted 5y ago[deleted]
- mcbuilder 5y agoI've been teaching my 11 y.o. son programming with Julia and Project Euler. My personal opinion is that Julia is the best language to introduce to new programmers. First of all, it has very good "IDE" support in various editors with LSP (VS Code being a great newbie choice). It supports a nice mix of language features, mainly imperative constructs, but it also excels as a functional programming language. I was considering Haskell as a language, but unfortunately Haskell often feels like it gets in the way of your learning sometime. Want to teach for-loops for instance, well you gotta break out Monads. Python is a popular choice, but I think it's a horrible pedagogical language. I don't want to teach OO concepts, instead I rather have him think about the algorithm and basic computer science principles. The only reason I think people choose Python is that it's super easy to get started, but I think all that simplicity is just a wrapper around a fairly complex runtime. With Julia the abstractions are generic enough that they can stay as abstractions. With Python, I'd feel like I'm just teaching a package (i.e. numpy) and the concept of generic programming would just get ignored.
- pthread_t 5y ago> I don't want to teach OO concepts Does python really force this? I can see this being the with java -- a language often used in intro to CS courses.
- Jtsummers 5y agoIt doesn't. Python is actually a pretty good language for teaching algorithms, you never need to type "defclass" unless you want to. You do, kind of, have to use methods, but that's not a huge burden for a learner compared to the other things they have to learn. Also, if you're using a language-agnostic algorithms textbook (in a course, solo, or as a mentor) then Python is very close to the pseudocode in most of those.
- anonporridge 5y agoPython's closeness to pseudocode is one reason why it makes a fantastic choice for whiteboard coding interviews. I've personally had interviewers frustrated that I solve problems correctly so much faster than they expected. And not only correctly, but to the point where I could type what I wrote verbatim into the interpreter and prove that it actually works.
- bitwize 5y agoPython is pretty much zoomer BASIC. I think it's a pretty good choice for those early painful bits of learning how to program, when you have to understand that a program is sequenced instructions to a computer, that the effect of an instruction depends on what happened before, etc. You can write a complete Python program without defining a class or invoking an object. These concepts can be introduced after the learner has the basics down pat.
- RodgerTheGreat 5y agoPython the language itself, perhaps not. The standard library, on the other hand, is a random hodgepodge of imperative, OOP, and functional styles, and the greater library ecosystem is no different.
- rileyphone 5y agoWhile I agree with this on principle, I feel this project is taking it in the wrong direction. Pretty much all of the languages in use today were designed without human factors in mind, especially the big, standardized ones that were actually based on some research. As it turned out, the most successful beginner languages, like Javascript and Python, are more dynamic and expressive - they were also designed, as far as I know, with no thought of existing research. The paucity of research around this, as mentioned in this article, should indicate how nebulous and hard to quantify the knowledge about this is. New efforts should be asking questions about why this is. The best way is to watch someone try to program and take notes of where they get hung up, as in [0]. As for where I would point to regarding sensible language design, read http://worrydream.com/LearnableProgramming/ http://worrydream.com/LearnableProgramming/ and the book recommended within, Mindstorms. I believe programming has the potential to be the emancipatory medium of thought in the coming century, but only if we can rethink what programming really is. [0] https://kilthub.cmu.edu/articles/Six_Learning_Barriers_in_End-User_Programming_Systems/6470432/files/11898989.pdf https://kilthub.cmu.edu/articles/Six_Learning_Barriers_in_En...
- erik_seaberg 5y ago> As we push toward computer science for all, the design of our languages should be based increasingly on evidence. This is too broad a goal. Novices shouldn’t be required to learn expert languages, and experts shouldn’t be limited to using only novice-friendly languages. Because we who specialize will spend most of our careers as experts, it’s crucial that we still have clear, concise, powerful languages available even though they require more investment that wouldn’t pay off for everyone else.
- Qem 5y agoI think the fundamental problem here is everybody must be a novice before they become a expert, and probably the only languages were the experts outnumber novices are the dead or dying ones. Most of time we are beginner-level at everything. If a language is too expert-focused, and hard to onboard people into, it has a hard time growing organically.
- Jensson 5y agoExperts tend to outnumber the novices, since you are only a novice for a few years and then you are an expert for the rest of your career. People have all these strange notions in programming just because it is a growing field, but if you look around it isn't like novice teachers outnumber experiences ones, or novice doctors are all that common etc.
- Qem 5y agoYou must take into account attrition rate. Not every novice becomes a expert. Say in a given field, on average, each person spends 10% of their time as novice, and 90% as expert. If only one in ten novices actually grow into experts, in the overall population most man-hours are spent at beginner level. Novice teachers don't outnumber experiences ones, but students surely outnumber teachers, by a large margin. In a market that still didn't achieve steady state, like programming, some of the people that didn't made it through may end jumping ship to more beginner-friendly alternatives, that end with more people, more libraries, more learning resources, et cetera. Eventually the network effects will cause even the expert ponder over switching sides to get better libraries. Think how Python ate Perl lunch, despite the swiss-army chainsaw power of the later. Today there's probably much more Perl programmers than in the 90s, but yet we can't deny the language lost mindshare.
- dboreham 5y agoIs this a machine-generated page? I ask because it begins by talking about teaching programming to K-12 students. Then the second section in the body has title : "Software Transactional Memory (STM)".
- mwcampbell 5y agoDefinitely not machine-generated; I know the professor who wrote it. I think he was just covering language semantics before syntax.