This question has already been answered:

I am a second year student.
I read the book of Straustrup on c ++. It seems to me that having read a book only by language, you take the right step bydlokodera, because for anyone you need more books (well, practice itself), for example, on algorithms, logic and the like. It may be worth exploring something else, such as a database.

What can you advise to study in what order?

/ And then I feel like a little chicken in the vast world of programming, and I don’t know where to move, so that they wouldn’t call it a Hindu or bydlokoder :) /

Reported as a duplicate by participants Nick Volynkin ♦ , Yuriy Spb ♦ , Kromster , Cerbo , Vladimir Glinskikh 29 Sep '15 at 2:27 .

A similar question was asked earlier and an answer has already been received. If the answers provided are not exhaustive, please ask a new question .

  • one
    so what's the problem? We take books on mathematics (what you teach at the institute, learn more deeply), on algorithms (books in bulk), patterns, operating systems, hardware, and so on. And on. - skegg
  • five
    As for “they will call them a Hindu or a bydlokoder”, you just need to memorize one short address and recommend it to go there. I cannot give the address here for censorship reasons. - alexlz
  • one
    @avp: (comments have ended there) Thank you! - VladD
  • one
    @andrw, there (wrote about the assembler) the comments ended. Now, if the "lower level" (computer architecture, assembler) is interesting, I remembered a wonderful resource . There are still a lot of useful articles. - avp
  • four
    Possible duplicate question: Books and other literature on C ++ - Nick Volynkin ♦

1 answer 1

It seems to me that, apart from books, practice is important.

Read someone else's code, try to understand each line, advantages and disadvantages, ask experienced colleagues, do not hesitate to seem like a noob. Develop a style, learn to distinguish bad from good code.

Try to write your (interesting to you) project, not very difficult to begin with. Write it as correctly as possible, know how to justify your decisions. Grow above yourself. Anyway, after 2 years, the old code always seems bad (if not, you are not growing above yourself and this is bad).

Choose a subject area (graphics, databases, network technologies, websites, calculations, whatever) and improve on it. Try to answer all the questions here and on StackOverflow on this topic, read other people's answers. Debate! Find out why other people's answers are better (or worse). Be sure to learn English in order to freely read the documentation (it is much more in English!) And communicate in SO (as well as on occasion with foreign customers).


Regarding books: in C ++ I would advise Bruce Ekkel "Philosophy C ++" . When you master, read whatever Scott Myers, Herb Sutter, and Andrei Alexandrescu will do, they will take you into the world of modern programming, and we all will look like dinosaurs to you.

I was somehow helped to understand the basics and to discipline the thinking of “Algorithms and data structures” by Niklaus Wirth. Note that the Pascal dialect in which he writes there is far from modernity, but the book will teach you a correct understanding of structured programming.

If you want to develop into the world of managed languages ​​(not a bad idea, by the way), I would advise Albahari "C # xx in a Nutshell", John Skit "C # in Depth" (great thing!). Java by Joshua Bloch’s book "Java. Effective Programming", Mast Rid.

If you want to know the lower level (how everything is actually arranged) for real Indians, read anything Jeffrey Richter (in all directions). But remember: this will change your mind more than drugs. :) Classmates recommend Art Baker to understand the level of drivers.

From the books that change attitudes, it is impossible not to call Abelson / Sassman "The structure and interpretation of computer programs." It is about very high-level pieces, understanding what programming is. When you master, you will reach zen. Brain viruses Haskell and Lisp are bundled.

Well, the obligatory link to the founder Generally All Donald Knuth: pull in the library "The Art of Programming" in a good translation and read. He is complex and breathtakingly fucking, I warned.

  • one
    Yes, reading someone else's code is useful. The main thing that he was good . Only the topic (for which the code is written) should be familiar enough, otherwise you will not understand anything. And the advice to try to answer the questions here is correct. While you will deal with many areas meet. Regarding books, try reading T. Pratt "Programming Languages. Design and Implementation" and something on operating systems. Algorithms. Then grab the assembler and articles (there are plenty of them on the network) according to the architecture (instruction set, caches, memory, etc.) of computers. I think the books are in some order. - avp
  • one
    I haven't read anything on an assembler for a long time, and haven't written (nothing more than a few lines) on it for 20 years already ... As for macro-11 (pdp), I absolutely agree with @alexlz. At home I have a book on it, but I don’t remember the name (in the evening I’ll throw, but can I find it myself ???). And here recently there were questions about the assembler. Perhaps the answers have references to the literature. - avp
  • one
    Well, on Haskell haskell.org/haskellwiki/Books . For some reason I didn’t find any references to Dushkin there - this is Google. Architecture? pdp11 - the link was also. About x51 - Google (after all, dozens of manufacturers and hundreds of types of controllers, so there should be a lot of books). And in x51 there is a bit memory ... - alexlz
  • one
    @VladD Dushkinhttp: //progbook.ru/haskell/824-dushkin-funkcionalnoe-programmirovanie-na-yazyke.html. And SICP is now sort of on python ... - alexlz
  • 3
    As promised book on macro-11. M. Singer "PDP-11 mini-computer: non-assembly language programming and machine organization". Moscow, World 1984. - avp