Python is a good first language. Big community. Easy to start, can start without OOP or even functions - just a script. Large ecosystem from web to AI. Automating the boring stuff type work has real world application and is a decent glide path from learning programming to actually enjoying it.
I want new programmers to learn to enjoy it before trudging through theory and patterns. "Read what you love until you love to read" sings true here.
MetaMine - It mixes declarative and imperative code with sane rules. It's the most powerful programming language I've ever seen. Unfortunately, it only briefly winked into existence a few years ago. Here's the demo[1] via the Internet Archive to whet your appetite. See also, mentions here on HN[2].
The best advice anyone can give you on this is to “just pick one”. Analysis paralysis is death and is going to waste your valuable learning time. Understanding programming concepts, which you can do with most languages, is paramount and will make you equipped to switch to something else later on.
That said, some languages can be friendlier or more useful than others. Start with a scripting language, not a compiled one.
I’d recommend Ruby over Python, as it’s more expressive and less rigid with invisible characters. In Ruby you often find yourself thinking “I wonder if this works” and it does.
But if you don’t have a particular goal in mind, I’d even recommend p5.js above those. It’s essentially JavaScript for making art, with a large community geared for new learners. The best part is that with very little code you can have graphics on the screen reacting to your inputs, which is way more exciting than modifying text.
The thing I like about Python over Ruby is the one way to do a thing mentality. Ruby reverses this and has multiple ways from keywords if/unless and standard library filter/select, find/detect, etc--this drives me batty. The other infuriating is the subjectively surprising uses of the ! suffix on method names. `compact!` is a double whammy which mutates in-place (as expected) but also the return value is sometimes self and other times nil.
Java. It's old school enough that it gives you a sense of real programming, while also shielding you from the lower level elements of C++ and C. It's also still widely used.
1) First learn a compiled/low-level language, so you can see how things work at a low level and have an appreciation for things like variable sized arrays, strings, and memory - things that are given for "free" in higher level languages (like JavaScript/Python)
- C is my recommendation
C is a very small, simple language. You can build anything in C, and you have to manually manage memory in some cases. You have to build many data structures from scratch.
2) After playing with C, learn a high-level, interpreted language with a large ecosystem.
TypeScript since everyone ends up learning js anyway. Only need to be warned about the js warts and foot-guns in advance to be less tripped up or shocked by them.
It might be better for some to learn javascript first, then later transition to TypeScript after experiencing runtime errors to appreciate static types which avoids them.
Other languages that allow addition of static typing falls far short of the standard that TypeScript has achieved, both in it its type system and ecosystem.
Python’s syntax is clean, simple, and designed to be easy to understand.
Python is used across a wide range of industries and applications—from web development (Django, Flask) to data analysis and machine learning (pandas, NumPy, TensorFlow), and automation. You can start with small scripts and scale up to complex projects as you learn more.
Python has an enormous community of developers, which means a wealth of resources like tutorials, forums, documentation, and third-party libraries are available. When you're stuck, it's easy to find help on sites like Stack Overflow, Reddit, or in Python-specific communities. I think Javascript is the only language with a larger community.
Python is one of the most in-demand programming languages in the job market.
Of all the ones I have used (perl, c, REXX,etc...), I use shell (bash) more than anything. Linux/Unix is a "toolkit", shell is the glue. Always start with the shell, and grow after you master it.
Python is a good first language. Big community. Easy to start, can start without OOP or even functions - just a script. Large ecosystem from web to AI. Automating the boring stuff type work has real world application and is a decent glide path from learning programming to actually enjoying it.
I want new programmers to learn to enjoy it before trudging through theory and patterns. "Read what you love until you love to read" sings true here.
MetaMine - It mixes declarative and imperative code with sane rules. It's the most powerful programming language I've ever seen. Unfortunately, it only briefly winked into existence a few years ago. Here's the demo[1] via the Internet Archive to whet your appetite. See also, mentions here on HN[2].
[1] http://web.archive.org/web/20201014024057/https://www.youtub...
[2] https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...
[2]
The best advice anyone can give you on this is to “just pick one”. Analysis paralysis is death and is going to waste your valuable learning time. Understanding programming concepts, which you can do with most languages, is paramount and will make you equipped to switch to something else later on.
That said, some languages can be friendlier or more useful than others. Start with a scripting language, not a compiled one.
I’d recommend Ruby over Python, as it’s more expressive and less rigid with invisible characters. In Ruby you often find yourself thinking “I wonder if this works” and it does.
But if you don’t have a particular goal in mind, I’d even recommend p5.js above those. It’s essentially JavaScript for making art, with a large community geared for new learners. The best part is that with very little code you can have graphics on the screen reacting to your inputs, which is way more exciting than modifying text.
The thing I like about Python over Ruby is the one way to do a thing mentality. Ruby reverses this and has multiple ways from keywords if/unless and standard library filter/select, find/detect, etc--this drives me batty. The other infuriating is the subjectively surprising uses of the ! suffix on method names. `compact!` is a double whammy which mutates in-place (as expected) but also the return value is sometimes self and other times nil.
> The thing I like about Python over Ruby is the one way to do a thing mentality.
In my experience, Python utterly fails at that goal. I wrote about that in another comment years ago:
https://news.ycombinator.com/item?id=34246550
Java. It's old school enough that it gives you a sense of real programming, while also shielding you from the lower level elements of C++ and C. It's also still widely used.
1) First learn a compiled/low-level language, so you can see how things work at a low level and have an appreciation for things like variable sized arrays, strings, and memory - things that are given for "free" in higher level languages (like JavaScript/Python)
- C is my recommendation
C is a very small, simple language. You can build anything in C, and you have to manually manage memory in some cases. You have to build many data structures from scratch.
2) After playing with C, learn a high-level, interpreted language with a large ecosystem.
- I recommend either JavaScript, or Python
> could only recommend one
TypeScript since everyone ends up learning js anyway. Only need to be warned about the js warts and foot-guns in advance to be less tripped up or shocked by them.
It might be better for some to learn javascript first, then later transition to TypeScript after experiencing runtime errors to appreciate static types which avoids them.
Other languages that allow addition of static typing falls far short of the standard that TypeScript has achieved, both in it its type system and ecosystem.
Python’s syntax is clean, simple, and designed to be easy to understand.
Python is used across a wide range of industries and applications—from web development (Django, Flask) to data analysis and machine learning (pandas, NumPy, TensorFlow), and automation. You can start with small scripts and scale up to complex projects as you learn more.
Python has an enormous community of developers, which means a wealth of resources like tutorials, forums, documentation, and third-party libraries are available. When you're stuck, it's easy to find help on sites like Stack Overflow, Reddit, or in Python-specific communities. I think Javascript is the only language with a larger community.
Python is one of the most in-demand programming languages in the job market.
Ruby is the best choice as a “learning” PL in 2024
For many reasons.
Next okayish choice is js/ts or python
"Where there is a shell, there is a way."
Of all the ones I have used (perl, c, REXX,etc...), I use shell (bash) more than anything. Linux/Unix is a "toolkit", shell is the glue. Always start with the shell, and grow after you master it.
http://crn.hopto.org/unix/#unix
Python? A lot of AI/ML stuff is written in it.
Five years ago it would've been Javascript, since most of the world uses it on the Web.
C
Simple, elegant and will teach you how computers work.
Python. It's really easy to learn and write, it has a huge community, and it's fast (for an interpreted language).
It's also used a lot in the AI/ML area, and with the rise of LLMs, it'll probably provide some amount of job security.