
Ask HN: Which programming language do you enjoy writing the most? - farleykr
I’m a junior developer, proficient with HTML, CSS, JS, and Python. I’m looking to learn a new language in my spare time, mostly for fun and exploration. What would you recommend? What language do you enjoy using the most and for what reason(s) do you enjoy using it?
======
moksly
Python. But I prefer working with JavaScript because it’s universal. I work
for a Danish city and we participate in a lot of public sector open source
organisations/networks/groups. Stuff like OS2.eu, where we actively contribute
and other stuff where we use projects made by other cities

A big problem with that is tech stacks. We’re not a tech-company. We’re less
than 20 ops and devs out of 7000 employees. We run 500 different IT systems
and have build a few hundred ourselves. But we can’t run everything. We’re a
traditional Microsoft shop like most of the European public sector, and that
means our operations engineers do Microsoft servers and our developers do C#.

I mentioned OS2, they offer a huge package of nice open source tools, but they
are build in a lot of different technologies. Recently a friend of mine got
the job of getting some Open Source project from the city of barselona up and
running and it was Ruby on Rails. No one knows Ruby on Rails around here. We
might know .Net core at our place but we don’t know PHP. Our neighbouring city
is the opposite and the next city does Python or maybe JAVA. Which means there
is an unbelievable amount of wasted potential because we can’t share code that
we can’t operate and maintain.

Which is where JavaScript comes in handy. Because of the front end landscape
of 2019 everyone knows how to run a Node application. Maybe you’re not perfect
at it, but it’s much easier to get it up and running securely and stable
compared to a technology you’ve never touched before, and it’s not like our
documentation is any more stellar than yours. So while I’m not actually a fan
of JavaScript or even Node, and enjoy writing python more than other languages
personally, the JavaScript ecosystem is just so damn practical.

~~~
karmakaze
This is the most practical and compelling motivation for JS on the backend as
I've ever read. I wonder if you could get away with using TypeScript in your
ecosystem.

------
zmmmmm
I enjoy Groovy.

It's a passport to the JVM that has all the advantages of Python and few of
its downsides. The philosophy is a unique combination of being incredibly
developer friendly (kitchen sink APIs etc, every syntactical convenience you
can imagine thrown in), but in every other aspect being ruthlessly Java-syntax
compatible. You get both dynamic and static typing rolled in, super powerful
AST transforms that give you static-compile-time metaprogramming capabilities
other languages struggle to achieve. Yet it competes with Bash for single-line
utility scripts.

~~~
vorg
Apache Groovy's apparent rise from #81 to #15 on Tiobe's index [1] over the
past 12 month is disturbing, though. If it doesn't have the downsides of
Python, then why would someone fabricate its popularity in a search engine?

And if Groovy is so "ruthlessly" Java-syntax compatible, why doesn't it have
lambda syntax over 5 yrs after they were added to Java?

