26
votes
What programming language do you use for work and what's your favorite language?
I think there's often a discrepancy between what people program in for work and for pleasure, and I thought it'd be fun to do a survey of tildes users.
C# at work, shell at home. I only code for a living because it pays better than cleaning toilets; if janitors made as much as developers I'd trade my cubicle for a mop and bucket instead of devoting the majority of what little intelligence and creativity I possess to making rich assholes richer.
I'm in the same boat. I would love to not code at work so I can go back home and still have the energy to do some development as a hobby and not be bothered by all this bureaucracy.
I must be the only sysadmin out there who intentionally avoids learning any programming languages. A little java, a little TSQL, perl and bash are my horseradish. Occasionally PHP. Some powershell. I try to avoid them all, I end up fixing everyone else's busted toys, and I don't really feel like I 'know' any of them. It's just code - you read it, then you fix it. What's the language matter? When I muck about in the guts of the OS and server components it's all the same to me. Sometimes you open a snippet and it's 4d chess, but usually, things aren't that complicated, because people aren't that clever.
I feel like if I was going to pick a language to learn and get into seriously again, I'd start with Python, mostly because I could pitch in with Tildes. Most of my real, honest programming was in college... pascal, cobol, fortran, assembly, c, lisp as a hobby. I learned the old-school languages. Maybe that's why the new stuff seems so samey to me - it's practically english compared to what I started with.
Yep, another old-schooler, mostly in the same boat. I was warped enough in high school that assembly was fun, like number knitting for nerds. I moved along to MatLab in grad school. [I've learned some human language since.]
I had to do a fair amount of HTML/CSS/LAMP stack stuff for a couple of years, but drew the line at JavaScript.
I am trying to get a little more modern via Automate the Boring Stuff, but it's more to support a passing interest in data analytics and statistical work again. I've found I can't stay focused enough for multiple hours of coding anymore, and want to crank VMs around instead.
Well, I'm a machinist by trade, so the only code I ever write at work is FANUC G-Code, but I've been loving Rust for some late-night recreational hacking.
The fun thing about programming in G-Code is when your program "crashes," it actually crashes. (It actually isn't very much fun)
Is it pretty standard to actually hand write g codes? I got the impression most of the stuff in industry is done with compilers and simulations from 3d models.
I write code in any number of languages at work, and it tends to shift over time. Right now I mostly write/maintain C++ and Java, with a bit of Rust thrown in where I can. Matlab and Python are also workhorses for my group.
Side projects tend to get written in either Rust or C# depending on whether I want a GC or not.
Rust is by far my favorite lately. It just makes it so much harder to mess up without realizing it. Unfortunately I work with researchers for whom C++ is already a huge stretch, so I dread getting them to learn enough to by productive in Rust.
As a novice intermediate / experienced beginner programmer, something you said struck me as an interesting decision criteria:
What kinds of projects on the side would involve the decisions and what kinds of thinking would go into them?
Not sure this applies to side projects, but an example of the garbage collection decision that I ran into early in my career was in implementing aerospace controls. GC can stop the execution of your program while it does its business, and that is a major no-no in safety critical systems! For fun projects with no risk of harm to persons or property it is probably less important, though a more competent CS person than I can surely point out additional considerations.
What a cool example!!
Thank you for sharing. That’s kind of what I figured, but the side project bit threw me off...
I mostly write Javascript/HTML/CSS at work with a smattering of Java here and there. I’m developing all of my side projects in Elixir/Erlang. I also occasionally work with Shopify stores, so I sometimes write Ruby/Liquid.
HTML / CSS / JavaScript / PHP / SQL web applications and some light bash scripting for background tasks.
PHP is my fav
PowerPoint, unfortunately :(
I used to do a lot in Python, Rust, & Java/Scala with a healthy dose of shell scripting. I still write business artifacts in LaTEX just for fuck's sake, but those control sequences are about as close to code as I get anymore.
Forgot favorite language: I used to express my masochism in C, but have found enlightenment in Rust.
ABAP - a proprietary language by SAP.
Here are some code examples if anyone is interested.
It's the worst language I've ever seen in my life. It has nearly one thousand keywords, and to my knowledge, the majority of them are deprecated. It's been around since 1983 and it feels like it. The language is still undergoing active changes, and to be fair, coming from a C++/Java background, the changes are normally pretty refreshing.
I still love what I do. Classic British cars may not be the most reliable products in the world, but that won't stop a mechanic who loves tinkering from playing around with them. Writing in a difficult language comes with interesting challenges, and that's what I love.
Oh, and finally, the ABAP documentation is trash, and the whole ABAP programming culture is entirely unacademic. There's hardly any desire to write clean and modern code in this language. Lots of "well this is the way we've always done it".
That all said, although I'm probably most skilled in Java, C++ is probably my favorite language.
Oh man, never thought I'd see anyone else that knew the pain of ABAP. What got me about it is it's looseness at some points and strictness at others. Feels like two different teams or individuals wrote it. One very lax and business like and the other very strict and wanting to enforce good code standards.
I write Python, Typescript, PHP, and I'm trying to introduce Go for work.
At home, Python, Go, a bit of rust, a bit of Lua.
At work it's JavaScript, TypeScript, C#, HTML, CSS, and SQL at work. For a long time, JavaScript has been my favorite language but that's been shifting to Rust over the last few months
Clojure and Clojurescript for work and hobby. And a little bit of emacs lisp.
Mostly Clojure for work, considering moving to Go. I may also end up working for a spot that uses Kotlin, but we'll see how that goes! My hobby stuff is mostly in JS, although I'd also like to learn C#.
powershell at work, and powershell at home. I'm trying to learn more but none have really stuck, go has been interesting to try and learn though.
Kotlin! The language is a breeze. Makes Android programming nicer, and allows processing some files on desktop quickly by writing a little script-like program. There's one thing missing though: the ternary operator. Instead of writing
enabled ? visible : hidden
I have to writeif (enabled) visible else hidden
At work I use primarily C#, Rust, and Python; I don't really have a "favorite" but the one I'm having fun with at the moment at home is Go.
At work I've been lucky enough to have the freedom to choose whatever language our team is feeling like using without any major process constraints so we've been playing with C#, Go, TypeScript, Elixer, and we're very closely eyeing Blazor and I suspect we'll pick it up once .Net Core 3.0 drops this April.
At home I'm primarily using C#, however I use pretty much every language out there just to get some exposure, C++, Rust, x86 ASM, Elixer, Go, Nim (side note, Nim is awesome!), and I plan to take out Vlang for a spin soon here.
I think it's helpful to know:
If you have those in your toolbox, you'll almost always have the right tool for the job -- regardless of the language.
At work I use NodeJS for services, slowly switching my mind to Go, Bash for small stuff, Python for bigger jobs, Nix for building services and deploy environments. In the past I have been experimenting with Delphi (long time ago), Java, C. If I really had to choose the favourite language ... probably Nix or Python, of course every language can be used for almost everything, but choosing the right language for the job is more important than sticking to one.
C++ and C# at work with some occasional Python. I'm not sure what my favorite language is though. Python is easy to use but rarely leaves me with a feeling of satisfaction. C++ is what I'm best at and I admire well written C++ more than anything else, so maybe it's my favorite. I've just recently started using C# and I feel like I'm really just acting like it's C++ and then I hit stackoverflow when it doesn't work. I have noticed that it's a lot easier to work with than C++ though.
All the comments here are making me think I need to try Rust.
As a high school student I can't really comment on what language I use for work. But my personal favorite languages are C, Rust, Golang, and Bash. Recently, Rust has replaced many of my C based side projects. Anything web related or high level stuff is done with Go. Anything relating to automating the workflow on my computer is done in Bash.
For me, there's no discrepancy. I'm a Haskell user at work and mostly in my hobby programming too. Though, I had some fun learning Rust recently.
Haskell remains the one language that I've attempted to put effort into learning and have thus far failed, which definitely had an impact on how I view my programming skills. It didn't click for me, and I'm afraid it never will. Is it really possible to use it for more than just toy projects?
Pandoc is written in Haskell, so it's definitely possible.
It took me more than 10 years to get it :)
I don't think I'll end up using it a lot (not a great fit for the kind of work I do), but I learned a lot in the process and am a much better programmer because of it.
That's how I felt about Ruby on Rails. Every other language seemed to stick well and stick fast. I can tell Ruby on Rails is a wonderful, powerful language, but I really struggled to use it, which was humbling.
Actual question: what do you write professionally in Haskell? I've dabbled in it but I was under the impression that it was almost exclusively used for academic exercises and not for actual industry work
With a primarily Java background, I switched to Kotlin a few years ago and it's been amazing. I feel much more productive, it's more enjoyable, I don't have to worry about NPEs. I've been working in a Ruby codebase lately and I'm really missing Kotlin and a statically typed language.
While I had really loved Java in the past, it feels like it is dying for pretty much everything outside of enterprise use, and enterprise is where technology goes to die. Sure, there are many people still developing Android apps with it, but it seems Kotlin is taking that away.
I know there are many facits to why Java is dying, but I am blaming Oracle for it. They have done a lot of damage to it's reputation.
Ruby On Rails at work, mostly python, circuitpython, and Arduino stuff at home for my hardware projects
PHP, JS for work and Python, JS at home. Doing web dev. Switched from PHP to Python for personal projects just to add another market dominated language to my skill set, not because maybe it is better.
C# and JS (extendscript) at work. C# and Dart, some Python at home. C# is pretty great :).
I’m working with C# too - and I kinda like it too. Microsoft is putting a lot of energy into this language.
Do you use Core or the normal Framework?
But at home I have a little more fun with Python and C, since microchips and dotnet aren’t loving each other so far :)
At work mostly .net, at home mostly .net core, because I use Linux most of the time at home :).
HTML / CSS/ JS (both browser and Node) & PHP at work. My favorite language is probably Rust at the moment, having the performance of C++ while not having to deal with memory issues is great.
Using a lot of javascript, java and python for work (data science-y stuff). Absolutely love javascript (to an extent where I stream and make videos about it). ES2015+ updates are turning it into an amazing language. And now that we have wasm - you can even achieve pretty good performance without sacrificing portability.
I’ve worked with Java a few years ago and when I had to switch to C# it felt extremely similar.
Can’t really draw a line with your love of JavaScript tho - I really hate this node modules stuff with passion :-D
Why though? While there's indeed a lot of node (and js) modules out there (which btw is not that different from java and maven packages) - that diversity is great. You can find just about anything you want and - majority of time - it'll work equally good in browser, node and even on the phones. Isn't that amazing?
One of the biggest reason I have in mind is the good old example with the pad left package, that shut down half of the internet when it was removed. It feels like npm introduced a whole new level of laziness.
And if I just compare the folder sizes of our 120 backend projects (round about 1800 folders with 14000 files and 2 GB disk space) with the single frontend project (48.000 folders with 160.000 files and 1.2GB of disk space of which 99% is just node modules) I feel that there is a lot of trash in there.
Besides that it always looks like there is a buttton of Alpha packages used in production environments.
Lack of stdlib is indeed a problem in js world, but it's being addressed.
W.r.t. leftpad and "breaking the internet" - as it was discussed numerous times - majority of other package managers allows this scenario to repeat. It was so bad because javascript is everywhere (and I'd argue because of the lack of dependency pinning and appropriate testing in projects), hence it was very visible.
W.r.t. size of node_modules - first, I'm not sure it's fair to compare abstract "backend projects" with a "single frontend project". If those are 120 microservices - then even 2gb and 14000 file are too much :)
The size of node_modules (and resulting app) is something that is entirely up to you as a developer. You can build a js project that has very little deps, very small node_modules folder and tiny resulting build (see e.g. preact).
It's just a question of effort / resources available - do you want to spend time to achieve this? Or do you want to quickly jam together a bunch of existing libraries and get something running?
It's pretty easy to blame everything on language and ecosystem, but those things are rarely at fault.
C#, Ruby, or Python for work currently. I play around with languages at home, but I've been using Rust consistently for a while now. I spent a while exploring functional languages like Clojure, Haskell, and Elm to broaden my programming horizon and change how I approach designing apps and APIs.
At work, I've used PHP a lot to build webapps.
On the backend, I like writing bash scripts.
My favorite language used to be Python but Javascript has gotten a lot better these last few years, nodejs feels great.
Java at college, Python at home.
Primarily Kotlin and a splash of Java at work, and Rust at home for me.
It has changed a lot since I started. Most of it has been a mixture of PHP and JavaScript, but lately the company I work for has me working on automation tasks with a certain Indian CRM system that mostly has me writing code in an extremely limited scripting language called DELUGE that has laughably bad documentation.
I don't really do that much programming at home, but my favorite language at the moment is Rust.
Python and JavaScript at work.
Interested with typescript, go, ocaml (reasonml) these days.
I prefer functional paradigm
Clojure and Clojure. I am a pretty happy little lisp alien. 20 years ago I was told to learn lisp for the mind expansion but not to expect to work in it unless you count autocad work so I am constantly happy how clojure changed all of that. I am longing to work with Common Lisp again lately though mainly for the debug story.
Python, Javascript and SQL are the daily drivers, plus Elixir and Go out of interest. A lot of languages I used to use but since forgotten (I can understand them well enough but don't make me code in them): C/C++, Java, PHP, various forms of Basic, Pascal, Clojure.