Live data from Hacker News

Dijkstra on Haskell and Java (2001)

chrisdone.com

201–210 of 253 posts

Re: Dijkstra on Haskell and Java (2001)

#201
post #63
post #42

Earlier quoted context omitted.

I disagree. The whole point of abstraction is that you don't have to care about the underlying mechanisms (although most non-trivial abstractions are leaky as Joel Spolsky has written about). For instance, someone who writes assembly should not have to know how a transistor works. A course in introductory programming similarly should not be about how a processor works.

It's trivially easy to write perfectly valid looking Haskell programs that are abysmally slow because of how they are actually executed, and since the reason for this can't be explained at a level of abstraction of such a course, people learn to treat the language as a closed black box, while you can't really competently use any language without understanding its execution model. Abstractions are fine, but you have t…

people learn to treat the language as a closed black box, while you can't really competently use any language without understanding its execution model.

I wonder if there isn't an opportunity here. Azul's Zing VM's incremental GC basically compensates for cluelessness about how to architect and tune a GC'd language project for high performance. The first reaction might be against such cluelessness, but isn't GC that doesn't require arcane knowledge for high performance a better GC, according to the goals that GC was developed for in the first place?

Re: Dijkstra on Haskell and Java (2001)

#202

Earlier quoted context omitted.

Plenty of computer science students at my (SICP-using) university had never programmed before attending, yet they're great at it. Your attitude is especially damaging to female students, who are even less likely to lack programming experience. Computer science isn't even about programming all that much. > You can't study Economics if you've never heard of Keynes. Have you ever even been to a university?

Surely you won't get onto an Economics degree course if you haven't already studied economics in high school? I'm from the UK and there you can study Economics from 15. Also, surely the interview will ask you about your background knowledge of economics, and if you didn't know who Keynes was you're unlikely to get an offer.

High school education in the US typically requires a 1 semester economics course, at most. A one semester or one year government/civics course. Two years of history (US and World, the latter typically being very eurocentric). In the sciences, college bound students will have taken (usually) one year each of biology, chemistry and physics. On the math front they'll have gone through trigonometry, perhaps pre-calculus. For foreign languages they'll have usually taken two or three years of some language (almost universally available: French, Spanish; common: German; some regions or schools will have more options available). For literature (also known as language arts or English) they'll usually have taken three or four years. The first is often a refresher on composition, with reading really being intended only to provide material for discussion and writing assignments. The second and third courses are often region/time specific (American Lit, British Lit, World Lit from 300AD-800AD), the fourth (again, for college bound students) will involve more complex novels and writing assignments.

