DEV Community

Chanaka Fernando
Chanaka Fernando

Posted on

A story about 3 modern programming languages

I used to be a part of a team that developed a modern programming language targetting enterprise software. After spending 2 years designing, implementing and using that programming language, I’ve moved into a different job role where I became a user of many technologies including the so-called programming language and many other modern programming languages.

Today (10th September 2019) is a special day for that programming language. “Ballerina”, a programming language designed for implementing modern, network-aware, cloud-native applications has released the GA 1.0 today. It is a great achievement by a team of passionate individuals who spent days and nights until today to make it a reality. As I mentioned before, I have started using different technologies as part of my new job role as a solutions architect (who build things in addition to do presentations).

Here are the 3 programming languages I started learning.

  • Go — The programming language designed by Google and used by many new open-source projects including kubernetes.
  • Rust — The programming language designed by Mozilla research as a replacement to C (yes it is the C you know).
  • Ballerina — The programming language designed by WSO2 to make enterprise application programming fun.

Go is for the majority

If you go back 5 years, within the enterprise software world, you have found 2 sets of programmers running the show. Java and .Net programmers. Even though they kind of had a love and hate relationship with the respective languages, they were looking for a better alternative. Go fill that gap with a bang. Go’s design decisions and the modern features made these programmers fell in love with go and the ecosystem they built around the language made it so easier for these 2 types of programmers to adopt this so fast. Even though go doesn’t have a fair share of the market (overall), it is on its way to becoming a thing in the enterprise software world.

Rust is for the passionate

While enterprise software battlefield is divided into Java and .Net, the systems programming has been dominated by C and C++. The power and the control offered by those languages made it the ultimate choice for systems programmers to adopt. But a set of passionate engineers at Mozilla research wanted to go against the status quo and invent a programming language that can replace the inevitable C. That’s where they built Rust. A programming language that is as fast as C but doesn’t give you runtime bugs which crashes your entire system with a segmentation fault. The Rust designers have designed that in a way so that it is safe and prevent as much runtime bugs as possible and identify them during the compile time. Rust is becoming a popular programming language outside the system programming circle because of the modern features of the language and the ecosystem they have built with “Cargo”.

Ballerina is for system builders

So then, why do people need “Ballerina”? Both Go and Rust are excellent programming languages to build systems which does their job at hand with utmost efficiency. But sometimes those systems built with Go and Rust alone cannot fulfill the requirements of the end-user. You need to connect these various systems using an integration tool. Why use a graphical editor and build integrations of you are an efficient programmer who wants more control over what you do? That is where Ballerina comes into the rescue. Ballerina is specifically designed to build integrations with the knowledge of network, messaging formats, protocols, data structures into the language so that you don’t need to rely on third-party libraries when integrating software. Ballerina also comes with features that are available in Go, Rust as well as an ecosystem that allows programmers to build great software through collaboration.

That’s it for the moment. I will see you with more content on these languages in the future.

Top comments (2)

kendru profile image
Andrew Meredith

Thanks for the summary! I have been a big fan of both Go and Rust for a while now, and I have had my eye on Ballerina but have not used it yet. It seems really useful to have your language itself aware of the fact that you are writing networked code. I would love to hear more about your experience building systems in Ballerina.

chanakaudaya profile image
Chanaka Fernando

I have used ballerina to write simple integrations which I used to do using XML based higher level DSLs with other integration products available in the market. The clear advantage I saw there is the power we get as users when writing integration logic. Instead of restricting ourselves into a set of limited keywords, ballerina allows you to express yourself with the code. Ballerina is not just a language, but an entire ecosystem similar to go and rust where you can share your code amongst teams and work collaboratively.