I’ve been trying to learn Rust, so I’ve been reading the book by Klabnik, I’m on chapter 2 and it’s been pretty okay I have to say, I really like how he explains everything and how painless it make it seem. I’m not saying it’s not hard, my brain gets really tired after reading it and stuff but compared to other methods I’ve tried to learn any programming language it’s been my best experience so far in a long series of failed attempts.
Keep in mind, I know a bit of html/css and I did write a bit of Python last year but I do not know any programming language. I’ve tried learning Ruby and failed and so on, but I do not know how to code in general. I know I shouldn’t be trying to learn Rust as my first programming language but I really like the concept behind it so I’m going to try my best.
Now that you understand a bit of my background, I would like to ask if you could recommend me some books. I would love to know if there’s a book similar to Klabnik’s book but to learn front end web development. I’ve checked No Starch Press (the publisher that published the book) and they have some that could be good, but I’m not sure (https://nostarch.com/modernweb https://nostarch.com/CodingWorkbook). I also would like a book that explains programming concepts, for example, what are functions, what are statements, strings, macross, and so on, I understand or think I understand a couple of these stuffs, but I feel like reading a book that explains a bit the math behind them would be a good idea.
As I understand, your needs are more related to an absence of fundamental knowledge, than an a problem of learn X language/technology.
I strongly recommend you this book:
Structure and Interpretation of Computer Programs (SICP). One of the best books of computer science ever written. This book gives you a solid foundation about computer science in its most primitive concepts, for example, what is a program? what do we mean when we say that we build programs? what are variables and how values are associated to them? their life time, what are functions and what are they made of (procedures)? scalar values, values of (composite) values, why are data control structures built that way? macros, how data is represented, how the interpreter/compiler understands it, etc. etc. etc. In short, SICP is to computer science what Euclid’s elements are to mathematics.
All this relying on a language known as Lisp (specifically Scheme and its variant Racket). It is not necessary that after the book you continue using it, be careful, it is quite addictive ;) It is included because as it is one of the languages with a very simple syntax and structure, it helps you not to abstract so much from what is really important: dealing with the problems, not with the language.
It is a somewhat technical book, since it is academic, but it was created just for introductory courses (in 80’s and 90’s at MIT), not only for computer science, but also for other engineering and related careers. It includes many exercises that increase in difficulty as you advance between chapters, being at the beginning somewhat tedious because of the use of some mathematics.
Some tips
After reading the book you can move on to algorithm and data structure books.
plus: learn databases (SQL/No-SQL)
I do not recommend any of these languages to take as beginner:
- C++/C#/Java: they have too many abstractions that can lead to confusions/misunderstandings that at a beginner level are unnecessary, like OOP. These concepts you can learn later with practice, and according to the type of project you need to run.
- Rust is too advanced and can lead to headaches as it’s not very intuitive for a beginner.
- JS is such a poorly designed language that it leads to many bad programming practices and misconceptions when approached without prior knowledge. Just take a look at scoping and closures to get an idea of what I mean.
I recommend:
- C
- Python (very useful for algorithms and data structure)
- Scheme/Lisp
Sorry for the late response, I asked some random person on the internet and they told me that SICP is not a good book unless you are already an experienced programmer and that in general it’s not good and other stuff, I started reading it (until the first chapter) and found it pretty good. Do you think it can affect me negatively?