3 ms·
I think the programming language chosen to teach programming matters a lot. I'm unsure if this is the case for everyone, but the language I'm using dictates my
by mywittyname 5y ago
I think the programming language chosen to teach programming matters a lot. I'm unsure if this is the case for everyone, but the language I'm using dictates my mindset in solving a problem. If I'm using Python, then my data structures will very likely be lists and dicts, and my solution will resolve around manipulating those. While C means that I'll be using structs and pointers, so I need to keep some thought capacity available there.
C makes me think like an engineer, deliberate and thoughtful; Python makes me think like a child, playful and experimental; Java makes me want to break up the problems a lot and generalize every case. Etc.
I like lisp as a teaching language. I understand why first-year programming classes prefer more "useful" languages. But I genuinely think lisp puts me in the correct mindset for computer science topics.
- femto113 5y agoJava makes me want to break something too. Like most kids in my generation (learning to program in the early 1980s) BASIC was my "first language", but it wasn't until I learned C at college in the late 80s that I really started to feel capable. I rarely use C for work anymore but I still "think in C" when trying to work out any sort of low-level algorithm no matter what language I wind up implementing it in (nowadays mostly Python and JavaScript).
- matwood 5y agoNot sure about 'useful', but the first language taught in my college CS courses was Turbo Pascal. A bit OO, but also had pointers, etc... I guess it was fine. TBF though, where I went to school, after the first two classes students were expected to pick up the 'class language' for all future classes. This meant C in compiler and OS class, Java in data structures, Python and Lisp in some other classes. We were learning CS topics, and the given language was just a tool that could change depending on which teacher taught the class that semester. By the mention of Turbo Pascal above you can probably guess this was a long time ago. I'm sure schools have changed since then.
- Yaina 5y agoWhat I like about C is that it can teach people the fundamentals of programming without imposing a lot of implicit structure on learners. A lot of courses start with Java and I think that makes it really hard for students later to untangle the concepts of programming from the OO ones Java imposes on people.
- Jakobeha 5y agoThis reminds me of Northeastern's CS undergrad curriculum. First semester we learned Racket (a basic functional Lisp language). Then second semester we learned Java, but in a strange functional way (kind of like writing Java "as if" it was Racket, often using one-line functions and recursion). Afterwards you learn more traditional Object-Oriented development and algorithms, then branch off into (optional) web-dev, distributed systems, embedded systems, ML, etc. or go back into higher-level functional / OOD-style classes. At least from my understanding, this doesn't seem to affect students when they gradate, e.g. they aren't programming any different then any other college. Although, Northeastern grads are supposedly known for being good developers. Maybe that's just the rigorousness of the curriculum itself.