Live data from Hacker News

Dijkstra on Haskell and Java (2001)

chrisdone.com

221–230 of 253 posts

Re: Dijkstra on Haskell and Java (2001)

#221

Earlier quoted context omitted.

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…

"Moving the goalposts" [1] doesn't mean what you think it means. [1] http://en.wikipedia.org/wiki/Moving_the_goalposts

That I am familiar with. I guess I just misunderstood sinewave. That will happen with a one liner reply I guess.

Re: Dijkstra on Haskell and Java (2001)

#222

Earlier quoted context omitted.

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 (f…

It is amusing you bring this up, as AE was my major before switching to computer engineering in the 3rd year (Embry Riddle Aeronautical University). I was extremely excited about it in high school. I bought this book -

http://www.amazon.com/Fundamentals-Aerodynamics-Aeronautical...

Started reading it and the math was way above my head. So I went to my calc teacher and he acknowledged the material was beyond my reach. But then he pointed me to materials to help and offered his time to explain the basics.

This was before there were countless free high quality learning materials online.

Are you going to learn differential equations, statics, dynamics, etc... in high school? Maybe. Probably not. Who cares? That doesn't mean you can't start.

Build a model rocket. Build an RC plane. Dive into more accessible subjects like linear algebra. Learn matlab or octave. I could go on forever.

You would not believe the amount of AE students that struggled - and I mean struggled with Ds through intro to programming with C. I helped many with their homework. Get a leg up and start on that!

Re: Dijkstra on Haskell and Java (2001)

#224

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.

That's definitely not the case in the UK. For example, the guidelines for applying for Economics at Cambridge state:

"The Faculty does not have standard requirements for subjects other than Maths: in particular A level Economics, though useful, is not a prerequisite."

http://www.econ.cam.ac.uk/ba/guide.pdf

(FWIW I did mathematics as an undergrad but I considered CS and spoke to CS faculty at various university open days, from what I remember they all considered maths to be the only essential A level for admission.)

Re: Dijkstra on Haskell and Java (2001)

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

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

Is that the basis for the quote about "CS isn't about computers any more than astronomy is about telescopes"?

http://en.wikiquote.org/wiki/Edsger_W._Dijkstra#Disputed

Re: Dijkstra on Haskell and Java (2001)

#226
The first programming language depends a lot on what the purpose is. EWD's purpose is to train mathematicians specializing in computation. For these types of people, Haskell is fine. "Commercial" languages are better for people who want to learn the basics of programming to apply in a job later.

Re: Dijkstra on Haskell and Java (2001)

#227
post #42
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…

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.

The whole point of abstraction is that you don't have to care about the underlying mechanisms...

As a math person I love abstraction, I love the idealism of not wanting to worry about underlying mechanisms. As a programmer, I would note that virtually all the abstractions which programming has produced are basically failures at that level - programming languages and constructs are invariably "leaky" to the extent that on the intermediate level you wind-up having to worry about underlying mechanism after-all.

On the other hand, I think Dijkstra's wrong about one's first programming experience shaping one irrevocably. There's nothing wrong with learning pure abstraction first and then finding out it never works but there's nothing wrong with learning "bare metal" first and then learning abstraction. I think learning depends on keeping your "mental space" clean more than on what stuff you've done.

Re: Dijkstra on Haskell and Java (2001)

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

This is why the University of Chicago has two introductory programming classes - one for students with experience, one for those without.

Honors Intro to Programming (161) is taught in Haskell and introduces monads 4 weeks in. Intro to Programming (151) is taught in Scheme (well, Racket) and works through How to Design Programs.

Re: Dijkstra on Haskell and Java (2001)

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

Re: Dijkstra on Haskell and Java (2001)

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

> CS students I think CS students should be taught computer science, not software engineering.

Maybe 5% of CS grads at the greatest will ever do CS as a full time job. 95% will be programmers/engineers most of the time. Its nuts that you think we should be teaching the former and not the later in just the same way that law is taught. Instead of teaching the practice, the academic subject is taught which means graduating students require extensive experience.
Post reply on HN