7 ms·
The biggest problem with the first language is that a student has nothing to compare it to, and so naturally comes away thinking that the design decisions in th
by lisper 5y ago
The biggest problem with the first language is that a student has nothing to compare it to, and so naturally comes away thinking that the design decisions in that language are a reflection of some deep underlying truth, that this language is The Way Things Should Be Done rather than a product of its time and particular goals of its designers.
When I was a wee coder I thought BASIC was the bee's knees. I don't think that any more, but it was a painful series of transitions until I discovered Lisp and never looked back.
- FpUser 5y agoI started with machine codes. Followed by ASM, Turbo Pascal, C/C++. I played with BASIC but quickly dismissed it as it would greatly limit of what I could do (I was hooking computers to devices using high speed parallel bus and processing data in real time). No college. I was studying physics in university. All my programming experience I got by looking at docs and somebody else's codes. Of course every once in a while I would use something like Matlab to solve my little problems and when I switched to develop software for living I also used many other languages. Now I mostly free to choose whatever tools I see fit and usually stick to 3 - C++ for backends, Delphi/Lazarus for desktops and JavaScript for web front ends. Occasionally use C when I have to do firmware. I played up to my gills with many scripting languages like Python. Personally I found that on any project of decent size they do not speed up development at all. The performance loss of the end product however is monumental.
- garmaine 5y agoThis is an argument for teaching intro programming with Scheme.
- username90 5y agoNo, it is an argument for teaching intro programming in C so they better understand what operations a computer is capable of doing. When you are used to C most other languages feels like a library that automates tedious tasks rather than something alien, you are well aware of the things needed to happen in the background so that the code you write in other languages can do what it does.
- garmaine 5y agoC imparts a very specific architecture onto your code. Scheme is more of a blank slate upon which many different paradigms can be taught.
- b5n 5y agoI've never looked under the hood of a `cdr` implementation but I feel pretty confident in saying that it's likely to be an incremented pointer most of the time. Learning C (and even a little ASM), gives a better understanding of the underlying layers. I think that provides a great foundation for learning a scheme, and then branching out from there.
- mhuffman 5y ago> Scheme is more of a blank slate upon which many different paradigms can be taught. reply Also, for a lot of first-time programmers, Scheme and other lispy languages, can come with heavier cognitive friction. Unlike procedural languages where you can think about what you want to do, break it down into steps, and then make those steps, there is a higher-level (or deeper-level, if you like) of thinking that needs to goes into functional development, where one thing feeds into the next which feeds into the next. If you already have a very strong background in mathematical theory, this might not be so bad (and might make a lot more logical sense), but it is a shift in thinking from how many people do day-to-day tasks, which is more similar to procedural programming.
- garmaine 5y agoWhile this is true of, say, Haskell, I really don’t think it is true of scheme. You can write procedural, stateful scheme.
- kaba0 5y agoC is not really representative of underlying hardware anymore, and is a language with basically no compile time defenses, making the student scratch their head at hard to debug segfaults. I would definitely not start with C.