This is a sadly shallow article; where I think it fails is in recognising (and responding to) the core of the criticism levelled at Arc. Instead there is some pithy comparison to 70s cars.
The 911 is timeless for a number of reasons: Porsche have spent years keeping the brand and style consistent. It was expensive and exclusive, which made it desirable.
But that care was very hard to drive. If you don't know what you're doing then you will not get anything like the true performance it can give.
It was also very expensive, so only those with the adequate resources could afford one. These were not always people who could get the true performance out of the car.
The Cad, on the other hand, is a fantastic car in its own right. Widely available, easy to get its maximum performance, perfect for almost any job. OK, so it doesn't look as sexy, and for seriously hardcore tasks it doesn't perform as well as the Porsche. But if I had to pick a car that was most likely to be reliable today then the Cad is an obvious choice.
Even more damning; Caddillac, like Porsche and the 911, were still making that brand of car up till ~2006. You wouldn't recognise it though because the shape and performance has evolved to meet modern needs.
It's sad to see his list of languages; whilst I would agree C is a ridiculously good language, smalltalk and lisp? They've always struck me as pretty specialist. Conversely a lot of production code still uses Cobol and Pascal. And what about Fortran? Or Delphi (wasn't Skype written in Delphi originally?).
I know we're hackers, and so it's hip to drive Prosche's. But it is sometimes sad to see how we forget about a massive section of our industry who also do cool things, but tend not to have blogs...
> C is a ridiculously good language, smalltalk and lisp? They've always struck me as pretty specialist.
It's funny because my impression is completely the opposite: C is a very specialist language suitable for a narrow domain of low-level code. For everything else, it's just begging for rampant bugs and security issues.
On the other hand, Lisp and Smalltalk (well, maybe just Lisp--I am not really familiar with Smalltalk) are very general-purpose languages. You could reasonably use them for all sorts of tasks. And you would avoid whole classes of bugs common in C.
Just because many people didn't use them doesn't mean the languages weren't well-suited. Sure, they were never populist langauges, but that's ultimately of little consequence. Especially for "hackers".
"Please don’t assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and E-Commerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list."
"Porsche have spent years keeping the brand and style consistent. It was expensive and exclusive, which made it desirable."
True. Would add that the seeds were planted for me to want one of these many years ago.
"But that care (sic) was very hard to drive."
Also true even with the current model. I also owned a mini cooper s a few years ago and that was much easier and actually much more fun to drive.
"These were not always people who could get the true performance out of the car."
Having a car that goes from zero to 60 so quickly and corners so well doesn't have much utility unless you happen to live near a race track or in the country where there are winding roads and limited police presence. Acceleration of 0 to 60 in, say, 4 seconds when you take away the amount of time to get up to the point on the power curve where the fun starts give you about 1.5 seconds of thrill. Before you know it you are at 70mph on a 40mph road and have to slow down.
"But if I had to pick a car that was most likely to be reliable today then the Cad is an obvious choice."
Especially if you have to cart around adults. The two rear seats in the 911 won't hold an adult.
What's interesting about your comment is that since I have no idea about Arc I would automatically assume that PG is right in what he says. Even though knowing about the 911 I can see your argument and know you have a point.
Add: I love the 911 but sometimes I wonder how much of that love is manufactured in my head. Actually I think a large portion of it is but I'm still happy. It's like trying to analyze why breasts are nice to look at. They just are.
I agree that the choice of cars for this article is unfortunate. When I saw the two pictures, before reading the article, I thought it was going to be about two timeless designs that took very different approaches.
I think if you're in a certain population you'll see the Porsche as better designed, but you likely would have thought the same thing in 1973. But I think Paul might be surprised at how many people today would choose the '73 Caddy over the '73 911.
In 2002 the main accusation was that Arc was only vaporware, or a mix of or ideas and features in pg head, perhaps with a first secret internal prototype implementation.
Making a language that good programmers would freely choose to use is a great design goal.
In my first paid job I wrote loads of Cobol, even though I was already proficient in more expressive languages. I can't think of any scenario where I would freely choose to use it.
Today I sometimes write SAS code. This can be so painful I solve the problem in Python first, at home, in my own time, then port the solution to SAS. Python (and its ecosystem) is so nice to use, and productive, I'd rather use it and not get paid, than get paid to use something else.
Any language that passes that test is doing pretty well.
I happen to love 911s in an unhealthy way, but some of the earlier models were very "solid" and engineered very well. Especially some of the earlier engines, they were bullet proof. So for reliability and simplicity, the 911 would be a solid choice even today.
The cadillac evokes a sailing sloop. The porsche evokes a stallion. Cadillac has long deliberately referenced maritime traditions for style elements. They're just stylistically different and I don't see how one can easily see superiority in either.
I very much disagree with this: “Look what happened with the 911. It's so obviously superior to the Cadillac that a child could tell it's better.”
I performed an experiment when I read this article, comparing the two cars based on just the pictures. I had read the paragraph after the pictures, about telling good design from bad design, but not the paragraph before, saying that what each model of car was designed for. And I tried to compare the design of the cars based on just the pictures, seriously. At first, I thought that the 911 might be better because it is more aerodynamic, a criterion that it is objectively better at. But then I noticed that the Cadillac has more headlights in the front, which possibly might provide better light. And I saw that the Cadillac seemed to be a convertible, which is more a matter of taste and your goals for a car. I concluded that both cars seemed pretty decent in their own way. Thus, I was surprised to read the claim that the 911 has obviously superior design to the Cadillac.
Perhaps Paul Graharm is right about language design, but this failure of his claim to withstand an experiment lessens my confidence that he has examined the evidence before making his conclusion. Though as I am, in my opinion, a “good programmer”, I certainly hope he that is right, and that languages aimed at good programmers are the ones whose ideas will become popular in time.
I think he's referring more to the visual aesthetic. The 911 is literally timeless, because the broad strokes of the shape have been nearly unchanged in the past 40 years, and it's still one of the most beautiful and lusted after cars on the road. The Cadillac looks ugly.
Heh, the car comparison really does resonate with me: I like the Porsche far more because it is a simple design, aesthetically. Sure, the actual implementation--the weird engine position and all the mechanisms needed to compensate for it--is relatively complicated. But this does not compromise the minimalist aesthetic. Quite a nice feeling, especially for a car from that era. The great performance is just a boost.
The Cadillac, on the other hand, is probably simpler mechanically. It's a much more conservative, reasonable car: after all, who would be mad enough to put an engine at the rear of their sports car? But, wow, is the design busy. Little fiddly bits, fins, wheel-covers, too much chrome...
Perhaps the best way to think about it is that the Porsche is a car with a small surface area (metaphorically) and a large depth. The Cadillac is the opposite: larger surface are but less depth. I much prefer the former.
And this preference carries over into programming languages. I always like a language with nice aesthetics--simple semantics--even if it's harder to implement efficiently. I want a language which is simultaneously simpler and more flexible than the alternatives. And good performance certainly wouldn't hurt!
At a high level, these qualities mirror preferring the Porsche, which is why I like this metaphor. Sure, it's not perfect--but it isn't supposed to be. I don't even think of it as an argument in favor of one aesthetic over another; instead, I think it's just a great way to describe why I like what I like.
This seems to be the only top-level comment that actually gets what pg is driving at: Simplicity.
Ferdinand Alexander Porsche's philosophy was that design should be honest. The car shouldn't pretend to be more than it really is. Reduce the design to the core of the product, eliminate distractions. Don't align the design to current fashion or trends. He believed that it's the other way round, fashion aligns itself to well-designed products.
"Design must be functional and functionality must be translated into visual aesthetics, without any reliance on gimmicks that have to be explained. [...] A product that is coherent in form requires no embellishment. It is enhanced by the purity of its form. Form should be presented in a way that is easily understood and that does not divert attention from the product and its functional purpose. [...] Good design must be honest.”
But the simple rear engine design is more minimalist and aesthetic. Having the engine at the rear improves interior space. It reduces frontal area, which improves aerodynamics. Having an air cooled engine allows the rear placement without a complicated cooling system, having it horizontally opposed allows a lower centre of gravity as well as allowing a slimmer profile while still giving interior space.
The great performance was the goal all along- all the decisions that went into the design were made with performance in mind.
The early 911s (as pictured) didn't have exscessive power so the rear engine wasn't such a big deal. When they started putting in turbochargers the limits of the design were easily found. But Porsche was still able to work around these without ever turning it into a Cadillac.
> after all, who would be mad enough to put an
> engine at the rear of their sports car?
The rear-end is where all racing cars have their engine. Sports cars are modeled after racing cars.
The rear weight bias allows for increased rear traction and therefore better acceleration.
Off course a rear-engine is difficult to drive, so there are
sports car with a front-engine, but it's far from optimal from a performance stand point.
The conflict between performance and appeal to the masses: that is in my opinion what Paul's essay is about.
If we're talking about "designed to appeal to the average driver" then why (cherry) pick the Cadillac? I'd choose the Volkswagen Beetle. It was simply known as Volkswagen at first, which literally means "people's car." I cannot think of a more "timeless" car than the VW bug.
So true. The Beetle is the C of cars: it may not have the amenities that something that is rolling out of the factory today has, but its simple design means you can understand what's going on under the hood, and keep it running with a very reduced toolset.
In fact, its air-cooled engine was so reliable that it remained in production until 2006, and is still widely used for propulsion in dozens of light aircraft designs such as the Sonex or the Formula-V racing class.
> "We want thinking in Arc to feel like driving a 911."
A car notorious to be nigh impossible to drive until they started adding so much electronics that it practically drives itself and the driver is only sort of there to enjoy the ride he is being given.
As a child I said the 911 looked ugly, like a squashed frog with bulged eyes. For years I didn't understand the hype that surrounded it (I always favoured the 928). I do like them now but it's a result of decades of societal conditioning...
A design becomes "timeless" when the problem is solves spans several generations. The need for paperclips hasn't declined, and this is because of it's simplicity and performance (timeless needs).
I do think, however, that the car metaphor is flawed: technology is changing at such an amazing pace that within a couple of decades this might read this as discussion about what's the best horse-drawn carriage.
The craft of programming is particularly young, I'm not sure that coding of the future will look anything like what's done now. It has certainly changed a lot in the past 40 years. In other words: I'm not sure we will be driving cards in the future.
Let's be honest though, when was the last time any if us saw or actually used a paper clip? I know they still exist and are used, but they never make it to my desk.
Programming also has changed very little in the last 20 years. Driving hasn't changed much since at least I was born (~40 years)
In my opinion, the "best" programming language is the best tool for the job at hand.
Maybe you're writing high-performance backend software, in which speed is everything. Sure, a functional or, hell, low-level language like assembly is the "right" choice. In this case, it is the 'better' language.
Or, maybe, you're trying to write an easy-to-maintain script to manage log files on your server. Who cares if it's costing you some CPU cycles to interpret? Run Python or Ruby, or, hell, just write a shell script. That would be the 'better' language.
I wholeheartedly agree with what I believe to be pg's intent in this writeup: that good design should be timeless. I don't agree, however, that good design, especially for a programming language, always has to be skill- or performance-oriented.
Quick edit for clarity: Although the example I used for backend software did equate "performance" to "speed," it's important to note that pg addressed this by saying:
> Performance doesn't mean speed; that's taking the metaphor too literally. Speed counts, but a programming language is first of all a tool for thinking in.
My point is that clear thinking can be equally applied to easy-to-read code working at a high level as it can be to any functional language designed to induce algorithmic thought.
This is so true, but it's more than just cpu speed vs programmer speed. There are philosophies that are built in to the language and you can see them in decisions made about the language, the kinds of patterns baked in, the libraries and the greater community.
Say you need high reliability. Erlang has fault tolerance model & hot code reloading, it was built for telephone systems. Say you need tons of statistical features: R. Infinite Recursion: Stackless Python. Mixins Galore: _why's potion. Run a bunch of commands with little/no logic: Tcl. html generation: php. Manipulate a flash canvas: Actionscript. Manipulate html dom: javascript.
Be honest, your language isn't going to stick around forever. I say make a language for a purpose with a specific problem space in mind, read papers and implement surrounding philosophies that nail down that problem well. Then it will become popular and overused to the point where it's used for things it wasn't meant for.
I know which car I would have chosen to live out of on the road as a salesman in 1973. In '76 there were undoubtedly significantly more three year old Caddilacs with 100,000 miles than Porsches.
The Caddillac was designed for high uptime during a three year depreciation cycle. It was designed to handle rutted industrial parking lots. It was designed to handle potholed urban streets.
Four adults could drive to Ohmaha with their luggage - and if the water pump went, a mechanic in Council Bluffs could fix it without the Shim of the Black Forest Gnomes.
In other words, the our first reaction to our thought that a design is bad should be to examine our understanding of design intent. There is a significant portion of the meanings of "designed to be driven" over which the Porsche is poorly designed.
Mh, both cars really had totally different philosophies and characteristics, appealed to people with different priorities and tastes and were not in the same price league.
So just saying that the Porsche is obviously better designed doesnt hold much value.
Asethetically ? Probably, but thats more a matter of taste, just like with programming languages.
Often the people doing the arguing are also the most productive: witness Don Stewart. Quantitative finance is more demanding than some PHP-laden startup, and yet he still manages to write a bunch of libraries and surprisingly performant code.
A Porsche is not what I'd call a practical car. It's not especially comfortable if you're tall, the visibility is poor, it doesn't hold a family or have much storage space at all, it's not efficient to operate or maintain, and it's not cheap to produce.
So what's the real lesson here?
Maybe it's something about aesthetics, but then the part about designing for expert drivers versus "average" drivers doesn't make sense.
Slightly offtopic, I like that this is about design in general, and not about "css and pretty pictures", which is what the term "design" has unfortunately come to mean on HN.
I often think that software design, API design (of libraries, not just HTTP APIs), and so on, are somewhat underrated skills, contrasted with being an "awesome super-fast programming ninja".
Haha. What a poorly reasoned article. Smalltalk and lisp - seriously??? Java was designed for the average programmer, nothing complex, all simple stuff, and it's been very successful. Meanwhile, smalltalk and lisp are minority languages that appeal to very few. Other than emacs can anyone think of any successful app that is written in either?
Good design has nothing to do with users and its easy, as this article does, mix aesthetics for design.
The 911 was expensive, hard to drive with its engine hanging out over the rear end and not even comparable with the caddy.
Even c, who uses that much anymore? Software development (unlike the 911) has evolved, today the level of abstraction is much higher. There is still c development of course, but java, python, ruby, and php are the dominant languages.
Comparing design comming from two different countries with widely different background breaks the analogy upfront.
Lisp and C, Smalltalk, Cobol, Pascal, Ada share the same american background, and were just designed with different audience and purpose.
As diego also points out the Beetle, or even the Golf (though introduced a a year after 1973) didn't change much either in terms of design during decades, though they were targeted and designed for mainstream "average" users.
Even on the language front I'm not convinced.
Java for instance is aimed at average users and I don't see it going away anytime soon.
[+] [-] ErrantX|13 years ago|reply
The 911 is timeless for a number of reasons: Porsche have spent years keeping the brand and style consistent. It was expensive and exclusive, which made it desirable.
But that care was very hard to drive. If you don't know what you're doing then you will not get anything like the true performance it can give.
It was also very expensive, so only those with the adequate resources could afford one. These were not always people who could get the true performance out of the car.
The Cad, on the other hand, is a fantastic car in its own right. Widely available, easy to get its maximum performance, perfect for almost any job. OK, so it doesn't look as sexy, and for seriously hardcore tasks it doesn't perform as well as the Porsche. But if I had to pick a car that was most likely to be reliable today then the Cad is an obvious choice.
Even more damning; Caddillac, like Porsche and the 911, were still making that brand of car up till ~2006. You wouldn't recognise it though because the shape and performance has evolved to meet modern needs.
It's sad to see his list of languages; whilst I would agree C is a ridiculously good language, smalltalk and lisp? They've always struck me as pretty specialist. Conversely a lot of production code still uses Cobol and Pascal. And what about Fortran? Or Delphi (wasn't Skype written in Delphi originally?).
I know we're hackers, and so it's hip to drive Prosche's. But it is sometimes sad to see how we forget about a massive section of our industry who also do cool things, but tend not to have blogs...
[+] [-] tikhonj|13 years ago|reply
It's funny because my impression is completely the opposite: C is a very specialist language suitable for a narrow domain of low-level code. For everything else, it's just begging for rampant bugs and security issues.
On the other hand, Lisp and Smalltalk (well, maybe just Lisp--I am not really familiar with Smalltalk) are very general-purpose languages. You could reasonably use them for all sorts of tasks. And you would avoid whole classes of bugs common in C.
Just because many people didn't use them doesn't mean the languages weren't well-suited. Sure, they were never populist langauges, but that's ultimately of little consequence. Especially for "hackers".
[+] [-] JBiserkov|13 years ago|reply
– Kent Pitman
[+] [-] larrys|13 years ago|reply
"Porsche have spent years keeping the brand and style consistent. It was expensive and exclusive, which made it desirable."
True. Would add that the seeds were planted for me to want one of these many years ago.
"But that care (sic) was very hard to drive."
Also true even with the current model. I also owned a mini cooper s a few years ago and that was much easier and actually much more fun to drive.
"These were not always people who could get the true performance out of the car."
Having a car that goes from zero to 60 so quickly and corners so well doesn't have much utility unless you happen to live near a race track or in the country where there are winding roads and limited police presence. Acceleration of 0 to 60 in, say, 4 seconds when you take away the amount of time to get up to the point on the power curve where the fun starts give you about 1.5 seconds of thrill. Before you know it you are at 70mph on a 40mph road and have to slow down.
"But if I had to pick a car that was most likely to be reliable today then the Cad is an obvious choice."
Especially if you have to cart around adults. The two rear seats in the 911 won't hold an adult.
What's interesting about your comment is that since I have no idea about Arc I would automatically assume that PG is right in what he says. Even though knowing about the 911 I can see your argument and know you have a point.
Add: I love the 911 but sometimes I wonder how much of that love is manufactured in my head. Actually I think a large portion of it is but I'm still happy. It's like trying to analyze why breasts are nice to look at. They just are.
[+] [-] kenjackson|13 years ago|reply
I think if you're in a certain population you'll see the Porsche as better designed, but you likely would have thought the same thing in 1973. But I think Paul might be surprised at how many people today would choose the '73 Caddy over the '73 911.
[+] [-] gus_massa|13 years ago|reply
It's important to note that the article is from 2002 ( http://web.archive.org/web/20020210051448/http://www.paulgra... ) and the first public version of Arc is from 2008 ( http://web.archive.org/web/20080131070715/http://arclanguage... ).
In 2002 the main accusation was that Arc was only vaporware, or a mix of or ideas and features in pg head, perhaps with a first secret internal prototype implementation.
[+] [-] gmantastic|13 years ago|reply
In my first paid job I wrote loads of Cobol, even though I was already proficient in more expressive languages. I can't think of any scenario where I would freely choose to use it.
Today I sometimes write SAS code. This can be so painful I solve the problem in Python first, at home, in my own time, then port the solution to SAS. Python (and its ecosystem) is so nice to use, and productive, I'd rather use it and not get paid, than get paid to use something else.
Any language that passes that test is doing pretty well.
[+] [-] rmrfrmrf|13 years ago|reply
I'm not a car person at all, and immediately I was able to see that the Porsche is (more) timeless than the Cadillac.
[+] [-] joshmlewis|13 years ago|reply
[+] [-] chacham15|13 years ago|reply
These arguments have always struck me as subject to the availability heuristic. Is there any scientific data on this?
[+] [-] 13b9f227ecf0|13 years ago|reply
[+] [-] roryokane|13 years ago|reply
I performed an experiment when I read this article, comparing the two cars based on just the pictures. I had read the paragraph after the pictures, about telling good design from bad design, but not the paragraph before, saying that what each model of car was designed for. And I tried to compare the design of the cars based on just the pictures, seriously. At first, I thought that the 911 might be better because it is more aerodynamic, a criterion that it is objectively better at. But then I noticed that the Cadillac has more headlights in the front, which possibly might provide better light. And I saw that the Cadillac seemed to be a convertible, which is more a matter of taste and your goals for a car. I concluded that both cars seemed pretty decent in their own way. Thus, I was surprised to read the claim that the 911 has obviously superior design to the Cadillac.
Perhaps Paul Graharm is right about language design, but this failure of his claim to withstand an experiment lessens my confidence that he has examined the evidence before making his conclusion. Though as I am, in my opinion, a “good programmer”, I certainly hope he that is right, and that languages aimed at good programmers are the ones whose ideas will become popular in time.
[+] [-] ericd|13 years ago|reply
[+] [-] ronilan|13 years ago|reply
The 7.5 year old and the 6 year old both claimed the red one is "better".
[+] [-] tikhonj|13 years ago|reply
[+] [-] tikhonj|13 years ago|reply
The Cadillac, on the other hand, is probably simpler mechanically. It's a much more conservative, reasonable car: after all, who would be mad enough to put an engine at the rear of their sports car? But, wow, is the design busy. Little fiddly bits, fins, wheel-covers, too much chrome...
Perhaps the best way to think about it is that the Porsche is a car with a small surface area (metaphorically) and a large depth. The Cadillac is the opposite: larger surface are but less depth. I much prefer the former.
And this preference carries over into programming languages. I always like a language with nice aesthetics--simple semantics--even if it's harder to implement efficiently. I want a language which is simultaneously simpler and more flexible than the alternatives. And good performance certainly wouldn't hurt!
At a high level, these qualities mirror preferring the Porsche, which is why I like this metaphor. Sure, it's not perfect--but it isn't supposed to be. I don't even think of it as an argument in favor of one aesthetic over another; instead, I think it's just a great way to describe why I like what I like.
[+] [-] blumentopf|13 years ago|reply
Ferdinand Alexander Porsche's philosophy was that design should be honest. The car shouldn't pretend to be more than it really is. Reduce the design to the core of the product, eliminate distractions. Don't align the design to current fashion or trends. He believed that it's the other way round, fashion aligns itself to well-designed products.
"Design must be functional and functionality must be translated into visual aesthetics, without any reliance on gimmicks that have to be explained. [...] A product that is coherent in form requires no embellishment. It is enhanced by the purity of its form. Form should be presented in a way that is easily understood and that does not divert attention from the product and its functional purpose. [...] Good design must be honest.”
(Source: http://www.porsche.com/spain/aboutporsche/pressreleases/pag/... )
[+] [-] brc|13 years ago|reply
The great performance was the goal all along- all the decisions that went into the design were made with performance in mind.
The early 911s (as pictured) didn't have exscessive power so the rear engine wasn't such a big deal. When they started putting in turbochargers the limits of the design were easily found. But Porsche was still able to work around these without ever turning it into a Cadillac.
[+] [-] weinzierl|13 years ago|reply
Off course a rear-engine is difficult to drive, so there are sports car with a front-engine, but it's far from optimal from a performance stand point.
The conflict between performance and appeal to the masses: that is in my opinion what Paul's essay is about.
[+] [-] diego|13 years ago|reply
https://en.wikipedia.org/wiki/Volkswagen_Beetle
https://www.google.com/search?q=vw+beetle&safe=off&s...
[+] [-] geon|13 years ago|reply
[+] [-] hexasquid|13 years ago|reply
[+] [-] rubinelli|13 years ago|reply
[+] [-] serans|13 years ago|reply
[+] [-] woodpanel|13 years ago|reply
[+] [-] Swizec|13 years ago|reply
A car notorious to be nigh impossible to drive until they started adding so much electronics that it practically drives itself and the driver is only sort of there to enjoy the ride he is being given.
[+] [-] pdog|13 years ago|reply
[+] [-] chris_wot|13 years ago|reply
[+] [-] readme|13 years ago|reply
Am I the only one who looks at these cars, and sees two quality cars, both with different design goals? I've driven a TON of cars, too.
Use the right tool for the job.
[+] [-] rafski|13 years ago|reply
[+] [-] duopixel|13 years ago|reply
I do think, however, that the car metaphor is flawed: technology is changing at such an amazing pace that within a couple of decades this might read this as discussion about what's the best horse-drawn carriage.
The craft of programming is particularly young, I'm not sure that coding of the future will look anything like what's done now. It has certainly changed a lot in the past 40 years. In other words: I'm not sure we will be driving cards in the future.
[+] [-] seanmcdirmid|13 years ago|reply
Programming also has changed very little in the last 20 years. Driving hasn't changed much since at least I was born (~40 years)
[+] [-] bobm_kite9|13 years ago|reply
On the other hand from a maintenance point of view... probably not so much
[+] [-] lmm|13 years ago|reply
[+] [-] david_shaw|13 years ago|reply
Maybe you're writing high-performance backend software, in which speed is everything. Sure, a functional or, hell, low-level language like assembly is the "right" choice. In this case, it is the 'better' language.
Or, maybe, you're trying to write an easy-to-maintain script to manage log files on your server. Who cares if it's costing you some CPU cycles to interpret? Run Python or Ruby, or, hell, just write a shell script. That would be the 'better' language.
I wholeheartedly agree with what I believe to be pg's intent in this writeup: that good design should be timeless. I don't agree, however, that good design, especially for a programming language, always has to be skill- or performance-oriented.
Quick edit for clarity: Although the example I used for backend software did equate "performance" to "speed," it's important to note that pg addressed this by saying:
> Performance doesn't mean speed; that's taking the metaphor too literally. Speed counts, but a programming language is first of all a tool for thinking in.
My point is that clear thinking can be equally applied to easy-to-read code working at a high level as it can be to any functional language designed to induce algorithmic thought.
[+] [-] asperous|13 years ago|reply
Say you need high reliability. Erlang has fault tolerance model & hot code reloading, it was built for telephone systems. Say you need tons of statistical features: R. Infinite Recursion: Stackless Python. Mixins Galore: _why's potion. Run a bunch of commands with little/no logic: Tcl. html generation: php. Manipulate a flash canvas: Actionscript. Manipulate html dom: javascript.
Be honest, your language isn't going to stick around forever. I say make a language for a purpose with a specific problem space in mind, read papers and implement surrounding philosophies that nail down that problem well. Then it will become popular and overused to the point where it's used for things it wasn't meant for.
[+] [-] brudgers|13 years ago|reply
The Caddillac was designed for high uptime during a three year depreciation cycle. It was designed to handle rutted industrial parking lots. It was designed to handle potholed urban streets.
Four adults could drive to Ohmaha with their luggage - and if the water pump went, a mechanic in Council Bluffs could fix it without the Shim of the Black Forest Gnomes.
In other words, the our first reaction to our thought that a design is bad should be to examine our understanding of design intent. There is a significant portion of the meanings of "designed to be driven" over which the Porsche is poorly designed.
[+] [-] kayoone|13 years ago|reply
Asethetically ? Probably, but thats more a matter of taste, just like with programming languages.
[+] [-] capex|13 years ago|reply
[+] [-] skore|13 years ago|reply
> Let's argue about whether Haskell or Clojure is better while somebody else ships products using PHP and duct tape.
https://twitter.com/agentdero/status/174965036928868352
[+] [-] tikhonj|13 years ago|reply
Often the people doing the arguing are also the most productive: witness Don Stewart. Quantitative finance is more demanding than some PHP-laden startup, and yet he still manages to write a bunch of libraries and surprisingly performant code.
[+] [-] jbarham|13 years ago|reply
Seems unlikely to become a "hundred-year language" if no one is using it for the first decade of its life...
[+] [-] qu4z-2|13 years ago|reply
In fairness, I'm not expecting python to be a 100-year language either.
[+] [-] jeffdavis|13 years ago|reply
So what's the real lesson here?
Maybe it's something about aesthetics, but then the part about designing for expert drivers versus "average" drivers doesn't make sense.
[+] [-] projectileboy|13 years ago|reply
[+] [-] skrebbel|13 years ago|reply
I often think that software design, API design (of libraries, not just HTTP APIs), and so on, are somewhat underrated skills, contrasted with being an "awesome super-fast programming ninja".
[+] [-] hnriot|13 years ago|reply
Good design has nothing to do with users and its easy, as this article does, mix aesthetics for design.
The 911 was expensive, hard to drive with its engine hanging out over the rear end and not even comparable with the caddy.
Even c, who uses that much anymore? Software development (unlike the 911) has evolved, today the level of abstraction is much higher. There is still c development of course, but java, python, ruby, and php are the dominant languages.
[+] [-] s00pcan|13 years ago|reply
[+] [-] huhtenberg|13 years ago|reply
[+] [-] hrktb|13 years ago|reply
As diego also points out the Beetle, or even the Golf (though introduced a a year after 1973) didn't change much either in terms of design during decades, though they were targeted and designed for mainstream "average" users.
Even on the language front I'm not convinced. Java for instance is aimed at average users and I don't see it going away anytime soon.