completely new to programming
My personal view is that starting with some simple C is a good decision for absolute beginners.
It is no waste of time, as every serious programmer will need some C knowledge.
And C is close to assembler, so you really learn how computers work internally. You should also take a look on the generated assembler code, pages like https://godbolt.org/ makes that easy. If you are also interested in Hardware, than some programming of some 8 bit CPU like AVR microcontrollers in assembler is not a bad idea.
But I admit that C can be too difficult for some kids when there are no teachers/parents/friends for some help available.
When starting with some simple C, one can do a tutorial of a higher level language like Python, Ruby or Nim at the same time.
So one learns how computers really work, and one learns what the advantages of high level languages over plain C are.
@puwad, what are you goals in programming?
career, recreational, have something you want to write/build, web development, ... ?
I say this as someone who spent decades writing C code
So you did exactly what I suggest :-)
Of course it is difficult to make suggestions to puwad as we don't know him.
But starting with Nim TODAY for a real beginner is really hard. And Nim in Action is not a book teaching Nim for beginners. The Nim tutorial may be OK for a really smart beginner, maybe.
Generally people who start with higher level languages like Java, Ruby, Python and never learned a real low level language are doing some really stupid stuff later from time to time ore are asking some really stupid questions -- as they have no feeling what a computer really is and what it does.
30 years ago there was Pascal as a teaching language for beginners, a mix of low level language with some higher level components. But learning Pascal would be waste of time today. Now most students seems to start with Java -- well not a nice language, but it will help finding a job, even for people who do not get a degree as the left after a few semesters.
very difficult question; sure it depends on your personal situation. For absolute beginners I recommend first learning BASIC and then glance at ASSEMBLER(if you are interested in I would start with the 6502; there are some free emulator/simulators there) and then try Nim (why not if you feel comfortable); but you can also go for Nim first (you can code "like a baby" in Nim but later on you can do powerful things with it) For the first steps I would not start with C (not of the language but the environment (hassle with preprocessor/compiler/linker and so on) if you are on a non-windows environment. I don`t know if Visual Studio is for beginners; it has some pitfalls (very much magic behind the scenes)
EDIT: If you like Nim the "Nim in action-book" is very good (it´s a Nim-beginners book with good examples.). If you like to learn a language you need examples (first stupid ones, then serious ones) and read very much code from others. Thats the reason I would not recommend to start with Java (most code in the wild is ugly and Java is only object oriented and you never get in touch with manual memory allocation)
The downside is when you are absolutely new to programming and you like to start with Nim there are no online-courses out there. I know only nim-by-example: https://nim-by-example.github.io (its a little tutorial for the first steps)
I started with BASIC and I know someone who started with Visual Basic and SQL (every serious developer needs to know SQL).
Thanks guys, didn't thought that here will be so much answers so fast, it's incredible!
@puwad what are you goals in programming?
I have to many goals to realize them, i think one of first things i need is to feel how much i can do alone because my ideas could be hard to realize by myself. It is several apps for windows such as a gui for everything search engine that have sdk. And vst plugins to process signal, because i'd like to process audio signal. Now i stuck with some ideas that i can't find anywhere (i know all vst's are on c++ but maybe i will find some way) and think that i should do something to bring them to life.
But first of all I should say that I like concept of Jupyter notebooks and think that all material for beginners should be in this format. So my idea here - learn Nim and at the same time port lessons to Jupyter notebook format. I don't know how to do that but here is jupyter nim kernel last updated one year ago So i think my first tasks will be in this field.
So you did exactly what I suggest
Don't be so very willfully obtuse. First, C was not my first language. Second, I did not start out looking at and liking Nim (because it didn't exist when I started programming, in 1965). Third ... oh never mind, this isn't worth my time. The only reason I commented was to be sure that the OP was not left with the impression that your absurd suggestion was the prevailing view here.
Generally people who start with higher level languages like Java, Ruby, Python and never learned a real low level language
Um, Nim provides all the low level access missing from those languages, within a far better programming framework than C.
I agree with @jibal. Starting with C is a terrible idea for a programmer.
Generally people who start with higher level languages like Java, Ruby, Python and never learned a real low level language
Generally people don't need to learn a low level language.
My recommendation is Python or C#/VB.NET if you want to create GUIs (I started with VB.NET)
Generally people don't need to learn a low level language.
I fully agree.
Do we have to learn something at all? Some people seems to proof that one can spent a whole life without that.
Evan Miller once wrote an essay about that topic:
https://www.evanmiller.org/index.html
https://www.evanmiller.org/you-cant-dig-upwards.html
By the way, Harvards CS50x course seems to still start with C:
But that course may be more for people intending to become really bright.