Ask HN: What is the most enjoyable language to write code in (for you), and why? - dbtc
======
Someone1234
Likely C#.

The syntax is unremarkable, but the libraries are a pleasure to use.
Everything is well organised and it fixes a few of Java's rough edges, heck
even just the fact that everything has a ToString() prototype is a huge "win."

Although C#'s recent feature additions have made producing spaghetti code
easier (e.g. Linq) although C# wasn't immune from that before [0].

[0]
[https://code.google.com/p/elmah/source/browse/src/Elmah/Stac...](https://code.google.com/p/elmah/source/browse/src/Elmah/StackTraceParser.cs)

------
ptype
Python. Great eco system. Beautiful code. Lists, sets and dictionaries are
native data types, and list/dict comprehensions are a joy. Metaprogramming is
easy.

~~~
gesman
+1 Even though I am not any good at it, but it's very ruby-ish (without shitty
slowiness), perfect at data manipulations and great for regex-ing

------
mparramon
Ruby. It feels like telling the computer what I want to do, instead of piping
my orders through some arcane syntax like most other languages.

------
MagaManGo
Common lisp.

The tooling makes the language tangible. paredit. eval as you write with
SLIME. completion with SLIME. macros. It feels like you are working with
something alive and can hold it in your hands, rather than just plain text.

Other langs get 1 or 2 of the nice tools but never all of them. The
parenthesis are a chore at first, but after paredit they are an asset,
ironically making it easier to write than any other syntax I've found.

Clojure is ok, but just isn't there with tooling. Also it requires project
structure. Feels like a loss of freedom against the JVM as a dependency. With
Common Lisp you can just open a buffer and get hacking, and outperform the JVM
to boot!

~~~
thom
We have a Clojure codebase and I agree that the JVM places a hard ceiling on
some things, and there are big holes in the tooling ecosystem (or at least for
Emacs, dunno about the other IDEs).

I wanted to second the comments about paredit though. It's something you have
to force yourself to stay with for a few days at least, after which your eyes,
brain and hands are all thinking in terms of S-expressions. This'll sound
funny, but I honestly think it's one of the tools that has most reduced my
stress levels in my whole career. Going back to other languages, you forget
just how much syntax and structure you're wading through while trying to keep
track of the meaning of your code.

------
avinassh
Python. I am a beginner and I am loving amazing things I can do with Python.
It's very beginner friendly, has a great community. You can find tutorials
about anything on interwebs. Most of the things one want to do are already
there in the form of libraries. And you just have to take all of those and
build together. Just like LEGO.

That's what I love about Python. I am working on a project with Python, after
that I will try to explore other language and learn.

------
jfaucett
I think, for everyone it probably depends a lot on what each of us build as a
programmer, because although most programming languages are "general purpose"
they have communities and toolchains that tend to be more heavily specialized
to one area.

For me, I do lots of web application dev, not websites but applications which
I think makes a big difference in my taste. Personally, I love using Ruby
because its ecosystem lets me rapidly and succinctly build ideas and mesh
together APIs and the incoherence of the web in a clean way. But I've
absolutely hated the ruby experience when building number crunching programs
and desktop apps, here I found python to be a much more robust solution.

For command line apps on the other hand I really like Go and C, because I hate
having to wait for dynamic languages runtime to load before I can run my
command. So "enjoyable" for me really does depend on the context and the
problem set I'm dealing with, because lets face it if you need to do bitmask
ops those fancy floating point js numbers are just going to annoy the heck out
of you and you'll really wish you had that simple unsigned short :)

------
rubiquity
Elixir. The combination of pattern matching with Erlang processes and "let it
crash" philosophy is an absolute joy. Actors/Erlang processes and FP are
really great for modeling the problems I find myself solving in a clear and
easy to understand way.

------
debacle
SQL, because I never feel rushed, the language makes sense, and all I'm doing
is handing a recipe for matrix transforms to a query optimizer.

It's one of the few places that I really feel the magic of programming that
was lost with the advent of the IDE, Java, etc.

------
ScottBurson
Common Lisp. I'm an expert, and of course I've customized it heavily.
(Especially with FSet [0].)

[0] [http://www.ergy.com/FSet.html](http://www.ergy.com/FSet.html)

------
dwarman
Lua. Simple yet powerful. And - important for me - easily embedded into C and
C++ programs, also pure ANSI C so very portable. Sorta like Javascript but
with all the fat removed.

~~~
jaywunder
I have a friend that does lua, and he really likes it. What do you mean by
"fat removed"?

------
dagw
Python. Has support for everything I need to get out of my way and let me
focus on solving domain problems using programming rather than programming
language problems.

------
rjammala
Go. Mostly because it keeps things as simple as possible.

------
thom
Clojure. I find the average and best case functions written in Clojure are
more beautiful and satisfying than most alternatives, and much quicker to
find. Emacs with paredit, cider (REPL), company mode (completion) etc is
great.

Stack traces and the fact that nobody has yet released a decent debugger for
cider are pain points. Also leiningen (package manager etc) performance is
pretty crappy.

------
krapp
I'm the only one willing to admit it? Ok. Javascript.

The syntax for arrays and objects is dirt simple. Lambdas are easier to
implement in javascript than any other language i've tried them in (python,
C++, C#), and for the most part it just seems to do what I want with minimal
syntax and little BS.

------
sighype
C++11 (or higher).

I like template metaprogramming a great deal. I'd like to get so good I could
be on the level of the guys who know the standards in and out, but that seems
like a very difficult pursuit. :-)

------
s2mfin
C++. It allowes no sloppy coding. In mid 80's I was a BASIC coder at home, but
these days, even though it's just a hobby, I feel I need strict rules how to
code. Sam, Finland

------
mod
Clojure -- it's fun for me. I'm new to it.

In languages that aren't recreational: Python. Reads like pseudocode,
whitespace-delimited is something I like, libraries when I need them.

------
mooreds
Gosh, I still like perl. Don't do too much of that anymore, but man, it's
terse and powerful for just getting stuff done.

------
chrisbennet
I really love C#. I'm back to being a C++ coder for the last 6 months and I
miss it sometimes.

Why? Garbage collection is a wonderful thing.

------
squiguy7
Rust has been great because it forces me to really invest time into doing
something correctly instead of just coding.

------
jksmith
Golang - because I get shit done with it.

------
dpeck
Ruby, though lately elixir is making a strong push

------
iamjoday
python.

Nash, [http://joday.com](http://joday.com)

------
bloodorange
rust - the fun of C++ with safety guarantees

