I surprised there was no mention in the blog post or the comments so far about the homework factor. It isn't just personal side projects that people are working on over the weekend. I am betting the relative percentage of CS students on the site is also much higher on the weekend. Tags like assembly, pointers, algorithm, recursion, class, and math are all rather vague. Those topics are all discussed at length in CS classes, but if you are working on a real world project in those fields, odds are you will tag it with a more specific technology you are using rather than the abstract theory behind it.
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.
Yup, seeing the top 10 list made me immediately think of homework assignments.
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.
Suppose you have 10000 posts tagged with #MIPS #assembly, 8000 tagged with #x86 #assembly and 6000 tagged with #arm #assembly. Then you have 10000 tagged with #MIPS and 24000 tagged with #assembly.
Funny, when I saw the top 10, Edward Kmett came to my mind. He is likely the most prolific Haskell hacker, but he also recently started a side project writing some graphics shaders for VR in C (when he was younger, he was in the demoscene community).
What are you saying "no way" to? Of course there are classes using Unity but I am very certain the bulk of these questions are not school related. Just look at any of the big Indie Game groups on Facebook.
The first was part one of a graphics sequence. That class goes on for at least one more, although I stopped after the first one because it wasn't really my cup of tea. The second was one of the project courses required to finish the degree - it was also part of a two part series.
I went to ut austin and after a long time using haskell for intro classes the administrators succumbed to temptation (and possibly pressure from dell/ibm for wage slaves) maybe ~10 years ago and started using java.
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.
It was around when Dijkstra died that UT switched away from Haskell to Java. And yes, from what I've heard from several faculty members around in that period, a lot of it was from external pressure from large regional employers (some of which you have mentioned).
Learning Haskell can teach students a lot of very important concepts that can shape their view of programming and problem solving for the better. It's not impossible to learn these things with other languages, and of course there are many things you might not learn using Haskell, but that's why you typically learn several programming languages in the course of a university education. In any case, it's not that hard to learn Java, and I would certainly look more closely at a resume that listed Haskell proficiency. Almost every resume I see lists Java.
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 philosophical note, the goal of CS education is not to score Java internships.
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'd much rather hire an intern that has a solid Haskell background and never used Java before than the other way around. Even as a pure Java shop. Especially as a Java shop that is using Java 8.
In the absence of proper trade schools they end up adapting (or been forced into) offering something that looks a lot like a trade school.
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.
Around here they always advertise themselves with slogans like "an education for the real world". I think they became trade schools but still haven't realized it.
Honestly, a statement about Haskell. Haskell just makes certain core concepts about programming and computer science really obvious and clear. Also the discipline Haskell's purity and type system forces on you leads some pretty good habits that I try to keep in mind no matter what language I'm programming in (which these days is 90+% python or JavaScript).
The predictable comment that learning Java is not necessarily an education is being repeatedly responded to here. I clearly should have included a response to this sort of argument in the original. Since I didn't, and since I can't edit now, I'll do it here.
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!)
> 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.
> 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.
What a creative (if hardcore) way to circumvent a bureucratic requirement :)
What proportion of people asking questions do you think are students vs professionals/other nonstudents?
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.
Students are much more likely to ask lots of questions. Far more difficult projects are often due on a Monday or Tuesday to give students the weekend to finish up, the exact kind of projects likely to elicit questions at the last minute.
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.
> 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.
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).
I would have expected HW to be only a small proportion, but I'd also expect think terms like "pointers, algorithm, recursion" to be much more common for HW.
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.
Exactly and plausible Haskell weekend shift explanation may be that it's just difficult language and/or not many people are using it in real projects (during work week).
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.