What are the problems requiring a new programming language?

It may be a stupid question, but still I go ahead and ask him. Currently, I see new dynamic languages ​​such as Groovy , which are being developed for the JVM, and languages ​​such as Ruby are gaining fame.

Each of them seems to solve different flaws of existing languages.

Are there any one or many problems that are not addressed by any of the existing languages?

+4
source share
5 answers

New languages ​​appear for a number of reasons:

  • as an exercise for the inventor;
  • due to alleged deficiencies in existing solutions;
  • introduce new ideas that are inconvenient or impractical to transplant into existing languages.

There is no specific list of problems. Someone simply decides, as a rule, based on their own experience, that does nothing everything that he wants, and then tries to create something that does. Sometimes it works, sometimes it doesn’t. Sometimes it becomes popular, most often it is not.

Edit: It is important to remember that when it comes to “problems,” it is often subjective. Many consider memory management to be a problem that has caused an increase in garbage collection. Not everyone agrees.

In addition, functions that appear in languages, and at least in terms of new new languages, are not necessarily related to problems. They are more about what is possible and what is fashionable.

Closures, first-class features, etc. They are currently trendy, although they have been around in Lisp for decades. That is why most modern languages ​​either have them or get them.

Which is also important. Computer power is not so cheap that overhead or things like garbage collection are considered so small that in most cases, productivity gains outweigh any implementation costs.

Finally, no language is suitable for all tasks. Like what we want to do with program changes, just like in languages. Web development is now a huge force in programming. That was not 10-15 years ago. Useful features for web development do not necessarily coincide with writing heavyweight desktop applications, so languages ​​also evolve.

+5
source
Strictly speaking, no. If you can prove that the language is complete, he can do everything that the computer can do, because everyone can program it in the assembly, if he wants. The reason new languages ​​are developing is due to several reasons:
  • New programming paradigms, for example. object-oriented programming, aspect-oriented programming, etc.
  • Domain languages, for example. web development, programming languages, etc.
  • Personal settings

Any language has flaws, no language can be perfect. C is low, so, as a rule, this is not the most pleasant language for programming, they say on the website, on the other hand, I would not want to program the OS in php, this would be a disaster, etc.

+7
source

The general trend is that a programming language is increasing the level of abstraction . The tendency is to get away from a simple procedure call. It is good and bad at the same time. A higher level of abstraction can be powerful, but it can also be harder to use at the same time. Consider, for example, AOP . Very powerful, but also difficult to use correctly.

We also see a tendency to mix paradigms together , for example. more and more object-oriented languages ​​now include elements from a functional paradigm. This requires a lot of trial and error until the perfect mixture is found. Consider, for example, Scala , which contain many ideas in one language. Or Clojure , which transfers transactions directly to the language.

Such an ideal mix is likely to never exist, be subject to opinion and taste, and therefore we will continue to offer new abstractions for working with programming.

+2
source

I think this is mainly for convenience. For example, take C ++ or Assembly; as far as I know, any problems can be solved with their help, but harder problems can be complicated, because, for example, when you create an application for Windows forms, you naturally don’t like that you need to play around with pointers; it just takes up a lot of your precious time and energy.

Another very good example is the experimental programming language for .NET, Axum , whose goal is to use threads very conveniently.

In addition, specialized programming languages ​​provide greater efficiency in certain areas; think about SQL (I know this is not a “real” programming language, but I think this is a good example).

By the way, all this is fun for those who do it for joy (like money, of course); I often experiment with other programming languages ​​other than the ones I need because they are just different and interesting. Creating compilers and translators is also a very interesting and challenging task for some people.

+1
source

In some cases, new programming languages ​​are useful for using new hardware architectures. For example, using the massive parallel power of the GPU is much simpler using a language specifically designed for this purpose.

0
source

Source: https://habr.com/ru/post/1298974/


All Articles