5 ms·
This might be an interesting project if not for the constant misguided crusading against a PL theory straw man. It's a sort of anti-intellectualism I find parti
by tikhonj 13y ago
This might be an interesting project if not for the constant misguided crusading against a PL theory straw man. It's a sort of anti-intellectualism I find particularly galling, but it seems lamentably common in some nooks of the programming world.
- freyrs3 13y agoI find the whole hubris of this article kind of alarming, I'm not sure if the author is doing this out of some form of satire or whether he/she actually think that the "disciple of PL theory is just full of misguided imbeciles who use formal words I don't like". The attacks on TAPL too are seemingly weird, because arguably it's one of most thudingly concrete and down to earth books on types ever written. The whole book is about applications to real world problems and reveling in the fact that one haven't read it seems very asinine.
- urbit 13y agoObviously if you have a door that needs to stay open, a thudingly concrete... never mind. All I would say is, s/types/PL theory. Let's take your statement as true and stipulate that TAPL is in the top 1% of down-to-earthness of books on PL theory. Is it in the top 1% of down-to-earthness books on, say, Java? If not, what does this tell us about PL theory? You have read TAPL, right? PL theory is a beautiful system and I've never said otherwise. TAPL is also very good at keeping doors open. But so are many things. PL theory is not the theory of programming, any more than TAPL is the doorstop. It is a theory of programming and a doorstop.
- freyrs3 13y ago> Is it in the top 1% of down-to-earthness books on, say, Java? If not, what does this tell us about PL theory? Yes I have read TAPL, it's sitting on my desk right now. I'm not even sure what you're trying so say, the fact that a book on type system design doesn't have advice on Java* seems perfectly natural to me. A book on goat husbandry doesn't have advice on Rails development. What are you trying to say? > PL theory is not the theory of programming, any more than TAPL is the doorstop. This is the strawmen that you're arguing against that seems bizarre to many people. PL theory is not so much about the lambda calculus and Hindley-Milner as it is about applying rigor and discipline to the study of programming languages. And yes, sometimes that involves learning the mathematical formalism. * Chapter 19 in TAPL actually does have an implementation of Java's type system.
- urbit 13y agoRight, there you are with the definite article again. What you're asserting is that without this system of rigor and discipline, there can be no other rigorous and disciplined way of defining programming languages. For one thing, this flies in the face of everything we know about the philosophy of mathematics. I think my way of defining programming languages is pretty rigorous and disciplined. I'll continue to think that until you or anyone can identify some sloppy ambiguities. I note also that my foundation fits on a T-shirt and yours needs a math textbook...
- freyrs3 13y agoThis is exactly the point, you may think your system is rigorous and disciplined but how do you convey that to other people with them having the same degree of certainty that you feel your system has. The answer to that is the proofs and formalization, and that is the essence of what rigor in programming language design is about.
- urbit 13y agoMy definition of "rigorous and disciplined" comes from an entirely different world, the world of RFCs. Here, you can look at my axioms and identify anything unrigorous or undisciplined about them: https://github.com/urbit/urbit/blob/master/Spec/nock/5.txt https://github.com/urbit/urbit/blob/master/Spec/nock/5.txt A bunch of people have written compatible implementations from the spec, which is the RFC world's general sanity test.
- dllthomas 13y agoI think you missed the point of the (poorly phrased) question. I think the intended question was "would the down-to-earthness score of TAPL fall in the top 1% of the down-to-earthness scores of Java books?"
- pekk 13y agoI think that your irritation comes more from your own holy cows being criticized, rather than some general favor toward intellectualism.
- tikhonj 13y agoNo, I am annoyed about any situations where people criticize something for being "academic" or decry people as living in an "ivory tower". This sentiment takes many forms and is certainly not limited to programming languages!
- urbit 13y agoThis sentiment takes many forms indeed. Think about your stereotypes of a vanished upper class, any upper class - for instance, the pre-revolutionary French nobility. Obviously you never met any of these people, but you will find many negative stereotypes coming to mind. Are many of them true? Perhaps they are. Was the old Versailles full of charming, brilliant, talented, wonderful people? It most certainly was. You might also have some stereotypes of PHP programmers. Perhaps they're true as well. No set of human beings is without patterns of fault. However, the PHP programmer is a peasant and cheerfully accepts the daily rain of mockery that falls on his head. He knows he is not above being laughed at, indeed he knows he is laughable, as all human beings are in some way laughable. The distinctive feature of a privileged class, always and everywhere, is that it can't accept being mocked. Unfortunately this always increases the temptation to mock it, which I agree is a low and unproductive pastime. But anything to make type inference seem fun...
- pron 13y agoYou are absolutely right in general, but the problem with "academic" PLs is not their origin, but their current environment. Programming languages, like natural languages, may be classified by their expressiveness, but their success is measured only by their (continued) adoption. Some PLs, are therefore academic in the same sense that Esperanto is academic, and are rightly criticized for that. They may be "perfect languages", but the fact they are not widely adopted is conclusive proof that they're a failure, at least in some respects. Sometimes this failure could be mere marketing; usually it's much more than that.
- urbit 13y agoFor the record, not that it matters, Sergey Brin was born in 1973 and started a CS PhD at Stanford, specializing in OS, in 1993. I was born in 1973 and started a CS PhD at Berkeley, specializing in OS, in 1992. Alas, neither of us finished. Intellectuals are no different from anyone else - they live in the same reality and must be judged by their results. I don't think anyone would disagree that PL theory, as a body of work, has produced a set of languages whose penetration in the real world is oddly small both given (a) the investment in these technologies, and (b) the many real advantages of typed higher-order programming. As a general pattern, usually when I see this outcome explained, it takes the form of blaming the user. We wouldn't let anyone else get away with this excuse, so why should intellectuals be treated as a privileged class? To be anti-intellectual is to judge intellectuals more harshly than they deserve. To be pro-intellectual, also a cognitive bias, is to judge them more leniently than they deserve. In a world whose bias is generally pro-intellectual, it's easy for a neutral assessment to seem relatively anti-intellectual, but perhaps what you are perceiving is not an exceptional bias but the absence of a systemic bias which you've grown used to.
- tikhonj 13y agoYes, your background isn't relevant--and Brin's even less so--but it does make for some nice anchoring. PL theory, as a "body of work" has produced a wide range of languages ranging from Agda to Scala to Java. Some of these have actually seen use! Everything from classical music to Justin Beiber. TAPL, for example, is certainly not limited to the less popular languages: it talks about the foundation for Java-style types as well. Some of the same people working on ML and Haskell are also behind designs of Java and C#. The point of a language like Haskell is to be expressive and useful, not to appeal to a large base population. Popularity and industry uptake are not the only measures of success. (This is, coincidentally, one of the things I don't like much about Berkeley's graduate program, or at least the systems lab I spent a bit of time in: they did seem to think industry uptake to be the only metric that mattered.) Beyond languages, PL theory serves the role of all theory: it's the foundation upon which everything else is built. Things like the JVM memory model are based on the theory themselves and designed with tools stemming directly from that theory. Sure, the average programmer on the street is never going to use a theorem prover, but they will use the JVM where the memory model has been verified with one. All this reminds of nothing more than the usual arguments that Linux is a complete failure because nobody uses it on the desktop. But I think that argument is not true even if you limit yourself to "Linux on the desktop is a failure": sure, not many people use Linux on the desktop, but the ones who do find it very useful and are exceptionally productive. Same principle applies to PL theory and functional programming languages. There are many different ways to have an effect in the world, and the most obvious and direct one is not necessarily best. Even if it feels best.