[1] [https://www.tiobe.com/tiobe-index/](https://www.tiobe.com/tiobe-index/)

~~~
fastbmk
You are wrong. Groovy had lambdas even before Java 8. Netflix used Groovy only
because of that exact feature.

~~~
vorg
No, I am right, because I didn't say Apache Groovy didn't have lambdas, I said
it still didn't have the Java 8 lambda syntax in response to the comment that
Groovy was so "ruthlessly" Java-syntax compatible. So you are wrong about me
being wrong.

> Netflix used Groovy

Does Netflix _still_ use Groovy? You make it sound like they no longer use it
for new coding projects. If they do, you should have written "Netflix uses
Groovy" and said what they still use it for.

------
elamje
I was in your boat at the beginning of 2019.

Went with Clojure, and it’s transformed my thinking. A good free starting book
is Clojure for the Brave and True.

Heard good stuff about Elixir and Rust as well.

~~~
0_gravitas
I spent about 2-4 weeks learning clojure (also in a similar boat at the time)
and in that brief time I was wholly transformed into another FP cultist, where
I then found my current love- Elixir, I have been meaning to give rust a shot
as well though.

------
brianfen
Definitely a Lisp language. Like Common Lisp or Racket or Clojure.

~~~
logari
+1 for Racket. It will have excellent potential in the AI world.

------
oldandtired
Unicon/Icon is my language of choice, mostly because failure is an option.
Icon will be found at
[https://www2.cs.arizona.edu/icon/](https://www2.cs.arizona.edu/icon/) and
Unicon (Icon's descendent) at [http://unicon.org/](http://unicon.org/).

It has no booleans or anything that represents booleans for that matter.
Something either succeeds and produces one or more results or it fails.

It has its problems (like all languages) but I find that it is easier to
formulate a solution to a problem in it. I tend to use the same formulations
in any other language that I might have to use.

But when you can write something like

every write(read())

to copy all lines from stdin to stdout or to test a number between a range
with

if 0 <= i <= 100 then write(i)

it has its uses.

SNOBOL4 is the precursor to icon and it used success and failure as well.
Though I haven't written any serious SNOBOL4 code since the 80's.

BUt the world is your oyster and there are many languages that you can choose
from. Languages like Fortran, Simula, Squeak, any of the various LISPs, FORTH,
FACTOR, there are so many and if you study and use each, you will find
different ways to think about how to solve the various kinds of problems that
you will come across in your career.

Happy hunting.

~~~
karmakaze
> It has no booleans [...] either succeeds and produces [...] result[s] or it
> fails.

That's a very interesting concept. I immediately thought, what if the question
was whether a certain condition exists in the data or not. The answer would be
any single instance found in the data.

This jives with how I always question putting booleans in database schemas.
It's usually better to add a piece of data that the boolean represents like a
date for when a predicate changed or an enum for the 'flavor' of true. Passing
a false/true to a function gives no info unless the function name makes it
clear.

=> booleans are a (premature) optimization.

------
jstewartmobile
Racket, Go, & C, in order of decreasing preference. Why? Fewer surprises. I
can focus on the problem rather than scratch my head over what the language is
doing.

Clojure (on JVM) and Elixir (on BEAM) get a lot of love these days. Not a fan.
Having to troubleshoot a mental map of two different languages for one piece
of code just adds a lot of needless complexity.

------
quickthrower2
Either nodejs or c# I haven’t decided. I like c# because I’ve done it a long
time and it’s a fine language that’s battle tested. I like nodejs for the
ability to use typescript and the vast ecosystem and minimal ceremony.

Haskell is worth learning as a brain expanding exercise and it’s also battle
hardened and good for production work.

I am thinking of learning go next because I’d like to make some software
that’s fast and I can distribute a single exe to people without ceremony.
Compare Jekyll which I’ve never got working on Windows to Hugo which just
works.

This advantage would also be true of Haskell but I find some it it a bit too
hard but maybe I’ll try again.

------
UK-Al05
What sort of thing do you enjoy? Do you want to get things done with large
ecosystems to help you? Go, python etc

Or do you want to try new things, with a focus on 'correctness' and expand the
way you program? If so you may enjoy haskell, ocaml, or lisp.

------
diehunde
If you want to learn Functional Programming you should give Clojure a try.
It's fun and simple but powerful enough to understand advanced concepts and
build real applications.

For web stuff I think Ruby is also pretty fun and easy to learn.

------
slipwalker
i have been working with Typescript/Nodejs and C# lately ( after over 15 years
mostly on JVM ecosystem ) at the day job, but having my fun with kotlin at my
spare time. It's like a less fun Groovy...

The JVM ecosystem is so large and ubiquitous, both at the modern cloud systems
and "enterprisey" that i really believe it is worth learning ( and kept near
).

------
meditations
I think you should learn Go if you enjoy writing Python. Also I’m a Python
developer but I’m considering to switch Go.

------
drakonka
I've been having a lot of fun with Go in my spare time lately.

------
richardknop
I enjoy Go and Python the most.

------
siriniok
Lisp, Ruby and functional JS

------
sepisoad
C, JS and Lisp

