Live data from Hacker News

Dijkstra on Haskell and Java (2001)

chrisdone.com

231–240 of 253 posts

Re: Dijkstra on Haskell and Java (2001)

#231
post #229
post #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 do…

Perfectly put. I'm having to take a VB.net course to advance to the next level of my high school's CS curriculum, if you could even call it that. It's painful as hell, and like you said, makes me feel like a corporate monkey who's writing some ugly code for use in some specific pants-on-head retarded enterprise "app."

If you think that kind of work is retarded then don't get fooled by the languages and tools. A lot of the web stuff is just the same as VB. Just because its ruby or clojure doesn't take away from the fact that its just CRUD. Try and get into an interesting domain and don't worry too much about the language they use. Domain, domain, domain.

Re: Dijkstra on Haskell and Java (2001)

#232
post #217

I love Haskell and Java. From a high level they are my favorite languages for their respective paradigms, so I think most programmers should at least try to write a simple program in both. That said, I think people are overreacting to Java as a CS 100-level language because of enterprise experiences. I have written enterprise Java and I hate it, but I still love Java. Java EE is all beans and POJOs and XML and Swing…

We did half C/C++ and half Mathematica in parallel. For the project you needed to build a prototype in Mathematica and then implement it fully in C++ using a cross platform gui toolkit (Glockenspiel - this was quite some time ago). It seemed to work - for a functional language Mathematica was also fairly practical.

Re: Dijkstra on Haskell and Java (2001)

#233
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…

"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."

Guess those kids that cannot afford a computer are S.O.L. in your world.

Most subjects are easier to approach than computer programming just because of cost of entry.

Re: Dijkstra on Haskell and Java (2001)

#234
I'll just leave this here...

http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Func... (One of the greatest introductions and walkthroughs of Haskell I have ever watched, taught by Erik Meijer)

I have actually watched every lecture (even the parts with stuff I "knew") and thoroughly enjoyed it. If an entire course was taught like those lectures were, I think you could teach someone a pretty darn good grasp of haskell pretty quickly (I am of course ignoring the part where you learn really basic fundamentals like bits/bytes, data types, references/pointers, etc)

Re: Dijkstra on Haskell and Java (2001)

#235
post #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 do…

You didn't mention that all the "cool R&D shit" didn't work very well, and were considered inferior to competitors at that time.

Re: Dijkstra on Haskell and Java (2001)

#236
post #71
post #63

Earlier quoted context omitted.

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…

It's worth noting that Djikstra (to my understanding) thought almost none of that was even contained in the field of CS. His perspective was that CS was about process and verification and proof and thus while the current implementation of computers is interesting, it didn't deserve any privilege. So being able to prove certain nice properties about algorithms without worrying about the underlying implementation is ex…

"one should program the most abysmally slow correct thing first and then use algebraic theories to transform it along obviously correct paths to something highly performant."

Except that the syntactic variance problem [1] makes this impossible to do in theory. Unfortunately so long we use Turing-equivalent computers there will be a need for "performance programmers" and low-level programming because we cannot automate their job by formal transformations from high-level, "obviously correct" programs (theory proves so).

[1] http://dx.doi.org/10.1145/502175.502181

Re: Dijkstra on Haskell and Java (2001)

#237
post #217

I love Haskell and Java. From a high level they are my favorite languages for their respective paradigms, so I think most programmers should at least try to write a simple program in both. That said, I think people are overreacting to Java as a CS 100-level language because of enterprise experiences. I have written enterprise Java and I hate it, but I still love Java. Java EE is all beans and POJOs and XML and Swing…

It's just my experience, but the people I know for whom Java was a genuinely first language seem to have a harder time than anyone else grokking pointers.

Re: Dijkstra on Haskell and Java (2001)

#238

At the University of Edinburgh, they teach first year undergraduates Haskell and Java (Haskell in semester one and Java in semester two).

How successful are they with this approach in terms of student learning? What are the success, drop-out rates, etc?

Re: Dijkstra on Haskell and Java (2001)

#239
post #71
post #63

Earlier quoted context omitted.

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…

It's worth noting that Djikstra (to my understanding) thought almost none of that was even contained in the field of CS. His perspective was that CS was about process and verification and proof and thus while the current implementation of computers is interesting, it didn't deserve any privilege. So being able to prove certain nice properties about algorithms without worrying about the underlying implementation is ex…

Well said! Understanding the machine, while useful, does not usually help you solve the problem at hand. A better approach is to teach how to create models, mental and the ones on the computer(datastructures, types etc), and show how that maps to problems at hand. Teaching how to verify models for rigor, efficiency(algorithmic), taste for elegance , and help seeing that computer science is not all that different from math, is what helps you build structures that stand the test of time.

Re: Dijkstra on Haskell and Java (2001)

#240

My personal opinion - the best languages for learning are script-able, dynamically typed languages like Ruby or Python. You can build very basic programs in a procedural or functional style, and then get introduced very softly into the world of OO. Haskell is great in some ways, terrible in others. Like the fact that you can't apply a normal function to a monad, and monads are hidden with do Lisp/Scheme are conceptua…

I agree that Haskell can be difficult coming from an imperative mindset (it is for me too!), and that it takes time to grok monads, but what exactly is difficult about type classes?

And what do you mean "design patterns like FRP"? I'm sure you know there are tons of design patterns that are "all the rage" for C++ and Java (a lot of them dealing with the complexity of doing OOP). Why are you giving those languages a pass?

Post reply on HN