DEV Community

stereobooster
stereobooster

Posted on

What language would you recommend for a beginner?

This post is inspired by this tweet:

1. First language: Basic / Java
2. Had difficulties: Java
3. Most used: JavaScript / Python
4. Totally hate: Java
5. Most loved: Go / Python
6. For beginners: Python / Ruby

What about you?

— Vx. Super Di 🦄 (@cotufa82) October 3, 2019

People mention all kinds of languages in responses including JavaScript, Java, C, etc.

I wonder how would anyone consider JS as beginner-friendly? It has this, prototypal inheritance, complicated coercion rules and many more.

I'm ok with JS. This is my primary language at the moment (TypeScript and JavaScript to be precise). I'm just would not consider it beginner-friendly.

As well I would not consider Java beginner-friendly and many others. (All those languages are ok, but not beginner friendly IMO).

What would you consider as a beginner-friendly language? And what would be your criteria?

Latest comments (54)

Collapse
 
stereobooster profile image
stereobooster • Edited

Update on this twitter thing twitter.com/graphext/status/118221...

Collapse
 
metalmikester profile image
Michel Renaud

It's my interest in computers in the mid-80s that "forced" me to learn to read English (before that, I often didn't understand most of what I was reading). All the good programming magazines (what's that?) and books were in English.

Collapse
 
danoswalt profile image
Dan Oswalt

My first response is always that Python seems like the best entry-level language, for all the reasons everyone has already said.

But JavaScript has some giant plusses that make it worth the struggle to persevere through its endless surprises (hey, it's not that hard start with).

  1. No installation, it's everywhere.
  2. No compiling, and therefore, instant feedback / gratification.
  3. Very easy to see the benefit / come up with own ideas.
  4. Very to find help and inspiration from the community.

The fundamentals can come later, but for a lot of people like myself who never imagined that programming could be real thing they'd do, lighting the fire and getting results goes a long long way.

Collapse
 
stereobooster profile image
stereobooster • Edited

No compiling, and therefore, instant feedback / gratification.

Any interpreted language behaves likes this e.g. Python, Ruby, Lisp, etc. But this doesn't mean fast feedback every-time, what if you want develop server? In this case you need to change file, restart server to see feedback. Or if you use const you need to restart REPL

Collapse
 
delta456 profile image
Swastik Baranwal

If you really want to understand core concepts then start with C and cover the basic topics like printing, input, variables, primitives, macros, command line, arrays, struct, union, function, pointers and DMA then start implementing Data Structures and Algorithms in C. Shift to Traditional C++ and learn about OOP Concepts after covering all that do Modern C++ (Modern C++ doesn't have proper documentation so this would be hard) then look at the code of open source projects and try to understand them. Have a language reference by your side and find something if you don't understand. Join communities if you can't get help online.

If you want to take the easy way then start with Python. Its syntax is easily to understand. But it doesn't really explain all concepts in depth (at least I couldn't understand the concepts of it much).

Disclaimer: I am not discouraging anyone. Its up to you if you are able to understand the core concepts in any language. C was my first language so I mostly tell people to learn that first.

Collapse
 
stereobooster profile image
stereobooster

Depends on how you define "core concepts"

Collapse
 
delta456 profile image
Swastik Baranwal

Those concepts which are normally in any language and could be used to relate real life probelms.

Thread Thread
 
stereobooster profile image
stereobooster

Yes, but this is very wide surface. Some languages are ver far away from each other, for example, Prolog, Agda, C, TLA+

Thread Thread
 
delta456 profile image
Swastik Baranwal

Yes things may differ because of different purposes but terminology from which it derives is same (sort of).

Thread Thread
 
stereobooster profile image
stereobooster

Not quite. When people learn type system from C/C++ they end up with wrong mental model about types (often hate types), you need to get introduced on types with good type system and type checker with nice error messages, for example, Elm.

Thread Thread
 
delta456 profile image
Swastik Baranwal

Agreed

Collapse
 
uthmanrahimi profile image
Uthman Rahimi

I would say a language is good for beginners if they can install it easily, so python is good for beginners, apart from python I would choose c#.

Collapse
 
mandaputtra profile image
Manda Putra

For beginners I think it's not just about the language. They need to understand core parts of programming.

  1. basic stuff (function, loop, list.. Etc)
  2. Package management
  3. Platform you're targeting

If you get the basic fast enough the it's no problem what language you're using.

Coercion, this, and prototype inheritance are next step from beginners level. It's language feature.

So yes JavaScript, because it's already on a browser no pain to set up the env

Collapse
 
cullophid profile image
Andreas Møller

Anything where you can be productive immediately. I think it's more important to have a positive first experience with programming than what the language is.

Collapse
 
bugmagnet profile image
Bruce Axtens

COBOL, provided your first language in English.

Collapse
 
mskog profile image
Magnus Skog

As a Ruby developer by trade I would second the recommendations for Python. It is readable, can do anything you want and it is an excellent scripting language for server administration and such as well. Not to mention all the machine learning stuff.

Collapse
 
stereobooster profile image
stereobooster

I would agree with that. On the other side, it is kind of sad that you need to pass this barrier before you can get to the programming-thing

Collapse
 
codelitically_incorrect profile image
codelitically_incorrect

Javascript

Collapse
 
alchermd profile image
John Alcher

In a classroom-like setting where an instructor can provide ample support to a student, I'd go with C. Otherwise, for self-studying, it can't get any better than Python.

Collapse
 
as_2604 profile image
Muhamad Asep Saepuloh

In my opinion, depending on the needs and the field or niche occupied. For me it might be PHP.

Collapse
 
angt profile image
Adrien Gallouët

Go without hesitation. It's incredibly readable and very simple. There is a lot of good libraries and good documentations. The "almost one way to do one thing" is also very important for beginners. It's not a belief, I saw it around me. 5 years ago I would have recommended python.

Collapse
 
stereobooster profile image
stereobooster

Go is a kind of modern Pascal (which is beginner-friendly). Package manager situation for Go is sad though

Collapse
 
mateiadrielrafael profile image
Matei Adriel • Edited

I first started with python, then went to javascript. I have no idea why but js "clicked" for me very fast, while i didn't understand too much (intermediate / advanced) python after a few months of playing with it.

I know some begginers have problems with understanding concepts such as "closures", "prototypes" and "higer order functions", but in my experience, those came naturally. I was "expecting" it to work that way (except for prototypes, which i didn't understand that fast, but when i did it made sense).

The hardest question to understand the answer of while learning js was: why doesn't my game render if i put the logic inside a while true loop?

After using js for a while and then once in a while going back and playing with python, a lot of things made sense, and I can see why so many recommend it. It's definitly better for things like "courses" where someone explains someone else something. My route was more the "start a project you always wanted to do and then google all the problems you encounter" route:)

A year ago I switched to typescript (and i'm never going back:))

Also, for the last month or so i've been learning c++ and it's cool, but definitly not begginer-friendly...

Disclaimer: english is not my first lang, so please forgive the typos & grammar mistakes.