What is your favorite programming language? Mine is JavaScript =]
My favourite one (albeit project/task-dependent) is JavaScript. Other than that: Bash and Python.
I love JavaScript, I get to do all the front end in JS. However, before I moved to front end I did a lot of IT and Infrastructure management. I got to write many scripts in Python and also implemented a back end to monitor and manage services in my previous company.
Python is my favorite programming language because it is easy to write system programs that work without dealing with thinking of how to do it. Nevertheless, I am not really going to recommend on it for any projects. I believe type checking is very essential when working on big projects and there are good programming languages that give features that you don't have in Python or aren't trivial.
Probably, my next programming language will be Go or Elixir. I heard many stories and good feedback on them.
Not to sound like a language elitist, but I think people should mention some of the other languages they have used for more than 100 hours.
If you know only Javascript and really like it, that's great and I'm happy for you. But it doesn't really say anything about Javascript...
If you know Java, C++ and Swift, then I'd be somewhat curious which one you like and why.
If you know Haskell, Rust, Lisp and Javascript, and you like Javascript the most, then I'd be much more interested.
Maybe this sounds mean or elitist.
--
I think I've used at least Python, Java, Kotlin, Bash, Rust, Javascript, Matlab and Fortran 100+ hours (maybe others).
Python would be my favorite for any small project or anything that likely be maintained much. Like (shell) scripting, proof of concepts, personal websites (backends... frontends if I could), auomating tasks... I like that it's very consistent and clean with little historical crap and few pitfalls. It's easy to write something quickly as long as it's small enough to fit in your head.
Rust would be my favorite for anything large scale (and for performance-critical code, and for playing around). I feel it's really well-designed. It helps to express and enforce assumptions that would be implicit in Python or most languages, which really helps when changing someone else's code. I can only read the signature of a function and know that an argument won't be ˋnullˋ, might be mutated, won't be dropped, that the function won't store some reference to it, and that no other thread can use it, thus the value I get back may be different, but won't change after that in non-local ways. If you've worked on multi-year projects with several dozen people, you probably know how valuable this is - otherwise it might be hard to appreciate.
Used to be lotusscript and formula but they are dinosaurs now. Last 10 years javascript
Richard Uie
"Live and learn" should have been "LEARN or DIE."
Just so's we know the basis for my views, I have the following personal history with programming languages.
APL
I've employed five different, major versions of APL over the course of twenty-three years. I used it for all aspects of general-purpose programming on projects ranging from one-off, quick prototyping to full-blown, major corporate systems. Nothing beats APL for speed of development and concision of code. APL can (and should be used for Functional Programming (FP), and that's how I used it. I've programmed APL everywhere BUT the Internet; contemporary APLs support web programming, but the shop where I entered the Internet used Java for that. APL has the weakest datatyping of all languages.
BASIC
I inherited the support role for a collection of BASIC programs as a three-year segment of a corporate gig. These programs followed Structured Programming (SP) principles. The particular environment was IBM's VS BASIC, and it was limited enough that you could run out of variable names. Good only for relatively limited programming tasks...not major systems.
C
I used C for about 5 years to accomplish relatively small, utility tasks in a corporate setting, e.g., international file transfers, file parsing and reformatting, etc. Most of the C code I wrote or supported was very modular and function-oriented. Great general-purpose language for low-level interactions with hardware devices.
C++
For a little over a year, I explored C++ as a learning tool for OOP principles. My exposure was based on the MS Visual Studio platform, which no doubt influences my relative distaste for the language.
COBOL
I studied this in college. I have never written a line in my life, but I have read thousands of lines for code reviews and debugging on behalf of team mates. Anyone who can code in any imperative, procedural language can READ others' COBOL. I wasn't a huge fan, since the language took a lot of code to do a relatively little bit of work (by my APL-influenced estimations...one line of APL to 10+ lines of COBOL). COBOL CAN do anything, small to vast, programming-wise, and late in my career, I encountered some pristinely beautiful examples of COBOL written by a young, Indian consultant, who had employed very modern principles of code structure. Still not my cup-o'-tea, but the most fearsome contender for the title "Most Lines of Code in Production."
ForTran
I studied this at university. I used it maybe a dozen times over the course of my career, usually when someone else, who had never see ForTran before, inherited code that needed to be translated into some other language. I like the language when written using modular, function-oriented principles. The code quality I encountered varied widely.
Java
I coded B2B web apps in Java for about a decade. The code looks nearly identical to C++, which is how I know that I don't really hate C++ - I hate Visual Studio and the MFC. Java does everything I could ever need. Since my usage followed JEE principles, there was a huge volume of foundational code and framework solutions on top of which to build new code. I like the (not always realized) ideal of write-once-run-anywhere. I will observe that anyone who says Java is OO has never seen an old, Assembly programmer, using it. I love Java's capacity for OOPness, but it's a matter of personal discipline.
JavaScript
I've professionally coded JS since 1999. I was writing library code within the first six months. However, I was writing that code using Functional Programming principles. I used JS for about five years before exploring its prototype-based object structure. Now, I write JS either way, suiting the weight of the code to the needs of the task. It amuses me to see the "new" JS-on-the-server boom, since JS was always designed for server-side use. However, I came from the land of lots of server-side, back-end languages with JS as a client-side, browser scripting language only. Modern JS/DOM-programming with HTML and CSS promise the most fantastically flexible user interfaces ever. I like its weak datatyping.
PHP
After leaving BIG-corporate for small-private, I entered a PHP shop. Seems able to do most of what I'd expect to need for systems development. I composed a Full Stack framework based on JEE abstractions, e.g., Intercepting Filter, Front Controller, Dispatcher View, etc. for the shop and encouraged a mix of OOP and FP principles. That tweaking hugely improved ease of development, support, and evolution.
There's a number of scripting and utility languages that I use or have used, but none of those could be easily employed to develop suitably effective, supportable systems.
Over the course of years, I have learned that I prefer to code functions or objects (class-based or prototype-based). I prefer languages with very loose (or almost no) datatype rules; as those of us who program APL used to say, "Strong datatypes are for weak minds." I like interpreted languages for the ease of turnaround and run-time binding. These days, I prefer working on the Front End of the stack, and hence, CSS, HTML, and JS are my preferred tools. So, for now, JavaScript stands as my number one, preferred language for programming.