Miguel, aka mickie. Code, Science, Politics, etc.

EN | ES_MX

blog: mugcake.gitlab.io/blog/ (ES/ desactualizado)

pleroma: migue@kawen.space (no existe mas)

mastodon: miguel@mstdn.mx

Mexico-Tenochtitlan

  • 5 Posts
  • 2 Comments
Joined 5 years ago
cake
Cake day: January 22nd, 2020

help-circle





  • 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