10

Why would someone develop his own language to use it only inside that firm when you have XY other languages that can help you with their libraries, logic etc.? Isn't it way much simpler to go with the flow with anything else rather than developing your own language?

closed as unclear what you're asking by gnat, Robert Harvey, Thomas Junk, Greg Burghardt, JeffO May 5 '17 at 16:57

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 6
    Quite a lot of "new" languages we have in the wild can use libraries designed for "older" languages: eg: C++ can use C libs, Scala Kotlin and others can use any lib running on the JVM, Typescript can use JS libs. So having a new language does not imply loosing lib support... – Timothy Truckle May 5 '17 at 12:00
  • 3
    Why would you build a dragster to go drag racing rather the make do with a stock car? – candied_orange May 5 '17 at 12:12
  • 3
    Or really, investigate the reasons and rational behind the creation of any programming language. Some people believe your not a real computer scientist until you've created your own language. This is akin to not being a real chemical engineer until you've created gun powder (and blown up a small portion of your house). – candied_orange May 5 '17 at 12:36
  • 4
    Erlang was also born in this way: if I am not mistaken it was initially developed at Ericsson for internal use. – Giorgio May 5 '17 at 12:38
  • 3
    A language specifically designed for a company is stupid, on the other hand, a language specifically designed for a problem domain that the company happens to be in, can sometimes be quite useful. You know you have the latter, rather than the former, when the design and architecture of the language are restricted to what makes the problem domain much easier to solve/express, sometimes at the expense of being useful for general purpose programming. – Lie Ryan May 5 '17 at 16:13
25

It is much easier to understand when you realize that it is often product of long process and not someone just saying "we want to make new language".

It usually starts with the idea that some problem can be solved using a simple domain-specific language. The intention is often to have non-experts use this language, so it is simple and often lacks features like strong typing and modules.

So far so good. But then, people start hitting problems that cannot be solved by the language. So new "features" are slowly added to solve those problems. And as the process is slow and features infrequent, there is no motivation to design those new features properly, as long as the problems are solved.

Over time, the new language gains features that turn it from a simple domain-specific language to a complex "general" purpose language, often with conflicting, confusing semantics and hard-to-follow syntax rules.

And by the time people realize they created such massive beast, it is already too late to kill it and replace it with a properly designed language.

There are a few languages that evolved like this that are not bound to specific companies cough JavaScript cough PHP cough.

  • 10
    Great answer, and while JavaScript has its problems, I do not think it is fair to put it in the same sentence as PHP. That is like saying, "We need to kick Bill and Ted out of our neighborhood, they are criminals!" But, Bill (JavaScript) is a jaywalker, and Ted (PHP) is a serial killer. – TheCatWhisperer May 5 '17 at 14:27
  • 12
    @TheCatWhisperer I disagree. JavaScript is as bad, or even worse as PHP. Because you HAVE to use (or transpile into) JavaScript, while PHP can be safely ignored. – Euphoric May 5 '17 at 14:32
  • 2
    that is a mostly valid point. – TheCatWhisperer May 5 '17 at 14:53
  • 1
    @Euphoric Let us await for WASM, maybe the scene will change then... – Kroltan May 5 '17 at 15:54
  • @Kroltan +1 for WASM! – CraigR8806 May 5 '17 at 17:04
15

Isn't it way much simpler to go with the flow with anything else rather than developing your own language?

Sure, but to follow that to an absurd end, we'd all be writing everything in assembly if nobody developed new languages.

Sometimes there is no flow. New languages come to exist because someone has an itch to scratch, whether it's a language hobbyist who just wants to invent something new or a company with a need unmet by what already exists.

This is exactly what happened when John Backus proposed The IBM Mathematical Formula Translating System in 1953. He wanted an easier way for scientific users to specify mathematical formulas than by writing them in assembly. That proprietary product became the first programming language that wasn't assembly, and you know it as Fortran.

Where Fortran was the first to have gone that route, Erlang is pretty much the poster child for it. Ericsson wanted to improve the way software for its telephone switches was developed and invented a language for prototyping with features specific to what they needed. When I first explored it, my takeaway was that it was developed by people with a real problem to solve that would not have been well-serviced by any of the other languages available in 1986. Erlang remained a proprietary, in-house product like your colleague encountered until it was open-sourced more than a decade later, and now it's a mainstream language.

Both Go and Scala are relatively young languages in the grand scheme of things, and it's entirely possible that the language in use at your colleague's company predates both. What he needs to do is ask about its history, why it came to exist and why it continues to be used.

I spent the decade between 2003 and 2013 working for a company that made extensive use of an industry-specific environment that included its own language that has its roots in the late 1970s. While some newer languages might have been more suitable replacements (and hooks for them were grafted in over time), that industry had a large enough investment in it and a huge body of well-proven code that there simply wasn't a good business case for switching to something else.

-1

I've seen this before. It never works well. Some people have a "not invented here" complex. It usually causes a company to run around reinventing the wheel.

Think about it. This new language probably breaks all the time. Between a parser, compiler, VM, linker, whatever... There are now thousands of bugs that people will waste hours debugging random issues with. All for what they think they need that other languages don't have.

C/C++ is used to write operating systems like, you know, all of them. And yet someone thought they needed something different.

  • 7
    Apparently you've never seen Kotlin. Or Javascript or C#, for that matter. Fog Creek Software used their own programming language called Wasabi (based on VB) for years (though admittedly the technical debt finally caught up with them). So there are certainly cases where it does work. – Robert Harvey May 5 '17 at 12:33
  • 1
    As far as I can remember, C# was born after Microsoft had tried to create a non-compliant Java implementation, was sued by Sun and lost. cnet.com/news/sun-microsoft-settle-java-suit Since they could not call it Java any more, they developed their own language which, initially, was very similar to Java. – Giorgio May 5 '17 at 12:46
  • 1
    "This new language probably breaks all the time" - if your language design allows you to avoid an entire class of application bugs, then this can be an acceptable tradeoff – Eric May 5 '17 at 13:11
  • 16
    Ever heard of C? It was reportedly developed in-house just for a single operating system on a single computer. Why didn't K&R just use something proved that was used for writing operating systems, such as PL/1, BCPL or Algol 68? – idrougge May 5 '17 at 16:08

Not the answer you're looking for? Browse other questions tagged or ask your own question.