
How I fell in love with a programming language - braythwayt
https://m.signalvnoise.com/how-i-fell-in-love-with-a-programming-language-8933d5e749ed
======
ktRolster
Alan Perlis famously said, "A language that doesn't affect the way you think
about programming, is not worth knowing."

A lot of times you can learn something in a new language, and then bring it
back to other languages. For a simple example, programming in Python might
give a programmer the insight that she doesn't need to write a factory for
every class; or writing in Haskall might give him the idea that immutability
is a good idea.

Then when the programmer returns to her original language, she can use those
techniques, adapted to the original language.

~~~
kerkeslager
This is definitely a good reason to learn new languages, but it does have its
limits. Examples:

1\. Erlang has done a lot of work to make their actors lightweight. In Erlang
it's not only common to spawn a new actor for everything, but it's generally a
good idea that organizes your code flexibly and results in transparent scaling
onto multiple cores. On other systems that support actors, the actors aren't
as lightweight, so while they're useful for organizing your code in some
cases, using them pervasively will result in cripplingly slow performance and,
depending on the language, completely exhausting thread/process resources.

2\. Some schemes support CPS conversion and TCO, which allows you to use
recursion at relatively little cost and without worrying about exhausting the
stack. However, in languages that support TCO and not CPS conversion, it takes
some work to be sure that your recursive calls are tail calls. And in
languages that don't do either CPS conversion or TCO, deep recursion performs
poorly and infinite recursion breaks outright.

This is why it's not only important to learn patterns in new languages, but to
learn how those patterns are implemented under the covers.

------
bluejekyll
This is exactly the feeling I've had with Rust. I love programming in it, it
is so much more rewarding than any other programming language.

I nearly felt this way about Swift, and Kotlin looks like it would be great
too. But Rust reminds me so much of how much I love C and how little you
needed to get going, all the OS tools at your disposal, etc. I haven't had the
same pleasure in learning Go or any other language.

But I totally agree, even if it's in your spare time, find the language you
love and start contributing to the open source community for it.

------
crabasa
I can't believe someone wrote an entire post about falling in love with a
programming language and didn't include a single line of code from that
language.

~~~
bsaul
I think it's on purpose. He doesn't want to talk about kotlin in particular,
but rather about the feeling of loving a language.

~~~
golemotron
Let's not turn HN into a feelings confessional. Please.

------
partisan
I really want to try Kotlin out. I want to give it a chance. The problem is
that I can't help but feel it will become abandonware in the future. Somebody
will buy JetBrains or they will start cutting costs and then Kotlin will be no
more.

Am I being unreasonable here?

As an aside, I've felt that same "love" feeling with Scala, Clojure, and Nim.
It's a great feeling because you start to imagine what can be.

~~~
sago
I don't think you're being unreasonable. In my experimentation I concluded
that Kotlin was largely chasing a subset mindshare of Scala, so I see it being
at a long term disadvantage.

That said, one killer app can make a language, so who knows. But if you want a
typed expressive hybrid-paradigm JVM language, it seems Scala is the obvious
choice.

~~~
pjmlp
I agree with you, however currently JetBrains is making sure Kotlin works
reasonable well on Android, while no one really cares about Scala on Android.

Yes many in the Scala community do care, but there isn't an ongoing effort
with Android Studio tooling integration as in Kotlin.

So this could be a way for it to pick up steam, but it remains to be seen if
the Android team still keeps the "We care only about Java" attitude at the
upcoming Google IO.

~~~
sago
Good point, and one I've got a blindspot for because we're not coding for
Android (other than via Unity).

So yes, that could be enough of the 'killer app', if Android stays with Java.
Do you have any intuition for why 'nobody cares about Scala on Android'? Not
doubting you, just curious.

~~~
pjmlp
I doubt they would move away from Java, in spite of the ongoing trial. The
question is officially supporting other JVM languages.

There are some people writing sbt plugins for Android development, but that is
not the same as the full Android Studio development experience.

------
LyndsySimon
I can relate to this.

The first language I did any significant work in was PHP - and not modern PHP,
which for all of its warts is at least usable, but 4.0.6. It was nasty, but I
spent about three years writing it every day.

Then I picked up Python. It was hard to grok for a few days, especially when I
learned things that didn't quite click like "strings are immutable" and "this
is a comprehension". After a month of working with it in my free time, one day
things just clicked - and suddenly, Python code was no longer something I had
to read line-by-line pausing to understand each action, but something I could
skim quickly and understand without expending conscious effort to do so. It
was glorious.

That moment was about a decade ago, and I could probably write a book now on
all the intricacies that I love about the language. I've toyed with other
languages on the side, but I always come back to Python. I don't know if it
fit the way my mind already approached problems or if it has changed my mental
processes to conform to it - but it works for me.

------
matt_wulfeck
> I could barely comprehend how little I wrote to get something to work.

There's a subset of developers that really fall in love with this idea. I try
and understand where they're coming from but really have a hard time. The more
involved with code reviews I've become through my career the more I recoil
with fear when I hear this, recalling all the time I spent unbundling nested
with nested within nested operations.

In the end I believe less LOC as an end goal is largely for the satisfaction
of the single engineer writing the code. It feels good at he time.

Over time the super compact lines of code decay into hieroglyphics that cast a
curse to the unlucky explorer that disturbs their tomb.

~~~
pbreit
How can you not understand that all things equal, less code is better? Clear
and concise code is good. We're not talking about fancy, unintelligible
minimizations. Have you coded in Python? Give it a try.

~~~
matt_wulfeck
I'd say that programming languages behave like normal languages and fall under
the waterbed affect: if you push the complexity down on one corner then it
simply pops up in another corner.

The question is which corner do you code for: the corner that develops the
code or the corner that maintains it.

------
apo
[http://try.kotlinlang.org/](http://try.kotlinlang.org/)

------
cdnsteve
Whoa all the jetbrains projects are using this and they are the main backer of
the language. Very interesting.

------
astrobe_
You know you love something when you can't help but coming back to it. I love
a terrible language - it's ugly, it's stupid, it's mean. I dumped it again and
again, but after a few months I end up missing it.

~~~
keypusher
That's not love, that's an abusive relationship.

~~~
dashoffset
Or capture-bonding.

------
galfarragem
Then there is that situation when you hate a language.

In my case is JS or Java. They are clearly languages to learn -it could
simplify my life- but I don't feel like even to start.

------
ak39
Just wait a month or so when it'll sound like a rebound relationship that went
horribly wrong.

