Scala is both object-oriented and functional (Took me a while to understand it)

Personally, I started programming in Scala in 2015… I did the Scala training on Coursera.

Guess what? at First I did not like Scala! I could not understand why I would want to implement all these complexity when I can use Java and Spring to solve all the problems… It turned out i was wrong.

To write functional Scala, you need to think functionally…  rather than thinking in Object Oriented Manner & translating those thoughts into Functional Paradigm.

My real Scala interest started not with Web Api’s, it started when i laid an interest on Spark. I wanted to build a clean, abstracted approach to Big Data & implement it with the best functional language! that’s when I started loving Scala.

Immutable Data easily leads to pure function and easily distributable code.

I came to the conclusion, when i want to write something in Scala… to do it with Pure Functions if i choose to use the functional paradigm. This allowed me to do some of the following:

  1. Pure functions have no side-effects
  2. Pure function calls to immutable data are often easy to reorder
  3. Pure function calls to immutable collections are often easy to parallelise

Use Expressions instead of statements.. Expressions Can be passed into a function. As expressions can be chained together in Scala.

Don’t Mix Java Statements with Scala expressions.

Unlike statements, expressions can be used to be specify arguments to a function. As Functions, a subtle point – Scala allows expressions to be used in place of functions.

It took me some time to get used to the idea.

Gabriel Ajabahian
Tech lead / Senior Software Engineer at RIPE NCC
As a Software Engineer, I’m passionate about creating dynamic applications that is used around the globe.

I have extensive software engineering experience, recently I focus on Scala/Java and JavaScript. On the other hand, I have experience with C# and .net framework/core. I focus on integrating applications that are built against different frameworks and can run on different platforms.

Scalability, efficiency and performance are key topics for any software, that’s why I keep track of the newest technologies, I never underestimate the power of the cloud, that’s why I do believe in using this power with “edge applications” to expand software’s and solutions to a new level.

Being a software engineer who understand the business as well as my team, looking at things from different perspectives. Being open and honest and investing in relationship makes a big difference.

Specialties: Software development, Scrum/Agile, Process and Problem management.

https://www.openprogrammer.info/