Live data from Hacker News

Dijkstra on Haskell and Java (2001)

chrisdone.com

181–190 of 253 posts

Re: Dijkstra on Haskell and Java (2001)

#181
post #129

Earlier quoted context omitted.

Starting at one place in the stack does not prevent you from moving to other places for subsequent courses.

And you don't see value in the core sequence being more deeply interconnected?

I don't see your approach as necessarily "more deeply interconnected."

Re: Dijkstra on Haskell and Java (2001)

#182
post #178

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…

You can't apply normal functions to monads? Since when? Or what is a 'normal' function?

See all the functions which are funM. mapM, replicateM, etc... For a newbie having to use a different function to apply to a monad vs. a pure function is confusing and not necessary.

Re: Dijkstra on Haskell and Java (2001)

#183
Ah, I encountered this coming up when various friends were enrolling in computer science courses at Universities. Curriculum either followed an 'engineering' format, a more EE to CS bottom-up methodology, or they followed a top-down thought process.

The reasoning for bottom-up is that there are fundamental aspects of the bottom up approach that truly teach the fundamentals that are necessary to become a great computer scientist/engineer/developer that I don't think any other method provides.

But the top-down approach is appealing for one reason it seems: It's friendly. I would not be surprised if the retention rate for top-down was greater than the bottom-up. Using something like Python, Java, or whatever other conventional blackbox language is easy, comfortable, and immediately demonstrates to a student the power of programming. The practicality of what they learn is evident. Ideally, interest in this would continue down the line. 'This is really cool, but how does Python actually work?'.

Unfortunately, it seems that most people, when presented with a working blackbox, don't care to see how it actually ticks. It takes a certain special someone to open up a watch, disassemble and reassemble it. So who knows how well the top-down carries over into learning the fundamentals.

The bottom-up has the drawback of intimidating the meek. I certainly was one. I would have benefited from a top-down approach, as I am one of the types who like to see how something ’ticks’.

So therein lies a trade off, would you sacrifice the known quality of your curriculum for better retention? Having someone learn something, is better than nothing, but that’s up to people like Prof. Dijkstra to decide.

EDIT: spelling/coherency

Re: Dijkstra on Haskell and Java (2001)

#184
post #88

Earlier quoted context omitted.

As Brian Beckman explained, as an aside, in "Don't fear the Monad" [1], these two differing views were born in the '70s and split two programmers into two camps: The bottom-up people, and the top-down people: - The bottom-up people start with the hardware and only add abstractions and trade performance where necessary (fortran, c, java) - The top-down people started with perfect abstraction/logic and reduced/removed…

I don't agree. There's many a programmer I know that can troubleshoot a tube radio, then go write some Lisp. Most are old school folks that grew up in the 8 bit days of solder and wirewrap.

Individuals do both, yes, but disagreeing that there are in fact camps is something else.

Re: Dijkstra on Haskell and Java (2001)

#185
post #114

Earlier quoted context omitted.

This strikes me as in principle somewhat wrong and in practice quite wrong. If American universities expelled everyone whose declared major was not a matter of passion, they would in general be pretty empty.

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

You're moving the goalposts.

Re: Dijkstra on Haskell and Java (2001)

#186

I would guess Haskell would be perfect if the goal is to produce academics. But if most of your students are destined for industry, Haskell is in my opinion the absolute worst language. - You'll probably get a high drop out rate because of the complexity (recursion, pure / first class functions etc). - You rely that your students already have experience at high school with imperative languages - The industry by far s…

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

Re: Dijkstra on Haskell and Java (2001)

#187
post #167
post #152

Earlier quoted context omitted.

As someone who's strongly in the "top down" camp by observation, I'm about to refute an interpretation of what that means. Everyone who's learned Haskell really well understands exactly that you learn monads by example, not abstraction. Abstractions need both motivation and "point samples" which describe good reasons for their particular brand of abstract behavior to be meaningful. I don't think at all that the "top…

Same thing happens with design patterns. It probably happens with all sorts of non-obvious but powerful ideas. Hmm. Any sufficiently advanced learning is indistinguishable from madness?

That's what Plato suggested in his Allegory of the Cave, at least. :-)

Re: Dijkstra on Haskell and Java (2001)

#188

Earlier quoted context omitted.

- The industry by far still don't use functional languages. Flat-out wrong. The world's most popular language (in terms of lines of code, number of programmers and companies using it) is a functional language: JavaScript.

Cheap crappy beer and junk food are popular too.

True. But that doesn't refute chongli's point at all.

Re: Dijkstra on Haskell and Java (2001)

#189
post #85
post #44

Earlier quoted context omitted.

>Personally, I see Haskell as the C++ of functional language You should try it some day, it is absolutely nothing like your misconceptions.

Haskell is a relatively difficult language to try. Introductions and books almost seem to expect you to understand the syntax when you begin. And I/O is introduced late, which makes it hard to play around with.

I think you are forgetting that everyone who uses haskell has obviously gone through the trying it stage. It is not that hard, I did it. I just had a couple of PHP programmers do it without any problems. LYAH assumes you know very little, and explains things very simply. It gets to IO plenty quick enough, and before that it is showing you how to play around in ghci where you don't need to care about IO.

Re: Dijkstra on Haskell and Java (2001)

#190

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.

Your presumption that all education systems are similar to your own is not valid, relative value or effectiveness not withstanding. The reality is there are quiet distinct differences generally and between US and Uk in particular.

In the US, a bachelors degree takes 4 years, consists of extensive 'general education' requirements outside of the emphasis area, and generally start with intro courses that are more in depth than what would have been studied in high school. So a background in the particular area is not required.

Post reply on HN