What language should beginning programmers choose?
Tags: webdev
Published: 2024-05-09 07:09:01

Should a language be easy or comprehensive?

Now that Stack Overflow has a space for subjective content—Discussions—we want to occasionally highlight the great conversations happening on site. Personally, I love hearing about different people’s perspectives on software and technology issues. With the answers to so many technology questions tending towards “it depends” as one gains experience, more perspectives reveal additional factors that “it” could depend on.

For today’s “it” question, I want to highlight the discussion happening in “What language would be the best beginner language?” User Mr Quibbles, relatively new to programming, asks:

I started learning programming about a year and a half ago and I started with Python 3.10 as my first ever language. I was advised to do so by friends of mine due to its English-like syntax, however, about a month ago I heard friends of mine discussing that C might be a better language to start.

I have been learning C++ for the past 3 months in my free time and I can see their point, C++ syntax has a lot more in common with other programming languages than Python does. So I wanna hear what others here think, which language do you think would be best to start with, and which language did you learn first?

As you may guess, much of the conversation compared C/C++ and Python as starter languages.

Rupesh Kumar wrote - C, C++ is for learning basics building blocks and learning to applying logic. Python, java like languages is library rich and used to create live application and solve business problems.

You can start with your preference,

For the record, your humble correspondent started with BASIC, then took some computer science classes in C and Java. Of course, it is debatable whether I know programming or not. That’s why we have discussions like this.

Most of the votes for Python talked about how easy it was to understand.

Techguy wrote - Python is a great language to learn, as it's considered very "high level" - meaning close to English in its syntax.

jfleach wrote - There is a reason Python is the most popular programming language in the world.

It's an open source higher-level language.
It's very easy to learn and use.
It can be used for advanced projects.
You can import third party libraries with ease and is a huge time saver.
It can be used for full-stack development.
Employers love people who know Python which pays off.
The C/C++ fans, on the other hand, thought you should get the deeper understanding of CS concepts from the get-go:

wyzarddoc wrote - I vote for C++. Bottom line C++ gives you full control down to the single bit, but also requires you to reinvent the wheel when learning. By this I mean just to print something on the terminal requires you to learn the contents of libraries and how to incorporate them into your code. Python is much easier, but is extremely inconsistent in it's coding application. For instance string handling can be disguised as a list if your not aware of when your function changes input from a list to a string.

One absolute madlad came in with this suggestion:

LemonCool wrote - Assembly!! lots of people started from it for a reason, in the end it all gets translated to low level so would be really beneficial to your dev journey. In my opinion you don't want to skimp on your education and learn to walk. Assembly will humble and reward your journey. If you don't want to go that low, probably C is the best starting point, that won't hide too much away from your keystrokes-composed-code with glue-up-behind-the-scene magic.

There’s plenty more on this about the benefits of each, including which languages will help you get a job (not the assignment, but definitely a good factor to keep in mind). Are you team Python with the easy syntax, or do you think everyone should start with `malloc` on their mind? Or are you a secret third thing, Haskell or death, recurse me eternal sort of programmer? Head on over to the discussion and chime in.