Be aware of the programming language domination syndrome.

After years of using the same OS, the same programming language, the same technology, and the same tools. somewhere in our brain we will be convinced that our choice is the best, and we could reject any other alternatives, and somehow we became a slave to our choices. Regardless of the nature of the project or the client specifications, we use the same choices.

We can discover easily this fact by initiating a troll in a forum. Let’s say: .Net is better than Java, or Windows is superior to Linux. We will be surprised by the developer’s opinion, many of them are fanatic to one choice and categorically reject the other one, few developers discuss the fact that each one has its advantages and its drawbacks.

Finally, the developer became a slave to a specific programming language and he is dominated by the language.

We know the there is no magic solution to all problems, Windows could be the best for certain cases but not in others, C++ could be suitable for some projects and not for some others. Therefore don’t fall into the trap where you are convinced that only one OS, one language, one technology are the best. Keep your mind open and discover the other possibilities and where they could be useful for you.

It’s always interesting to take a look at the other mainstream languages evolution and discover the new programming languages.

Mainstream programming languages evolution

C++:  Many developers consider C++ as very complicated and difficult to lean, it’s an expert-friendly language. However, there are a lot of changes since 2011. Maybe taking a look at all the new features could change the opinion of many developers.

.Net and C#: Each new version provides many interesting new features and a big change is down recently in the framework. it’s the rising of the open source framework .Net Core. It’s highly recommended to take a look at it to discover all its advantages.

Java: Java was stagnated for many years before Java9. However, it was a good surprise for many Java developers when they discovered that Java 10 is released this week. It’s a good news for Java developers, it’s a proof that Java is not stagnated anymore.

Explore the new programming languages:

Rust

Rust is a systems programming language sponsored by Mozilla Research, which describes it as a “safe, concurrent, practical language”, supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but its designers intend it to provide better memory safety while still maintaining performance.

Rust is an open source programming language. Its designers have refined the language through the experiences of writing the Servo web browser layout engine[and the Rust compiler. A large proportion of current commits to the project are from community members.

Rust won first place for “most loved programming language” in the Stack Overflow Developer Survey in 2016, 2017 and 2018.

Crystal

Crystal is a general-purpose programming language with the motto “Fast as C, slick as Ruby.”

It’s a high-level, statically typed, compiled, fully object-oriented programming language with advanced type inference and garbage collection.

The design goals of Crystal are:

  • Have a syntax similar to Ruby (but compatibility with it is not a goal).
  • Be statically type-checked but without having to specify the type of variables or method arguments.
  • Be able to call C code by writing bindings to it in Crystal.
  • Have compile-time evaluation and generation of code, to avoid boilerplate code.
  • Compile to efficient native code.

Clojure

Clojure is a dynamic, general-purpose programming language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language, yet remains completely dynamic – every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.

Go

Go (often referred to as golang) is a programming language created at Google in 2009 by Robert Griesemer, Rob Pike, and Ken Thompson. It is a compiled, statically typed language in the tradition of Algol and C, with garbage collection, limited structural typing, memory safety features and CSP-style concurrent programming features added. The compiler and other language tools originally developed by Google are all free and open source.

Conclusion

Be always open to new possibilities, discover each day what happened, it’s the magic of the developer life, there’s no routine, every day come with new surprises.