Knowledge of specific economists is not the norm in the basic college prep curriculum in the US. Students in the IB program (relatively rare, available in major cities so the majority don't have the option) or the AP program will have studied the subjects to a greater depth. At least equivalent to freshman/sophomore college courses in the subject.

For a bachelors degree the students will apply to schools and get in based on: GPA, SAT/ACT scores, extracurricular activities, interview (not used for the average university), and essays. Some schools put all freshmen into the same pot and require them to apply to their major after their freshman year. In that case, it'd be similar to your "Don't know Keynes? Probably won't get an offer." situation. However, that's also not the norm. And once at the school the students can usually change major with ease.

Re: Dijkstra on Haskell and Java (2001)

#203
post #93

Earlier quoted context omitted.

That's an extremely elitist and exclusionary attitude you have there. Your post is also "begging the question". According to you, people interested in said subject should already be experts by the time they reach university. This is of course flat out wrong, as there are many counterexamples of people mastering and contributing new knowledge of a subject, many many years after attending university. I think you need a…

It's hardly elitest to say that one should show just the slightest interest in the field they are entering college for - enough so to just pick up a simple book and work through it. I had the same experience, students who had no prior experience not only held back classes for those with much more, they tended to fail miserably in labs and exams.

How, for instance, is the average high schooler going to do anything beyond the most basic research in Aerospace Engineering before getting to college? They may have studied physics and calculus, but without access to the tools of a decent shop they can't build much, and most of the worthwhile texts are written assuming a level of understanding of math (specifically calculus and differential equations) and physics (fluid dynamics, statics, dynamics) that they are unlikely to have encountered. Should they not go into AE as a result and stick with the math or physics that they do have some background in?

Re: Dijkstra on Haskell and Java (2001)

#204
post #105
post #33

To me there seems to be something wrong with using as the first language something that depends on a very, very complicated runtime and execution model to run on the hardware we currently are using. This way people end up viewing programming languages as some God-given black box and not just something another computer program written by another person provides for you. I think CS students should instead start by lear…

Your idea about going from architecture to programming in the other way of traditional curricula, in my opinion, has a lot of merit. Other seem to agree. An Israeli professor, Noam Nisan, created a course specifically for this purpose, now branded even more popularly as Nand2Tetris course and book.[0] Why did he teach something obvious like this? From the site: "Why Bother? Because many CS students don't understand h…

A similar textbook[0] is used at UIUC in the Computer Engineering curriculum. I've read both books and I think this one is better, but its not free and its priced like a textbook[1].

[0] http://highered.mcgraw-hill.com/sites/0072467509/ [1] http://www.amazon.com/Introduction-Computing-Systems-gates-b...

Re: Dijkstra on Haskell and Java (2001)

#205
I went to the University of Texas right before they made this change and I will say that my Programming Language course using Haskell was one of the toughest classes I took there.

I was barely a novice at an imperative language, and all of a sudden I had the comfortable struts of local mutable state ripped out from under me. Having to solve most problems via recursion was incredibly challenging at that stage and I'd be lying if I said I left that class feeling like I understood Haskell.

That course did have the desired effect that Dijkstra was hoping for though. I never programmed functionally in my coursework after that, but it stuck with me and the feeling that "there is something different out there" in the programming language world has forced me to never be satisfied with one language or one approach to solving a problem in my professional life since then.

Re: Dijkstra on Haskell and Java (2001)

#206

Earlier quoted context omitted.

And just imagine then we would not have 1 trillion in student debt with many unemployed college graduates!

You're moving the goalposts.

No I am saying that college is not about "goalposts". I truly now believe that college is not something that should be done solely to further ones career (hence, passionless students). Instead it is something you do because you are genuinely interested in a subject and want to further education. Otherwise you end up in the situation we are in.

If the goal is to have a job, there are better ways of accomplishing that than taking on student debt and pursing something you are not that interested in (or spending lots of money trying to figure out what you enjoy).

Re: Dijkstra on Haskell and Java (2001)

#207

Earlier quoted context omitted.

Industry is far too low a bar to aim at. College should give them the fundamental understanding of programming that they can apply to a variety of situations. Employability flows out of that.

But if the way you're doing it causes a high dropout rate, then you're not giving them "the fundamental understanding of programming" very well, are you? (Unless you're going to be snobbish and say that "only the few can learn this" - but that's a pretty ugly snobbery, especially if it's caused by you choosing an inaccessible teaching approach.)

The dropout rate for entry-level programming courses is high, regardless of starting language. Symbolic thinking is rough to pick up in a single semester. I think most people can get it, but the timeframe is tough, especially on non-majors. I don't know enough to comment beyond this, other than suggesting that we can require less of non-major students to ease them in?

Re: Dijkstra on Haskell and Java (2001)

#208
I can't help but notice that the vast majority of commenters are missing the fundamental reason for all this handwringing. The reason isn't language schism (that too, but I'd attach a much smaller weight to it) so much as the schism between corporatism & academia.

Corporate America wants languages that are dumb, easy for corporate drones to assimilate, hard to mess up with, verbose ( verbosity is misinterpreted as documentation in the enterprise) and Java fits the bill from the get-go.

Now, that doesn't mean you can't do non-dumb things in Java - at Sun Microsystems, we worked on all sorts of very cool R&D-type shit like JavaOS(http://en.wikipedia.org/wiki/JavaOS), Hotjava ( http://en.wikipedia.org/wiki/HotJava), JavaSpaces (http://en.wikipedia.org/wiki/JavaSpaces#JavaSpaces ), JavaCC( http://en.wikipedia.org/wiki/JavaCC ), Jini (http://en.wikipedia.org/wiki/Jini ), ...a very long list of R&D stuff. Sun Research was fucking elite, & staff engineers were considered outright geniuses. None of that cool R&D shit got any traction.

So what got traction ? Whatever yucky shit corporate America wanted - JavaBeans( http://en.wikipedia.org/wiki/Java_Beans ), EJB (http://en.wikipedia.org/wiki/EJB ), Swing (http://en.wikipedia.org/wiki/Swing_(Java) ), various sorts of form-builders, table widgets, reporting shit, IDEs, classfile obfuscators,...

So Java became that. Rather than go down the R&D route, the pipeline became more corporate America oriented.

Haskell has always had very deep roots in academia - the focus on enabling the corporate American drone with Haskell is minimal, close to zero. So what do you expect ? The focus will be on debating types & building theorem provers, not on "how to show big bank's fourth quarter report in 3 colors with 7 columns and subtotals in single widget while data-binding seamlessly occurs in middle tier using enterprise beans built from beanfactoryfactory" - this sort of shit that is commonplace in the Java EE world I inhabited post Sun, would be considered positively gauche in Haskell.

Re: Dijkstra on Haskell and Java (2001)

#209
post #16

Dijkstra assumes that students will already have been exposed to imperative languages before joining university, and will appreciate the change. I think that this assumption might leave behind students that have not yet been exposed to any programming (that stuck). Over in the UK I certainly hadn't encountered anything more complicated than html before I hit university, and was very happy with sticking with Java for…

> might leave behind students that have not yet been exposed to any programming And good riddance. If you make it to university without exposing yourself to your subject as a matter of passion (and few subjects are more easily approached by hobbyists than programming) you're going to waste your time there. University is a not a "school" you attend for learning a subject. You can't show up for English Literature if yo…

I started programming my second semester of college, and I just got a full time position with Microsoft starting this summer after I graduate so I beg to differ.

Re: Dijkstra on Haskell and Java (2001)

#210

Earlier quoted context omitted.

Up until about a decade ago, most CS graduates from MIT were never taught C or Java in any class. They still seemed to do pretty well in the job market. (Mostly it was assumed that if you really liked software development, you would go out and learn one of those languages outside of class, such as from a student-led seminar.)

It's just a business thing. Some large local companies come and talk to the university and say that they need a bunch of CS grads to fit into their business. The HR drone says they need to know Java to be able to integrate into the company quickly. The lecturers get upset. The finance department gets promised a donation, the marketing department gets promised easy job searching for CS students. The ivory tower crumbl…

Businesses are essentially turning all universities into vocational schools.
Post reply on HN