This post is inspired by this tweet:
1. First language: Basic / Java
— Vx. Super Di 🦄 (@cotufa82) October 3, 2019
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?
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)
Update on this twitter thing twitter.com/graphext/status/118221...
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.
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).
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.
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 REPLIf 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.
Depends on how you define "core concepts"
Those concepts which are normally in any language and could be used to relate real life probelms.
Yes, but this is very wide surface. Some languages are ver far away from each other, for example, Prolog, Agda, C, TLA+
Yes things may differ because of different purposes but terminology from which it derives is same (sort of).
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.
Agreed
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#.
For beginners I think it's not just about the language. They need to understand core parts of programming.
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
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.
COBOL, provided your first language in English.
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.
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
Javascript
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.
In my opinion, depending on the needs and the field or niche occupied. For me it might be PHP.
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.
Go is a kind of modern Pascal (which is beginner-friendly). Package manager situation for Go is sad though
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.