This is the story of my life about my relationship with some programming languages from the first time I learnt computer programming until now. It was like finding a life partner.
I met her around 2003 from my high school accounting teacher. She was my very first date in programming world. I tried to digest how to do programming and what I can do with programming. My relationship with Pascal was very short. I didn't serious relationship with her; rarely kept in touch with her, thus we broke up. With Pascal, I only wrote some simple CLI programs for calculating my physics and math homework.
Visual Basic 6
After Pascal, I was dating a pretty girl from Microsoft called Visual Basic 6. She was very nice girl. Drag and drop GUI programming (it was such an instant gratification), interactive IDE (imho), and the most important thing was I could compile the program to has .exe extension, so that I could show off my program to my friends easily. LoL teenager :P
She was just an acquaintance. I only said hello to her; chatted for a while; then said goodbye and never met with her anymore.
I know Java is good and many people love her, but I don't have a good chemistry with her.
I wanted to learn web programming, then I met with PHP. At that time, I made a date with PHP 4. She didn't have supports for object oriented programming, and by the way I also didn't know yet about what object oriented programming was. So, not a big deal.
Now PHP is my true life partner. I have a love and hate relationship with her, but I can't leave her. She is easy going (I mean easy to deploy on any server), practical, and easy to understand. She evolved from an ugly language to be better and better.
As a web developer, I couldn't avoid to meet and keep in touch with this little girl. Even to make a simple alert window on the browser. My relationship with her is so-so until now.
I accidentally met her, the girl with a pair of brackets, because I accidentally bought an iPhone 4 on 2010. I was thinking, "This expensive gadget should generate more money for me". So, I learnt to understand her, Objective C.
Now, she is my very best friend to help me earn some extra money.
This was my affair from PHP. The grass is always greener on the other side, no? I tried to replace PHP with Ruby from my development stack, but she didn't play it very well for me. Ruby with her famous RoR framework wasn't matching with my digital agency workflow. She couldn't be deployed on shared host and the main problem was when we hand over the project to another developer or the client. In Indonesia, they mostly couldn't understand it.
So, I was coming back to my true love, PHP. Now, I still write Ruby code just for making some small CLI tools.
In the late 2013, I learnt functional programming paradigm. This was a new paradigm for me, and it opened my eyes and my mind.
My very first crush in functional programming world. I read many good things about her, so I tried to approach her. But in reality, she was the girl who can blow my mind in the first date. Her syntax is bewildering me. The OTP framework is also hard to understand by me. So, after 3 months trying to compromise with her. I gave up.
She comes from the family of LISP language. So, she uses S-Expression. Parentheses, parentheses everywhere (puts Buzzlightyear meme here please). Looked weird at the first sight, but I was feeling the good chemistry with LISP based language. My friend said to me, "LISP doesn't have syntax, you will easily understand it.". My friend was right, this language is easy.
I hang-out for a while with Racket. I loved her, but I knew she won't fit in my development tool box. I need more practical language with a good community support and lot of libraries.
So, I moved on. Good bye Racket, thanks for making me fell in love with LISP, but I had to find the perfect partner in functional programming world.
Lastly, I met with Clojure. A young girl who was born in 2007. She is a LISP on JVM (Java Virtual Machine). Although she is still young, but I don't doubt her capabilities, because LISP is mature language and JVM also has mature ecosystem. When I can't find Clojure library, I can interop with existing Java library. Is it good, right?