Readit News logoReadit News
Posted by u/farleykr 7 years ago
Ask HN: Which programming language do you enjoy writing the most?
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 · 7 years ago
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 · 7 years ago
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 · 7 years ago
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.

protonimitate · 7 years ago
I love love love groovy.

Unfortunately my current team pushes hard against it because apparently its "java but not strongly typed" and therefore inferior.

The collection utils are great ( [].collate is a personal fave ).

vorg · 7 years ago
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/

zmmmmm · 7 years ago
You seem to be leaping to a lot of conclusions and making a lot of assumptions based on conjecture as the premise for your questions. It would be off topic and probably pointless to pursue them.
fastbmk · 7 years ago
You are wrong. Groovy had lambdas even before Java 8. Netflix used Groovy only because of that exact feature.
elamje · 7 years ago
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 · 7 years ago
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 · 7 years ago
Definitely a Lisp language. Like Common Lisp or Racket or Clojure.
logari · 7 years ago
+1 for Racket. It will have excellent potential in the AI world.
oldandtired · 7 years ago
Unicon/Icon is my language of choice, mostly because failure is an option. Icon will be found at https://www2.cs.arizona.edu/icon/ and Unicon (Icon's descendent) at 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 · 7 years ago
> 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 · 7 years ago
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 · 7 years ago
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 · 7 years ago
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.