6 ms·
> When you speak of non lisps are ‘blub’ you disregard the actual characteristic of those languages and how they fit to the task. What does 'blub' mean?
by FigBug 8y ago
> When you speak of non lisps are ‘blub’ you disregard the actual characteristic of those languages and how they fit to the task.
What does 'blub' mean?
- DubiousPusher 8y agohttp://wiki.c2.com/?BlubParadox http://wiki.c2.com/?BlubParadox
- namelosw 8y agoIt refers to Paul Graham's article about Lisp http://www.paulgraham.com/avg.html http://www.paulgraham.com/avg.html Blub basically means average mainstream languages. > I don't want to hurt anyone's feelings, so to explain this point I'm going to use a hypothetical language called Blub. > As long as our hypothetical Blub programmer is looking down the power continuum, he knows he's looking down. > But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn't realize he's looking up. What he sees are merely weird languages.
- bunderbunder 8y agoThat whole "Blub" section reads to me as a snowglobe version of the Lisp community's long-standing failure to communicate with everyone else. Graham starts with his "shockingly controversial statement" that "programming languages vary in power", which, I don't know that that is controversial, but OK. I'm with him that far. But he immediately loses me, because all of his exposition on this idea consists of beating around the bush, talking about characteristics of programming languages that are most definitely not the same thing as power, before moving on to this rather arrogant-sounding parable that makes it sound like he thinks of this "power" idea in remarkably similar terms to how colonial-era Europeans thought about "civilization" when it came to understanding why not everyone did things the way they did. I would argue, on the contrary, that, when we're talking about programming languages, "power" is a characteristic that no reasonably well-traveled programmer should feel comfortable thinking of as an objective characteristic, let alone something that can be crammed into a linear continuum. Lisp has some powerful features, yes. So does C. And the differences that a Lisp fan might say make Lisp more powerful than C correspond remarkably closely to the things that a C fan might say make C more powerful than Lisp. They're both right, too. Because any flat statement that "X is a powerful language" is incomplete. There's an unstated major premise, there - what problem are you trying to solve? That will be a big factor in determining what powers you need and don't need. Which is why, around the time that Graham was writing this essay, I was implementing my first really big solo programming project in a mix of Scheme and C. tl;dr: Yeah, what TFA's author said.
- blackstrips 8y agoI always just assume they mean expressive power when “power” is mentioned.
- JulianMorrison 8y agoWhich is a very dubious "power" in a language not designed for the academic exploration of programming itself. General principle: the more "clever" a thing is, in terms of making intricate use of the language's expressive power, the more incompatible, confusing, buggy and slow it is. Another general principle: if your language gives you wheelwright tools but no wheels, nobody's wheel will fit anybody else's axle until conventions are established. And those conventions will make the open freedom of tools obsolete in practise. And they will be a hidden burden of learning to use the language.
- bunderbunder 8y agoExpressiveness can mean several subtly different things. The one I'm most interested in is, bringing the way things are expressed in the programming language as close as possible to the way you'd describe the process in a natural language. Any definition of "expressive" that permits code golf is not one I want to use. For "expressive" to be a useful concept, its opposite needs to be "unreadable."
- bunderbunder 8y agoJust to pile onto that a little bit more - the Lisp family of languages is not unambiguously more expressive than other languages. I think that, when Lispers claim that Lisp is really expressive, what they really mean is that it has macros, and the supporting features that make macros work so well in Lisp. The problem is, most dialects also have some horribly unexpressive things, too. Dynamic scope, cadadr, fifty bajillion words for "equals", stuff like that. My least favorite is that, in most Lisps, code and data look exactly the same. No M-expressions means that you can't reliably understand the basic structure of a blob of code by simply skimming. You've always got to be carefully reading it. Which gets exhausting if you're working in an unfamiliar codebase. Perhaps that's why Lispers have less of a tendency to travel in packs. There's really just one Lisp dialect that gets to unironically wear an "I'm super-duper expressive!" t-shirt, in my book, and it's a young one: Clojure.
- peterashford 8y agoOther posters have given serious answers. I would add my own: its an excuse for a language superiority complex. It assumes that everyone using "less powerful" languages do so because they just don't understand "more powerful" languages while excluding the idea that they might just find that language X is the right fit for their domain. (e.g.: asm is probably more "powerful" than python, but I'd rather do string manipulation in the latter)
- fao_ 8y ago> asm is probably more "powerful" than python, but I'd rather do string manipulation in the latter I don't think that's quite what PG meant by power. That being said, I do not think I would be able to close the distance between our understandings, sadly.
- coldtea 8y ago>That being said, I do not think I would be able to close the distance between our understandings, sadly. Or you could just say what you think PG meant, e.g. "by more powerful he means a language more easily manipulated and expressive". How about that instead of the current comment ending that can be understood as "I've given up hope that you'll ever understand what I mean".
- erik14th 8y agoeh, it seems you got it backwards, pg's main point seem to me to be productiveness, he even talks about python being one of the best(lispier) of the mainstream languages, so in that context python would be more powerful than asm and not the other way around.
- agumonkey 8y agoas in blub ~= verbose and boilerplatey
- erik14th 8y agoI think it can't be reduced to that, I think a more important aspect is expressiveness, which isn't exactly terseness, I think some historical memory is pertinent here as even classic "blub" languages such as java have adopted plenty of functional characteristics since then, so the options available were very different.
- AnimalMuppet 8y agoIt comes from a mistaken argument in an essay by Paul Graham. Others have explained the idea a bit. I'm going to explain why I think it is mistaken. The essay says that Lisp is at the top of the power curve. Lisp programmers, looking at Haskell, are sure that they are looking down. They say, "How can you get anything done in Haskell? It doesn't even have (Lisp-style) macros." But the Haskell types (pun intended) are also sure that they're at the top of the power curve. When they look at Lisp, they're also sure that they are looking down. "How can you get anything done in Lisp? It doesn't even have a decent (Hindley-Milner) type system." Here you have proponents of two different languages, both sure that they're at the top of the power curve, and both sure that the other language is beneath their language. Something's wrong here... What's wrong is the idea that languages can be placed on a one-dimensional axis labeled "power". That idea is mistaken. To see why, think about hardware. We know what we mean by power in hardware - MIPS. But then someone says, "Well, we've got that floating point code, so we have to care about FLOPS. And then there's that data set that won't fit in cache, so we have to care about main memory bandwidth... except that sometimes you can trade off MIPS for larger cache size...." Now you've got at least four axes - MIPS, FLOPS, memory bandwidth, and cache size. Then some psychopath comes into the room and says, "What I mean by 'power' in hardware is battery life." That is, their definition of power is something like 1/watts, which, for battery-operated hardware, is not as clearly unreasonable as the physical units might lead you to think. Back to software. "Power"? Power for what? For writing programs. OK, which programs? For "general programming"? But I've never written a general program in my life. I've written a bunch of specific ones, though. So what I actually care about is power for writing this program. For this program, I have to ask what makes it hard to write the program, and pick the language that goes the furthest toward solving those problems for me. High performance computing (or, as the article says, games)? I might need something that gives me control of memory layout. I don't want to try to deal with that in either Lisp or Haskell. Real-time computing? Let's skip garbage collection, thanks. (Yes, I know, it can be done. It sure doesn't make the problem of deterministic response time easier, though.) Let's also skip recursion and laziness. On the other hand: Anytime we can, let's skip manual memory management. Pick the language based on the characteristics of the problem. Don't blindly pick any language because it's "the most powerful".
- 8y ago