5 ms·
My university teaches the intro CS course in Racket (lisp), and I know another that teaches in Haskell. If decades of priority exposure to young programmers is
by bobbyz 6y ago
My university teaches the intro CS course in Racket (lisp), and I know another that teaches in Haskell. If decades of priority exposure to young programmers is not enough to spur widespread adoption, then I'm not hopeful.
- cinntaile 6y agoI don't think that's the point of having the intro CS course in a functional language. The concepts that you get taught there can also be applied outside of pure functional languages and they teach you a different way to think about programming.
- rowanG077 6y agoI think most programmers aren't actually coming from university currently.
- dgb23 6y agoThere are plenty of programmers who learned languages like Haskell, Scheme, Eiffel etc. as their first languages who are now programming in Java, JavaScript, C# etc. There are just way more courses/universities that teach or taught Java/Python. Businesses settle on the lowest common denominator it seems.
- grogenaut 6y agoI did my interpreter class in Scheme in university. The main thing it taught me was I never wanted to use scheme (or lisp) and put me off of functional programming for many years. I re-did the interpreter from that class in C++ and it made insanely more sense to me than the scheme version. I could see where scheme was going and why it was a good fit but just hated it. That same professor taught our C++ class (while learning it, they had someone quit) the next semester and they had to actually do a do-over he was so bad at C++. To his credit he knew as much half way through the semester (he had students getting ahead of him). He basically nop'd out of C++ like I did out of Scheme. It just didn't fit his brain.
- mateioprea 6y agoWe learned Scheme, Haskell, Prolog and Clips in one semester for Programming Paradigms course. I can still remember the homework for each programming language (this was 6 years ago): - Something with genetic algorithms in Scheme - 2048 implementation in Haskell - Searching in an infinite space in Prolog - Phutball in Clips Pretty dope if you ask me. :)
- grogenaut 6y agoGlad it was good for you. It was not for me.
- agumonkey 6y agoIt's interesting to have intense negative reactions to a language. Could you give details what annoyed you with scheme ? I hope it goes beside the syntax.
- grogenaut 6y agoMany people who like scheme and functional languages have an averse reaction to more procedural or OOP languages. It's interesting that people don't grok it can go the other way. But this is HN so I guess I'll explain. A few things (and for context this was 1996). With the class I disliked they were trying to teach me a language and a complex concept at the same time. In a 4 month semester, half of it was spent just getting basically proficient in the language. So instead of learning one concept I'm learning 2. We were essentially using scheme to build a interpreter for a simplified scheme. I understand why we were implementing scheme, it's one of the simplest languages to implement and maps well to many concepts in CS. this is actually why the game studio I worked at used it, not that it was the right language, in fact it's caused a lot of trouble and they have a lot of c/python like in the language now Scheme seemed like a pretty useless language as well. The book for it listed (in the forward) out how amazing it was and showed all the amazing projects done with lisp-like languages. That list started with emacs and then the rest was academic things I'd never heard of, which seemed like a joke. If I recall scheme had some pretty weak language library functions at the time as well. Also at the time I cared about drawing triangles on the screen. [I will lose points for this but it's my POV] I tend to find people who strongly like functional languages a bit insufferable, especially academics. I tend to learn by getting a real world project done, and I like tools that let you build real world things. I don't care anywhere near as much about form of the solution. . Functional languages seem to gel better with people who care about the beauty of a simple proof. I hate proofs. Also in much of the work I've done, the folks who really pushed for functional languages didn't really understand that most of their coworkers were juts not capable of understanding those languages or thinking that logically. There's a reason (imho) that they're not as popular of languages. I have written stuff in these languages since then. I did work in the (gp reference) scripting language and on its implementation in the engine. This got me real features (like a mission in an AAA game, and features for my mission designers in the engine). This seemed useful to me. I spent about 3 months trying to use Clojure to do a highly parallel data processing work. It seemed to map well to the problem. However it was insufferably slow, and with required type hinting was essentially complicated java (lost the benefit). I re-wrote it in C++ in about a week and brought the processing time from 15 minutes to 32 seconds by leveraging the deeper parts of the machine (buffers, disk cache, physical cores) which were not as available inside the abstraction. So it also comes down to I haven't found a problem that maps well to something like scheme that I need to solve. When I do stuff with interpreters I just grab ANTLR and java/go/c++. This is more maintainable for everyone I work with.
- pjmlp 6y agoI think most HR departments would see it otherwise, specially in most European countries.
- Jtsummers 6y agoI think intro CS courses in Lisp and Haskell (or other less-than-mainstream languages) hurts the uptake of those languages. The students will confuse the difficulty of the material with the language itself. And there's less material out there to support them, compared to the multitude of Q&As for C or Java or C++. And when later courses move them to other languages (C, Java, C++, etc.) things seem easier so the students reject those earlier languages. In some ways those languages may be easier, but the student is also more experienced. I doubt I would've taken as well to Lisp if it was my first course, versus used in a couple graduate courses.
- pjmlp 6y agoWhen I did my degree, we had ISO Pascal and C++ (proper C++ not C with classes) on the 2nd year (1st was a common year to all engineering degrees), Followed by abstract logic, Prolog, Caml Light and Smalltalk on the 3rd. By the 4 year, you would have used Prolog in a couple of parallel assignments that also required it, Lisp via ELisp, as Emacs was the "IDE" for the Prolog and Caml Light assignments and some TAs liked to spend an hour introduction to not using Emacs like Notepad. UNIX systems programming, distributed computing, data structures and algorithms would make use of C, that by virtue of having already learned C++, no teacher would spend a second with an introduction to C lectures. Those of us that took language design and compilers, would still delve into proper Lisp, Cobol, Fortran, Algol, Oberon, and a couple of others even less known. The teacher driving this lectures would switch back to Caml Light for several exercises. Since I ended up graduating as Java came into the scene, the very last year I ended up doing several projects in Java as well, while taking place in the national championship of logic programming. If anything what frustrated me was coming into the market place and having to deal with C, while having been exposed how much better the things could be. Thankfully using it alongside Tcl made it not so bad, given Tcl's lispy background. The problem is not the intro courses, the problem are the teachers and the material been given to the students. It isn't a big deal if there aren't many books available, when there are teaching notes (of book like quality) given by the responsible professor, which one can question at any time unlike most book authors. For me what made the difference weren't the books, rather the teachers I had the luck to meet during my university travel.
- danielchavez 6y agoDo you go to UChicago