7 ms·
Why Are There So Many Programming Languages? (2015)
- athms 6y agoThe same reason there are so many databases. Developers end up using something and it does about 90% of the job. They say to themselves, "I will write my own software that does 100% and offer it to the world when I am done." And now we have another program on the junk pile of software. Rinse, repeat.
- bigfoot675 6y agoIt's nice that people do this because without it, we wouldn't have anything to do 90% of the job all the time. We need those last 10%ers
- iExploder 6y agothe problem is new sw also didn't fix the last 10%, solution? add the last 10% to the existing solution (possible with open source) without reinventing the wheel completely, just to be able to stick a flag in the mud
- BlackFly 6y ago"You wanted a banana but what you got was a gorilla holding the banana and the entire jungle." Sometimes, it is better to have something that solves the 10% of the problem you are facing than something that solves 9 other problems you don't have but forces a cognitive overload on you because of the more general abstraction for dealing with those problems. Usually, you cannot solve all problems for all people and you need to make trade offs. Reinventing the wheel is really a bad analogy for this. A car wheel is not a substitute for a bicycle wheel, a bicycle wheel isn't much good on a wheelbarrow, a wheel barrow doesn't help out much on a skateboard, on and on and on. The act of inventing the wheel defined its parameters and necessary characteristics so that (mechanical) engineers could have them manufactured to their specifications as needed for the thing they were designing. If I design a new wheel it isn't invention. The similar "fit for purpose" notion in software is not widespread. Many of us somehow feel that implementation is more invention than manufacturing or design. The goodness of fit criteria are not often discussed or are difficult to define or measure. The things that sqlite can do that postgresql cannot and vice versa are important. They each leave some problems unsolved so that they can solve their chosen problems.
- Zealotux 6y agoCorrect me but isn't that how innovation also works? Maybe there's some great idea hiding in these 10%. Following your logic: we shouldn't have Redis, Rust, Go... Making something new is sometimes also about allowing yourself to _remove_ things from the original inspiration, see Vue.js which was initially a lightweight Angular.
- kinkrtyavimoodh 6y agoAnd then we end up with 50 different things that all do a different 90% subset of the job.
- croisillon 6y ago"You can create a web site using Ruby, Java, Python, C#, Go or JavaScript" ... "and I swear I totally didn't forget the most used web programming language in my list here"
- eloisant 6y agoIf you're thinking about PHP, I don't think it's more used than Javascript or Java. Maybe even behind Ruby and C#. Unless you count all the Wordpress installs (where most webmasters don't write a line of PHP) it's not that popular nowadays. We're in 2020. Anyway, it's besides the point. He's giving examples of languages you can use to write a website, not making a list of the most popular languages.
- croisillon 6y agoI understand he's giving examples but out of 6 examples, I think PHP had its relevance
- coldtea 6y ago>Maybe even behind Ruby and C#. Way ahead Ruby. >Unless you count all the Wordpress installs (where most webmasters don't write a line of PHP) it's not that popular nowadays. We're in 2020. You'd be surprised. Outside of startup-land there are tons of PHP shops... And not just for Wordpress either... Ruby, on the other hand, rose and fell along with Rails popularity...
- masswerk 6y agoHowever, we seem to have developed a special hell for declarative languages: > You can create a web site using Ruby, Java, Python, C#, Go or JavaScript. You can use C or C++ or Haskell or Rust. Or COBOL or Pascal or Perl. So HTML has finally become the machine language of the web, a somewhat wasteful kind of byte code. (And JSX is probably like inline assembly in BBC BASIC.) ;-)
- jesperlang 6y agoDeveloping languages is also fun, a hobby, and some of them accidentally grow bigger than initially intended!
- brainless 6y agoI find the question really odd. It is like asking why people create new recipes or new music or whatever else - because they can. These are some of the best ways to introspect and think about patterns one might have been struck by and put forward a way to deal with them in their own ways. People should always try new ways to deal with problems they see around them. Or generally be creative. I can not fathom what makes the author even ask this question.
- nsonha 6y agoSo you think "why create music" is an odd question too? I dont, but that's another discussion. Back to the original question, making programing language and making music are nothing alike in there purposes. Music are specifically made to be consumed while proraming languages or any kind of software/protocol/standard are meant to be productive. You can argue that people make languages for their own amusement, those exist. However if a language rises to some sort of adoption there was definitely some amount of effort put into promoting it and convincing other people to use it. At that point a language ceases to exist for amusement purpose and become an investment that cost individuals and the whole industry a lot. It better has a good pitch.
- brainless 6y agoNo, that is your thought process that programming languages are meant to be productive. The person who creates, does so in many instances because they feel they want to create. Which is why there is an order of magnitude more super-little-known programming languages out there than the ones that dominate the professional world of programming. A few languages get traction and grow. Rest are just creations from someone.
- nsonha 6y agoRead again, I'm not disputing the fact that languages are created for fun. However when you start promoting a language and lure other people in contributing into your community, that (should) stops. Unless you specifically say smt like "this is a programming language for goofing around nothing serious", which is no PL author's pitch ever.
- deleted 6y ago[deleted]
- meerita 6y agoI have always thought that the hardware was responsible for the creation of each programming language. Well, not entirely, but a large part of the reason was the hardware and the new or different capabilities of the moment.
- KMag 6y agoHardware was certainly the reason for the development of new assembly languages, and for the creation of niche languages for niche hardware (such as CUDA and OpenCL for GPUs). However, I don't see new hardware as being the impetus for the creation of any of the most popular languages of today. Do you mind elaborating on which languages you think arose due to which hardware capabilities?
- meerita 6y agoWhat I've meant it was my bias. I thought it were mainly the hardware components who drived the creation of most languages, but, well, Javascript wasn't created using this criteria :)
- KMag 6y agoC was explicitly created as a portable assembly language to avoid re-porting the Unix kernel in assembly yet again. C++ was intended to be hardware-independent. Java is even more intentionally and explicitly hardware-independent. Early Python was POSIX-centric, but not hardware-centric. There were Lisp machines by Symbolics, LMI, and others, but in these cases the hardware was bent to the language instead of the language to the hardware. Common Lisp and Scheme are intentionally hardware-independent. I think Cray had a Fortran dialect that exposed vector operations, but I'm not sure how many people would consider that a new language. I think programmer ergonomics/productivity and program correctness/safety are the two most common drivers for new (non-hobby) language creation, where the former is often expressed as a matter of taste/preference. (I suspect personal hobby languages far outnumber other languages, but we have no way of knowing how many of these exist.)
- 6y ago
- choeger 6y agoActually, that is a very good question and probably caused by the general immaturity of software engineering. Languages are not created in a planned, thought-through manner. Instead they are designed by human beings. But what if they were, in fact, planned? Let us quickly come up with some obviously orthogonal properties of a PL: evaluation strategy (by value, by name, by need) memory safety (manual, automatic), type system (none, nominal, structural), and implementation choice (compiled, interpreted). That alone gives us 3x2x3x2=36 possible languages and there are a) many more orthogonal choices to be made and b) several subchoices (e.g., which garbage collector, or which kind of polymorphism in the type system, what kind of macros, etc.) - also some of these choics are not truly orthogonal to complicate matters even more (interpreted languages tend to be untyped for some reason, for instance). All in all, it seems there should be hundreds if not thousands of languages even if we would design them like we design wrenches or screwdrivers.
- bergstromm466 6y ago> Languages are not created in a planned, thought-through manner. Instead they are designed by human beings. What the heck does that mean? Programming languages, like languages (English, French, Chinese), evolve organically to solve new problems, no? Anyways maybe I misread it, and underlying it is your desire for the next version or iteration, because you’ve bounced up against some limits or boundaries with the current iterations?
- wodenokoto 6y agoParent means that there isn't a long term strategy for which languages needs to be developed.
- bergstromm466 6y agoYeah. Maybe it’s another way of saying that language is one example of an emergent phenomena or system.[1] In other words, it’s something that evolves, with new things arising, that emerges organically from experimentation and practice, due to certain environmental factors/conditions. Where practice and experimentation come before theory. [1] https://youtube.com/watch?v=eh7qvXfGQho https://youtube.com/watch?v=eh7qvXfGQho
- pjmlp 6y agoOne reason that is often forgotten, although slightly touched upon via the ecosystem mention, programming languages are software packages, like anything else. What companies that sell developer tools are after is building ecosystems and languages are the product to achieve that goal. Like any product, differentiation comes into play, which is why even with standards in place, everyone ends up building their own extensions, which eventually grew up into other languages/products, where everything will be done better from the start.
- ScottBurson 6y agoBurson's Observation on Programming Languages: When someone who knows a lot about programming languages has a task tn do, they probably already know a language well suited to it. They also know how many person-years of work are required to turn a new language from a toy into something others would want to use. So, it's unlikely that such a person, needing to write a program, would create a language to write it in. There would have to be some use case that no extant language handles well. On the other hand, when someone who doesn't know all that needs to write a program, they're much more likely to say, I know! I'll create a new language! Therefore, most new languages are created by people who don't know what they're doing.
- skrebbel 6y agoHah! Nice! Also, I'm going to start all my HN comments with "Teeselink's observation on $topic" from now on.
- valenterry 6y agoI'd say the two biggest factors are: 1. Change of resources / hardware / performance 2. Change of business requirements The first one should be clear. E.g. why does Java has arrays and primitives? Because they were needed for better performance. As hardware gets better and better, we can use slower techniques that give us other benefits, for instance development speed. The second one is trickier. For example scalability. It just wasn't an issue for most people some time ago, but now it has reached many more businesses. This means new problems occur, such as concurrency issues or failures that where negligible before. These need to be considered now and many newer languages offer techniques that deal with these problems better than languages before.
- imtringued 6y agoThis is kind of like wondering why there are so many fighter jet models. They are very expensive to make yet there is still such a huge variety. It's because there are a lot of humans on this planet.
- stephc_int13 6y agoI do think that fewer languages and better libraries would benefit everyone. We have too many artificial barriers.
- abainbridge 6y agoOne reason is that programming languages generally try to provide backwards compatibility and doing so limits their ability to fix design problems. There's an interesting dynamic here; it is hard to see the design flaws of a language until it is widely used and common practices are established. Once that happens it is too late to change the design. People occasionally try to fork languages to so they can break the backwards compatibility requirement, but I haven't seen many of those gain wide adoption (maybe you could say Python 3 is an example?). Instead there seems to be more success for languages that attempt to create a better version of an existing language but move far enough away from it to be an obviously different beast. I'm not sure why.