4 ms·
I contend that within reason, it really doesn't matter exactly which language happens to be one's very first programming language. Programming is ideally motiva
by Santosh83 8y ago
I contend that within reason, it really doesn't matter exactly which language happens to be one's very first programming language. Programming is ideally motivated by passion, and in that case, a person is certainly not going to give up and change career just because their intro language was a bit inconsistent or rocky. Anyone who gives up programming before at least being fluent in three languages, is giving up prematurely.
This doesn't mean assembler or brainfuck is okay as a first language (although the former was the 2nd langauge I taught myself and its reputation for difficulty is vastly exaggerated in my opinion), but it does mean that endless discussions about whether Python is better than Javascript or C is better than Lisp is probably splitting hairs.
- bb88 8y ago> it really doesn't matter exactly which language happens to be one's very first programming language. I'm not so sure. Here's an example of blinking an led with Lisp: http://www.technoblogy.com/show?1GX1 http://www.technoblogy.com/show?1GX1 And here's one using python: https://www.modmypi.com/blog/gpio-and-python-39-blinking-led https://www.modmypi.com/blog/gpio-and-python-39-blinking-led If I were my 12 year old me, I would probably enjoy the second more than the first.
- pdonis 8y ago> within reason, it really doesn't matter exactly which language happens to be one's very first programming language I agree with this, but I'm not sure how many of the students taking the MIT course in question are learning their very first programming language there. Now if we were talking about a secondary school course...
- taneq 8y agoAssembler is arguably a better intro language than most. It makes it explicitly clear what each step of the programming does and how it executes. Once students have done a few projects the they'll be ready to appreciate a higher level language like C. Throwing objects and lambdas and type inference at kids without giving them any grounding in what a computer actually is and does is unfair, and leaves them building castles in the sky.
- ohazi 8y agoI can't tell if this was meant to be serious of facetious, but I took this route. I learned 8088 assembly to make an ancient robot platform move, and then learned C a few months later. Assembly had a few weird architecturey things that you had to understand before things made any sense (e.g. registers, segment:offset addressing, stack pointers, calling conventions), but beyond that, all of the tasks were simple and self-contained. C was a breath of fresh air after that. Things like pointers, which have a reputation for being confusing, make perfect sense coming from assembly.
- renox 8y ago> Things like pointers, which have a reputation for being confusing, make perfect sense coming from assembly Agreed with the caveat that C pointers aren't just memory addresses they just behave like that 99% of the time which makes it especially confusing for the 1% where the optimiser can "play tricks"..
- taneq 8y agoSerious. I'm not saying you should stick with assembler for any great length of time, but understanding what instructions and registers and memory are is pretty important later on. In university I had fellow students who struggled with pointers because even at the end of first year they didn't really understand what memory was or how it worked.
- gdy 8y agohttps://stefansf.de/post/pointers-are-more-abstract-than-you-might-expect/ https://stefansf.de/post/pointers-are-more-abstract-than-you...
- Matumio 8y agoBy that logic, you'd have to start with vhdl. Which is a great place to start if you want to grok what a CPU actually is, what pipelining means, and how to write truly parallel code. Except that most people never need to know. That's progress: you can build most useful applications without ever having to learn that there is a distinction between virtual and physical memory.
- kbp 8y agoI think it's very common in discussions like this for people to conflate 'Python vs Scheme' with from-first-principles (lambdas, explicit recursion) vs building-real-things as pedagogical approaches. In a lot of people's minds, Python is its standard library and Scheme is explicitly cdring down lists. I think the problem is that SICP's pedagogical approach (which people confuse with the language Scheme) is, in a way, pretty close to starting with assembler. You spend a lot of time exploring computation (with lambdas as your basis) at a very low level before you graduate to anything that feels "real" or practical.
- smadge 8y agoI agree. Learning python requires learning the various data structures that are built in to the language (list, dict, set, classes) and learning the various control structures (if, for, while, etc). These are initially black boxes that a student has to take for granted. On the other end of the pedological spectrum you can start with how to define an abstract data structure and function application as a rewrite system then build up the rest of the lambguage from scratch.
- dibstern 8y agoI couldn’t disagree more. (1) Learning Java before you learn a procedural language, to me, makes no sense, and turns a programmer’s formative foundation of programming into an object-only one. (2) The difficulty in getting over the ‘hump’ (usually about 5-6 weeks in to learning one’s first language) is what turned me off programming when I was 13, but given a great intro course I was able to get over it and I’ve developed a deep passion for it and I couldn’t imagine life without it. So to put the bar at 3 languages, to me, is insane. (3) Many (most?) people don’t start off saying ‘Programming is or will be my career’. Instead, you try it out and see if you can do it and if you enjoy it. To me, this is a fundamental misunderstanding in how people view programming when they are learning their first language.
- Ar-Curunir 8y agoI'm sorry, but this is wrong. Most people aren't born with a passion for anything. Optimizing for people who are "passionate" excludes a vast set of people who have never been exposed to computer science or programming, but could become interested if taught in an approachable manner.