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?
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.
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.
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 ).
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/
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.
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.
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.
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.
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.
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.