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.
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.
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.
Really nice effort on this book, I wish I could teleport it back in time to my past self.
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.
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.
Ow ow - come on now, there are definitely practical applications of Haskell. It just has a painful learning curve, but it's very elegant in the end.
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.
It's a pretty impressive piece of design.
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.
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 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.
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.
Are you serious? Like how everyone changes their own oil?
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.