3 ms·
I strongly believe that people who are learning to program should learn in a language that can actually be used to make things. This may run counter to the 'wo
by AbrahamParangi 10y ago
I strongly believe that people who are learning to program should learn in a language that can actually be used to make things.
This may run counter to the 'work smarter, not harder' ethos I see here but I feel that programming competency in practice is much more a function of literal hours writing code than any other factor.*
*with the caveat that competency tends to follow a sub-linear growth curve and people vary significantly with respect to their growth rate so this statement is more accurate when comparing individuals who are early in their growth curve aka beginners.
- jpolitz 10y agoI responded to a similar comment in another thread from a pedagogic perspective, I hope this answer gives some perspective on how we approach this point: https://news.ycombinator.com/item?id=13186216 https://news.ycombinator.com/item?id=13186216 Also, Pyret can be used to make things – Pyret's compiler is written in Pyret! As the language matures, the experience of writing small Pyret programs that grow into real applications will only get more authentic.
- nine_k 10y agoPeople who learn to program have to get used to the idea that programming languages are many, and they have to attain certain competence in several of them. A typical frontend dev uses Javascript, CSS, HTML, likely some occasional bash. A backend developer probably faces the preferred backend language (Java / Python / Ruby / PHP / whatever), SQL, and has to have at least a nebulous understanding of HTML, CSS, and JS. A devops person has to face a shell language, the Unix tools mini-languages, have enough Python or Ruby chops to handle things like Ansible / Salt / Chef, and likely some SQL to keep an eye on the databases. This does not include smaller languages like regexps, or narrow-use languages like XSLT, JSON Schema, etc. There's no way you learn the One Practical Language That Matters and can be limited to it. You could in past, with a Spectrum or a TRS-80 and Basic, but the times have changed.
- AbrahamParangi 10y agoI agree that everyone likely has to learn more than one language in the course of their life, but the difficulty of learning language N is typically more than learning language N+1. Therefore I believe that it is productive to start beginners off with a language which is: 1) as approachable as possible 2) as useful as possible Such that the value of that first, most difficult learning experience is maximized and the challenge is minimized.
- dom0 10y ago> There's no way you learn the One Practical Language That Matters and can be limited to it. Most mainstream languages have very similar semantics overall, differing wildly from FP-like approaches. So learning a mainstream-ish (imperative-ish, OO-ish) language will enable mastering other mainstream languages with greater ease. If my first language is Lisp-1944, I'll likely have a hard time learning C or Java. If, on the other hand, my first language was C, I'll likely have much more and quicker success with Java, Python, C#...
- nine_k 10y agoIf the first language you learned was C, and you never rethought programming from different angles, you'll miss the best parts of JavaScript, Python, and a serious part of C# at least. OTOH if your first language was Lisp (or even Python, to a lesser extent), and it was competently taught, the syntax of Java or C# would feel alien at first, but you'd find out that many of the concepts are already known to you; chances are, you even have an idea how they work under the hood. (Disclaimer: I majored in embedded systems, my first languages were Fortran IV and PDP-11 assembly.)