What's your favorite programming language?


I’m always curious to hear answers to this question. :slight_smile: If you’re a software engineer, what’s your favorite programming language? What would your ideal language look like?


My favorite programming language is C, because it really is a middle-level language, meaning that it has both high and low-level characteristics (e.g. easy syntax and access to memory). :nerd_face:

1 Like

Interesting choice! I like C as a language, but its strings and lack of compound data structures like hash tables have always irked me. That said, you can always implement your own, right? :wink:

C always felt more like high-level assembler to me, especially compared to languages like Javascript or Ruby (of course, it outpaces those languages by a factor of 10, so interpret that how you will). I’ve always considered it the “Latin of programming languages” – it’s necessary to know it as a basis for high-level languages, and you have to be able to speak it in order to debug some of the trickier bits of code out there, but you don’t have to write everything in C (sometimes being slower by a factor of 10 is okay).

This might be a dangerous question, but: how do you feel about the Lisp family? :slight_smile:

1 Like

@austin Yes, I agree, and of course I don’t use C for everything (only for quick prototyping and more engineering projects), on the contrary, I’d say I use it very little :grin:, I just like its structure. We have to use different languages according to our project’s needs, I just had to pick a favorite.
I have never used the Lisp family, could you tell me about your feelings about it?:slightly_smiling_face:

1 Like

@ckerha I hear ya :slight_smile: I didn’t mean to criticize your choice at all – I was mainly thinking aloud, getting out my personal thoughts on C. It’s always had a special place in my heart, because it feels like I’m talking to the actual machine, directly.

Now, on Lisp: Lisp is the ultimate programming language for prototyping, for creating domain-specific languages (DSLs), and creating systems that respond to the world around them. It’s a programmable programming language. What does that mean? It means code and data have the same representation in your programs. This means you can manipulate code the same way you would manipulate data.

“Why is this useful?” you might be asking. Well, it was originally designed for AI, and still finds a lot of use in those systems that need to modify their own code. Every Lisp worth a damn has a “macro” system unlike any other macro system you’ve ever seen in any other programming language. Unlike C’s textual replacement macros, Lisp brings the full power of the language to its macros, giving you a code generation system that is truly unparalleled in any other family of languages. I could keep going, but I think Paul Graham has the best take on what makes Lisp so unique.

tl;dr Lisp really will change the way you think as a programmer, so even though it’s not really a practical choice for a modern system (with the exceptions of the Common Lisp and Clojure dialects), it’s worth learning for the mind-bending concepts it presents. I can personally recommend Practical Common Lisp, available for free at that URL.

Sorry for the wall of text – Lisp gets me all worked up :laughing: I’m happy to elaborate on any of the points in this post, though, if you like.

1 Like

@austin Thank you so much for that great explanation!!! You really got me intrigued about Lisp and I’ll definitely check it out :grinning:
P.S. Don’t worry I didn’t feel like you criticized me, you were very informative :slightly_smiling_face:


@ckerha Anytime! I could literally talk about Lisp for days – I’ve implemented my own, as a toy project :smiley: so it has a special place in my heart (like C). And that’s good to hear. :slight_smile: Feel free to email me if you have any questions in your Lisp explorations – my email is my first name at hackernoon. Or post here! Either way.

One last thing: I’d recommend Racket as an intro, but Clojure if you want to build something substantial and leverage JVM-based libraries and tools. I can personally recommend Clojure for the Brave and True, and the Racket homepage has excellent intros and tutorials. Happy Lisping! You don’t know how happy I am that you’ve decided to give it a try. :grin: