EDIT: On second look, Python, C, and C++ are also the go to languages for CS classes (along with Java but that is also a big enterprise language unlike the other three.) Almost this whole list seems to be schoolwork related.
EDIT: On second look, Python, C, and C++ are also the go to languages for CS classes (along with Java but that is also a big enterprise language unlike the other three.) Almost this whole list seems to be schoolwork related.
In the real world, programmers don't take their questions with "recursion" or "pointers" very often. Nor is Assembly a common language for side projects.
This definitely seems like a case of students simply being relatively overrepresented on weekends.
So yeah, some people are weird that way..
And so is Haskell.
But I doubt Unity 3D is schoolwork related.
It was kind of horrible because the professor for (at least one of the) intro classes reproduced cons, car and cdr from lisp and had us construct a bunch of data structures out of this monstrous java lisp hybrid.
point being probably only top tier cs depts use haskell.
I'm a fan of Haskell, but I think it being the intro CS class language is an educational fail.
Also I second another poster's point that universities are not trade schools. I think it's a little sad if a department stopped teaching Haskell because of industry pressure, because the goal of a CS program is to teach CS, not to teach whatever programming language is on top of TIOBE.
On a practical note, learning a language like Java is not the hard part if you were taught properly. With a solid theory foundation (for which Haskell knowledge covers a great span of content), learning any production language to a practically useful degree should take a couple weeks at most.
I've maintained for years (since I was at college in the 2000's (UK meaning of college not US)) that programming education should be two tier, the theoretical tier at university and the practical tier using the traditional trade school model.
Taking another domain there is a lot of difference between the person doing the load bearing calculations on the bricks and structures and the person laying the actual bricks.
I've always fallen more into the latter camp naturally, I like to build things and I learn the applicable theory as and when I need to and you can get a long way with experience and a little theory when you can leverage the underpinning work of other people.
It's interesting to note that in the UK the apprentice/master model sorta exists already if you squint in the difference between junior/senior developer when done 'correctly' anyway though at the moment due to developer demand the meaning of 'senior' has degraded down to a couple of years commercial experience apparently.
My Haskell classes helped me more with regards to becoming a better Java programmer than my Java classes.
1) Does learning Java keep you from learning CS concepts like pure functions and category theory? Obviously not. It may not be completely natural, but people do unnatural things in the name of an education all the time.
2) When you hire an intern these days, it's pretty expensive. The internship ends up being a trial employee, especially if they're a rising senior. The employer wants to get as much valuable information about the intern as they can. They may contribute actual production code, but probably not if it's Haskell. More importantly, you learn more about their ability to work with your environment (and they learn whether or not they want to work there) the closer you get to the internship being as close as possible to being a newgrad employee. Haskell is cool, but it will probably get in the way of many of the valuable things an internship can provide both parties. And I want to reiterate that these aren't cheap. You often end up paying the intern new grad wages normalized for the length of their internship, and it's not atypical to pay for housing on top of that, plus various events, time taken from to bring them up to speed on a team, etc.
3) MIT is teaching Python in its intro course. If having Haskell or any other academically "interesting" language is so important then they are doing a great disservice to their CS students. What are the chances this is true? I think it's much more likely that the MIT intro course language is either an uninteresting choice or very specifically chosen to be of interest to non-academics. Now, I don't think MIT is necessarily the be-all end-all in CS education, but is anyone prepared to argue they are worse than UPenn, which uses OCaml in a similar course? (I'm a fan of OCaml too, fwiw!)
Dijkstra certainly thought so. http://www.cs.utexas.edu/users/EWD/OtherDocs/To%20the%20Budg...
> They may contribute actual production code, but probably not if it's Haskell.
Not only can interns learn new languages on the job, but any student worth hiring probably knows multiple languages already. The argument here is that theory courses should be in a theoretically sound language; that doesn't preclude students from learning corporate-approved languages as well.
For what it's worth, I picked up new languages in two of the internships I did in college. It never took me more than a week or two, and happened contemporaneously with me figuring out the codebase and dev environment. In at least one of those, which was a JavaScript codebase with many functional elements, having a strong functional background as well as a strong imperative background was what allowed me to comprehend it without too much effort.
> then they are doing a great disservice to their CS students.
I'm inclined to agree. This is, of course, a matter of opinion.
MIT has also switched to Python from Scheme
What a creative (if hardcore) way to circumvent a bureucratic requirement :)
Seeing as most people are only students for 4 years of their life, I would be surprised at how much students contribute to this change. I also can't think of a reason as to why students would be asking more questions on weekends vs weekdays.
Especially for the big difference in Haskell, I just can't imagine its largely caused by students since most students will probably only get to use it for one or two courses.
At least when I was a student, I would be pretty unlikely to ask on Stack Overflow because I'd probably need answers quickly and not want to wait for a response, but I don't expect everyone to be like me.
I also don't even feel like my assignments were typically due on Monday or Tuesday. I remember often students would ask their teachers to make their assignments due Friday instead of Monday.
Many classes have assignments over a week or two. It absolutely makes sense to ask SO for questions.
If anything, there was less urgency to my homework questions than there is to my current professional ones.
> I also don't even feel like my assignments were typically due on Monday or Tuesday.
While I had my fair share of assignments on Monday, that doesn't need to be true to explain this. Even if you assume that students work equally throughout the week on homework, they'd represent a larger percentage of developers during the weekend (when professionals are much less likely to be working).
If Hw, would correlate annually with semesters (noting that SO is internationally popular, and different countries have different schedules).
Also, I'd have thought that with weekend projects you're more likely to find things out by experimentation and reading the documentation than by asking questions. With work or classroom projects, you have to work with a fixed spec, a prescribed technology, all sorts of Best Practices, and deadlines. Weekend projects give you much more freedom in all four respects.
So yes, GitHub would be much more accurate.
I know I'm writing C++ every weekend (and day, night, morning, afternoon.....)