I've gone through http://learnyouahaskell.com/ and it wasn't too hard. About the only difficulty is the pointless and contradictory jargon like "point free" or the hand-waving about Monads and how they violate their purely functional execution model. Never heard of Agda, but then I sort of don't care.
Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.
The mark of whether you "know" a programming language isn't whether you've gone through a tutorial; it's whether you can write useful programs in that language.
Uh yeah, there's this thing called experience which allows me to learn a language well enough to realize it's a total load of bullshit. Haskell was exactly like that.
Zed, why do you think Haskell is spoken of so highly if it's so crap? Or are you being hyperbolic? I'm not in a position to judge, but when Peter Thiel gives a 19-year-old $100k to do a Haskell project, that gets my attention.
Really nice effort on this book, I wish I could teleport it back in time to my past self.
> About the only difficulty is the pointless and contradictory jargon like "point free"
It isn't pointless, and it isn't contradictory. If you think it's contradictory, then you don't know what the word "point" means in that context.
It is a useful way to describe the style of functions.
f x = postProcess (businessLogic (foo (preProcess data)))
is a different style than:
f = postProcess . businessLogic . foo . preProcess
It is useful to have words to describe the two styles.
> or the hand-waving about Monads and how they violate their purely functional execution model
What? You obviously weren't listening. Monads do not violate the pure functional execution model. Monads are used, amongst many other things, to functionally compose non-pure program specifications.
> Never heard of Agda, but then I sort of don't care.
Some of us care about the forefront of research about static guarantees. Agda is a language that makes it possible to guarantee arbitrary properties (of our choosing!) about our code. If you are not excited about such guarantees, then you are clearly not a PL guy, but those of us who are interesting in PL research find it fascinating.
> Obviously, there are old programmers who are into programming languages, but they usually sit around writing crappy programming languages that nobody can use because they never ask anyone if their programming languages are usable. You know, kind of like Haskell.
I sense your frustration and difficulty of picking up Haskell. Maybe if you give it a bit more time, you could understand it.
Zed, I am also trying to learn Haskell and I must admit I have a hard time with it, so I am kind off jealous about you finding it not too hard and having the ability to learn so fast. Even though I used over 5 languages in the last 20 years, for me Haskell is so different and difficult, that I find myself put back to when I was 16 and learned the first language - C on MS-DOS. Still I find Haskell attractive and I hope I will be able to "tame" it. I am facing difficulties with all the terminology which seems strange.
I started with the book "Real World Haskell" (http://book.realworldhaskell.org/) which I find very good, but I got stuck after chapter 5. Then I discovered the Channel 9 lectures "Functional Programming Fundamentals" and I started to watch the videos. It helped me to grasp some of the terms and some of the beauty. But only at the 11th video (http://channel9.msdn.com/Shows/Going+Deep/C9-Lectures-Dr-Gra...) I got kind of hooked. From this point on I started writing my own programs.
From every programming language I looked into so far I still find Haskell to be so different, unique and at the same time beautiful - nothing I had experienced since the first language that I learned.
Hey, I have to call it like I see it. I find Haskell very unusable and their base philosophy just doesn't jibe with what I know of actual software development or logic.
How much did you try to use Haskell before declaring it "unusable"?
Haskell is very different from other languages, which means your expertise in other languages doesn't translate. That makes it harder to start off, almost like learning programming from scratch. But if you encounter this and decide it is "unusable" then you are describing your own lack of expertise in the language as an objective property of the language itself.
Haskell has interesting advantages and disadvantages. It is already used successfully in many contexts. It is a joy to program in, and it's one of the languages where successful compilation actually means a whole lot (bugs that go through the compilation process uncaught are an order of magnitude more rare than in other compiled languages).
It has some useful tools not found elsewhere (hoogle type search, djinn, pl/unpl).
It performs extremely well and manages to be more expressive/concise than Python while still far exceeding it in performance.
You missed the point of his article. I believe Zed has shown that his mind is perfectly capable of seeing and processing the macro picture. Whether that be language theory, software engineering, or whatever he puts his energies towards. I may not agree with some of his opinions but the volume and quality of his output is indeed impressive.
Haskell's type system _is_ complex, but so are most things that are looked upon with foreign eyes. Zed is known for a bit of hyperbole. Are programming languages exciting? Sure, probably at any age. That wasn't his point though. They're just a thing, a tool. To a novice this very well may be novel advice looking upon the rest of us chattering away about the next bit of cooltech on the horizon.
I hate the tool argument. Programming languages are as much a tool as mathematics or English. I think of them more as a method of communication, a way to express your thoughts and ideas. Not only that but they are executable and unambiguous (most of the time heh). A programming language not only has the power to allow you to express your thoughts, but even to even shape them.
The power of this field is in its infancy. There will be a day when "programming" as we call it is as natural part of the user experience of machines as browsing facebook might be today. In fact it will be expected, and products that do not allow this rich interaction from the user will be shunned. Programming will be second nature and humans will not desire it, nay they will demand it. It is akin to granting freedom to those subjected to slavery. It really changes ones entire world view.
But by dismissing these powerful constructs as mere simple tools this vision will never be realized.
This is the flaw in Zed's argument. Learning new languages may not have been valuable to him (which in reality I doubt) simply because he hasn't expanded enough into the areas less explored. There is so much room for innovation here that the journey hasn't even begun. He is writing off something so incredibly powerful and world shaping simply because he lacks the imagination to see it. The sad part is that he is inflicting this view on those new to the profession that may across his old "wisdom".
I appreciate your comment. I tend to have a lot of sympathy for the "programming as a tool" argument and forget the potential that programming languages ultimately have. Programming languages, just like any language, are a means of communicating ideas. As this becomes easier and more expressive it will revolutionize the field, many times over.
I think the real problem is that most languages that are made these days are just minuscule iterations over whats currently available. From that perspective there is little to no value in keeping up with whatever monstrosity some overeager researcher squeezes out of their head. But completely new paradigms, or new ways of doing old things, certain have much value; to the programmer learning it and to advancing the field.
Exercises in style do not make books (Raymond Queneau nonwithstanding). If you just try out a load of languages, learning what's possible but not doing anything with it, what's the point?
I don't think he is discouraging learning new stuff, looking at new techniques. What he is saying is that a solipsistic attitude about programming is a waste, and that resonates with me. I've seen many a time people who can make awesome demos of SLIME, have Haskell tricks up their sleeve, write languages on weekends, and yet ultimately do absolutely nothing. It's scholarly, for sure, but that's it.
To be fair, I agree that there's explorations to be done in this realm, but the sorts of explorations that create value on a visible scale tend to go hand in hand with some application. "ERLANG'S SO AWESOME" because its ingenuity meets reality quite rapidly, and you can build stuff with it. In a societal scale, that's the true value.
I don't see why this idea is so hard to grasp. With the current state of programming languages, definitely not. But I believe much more intuitive forms of programming languages will eventually be made such that your average intelligent user can accomplish non-trivial computation.
Programming languages are the computer analog to natural languages. The real problem is that most of our brains aren't wired for programming languages. If we can bridge that gap, that will completely revolutionize the way people interact with computers.
I challenge his knowledge of/about Haskell, Agda, etc.
Also, I am sure there are plenty of "old programmers" who are still excited about programming languages, and think they matter.