K
K
KTG2016-01-26 11:16:14
Programming
KTG, 2016-01-26 11:16:14

What is the list of literature for a structured study of programming?

I know Delphi, PHP, some ASP, HTML, CSS, JS.
But the question arose ... how to learn to program?
It’s not a template to remember what and where it is used, using CMS, Frameworks and a bunch of plugins.
Namely, from the point of view of the correct when, with an understanding of paradigms and patterns, with full awareness of OOP and chips like singleton, placeholder and all kinds of interpolations. To accurately understand the architecture and the possibilities of solving a particular problem.
I want to make games on Unity or UE4. So far I'm leaning towards the first engine, but I haven't decided yet. I think understanding the theory and learning C # will make it easy to switch to C ++ and vice versa. So there isn't much of a difference here.
If there is an opportunity to use Java both there and there, then I agree to it.
I decided to start everything from scratch, so to speak, "influx", to refresh past knowledge and acquire new ones. But I can not make a systematic list of references.
To make it clearer, I opened the wiki article "programming paradigms", and was a bit taken aback when I started going through the list of ingredients, where imperative programming was immediately described as the opposite of declarative. I didn’t see a system in this, because, conditionally, I still don’t know declarative programming, i.e. did not reach him according to the article. Roughly speaking, you cannot explain something to a person in terms that he does not know.
Start from scratch, this is from the very basics, but with an emphasis on not just taking general knowledge that is given in schools and universities, but to prepare yourself as a professional. Starting, for example, with the concepts of an algorithm, the principles of operation of automata (Turing Machines), the principles of operation of memory. How far to go to the beginning, I don't know, and I'll leave it up to you.
The only reservation is that reading English is given to me with great difficulty. I read small short texts, like instructions for the phone, or a description of a particular function for PHP in the manual, I read without a dictionary, but I’m unlikely to master a book or an article. Therefore, I would like the list of references in Russian.
Of course, I want to get the list systematized, and in direct sequence. First we read this book, then this one, then this one, and at this stage we determine a specific language for learning and read this book.
Digressions are acceptable in the form of "in order to better understand what it is about at this stage, you can also read this book," with the condition that you do not run ahead of the steps.

Answer the question

In order to leave comments, you need to log in

5 answer(s)
D
Dmitry, 2016-01-26
@EvilsInterrupt

If I had a time machine to drive in "I-in-the-past" what should be read, it would be like this:
1. Tanenbaum about his Operating systems
2. Tanenbaum about hardware
3. The Python programming language according to Lutz's book and at the same time reading "Structure And Interpretation Of Computer Program".
4. Only after that would I start reading Kernighan, Richie "Language C"
5. I would try to join some OpenSource project
The following is already an attempt to understand what the soul lies in, whether the web, whether the linux kernel module, or something else.
During these points, CONTINUOUSLY improve English. Most serious literature on new technologies will appear first in English.

W
Walt Disney, 2016-01-27
@ruFelix

I think we need to start with the basic things that programming is based on:
I can’t tell you about books, the fact is that the volume of sufficient material for each topic is more like a brochure than a book. I think it is worth looking not for books, but for teaching aids for universities on these topics. The above list is kept in reasonable order. For example, I immediately googled the first three points - this is not bad, but you can find a better presentation.
It's nice that you can immediately consider all points except the first one through the prism of game development.
Well, the basic programming itself:
Tom Swan's Turbo Assembler - to understand how everything really works (you can (and probably don't need to) not go into the practical part of the book, the theoretical part is good enough)
"Language C" Kernighan, Ritchie - to understand what basic structures and types modern PLs are built on and what it costs them.
I think it's all worth marveling at until you realize that in high-level languages ​​and environments you're still operating on basic math and basic data structures/types. Those. all sorts of paradigms, patterns, etc. including languages, after some practice, you will begin to consider them solely as tools that you can learn and use if necessary.
Algorithms: "algorithms for construction and analysis" by Kormen. It seems to me that no one mastered the whip.

G
globuser, 2016-02-17
@globuzer

When I studied at the university, I wondered why we are taught this way. I talked with teachers, looked at the training programs that they give in other universities, what they gave earlier in the USSR, when our teachers studied as students. Nevertheless, he came to the following conclusion: programming should have been taught from Pascal, and on the basis of this language, apply all the knowledge of computer science, Boolean algebra, algorithms, discrete mathematics, analysis, probability theory, which in turn should already be studied before programming naturally. There has always been a holivar question - from which language to learn programming - SI or PASCAL. There have always been opinions for and against both.
Judging by your question, since you are already familiar with Delphi, and even more so with PHP, then it will not be difficult for you to learn C. If you want to develop yourself for game development, then C is a good choice. Start simply with C, repeating all the basics of mathematics and algorithms. Having practiced programming, knowing program structures and algorithms, you can switch to OOP, and there it’s just C ++, C #, maybe Java. But for OOP languages, you need to study the base and concept of OOP well, read books by such authors as Butch, Budd, Schleer, Mellor ... Well, for pumping in game development, study all the side technologies and sciences that you can use: operating systems , networks, graphics, modeling, visualization, mathematical methods and more.
For practice, you can come up with an idea at the very beginning of your development path, for example, implement such and such a toy, even if it’s a simple Tetris or tic-tac-toe. Well, as you develop, pump and modify it, improve it, come up with strategies, bots, an interface, fantasize about the concept. Various questions and difficulties will constantly arise in front of you - you already google the answers to them, look in books, apply solutions, test. Thus, you will practically learn. The main thing is that there is a great desire, well, the project was interesting for you. And then gradually you can already connect to some open source project or go to work for a small rate in a game studio, even as an intern and learn from professional developers, communicate with them, study, study again. Only then will you become a professional.

T
toaster khabrovich, 2016-01-26
@studententer

look at the list of university literature on the specialty software engineer

B
BIOS999, 2016-02-06
@BIOS999

Interested in "tutoring" on "philanthropic" terms? Contact me
How to contact a Habrahabr user?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question