News for hackers. Stuff that matters.
Re:On Marketing Haskell by centimeter on Saturday May 30, 2020 @01:27PM (#23362856)
With respect to availability of talent pool: my alma mater used to teach Haskell as the introductory programming language, and from what I’ve heard from people who were around then it was great for faculty and students. However, a very large corporate donor pressured the university to switch to Java in the early 2000s, because that’s what they used internally and they wanted a large local supply of pre-trained fungible labor. Now only a small fraction of the top students who study advanced topics in PL or compilers or what-have-you will come out of the university knowing how to use Haskell. I think this is deeply unfortunate - if society could quantum tunnel through to the point where Haskell was the safe, readily hireable corporate choice, the state of software (especially corporate software) would be a lot better off.
Re:On Marketing Haskell by todd8 on Saturday May 30, 2020 @03:46PM (#23363994)
CS programs for undergraduate majors have a real dilemma. What programming language should they teach their students. My own kids are studying CS in college so I've seen the curriculums for a number of universities, and I've spoken to the faculty responsible for the language choices at some top programs. To me, there isn't an obvious best programming language to study as an undergraduate.

Some schools have a bifurcated curriculum, like Indiana University which has a program in Informatics for those planning to go into a career the requires programming and software engineering skills and a program in CS for those perhaps planning on going into grad school. There, learning Haskell might make sense in the CS program, but does it make sense for other students that want to get out and get a job?

My own daughter studied at a school where her first CS class was taught in Scheme (Racket). It, to me, looked like an excellent introduction to programming for someone majoring in CS. They used a book I approved of, How to Design Programs/2ed by Felleisen, et. al. Would Haskell have been better? Maybe, but I predict that more kids would have serious problems with a language like Haskell that is burdened with more challenging concepts and ecosystem. Perhaps Lisp/Scheme is a gentler introduction to applicative programming than Haskell. However most schools start with Python or Java.

I understand the arguments for a strongly typed functional programming language like Haskell (my own university research was in program verification many years ago).

Early on in CS programs students usually take one or two classes on data structures and algorithms. Data structures in my opinion needs to be taught in C. Haskell, Lisp/Scheme, Python, Java, and even modern C++ are so high level that teaching data structures in these languages ends up with students not learning the proper use of these languages' standard libraries.

At some point undergraduates should have an introduction to systems programming, the best text in this area is Computer Systems: A Programmer's Perspective/2ed by Randal E. Bryant and David R. O'Hallaron. This is a great book for undergraduate CS majors. This book requires C programming. So to me, it makes sense to teach data structures in C since students will need to understand it for their first exposure to systems programming.

Where should Python fit in the curriculum? It's arguably the most versatile programming language. What about Javascript? When should CS majors be exposed to it. Modern Java is a big language so one semester of use isn't going to be enough and it's too important to ignore. What about C++? It takes years of working with it to become a good but not expert programmer in C++. Should it be a part of the curriculum?

So my own recommendations for an undergrad CS program's language choices would be:

* Python -- for intro to programming, a course on algorithms, and a machine learning course

* C -- for an early class on data structures and a later class on systems programming

* Java -- software engineering, and a compiler course

* Lisp -- programming languages smorgasbord course, and an AI course

* Assembly -- hardware architecture/digital design course

* Javascript -- taught as part of a web-applications class

* Haskell or OCaml (or maybe Rust) -- intro to functional programming and program verification

What do HN readers think about this list? I'm glad I don't have to make the real decisions there are just too many languages that students need to learn in just a few years.

As far are my own background I have spent a great deal of time pursuing three different degrees from three different universities in CS. I've been the instructor for university courses for CS majors twice and taught perhaps 40 week long classes to professional programmers within a Fortune 500 company. I've also interviewed and hired many senior developers for my own company.

Re:On Marketing Haskell by massysett on Saturday May 30, 2020 @09:22PM (#23366398)
As someone who programs only as an amateur I honestly find baffling the whole idea that a university would teach students any programming language. Shouldn’t they be learning concepts, algorithms, data structures? Isn’t the language just a tool? I’d think mere technicians would learn languages. University-educated scientists should learn the underlying theory with which they can learn ANY language.

I am a lawyer. I didn’t learn Westlaw or Lexis in law school. I mean yes, I did use them and was trained in them. But they were just tools. But no one would say “what computer research system should we teach our students?” And good thing—the ones I used in law school are now obsolete!

Even as a lawyer I can teach myself programming languages. Man I’d be disappointed if I went into a university CS course and they’re debating something as low level as what language to teach me, rather than teaching me how to learn any language and how to design new ones.

Re:On Marketing Haskell by mumblemumble on Saturday May 30, 2020 @11:29PM (#23366934)
It's sort of inescapable, because there's some baseline level of tooling that needs to be supplied to the students to that they can learn the actual subject matter of the course.

As a practical example, in my graduate program, there were some courses where the professors handled a lot of those baseline details, and courses where the professors gave a lot of leeway to the students. My observation was that the latter courses couldn't go nearly as deep into the official topic of the course. Students would spend so much time managing their programming environments that it became a serious distraction.

Also, in reference to your question, "Isn't the language just a tool?" - no, it isn't just a tool. It's also a language. For a professional software engineer, the programming language isn't just a way of telling a computer what to do; it's also the primary, and most authoritative, medium by which you communicate complex technical information to your colleagues. It's perhaps comparable to the divide between informal language and legal language - one is useful, especially for communicating to people with limited expertise in the field, but the other is where the rubber actually meets the road.

Re:On Marketing Haskell by riwsky on Saturday May 30, 2020 @11:22PM (#23366898)
“As some who legalizes only as an amateur I honestly find baffling the whole idea that a law school would teach students any particular nation or jurisdiction’s legal code. Shouldn’t they be learning concepts, rhetoric, and logic? Isn’t a case law just a tool? I think mere technicians would learn legal precedent. University-educated lawyers should learn the underlying theory with which they can learn ANY case law.

I am a software engineer. I didn’t learn RequireJS or CommonJS in school. I mean yes, I did use them and was trained in them. But they were just tools. But no one would say ‘what JS module system should we teach our students?’ And good thing—the ones I used in school are now obsolete!

Even as a software engineer I can read court opinions. Man I’d be disappointed if I went into a law school and they’re debating something as low level as what jurisdiction’s laws and court decisions to teach me, rather than teaching me how to interpret any law or legal argument and how to design new ones.”

I hear what you’re saying, software engineer, but avoiding any particular set of case law would leave these lawyers extremely unprepared for professional practice—not just because they will likely work in one of those legal codes otherwise covered by the school, but because those codes and the arguments that shaped them constitute an immense base of empirical knowledge about legal rhetoric, logic, and concepts that simply cannot be replicated in a vacuum. Accordingly, those excellent judges and legislators who do the novel work of lawmaking and legal argument are _not_ reduced to technicians by their knowledge of case law. In fact, I’d say it’s the opposite: it is impossible to have a good grasp of the theoretical underpinnings without also having extreme facility in one legal code or another as a ‘native tongue’.

Re:On Marketing Haskell by giantDinosaur on Saturday May 30, 2020 @11:58PM (#23367063)
The most natural parallel is something you know implicitly: your native (or highly advanced second) language. It's not taught at law school, because it's assumed. Obviously you can teach law in any language, but you need to have a common base to apply and write down concepts, and that's the programming language to the university course.
Re:On Marketing Haskell by 2OEH8eoCRo0 on Saturday May 30, 2020 @09:32PM (#23366446)
>Isn’t the language just a tool?

Yes. But to learn the data structures and algorithms you have to practice coding them. What language do you code them in to teach them? After awhile most code looks the same.

Re:On Marketing Haskell by carapace on Saturday May 30, 2020 @11:29PM (#23366932)
It's an open secret in the IT industry that if you are smart enough to be a good programmer and you want to be well-paid you should become a lawyer.
Re:On Marketing Haskell by yakshaving_jgt on Sunday May 31, 2020 @12:04AM (#23367089)
Surely lawyers don’t make that much that they can have a better quality of life compared with a programmer earning good money from a wealthy market and living in a country with a relatively low cost of living? I mean, programmers can live and work anywhere. Lawyers can’t.
Re:On Marketing Haskell by carapace on Sunday May 31, 2020 @11:53AM (#23370321)
When I was looking into it back in the day the salary spreads for programmers and lawyers didn't overlap very much. A good programmer could get ~$250k max while a good lawyer starts at around ~$300k. This was also before remote work was so much a thing, eh?

> I mean, programmers can live and work anywhere.

Yes and no. YMMV

Re:On Marketing Haskell by ethanzh on Saturday May 30, 2020 @03:41PM (#23363954)
If your alma mater is what I'm thinking of (UT Austin) I can maybe share some insight on the current situation. The introductory courses are all still taught in Java and the lower-division systems courses are taught in C. From what I know about the curriculum it is entirely possible for a student to go their entire undergraduate career without expanding from these two languages (maybe they'll need Python for a class or two). This past semester I took our PL course which was taught in Haskell. I thought it was an interesting course and strengthened my base in FP (my high school taught CS courses in Racket where I started my foundation). However this was not a large class and from discussion with peers there is generally little interest in learning "esoteric" languages such as Haskell.
Re:On Marketing Haskell by turndown on Saturday May 30, 2020 @01:59PM (#23363156)
Was it University of Texas at Austin? I recall an article by Dijkstra complaining of this very thing.
Re:On Marketing Haskell by jjames on Saturday May 30, 2020 @02:20PM (#23363327)
"To the members of the Budget Council" --Dijkstra

https://www.cs.utexas.edu/users/EWD/transcriptions/OtherDocs...

Re:On Marketing Haskell by gowld on Saturday May 30, 2020 @01:36PM (#23362955)
I don’t get it. What does removing Haskell from the into course have to do with the use of Haskell in the PL or compilers class?
Re:On Marketing Haskell by mumblemumble on Saturday May 30, 2020 @01:50PM (#23363073)
If it's anything like what happened at my alma mater, they may well have switched to Java for everything.

It's really a disservice to students. Developing competence in a variety of programming paradigms is a career-expanding experience. It makes picking up a new language - and, by extension, a new technology stack - a quick and easy thing to do, because there will be very few ways of doing things that you haven't seen before. Which, in turn, makes it a lot more feasible to pivot your career or act quickly when an opportunity arrives.

A bunch of students who know only Java, on the other hand, is exactly what big corporate employers want. For employers, it maximizes the interchangeability of employees. For employees, it minimizes the interchangeability of employers.

Re:On Marketing Haskell by zabzonk on Saturday May 30, 2020 @01:52PM (#23363098)
> at my alma mater

Where would that be? Why is everyone here avoiding being specific? If you are not specific, why should we believe in what you say?

Re:On Marketing Haskell by mumblemumble on Saturday May 30, 2020 @02:22PM (#23363350)
Because doing so would not be decorous, and there's no practical reason to do so.

The most practical way someone could act on the opinion I expressed, if they find it useful, is not to sit and laboriously compile a list of individual institutions. It's to take that opinion under advisement in the course of the due diligence they should already be doing in their college search.

As for the last question, if I had any fiduciary responsibility, I would advise you not to believe anything posted on an Internet message board, because the commenters are largely just a bunch of anonymous yahoos who like to troll high school juniors and seniors as a sort of perverse hobby.

Re:On Marketing Haskell by a1369209993 on Saturday May 30, 2020 @03:50PM (#23364033)
Probably for the same reason their username is "mumblemumble" rather than "Ted Anderson from New York". This isn't Facebook; don't ask people to dox themselves.

If you want people to name and shame, ask for a list of offending institutions, not individual examples. (Also, fact-check that list, rather than blindly accepting accusations made by internet randoms, but that should go without saying.)

Re:On Marketing Haskell by zabzonk on Saturday May 30, 2020 @04:07PM (#23364201)
I didn't ask about their real name, I asked about the college they were talking about, which hardly exposes them to doxing.
Re:On Marketing Haskell by pgcj_poster on Saturday May 30, 2020 @05:08PM (#23364738)
The more information attached to your account, the closer it gets to revealing your true identity.
Re:On Marketing Haskell by ipnon on Saturday May 30, 2020 @02:03PM (#23363190)
If your first program is a function, the whole world becomes a function.

If your first program is an object, the whole world becomes an object.

There are always 2 ways to skin a cat with a computer. The more practical computer user could be satisfied with only using their first.

Re:On Marketing Haskell by centimeter on Saturday May 30, 2020 @01:47PM (#23363045)
Most CS students don’t take those classes. They’ll take data structures, algorithms, game design, databases, etc. which are mostly in Java or C++.
Re:On Marketing Haskell by zabzonk on Saturday May 30, 2020 @01:50PM (#23363078)
Most CS students certainly do take compiler classes, at least for any decent CS course.
Re:On Marketing Haskell by zabzonk on Saturday May 30, 2020 @01:44PM (#23363021)
> from what I’ve heard

No source specified - ignore.

> if society could quantum tunnel

Oh dear.