Answer the question
In order to leave comments, you need to log in
How to approach learning programming from scratch?
Hello dear.
I found a similar question on the toaster, but unfortunately I did not see the right answer there.
Some time ago, the ideas of studying programming caught fire, not as a new type of activity, but as a new field of knowledge in general.
Briefly about myself: I have a technical specialty (electrical mechanic), I have some understanding of logical elements, as it was given, I read a couple of chapters of some programming books (Lipman "The C ++ Programming Language" and "Self-Tutorial on C ++" by Vasiliev, Deiteli too read).
The main snag is that I do not have the most understanding of programming as a science. Rather, there is an understanding - I can do everything at a level, but a carbon copy. When I try to improvise, even on logical operators I catch a stupor, due to the fact that there is not enough immersion in the process and BASIC knowledge.
I have huge educational gaps. The high school mathematics course flew past the ears, but I want to understand everything.
That's actually the question: how to create a foundation for the correct study of programming? How to properly close the gaps in education and in what areas, for further comfortable learning.
What is it for me? I want to expand my boundaries of knowledge, master at least at the initial level of OOP. Algorithms are very interesting. I chose C ++ as a language, as it is widely used, if you advise something else I will be grateful.
Answer the question
In order to leave comments, you need to log in
Programming is primarily an applied field of knowledge. Writing code should always mean "solving a problem". This is not mathematics or physics. It's just a language in which you tell the machine how to do something for you. Start with matlab or python, solving problems that take a very long time to calculate by hand. If you enjoy the slavery of computers, continue in any direction, solving and automating other people's tasks.
programming is impossible without practice
just for the sake of expanding your knowledge boundaries - a bad goal
programming is solving a given problem in a machine language
web programming is simpler than any other at times
js - a very simple language, nowhere simpler, "Lisp in the skin of C"
and the most cross-platform - for beginners, we
don’t forget the KISS principle - we appreciate minimalism-simplicity-lightness
; for a young padawan, first you need to speak fluently in the main web programming languages -
js css html
js first, then css and html
you need to understand that if you wish, you can not use the possibility of declarative programming styles and structure of the document tree
Flanagan's tutorial needs to be completely digested
and php a little to start with - only the basic server functions for working with folders and files,
or better - learn api node.js - and make a server on js
in the process of learning, you need to write your own simple client-server application -
chat, drawer , a text editor, a game, etc. ...
the main thing is that without using someone else's code - without libraries, frameworks and ready-made databases,
you must be able to independently create, process, save the data
you
need
solve it for several years while you are learning
the client is fat, the server is skinny -
use the server only for simple functions - reading-writing files, scanning folders, logging in...
offline and mobile first -
you need to understand that the mobile touch screen is the main input of the 21st century
and that the browser works in the sandbox
of the bicycle first -
to learn - you have to do it yourself for
three to five years you have to gnaw at granite
, after that you will inevitably gain enlightenment
and become a real webmaster,
or even a Jedi or a ninja, if the Force is with you
and there is another way - the dark side of programming:
working on someone else's ready-made standard template-framework
endless cycle in the samsara of the capitalist industry
communication with morons, psychopaths, crooks, lazy people, etc.
office or freelance suffering
easy replaceability of a programmer
eternal reworking of someone else's code
inability to do the necessary functionality on their own
constant googling of ready-made solutions
depression and despondency
//and the laziest become layout designers-underprogrammers))
normal programmers share into two types:
1) engineers - those who can write a template for themselves or for others
2) fitters and combers-winders - those who work within the framework of a ready-made template
- both types are needed, it all depends on your abilities and talents
As an option - take the legendary Harvard course CS50 (Introduction to Computer Science) on the edX.com platform The javarush.ru
website uploads a very high-quality translation of lectures from this course every week.
Learn php. There are no special problems with algorithms either (unless you can study the graphs) and the result is immediately visible and you can find a job if you learn how to do something. How to learn syntax, immediately take some kind of framework, for example symfony. At the same time, it will be possible to study html, css, javascript, sql.
PHP also has OOP and everything is done following the example of Java i.e. pretty good.
C++ is a difficult language to learn in the sense that there are a lot of nuances of how to write and how not to write, while the code will work, but sometimes it may not work. While in php the main thing is not to mix the logic of work and appearance as much as possible - frameworks solve this problem, the same symfony.
Also look at Cormen's book "Algorithms. Introductory Course". It is small (200 pages) but informative.
Programming, of course. Primarily.
Only then will come a sense of style, a sense of the beauty of the solution. C++ is very good in this sense, there are a lot of possibilities.
Reinvent the wheel, of course. And then see how these tasks are solved effectively. Appreciate the wisdom and beauty of someone else's decision by comparing it with your own. Stuff the cones. Sit at night, catching errors and glitches. Debugging code. Then read about good practices in programming. Rewrite clumsy, but working code so that it matches them. Get aesthetic pleasure from the resulting. Read someone else's code. Admire or spit, depending on the author of the code.
For a professional, programming, of course, is pure practice, a craft. For an amateur, it can be art. But it can hardly be science for anyone other than the academic environment.
C++ is unnecessarily complex for most tasks, poorly protected against errors, requires strict discipline and attention to detail.
For a serious study of programming, Haskell is suitable, for easy entry (primarily into the frontend, but also into programming in general) - Elm. They are also useful for a better understanding of mathematics.
If you need to be closer to the hardware, Rust is the best option.
From mathematics it is worth getting acquainted with set theory and logic.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question