What's your favorite programming language and what about it do you like?
What's your favorite programming language and what about it do you like?
What's your favorite programming language and what about it do you like?
After years, and many languages, I still have to say Ada. Kotlin, Rust, Julia, and Nim are my current contenders to overtake, but here's what Ada does well enough to still be my preferred tool when appropriate:
There are some situation where Ada shows its age:
func
/proc
(Nim) vs fun
(Kotlin) vs fn
(Rust) doesn't make much difference to me, but function X returns Y
/procedure X
starts to add a lot of visual noise to a file. Here's when I use the alternatives, and their biggest weaknesses:
Thank you for attending my TED talk :P. Any questions?
That's a great opinion piece you've written there. You could with a little editing and restructuring turn it into an article.
I've never used Ada (I've heard great things, though), and I've only used Rust and Kotlin a little bit, but I can at least vouch that Julia and Nim are both supremely lovely languages.
I learned Ada in the early 90s before being plunged into a world of C/C++. I haven't heard much about it since, but I'm glad to hear it's alive and kicking. I'll have to have another look, see if I recognize any of it!
Really appreciated this thanks for taking the time to put this together.
Python, and I like that I know it
I had to use Python for a bit at work and it was confusing
pipenv, venv, virtualenv, poetry...wtf is all this shit
a.b
vs a['b']
vs a.get('b')
...wtf is a KeyError
What happens in other languages you use when you try to access a non-existing key for a hash/map/dict?
What language do you use that accessing an object attribute is the same that accessing a dict key?
What knowledge do you have (or not) that KeyError is a mistery to you?
I'm an embedded systems C programmer with passing familiarity with Python. To me it seems ridiculous that a language relies on whitespace for blocking. Is that true?
It only requires consistent indentation inside blocks, which is what any good code does anyway for readability. So the main difference then is just that you no longer need the redundant curly braces.
Yes, unfortunately. There is a lot of tooling around it but it still feels bizarre after years of using it.
Python for its versatility.
Rust for its strictness and speed.
Try Julia, it has both
By versatility, I'm also including the ecosystem. Julia doesn't seem to be anywhere near python on that.
However, I've heard good things, it's on my to-do list.
I'm a big fan of Rust.
cargo
) just works, the compiler's error messaging is simply unmatched and the IDE story is excellent thanks to rust-analyzer
. Result
and you have to explicitly handle the possibility that something went wrong. There's no forgetting a null check and slamming face-first into a NullReferenceException
or segfault in some other part of your code. Obviously it's not all perfect, however.
rustc
is always getting faster, of course, but it'll probably never be as fast as Go or JVM/NET.) And much time is saved from debugging. It makes a lot of sense that we let the computer/compiler keep an eye on lifetimes, allocations and access so the code is much more correct once it compiles.
I feel like my old colleagues and I have spent a far too large part of the last 20 years chasing memory issues in C++. We are all fallible, let the compiler do more.
I like the way the compiler doesn't just tell you there's a problem, but also gives you advice on ways you may be able to fix it. That's a smart compiler.
And I like the way I can write something that runs fast but not feel faintly anxious all the time I'm doing it.
Go. It's high level enough in terms of syntax that it's easy to build complex apps in, and low level enough that I'm able to control pointers, manually run the garbage collector, and benefit from the runtime performance.
It's the best of python and JS.
Hell yea. Can't forget those compile times and that parallelism handling. I can't think of a language that has a better dev cycle to performance ratio.
I really want to learn it, and I understand the basic syntax and patterns. What apps did you make with it to learn it? I can't think of anything big to make.
I made quite a few. Most of the apps on my portfolio use Go on the backend.
amen, brother
rust thank you for asking
crab army attack! 🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀🦀
I use Rust btw
rust is really great but rust foundation's mistakes kinda killing it :/
Rust is like Bitcoin, nothing can kill it
sorry i meant crablang, the based language with no cringe foundation
I think the stuff with the foundation is kinda overblown by the Internet drama machine. That's not to say they haven't made mistakes, but hopefully the leadership council will fix things up.
Plus, Rust has come into widespread use, so it'll be very hard to kill.
C#. Strong core, a lot of convenience extensions, extensive ecosystem, great docs, great IDE (VS) with suggestions, refacs, lingers, etc.
C# is still my favorite. I've been pushed back into a C++ project recently and it's just painful.
I live on the C++ side and I find C# painful, I think it's just a matter of familiarity.
Python. Works for nearly everything I need. I mostly write small helper tools (most of them shared under a FOSS license) and for my job, I developed a backend API server which sits behind a web application. I also use Python for scientific math stuff as nearly every Matlab also exists for Python.
I did use Perl a lot before but in my opinion Python took over the role of Perl. I loved Perl for having a module for just about everything but nowadays most Perl modules are unmaintained and you find the "good stuff" for Python.
Python
It's real easy to just launch it and get a script going, no need to wait for and ide or a compiler, there's alot of nice modules, and it's really API friendly
I've spent more time in the blender python API than I'd like to admit
Typescript with all strict checks turned on. You get all the good parts of JS with types, and (almost) none of the bad ones.
It's quite an expressive language with tons of quality of life features that I constantly miss from other languages.
Honestly for web/backend dev in 2023: Typescript for 90% of things, Go or Rust for anything else that needs to eek out that extra bit of performance.
I occasionally write the odd bash script, but really that's just a novelty way to mix things up half the time
I like C….
Haskel, It's kind of hard to do some stuff which are easy in other languages but if you find a good problem to solve with it, it's amazing how expressive you can be and how short your code gets compared to all the boilerplate code you have to write with other languages.
Kotlin. I like how versatile its features can be and how much more it adds compared to Java. I also think it’s cool how Kotlin can be used to write native apps and web apps too.
I would like to learn Rust. I heard nothing but good things about it. I however don’t have the need or enough motivation to do so.
Every time I go back to Java I feel sad.
PHP.
It picked a niche and fits exactly into it. It's a language for server side web pages. It's not a general purpose language shoehorned into the task, so it wisely sets boundaries. PHP could avoid a lot of async/await/promise hell because you can work in the mindset of HTTP requests-- terms of short lived requests that are compiled elsewhere. You don't have fragile runtime environments (see: server-side JS), since it just plugs into Apache or Nginx, which are at least battle tested and known quantities to operate.
It's batteries included. Hell, it's the entire Duracell company included. The standard library is rich and centrally documented, including decades of community nitpicks, even before you go into composer repos.
It's non judgmental. You can write procedural code, or object-oriented code, based on preference and fit to task.
It makes ad-hoc easy and formal possible-- If I need an array of [227, "Steve" => "meow", 953 => new FreightLocomotive()] I can get it, or I can enforce types where it's relevant and mitigates risk.
PHP really is such a forgiving language and easy to understand and get in to. My favorite part is that every time I have a seemingly very niche and specific use-case, there is a function that just does that thing perfectly and is already included in the base library.
You said it and I'll reaffirm: the documentation and online library of SO questions/answers is absolutely priceless. Most of the older versions are still compatible with the latest version, so upgrading is simple and usually just means there are more features you can use now.
Python. It's the only one I know :(
I've been trying to learn C# too but object-oriented programming just slides right off my smooth brain lol.
Once oop clicks it's a revelation.
Been learning python for selenium and I love it. I know some C# and Javascript but I enjoy Python a lot more as a newb.
Nothings stopping you from writing object oriented code in python too, or function oriented code in C#.
object-oriented programming just slides right off my smooth brain lol
Don't worry, although it's good to learn, IMO it's still on the wrong side of overused and overrated and could stand to be applied more selectively than it tends to be.
Python. I'm a data engineer by trade and the ability to just lay out functionality between different systems and move content fast is great. I know you can do that with many languages but python does scripting very well. And since by default I am working with remote/parallelized/containerized systems I never really lament pythons lack of speed.
Obviously python is not the only language in my workweek.
You ask a carpenter what his favorite tool is? I like languages that are fit for purpose, and I enjoy using them for that purpose.
I used bin/bash when I automated the backups at work and happy doing it. I was pulling my teeth out when I had to write code for communicating with Bluetooth devices in /bin/sh because that was what was available from factory on the router.
I picked Python for when I needed to scrape a Romanian phone book (to win an argument on the internet about something completely unrelated to programming). I once tried doing parallel programming and threads, it did not work out very well and I switched to some other language before I got too deep into it.
My guilty pleasure is the voodoo magic of C. I don't really have a use for it in my job so I never get around to really do anything with it.
Lisp.
It just feels extremely natural to me, so it's difficult to pinpoint specific features I like. But two such features stand out: the parantheses-based syntax and the extreme interactivity.
Probably the most unpopular opinion here but PowerShell.
My main reason is that it's extremely easy to learn and is a good intro to object orientated programming.
People bash it but it's extremely easy to inspect objects, get any properties and methods associated with that object or class, walk through all the properties of the object and transform that into whatever you need.
It has a very fast turnaround time when developing code as you can run tiny snippets at a time and understand their outputs before moving to the next bit.
I'm not a Dev and end up having to write python from time to time and I hate it. At one point I just needed to understand an object in a variable and I couldn't do it, the command dir
exists but it didn't give me any of the info I needed. There's a function in PowerShell called Get-Member
(alias: gm
) that you can pipe anything to and it will show you all those details of the object.
It helped me tremendously when I was just starting out.
Its super powerful, it can do anything C# can do because it's built on it, you can also run inline C, C# and C++ code with on the fly compilation.
It's also OSS and cross platform.
I owe a large portion of my career to PowerShell.
💀 powershell ...
Oh Jesus no.
But I knew there must be someone who likes it.
In python you may have wanted the repr command to see how an object looks like.
Thanks for the tip!
I write code in C# but I love PowerShell. it's just elegant even if the syntax can be a bit clunky
The syntax is often terrible (how it handles escape characters, for instance) but there's usually a well-meaning backwards compatibility reason for that. It's also flawed in many many other ways (classes, package management, variable scoping just to name a few).
But god damn if I can't bash (no pun intended, har har) out code to do most things very quickly in it. It's a fantastically accessible language, and it's a lot more powerful than it gets credit for.
I'm a developer with 30 years experience in lots of languages and honestly PowerShell one of my favorite. Of course anything is an improvement over batch file scripting but it's so much better than bash. An object-oriented command line is amazing - such a huge improvment over having to use text-processing tools to parse output. Built-in support for virtually every text file format, easy access to web and rest services, and now that it's cross-platform and open-source I'm using it consistently on Linux and Macs. I've been using it for almost 15 years and it's sad how few people outside of the Windows eco-system are familiar with it, and even more resistant just because it's from MS.
Yep, the disparaging comments you get on anything where you mention PowerShell are a sign of some deep rooted prejudices and the unwillingness to learn something new because of them. They'll rather scoff and pretend that they're morally superior because hurry durr Microsoft.
I'm glad that there are people who appreciate it for everything it can and does do. I cringe every time I have to use bash because of just how bad and cumbersome it is to use.
I've never been happier and more productive than when I was working in Perl. It's a language that, at its apex, had a community of incredibly smart and creative people evolving it and its ecosystem. It's a practical, powerful, multi-paradigm language that let me get work done with a minimum of fuss.
Perl was a language that felt like an extension of my thoughts, like it was working with me and for me. Most other languages feel like I am working for the compiler rather than the other way around. Or at the very least, spending unnecessary effort satisfying some language designer's personal pet peeve, which constantly takes me out of the flow of the job I'm trying to do.
I still use Perl for everything I do. Using anything else just feels too much of a struggle trying to get it to do what I'm telling it to do.
But maybe that's the 25+ years of using it talking.
Perl was always fun
JavaScript, because Stockholm Syndrome is real.
Kotlin.
Take the good parts of Java.
Remove the bad parts of Java.
I thought that was c#
C# adds a bad part called Microsoft (yes, Mono exists, it's still Microsoft Java)
Kotlin > c# > java
JavaScript. Stay mad but it's fun to write, easy to get into, easy to do both visual (e.g. web) and CLI-style code, and it's awarded me a cushy life, house, and car.
I've been around - did COBOL at uni. DOne a lot of commercial work in Delphi and C++. I loved the few months of Swift I tried, but started on webdev 6 months ago. I felt really unsafe in JS, and was looking forward to moving onto Typescript. But, as time's gone on, I've found JS just seems to work how I think it's going to. I haven't run into problems with types at all. I assumed I'd end up on a complied language for server side, but the Node ecosystem's so mature it's just been efficient to stay in JS land.
If I was going to teach kids to code, this is where I'd start. Low friction to get going, and powerful enough to run most of the world. Bountiful resources to learn and get support.
I actually like JS too. It is second to python in ease, but way better in terms of tooling and eco system.
The JavaScript eco system has some issues due to legacy baggage of browsers and design issues with node, but beyond that, the tooling is amazing and powerful.
and it’s awarded me a cushy life, house, and car.
The rest sounds like cope but this I can get behind.
I can't use regular js anymore after getting used to typescript. I just get annoyed at myself
Yeah I should have been more specific in that I also use TS.
Good news, I'm not sure when you'd ever have to. TS literally compiles to JS
It's difficult to pick only one, but I'd have to say Ruby. The syntax is wonderful to work with, I can often implement the same logic in fewer lines of Ruby than other scripting languages I find, and it has constructs that make for elegant code like metaprogramming. It's certainly not the fastest language out there and those same concepts like metaprogramming can be abused, but ultimately I find it to be an excellently designed language that's a lot of fun to work with.
Javascript. I like the new ES6 syntax, and I like that it can run anywhere.
I'm going through all of my company's apps replacing jquery with vanilla Javascript. I don't like that Javascript is much more verbose than jquery but I do like not having to be dependent upon a library.
I hate them all... But I like the looks of Go, just wish it hade the properties of Rust. And I don't mind Python for scripting. And I know too much and too little C++ for my own good.
I love Go precisely because of its simplicity which also makes it highly consistent across different codebases. That said I do like the new direction of adding some features devs are clamoring for with helper functions and memory arenas.
Forgot to mention that compile time....hnngg.
On the one hand I like Lua for its elegant, minimalistic design. I enjoy writing Lua, most of the time when working on Neovim plugins.
On the other hand I value the raw expressive power of C++. It is a beast, but I enjoy taming it.
Where's the love for VBScript?!
In 2008. (The year PowerShell 2.0 came out)
Right here, will spend way to long writing a vba macro when i could have done it without quicker 😂
I wrote VBScript for about 7 or 8 years professionally, starting in 2010. I don't miss it.
I started in 2019 and write almost exclusively VBScript. It might be a bit limuted in some ways, but it's quite useful in other ways. And it's easy to learn!
I've used over a dozen languages, from BASIC to Haskell to C++.
If I were starting a new project today, it would probably be in Go, or in Python with static typing using mypy. Unless the project was itself a language or something language-like, in which case I couldn't stay away from Haskell and monadic parsing.
If I were looking to learn a language that I haven't worked in before, it would probably be Rust or Clojure.
Go is really fast, works well with "the Unix philosophy" (although maybe I should say "the Plan9 philosophy"), and has pretty excellent tooling.
Python is everywhere and there are libraries for everything. However, Hindley-Milner has been part of the CS canon for my entire life and there is zero excuse for a language not having type inference today.
Haskell gives access to the best goddamn parser library ever: Parsec. Screw the category theory; combinators are the Correct formalism for parsers.
(If you're still reading this: Read Graham Hutton's Programming in Haskell, second edition.)
(I made the mistake in my last job of getting 80% of the way into writing a new tool — a "configuration as code" utility for configuring load balancers — before I realized that it was, in fact, a compiler and would have been much cleaner if architected as a compiler instead of as a glorified ETL tool.)
Rust is what the Lemmy backend is written in, and I have terrible ideas of trying to stick my fingers in there and hope they're not bitten off.
Clojure is what a few of the most productive programmers I know work in, so there must be something good in there. Also, it's been almost 20 years since I last used a Lisp for serious work.
Perl. Its installed everywhere I need to run it and stuff I wrote over 20 years ago is still doing exactly what it should.
You'll be damned if you ever need to know what exactly you made it do 20 years ago though as Perl is a write-only language ;p
LOL that's so true.
That's the joke, but it's really not true.
You can write unintelligable code in most languages.
Perl's syntax is fine, and you can write beautiful code with it - but it will also let you write fugly code that works.
I think those who say this seriously just don't understand Perl, or even programming generally. (Whilst I like Perl, I'm also proficient in C, Java, JS, Python, PHP, Bash and probably a few more, so I'm not just promoting the only thing I know.)
That's a poor developer problem, not a perl problem.
I really had to scroll this far to find perl. I like perl too. Underrated.
It's a tie between Julia and Nim for me. Both have a high-level, readable syntax while also being natively very very fast.
Julia is great for exploratory numerical/scientific computing, e.g., AI, simulations, etc. It especially has amazing math syntax and unicode character support, making for really elegant math code.
Nim is a systems programming language, and I've been starting using it for embedded systems lately. I think it could be really good for running machine learning on embedded devices, as C/C++ are kinda miserable for that, but MicroPython is way too slow and not well suited for production embedded systems imo. Plus it compiles to C and C++, so you can compile it and run it on any device for which you have a working C or C++ toolchain.
I haven't done much with it at all but Dart felt nice while I was using it.
Out of the ones I use often prob C#.
10 print: "Basic"
20 goto 10
Run
That's about as far as I got :-)
syntax error (the colon after print)
Ha, I was back and forth about that, couldn't remember whether it should be there or not.
Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic Basic
matlab 😈 because I love figuring out how to vectorize code! I've used it for various art projects (see below) and it manipulates images beautifully. and the documentation and error messages are easy to follow.
Kotlin: compatible with Java, JS, Wasm, Swift and even C++, ability to share code across all those platforms, way less verbose than Java, lots of useful functions in the standard library... I still don't understand why some people are saying it's just Java but worse
Kotlin is dope as hell. I hope i never have to write a line of java ever again
People are sleeping on kotlin and it's a shame. It's the most comfortable language to use for me.
I'm probably the black sheep here, but I love Kotlin. It has the best parts of strong typed, object oriented languages and functional languages. Though I feel like it being designed to be bytecode compatible with Java really limits its applications. Even though they have a scripting language version of it, it really doesn't perform well as a scripting language because you need to compile it. I find myself always using Python for scripts instead.
Oh my favorite is Crystal. It's a statically compiled dialect of ruby.
It supports:
As much as I love the expressiveness of crystal, there are a few cons:
Other than that, the type checking but with ruby-like syntax is awesome!
edit: fixed formatting
I like R because most everything is vectorized out of the box, and you can subset multiple ways. You can do stuff like
undefined
a = c(1,2,3,4) a - 1 # 0,1,2,3 a < 3 # T,T,F,F a + a # 2,4,6,8 a[a < 3] # 1,2
Also map (“apply” functions in R) is implemented very intuitively, and R discourages you from doing anything object oriented.
Also Shiny is so cool.
Can't believe I scrolled all the way down and didn't find Scala. It's the only language with decent traction that beautifully and elegantly combines functional programming and object oriented programming. Scala makes it such that the language does not limit you into a certain paradigm. You can translate your algorithm in your mind into code regardless of how you thought of it. Incredibly flexible where you need it to be.
Very few people use Scala. I think it's used in some data transformation pipelines and that's it....
Yeah very common in Spark world, but haven't seen it used much elsewhere.
There's a good number of companies that use it. Off the top of my head, Twitter, databricks, hopper and tubi TV all use it.
Brainfuck !
Not meant to do real things with it, it's more of a puzzle game, but a really brain hurting one
I also enjoy brainfuck, its a nice mental challenge, similar to solving riddles. On Codewars they even support it as language and there's a lot of challenged written specifically for it, it's good fun.
Currently Zig. It really is "better C", and i like C.
Otherwise it would be Erlang, but it does not suit what i want to do now.
i have to try zig
No one else said it… I like Java, and more than the language all the tools available around it. They have been adding to the language to cut down on the traditional verboseness, and it can even natively compile now** some of the time.
The tools are also great, with Springboot for web services and jOOQ for databases, you can very quickly have a web app with strong typed database objects.
Clojure. I not only get to use a functional language but also get to use all the libraries written for an actually popular language (Java, or JS for ClojureScript). Altough I'd choose something else if functional programming should ever catch on.
Perl. I can use it after awhile away without having to look up how to do things. It adapts to the best style for what I need to do.
I try to stay language agnostic but if I'm honest JavaScript is my favorite because of the speed it provides. Also I like to build we based things so it's always in the stack
Scala. Multiparadigm. A touch of OO is nice in the functional world.
R. The Rstudio ide is awesome and the data wrangling packages are unmatched. It's also pretty fast as long as your dataset fits in your RAM.
HTML 4, cause I leaned it in 1998 when I was 10 and it's the only language I know (besides English) .
COBOL, because I loathe myself and don't want to be happy
I like typescript because it's all I've used for the last 3 years and I now think in it
I like TypeScript (and Python) like I like duct tape
It isnt the best solution, it's not the most elegant, but it's the quickest to implement and can be used basically wherever
FORTH, but not because I actually use it regularly. A stack-based zero-operand postfix language? Every routine/word you define is like solving a puzzle.