6 ms·
> It's simply too alien for your typical CS grad In my university, Programming 101 (mandatory) was (and is) Haskell. For context, there is typically a mix of e
by thetmkay 11y ago
> It's simply too alien for your typical CS grad
In my university, Programming 101 (mandatory) was (and is) Haskell. For context, there is typically a mix of experience among the class - some will have programmed seriously before, but others will have only studied math.
I had already studied Java, but I found Haskell a delightful re-introduction (it was my first exposure to functional programming) and I see its value as an educational tool.
- flying_kangaroo 11y agoFrom what I've heard, MIT does the same thing with CS101, except in Scheme. Starting the curriculum that way seems like a good idea (in the long run, since internships and whatnot all want Java or C++/C#), between leveling the playing field and providing a foundation on a lot of the "math" that CS is based on.
- gugagore 11y agoSince 2007, the intro curriculum uses Python, not Scheme.
- jandrese 11y agoI had a course in College that was taught in Scheme. It wasn't the "intro to computer science" class, but it was mandatory and at the Sophomore level. That said, scheme never managed to feel like anything other than a toy language to me, and that we were being fed problems that happened to map neatly into the structure of the language. Write a RPN calculator! Write a Tree Parser! Stuff that really isn't that much harder (but admittedly more verbose) in imperative languages. I couldn't help but to think "Sure, these problems are easy enough, but how would I blit pixels with this language? How would I process TCP/IP packets? What would a database interface look like? How am I supposed to do error handling?" In the end I had no desire to integrate Scheme into my day to day programming.
- chrisseaton 11y ago> In my university, Programming 101 (mandatory) was (and is) Haskell I think this is true at a lot of universities. I would have thought if you get a random CS grad they're much more likely to have Haskell experience than Go, Ruby, Clojure, etc.
- treebog 11y agoDijkstra wrote an amusing little note about why it's a good idea to teach Haskell in CS 101. http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budget%20Council%20concerning%20Haskell.pdf http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budg...
- cousin_it 11y agoAs a first language, I think Haskell is too safe. It forbids you from doing too many things that the computer can do. I recently talked to someone who was learning Haskell as a first language, and it was a surreal experience. It was obvious that he wasn't having fun in the sandbox, but he couldn't articulate it because he'd never been outside the sandbox. My own first language was QBasic and I'm very happy about it. If I'd been made to suffer through parsers instead of putting colorful circles on the screen, I would think of programming as hard work, and that probably wouldn't lead to a very good career.
- kqr 11y ago> Haskell is too safe. It forbids you from doing too many things that the computer can do. Computers are to computing science what telescopes are to astronomy, or something. Haskell is a great language for expressing computations, the thing CS is about. It's not meant to flip bits and observe processor states and page faults, if that is your idea of fun. That's more computer engineering stuff. But Haskell is absolutely capable of drawing pretty circles on the screen in just a couple of lines of code![1] [1]: https://hackage.haskell.org/package/gloss-1.9.4.1/docs/Graphics-Gloss.html https://hackage.haskell.org/package/gloss-1.9.4.1/docs/Graph...
- cousin_it 11y ago> Haskell is a great language for expressing computations, the thing CS is about. I think Haskell is good at expressing a narrow range of ideas that, honestly, aren't all that fruitful outside the FP field. There are three main reasons why it's not a great language for expressing arbitrary algorithms: 1) It uses the pointer model instead of the integer RAM model. That leads to extra logarithmic factors. 2) Immutability. That's hypothesized to also cause extra logarithmic factors, but AFAIK that's still an open problem. 3) Non-strict evaluation. That wreaks havoc with space complexity, and compositional analysis of performance in general. Yes, you can add epicycles to remedy these drawbacks (arrays, ST, strictness annotations). But I'd rather use a C-like language in the first place. That's closer to the "core" of CS as I understand it, and that's how most algorithm research is done.
- incepted 11y ago> In my university, Programming 101 (mandatory) was (and is) Haskell. I don't think it's a good idea because it might discourage a lot of students from the get go and they might simply drop out. It's well established today that the language you start with has little impact on your mastery of the field years later (most of us started with BASIC I bet), so you might as well start with an easy language that will get people hooked. If the students are curious and talented, they will move on to more complex things with time.