Programming from 0. Free books on programming

/ C++ programming / C++ lessons

C++ is a compiled, high-level programming language. Can be used in most applications. Intended for the development of various applications. Today it is one of the most popular and famous languages.

Video lesson:

C++ is based on the C language, which was actively developed back in 1969-1973. The company was responsible for the development Bell Labs led by chief developer Dennis Ritchie. Ten years later, Danish programmer Bjarne Stroustrup, who was once a C developer, releases an expanded version of the language called C++. At the beginning of its journey, C++ was just an extension, a kind of addition to C, which expanded the capabilities of OOP. Stroustrup himself initially viewed language simply as “ C with classes ».

C++ was born in 1983. Although it was not a full-fledged language, but only a branch of C, it still had a number of useful functions. Thanks to them, programmers were able to develop applications faster and easier. With the release of C++, a number of now common concepts appeared in the world:

  • Initiating classes with objects in OOP;
  • The principle of inheritance;
  • Unloading or deleting functions from memory;
  • Virtual work functions;
  • Exception system and much more.

It will be interesting: C remains popular to this day even despite the development of C++ and its dominant position last language in the field of functionality. Why is an older and less developed language popular even today? It's simple - transfer programs to new language- quite a costly and time-consuming undertaking. Some companies simply go with the flow and continue to support their C programs.

On the Internet, many experts give advice that it is better to start learning C-like languages ​​with C. They say that this is the only way to better understand the essence of C++. In reality, this is a wrong opinion. If you start learning with C++, the developer will have knowledge about newer and modern capabilities language. If the need ever arises to switch to C, it will not require much time and effort. Even the very fact of the need to switch to a rather old C already raises serious doubts.

But if you still want to learn C before the C++ language, then we suggest you familiarize yourself with big video lesson in which you can get acquainted with this language:

Soon after the release of C++, the language began to conquer various areas of programming. Gradually, more and more new functions were introduced into it, which increasingly distanced it from the role of an addition to C. Years later, it was no longer considered a continuation or extension and the time came to completely separate from C, and that’s when the language was called C++. Since then, the paths of the languages ​​diverged, they became independent ( as far as possible).

Today C++- it is functional and powerful language, who inherited a lot from Xi key capabilities on memory management. For this reason, it is actively used in system programming.

Several areas of use:

  • Operating systems development. Even Windows itself is predominantly C++ based;
  • Driver creation;
  • Writing programs from scratch;
  • Development and support antivirus applications and other things.

C++ has gone far beyond just systems programming. He can participate in the creation of applications of all levels, in which there is an emphasis on speed and work under high loads. Used for forming graphic editors and applied applications.

There are a lot of game engines designed to visualize huge game world, are based on C++. For recent years more and more mobile applications use given language. Even in the web there is a place for this language. All kinds of web applications actively use C++, not necessarily as a basis, maybe just for implementation auxiliary functions, but the fact remains a fact. To summarize: it is harder to find areas in which C++ cannot be used than where this language is used.

C++ is a compiled language, meaning the compiler modifies C++ code, converting it into machine language using predefined instructions. All platforms differ in some features, which is why it is impossible to take and transfer a program from one to another platform. More precisely, you can transfer it, but it won’t run there. At the same time source code Applications are predominantly portable. The only exception is the use of specific features of a particular OS.

C++ has compilers and tools for working with code on most well-known platforms. This allows you to compile sources for any platform.

C++ supports writing programs in OOP style, which C does not. In this case, the application becomes just a set of classes, objects that are able to interact with other code elements. This helps in developing large applications.

How did C++ develop step by step?

C++ development steps:

  • 1979-1980 - C++ appeared and was positioned as a C language with additional classes;
  • 1983 - the language began to be called, as we are all accustomed to, C++;
  • 1985 - release of a commercial version of C++. The first paper book appeared in the same year. C++ programming language ", it included a description of the functions, capabilities and rules for using the language;
  • 1989 - the second version of the language with expanded capabilities was released;
  • From 1990 to 2011 - slow development and addition of functionality. It is also worth mentioning that in 1998 they first tried to standardize the language. That standard was later called ISO/IEC 14882:1998, today - C++98. In 2003 appeared next option C++03 standard;
  • 2011 - the publication of the C++11 standard, there were really many innovations in it. The update enriched the language with an abundance of useful features;
  • 2014 - release of a relatively small addition to previous version standard It was nicknamed C++14;
  • 2017 - the last major release of the language.

Programming environments, compilers

To write a program in C++, a compiler is required, which transforms the original code into one suitable for execution in a file. Today there are an innumerable number of compilers. They differ in a lot of parameters, including the way the standards are implemented. When choosing a compiler, it is better to choose those that are constantly supported and updated.

To work with C++, you need to install a development environment. You can install any environment convenient for you or even use an online compiler. Among the most popular environments developments can be noted as:

Basics and subtleties of the C++ programming language. Practical tasks and tests. Do you want to learn to program? Then you are at the right place. Whether you have any programming experience or not, these lessons will help you get started creating, compiling, and debugging C++ programs in a variety of development environments: Visual Studio, Code::Blocks, Xcode, Eclipse and other IDEs. Lots of examples and detailed explanations. Perfect for both beginners (dummies) and more advanced ones. Everything is explained from scratch to the very details. These lessons (200+) will give you a good base/foundation in understanding programming not only in C++, but also in other languages. And it's absolutely free!

All you need is desire, a desire to learn. You can find everything else here.

For reposting +20 to karma and my gratitude!

Chapter No. 0. Introduction. Getting started

Chapter No. 1. C++ Basics

Chapter No. 2. Variables and basic data types in C++

Chapter No. 3. Operators in C++

Chapter No. 4. Scope and other types of variables in C++

He told me that during the course they would teach anyone how to program, even from scratch. I asked him: “Can you cope with the humanities?” And we wondered, were there any cases when a “humanitarian” learned a programming language?

Firstly, there is a live teacher with a good background in development. Vitaly Kurennov, has been writing Ruby for 6 years and more than a year teaches this skill to everyone, worked on Ruby projects for Nokia and Avaya.
Secondly, there is a group of like-minded people, working side by side with whom, you will greatly increase your chances of reaching the winning end and mastering programming to the level where it begins to make a profit.

- Nikita, why Ruby?
- It's simple, we found a very good teacher.

About Ruby
You can try to take the first steps right now, it will only take 5-10 minutes.


I found a great resource with gamification and straight from the browser tryruby.org
In 5 minutes we complete several tasks, get an achievement and move on to the next level.


Would you like a zombie? railsforZOMBIES.org

About Lisp

“However, I don’t think I can convince anyone (over 25) to learn Lisp.” Paul Graham, "Conquering Mediocrity"

, I'm learning Lisp.

;; Welcome to L(λ)THW! (let ((llthw "(learn lisp the hard way))) (format t "~(~@(~A~)~^ ~), because ~(~A~^ ~) is easier!" llthw (cddr llthw ))) ;; Common Lisp: Powerful, Expressive, Programmable, General Purpose, Multi-Paradigm.


I found a convenient browser-based tutorial Learn Lisp The Hard Way

“During the years that I worked at Viaweb, I read many job advertisements. Appeared approximately every month new competitor. The first thing I did after checking to see if an online demo of their program was available was look at their job listings. After a couple of years, I learned to distinguish dangerous competitors from non-dangerous ones. The more the description of the required candidates smacked of the IT mainstream, the less dangerous the company was. The safest ones were those who needed Oracle specialists. There was no need to worry about those. We were also calm if C++ or Java developers were needed.

If Perl or Python programmers were needed, this was already a little scary - this meant that the company or, according to at least, her technical part real hackers were in charge. If I ever saw an ad for Lisp hackers, I'd be really worried." Paul Graham, "Conquering Mediocrity"

  • Read Habr. For example, this article can be very helpful to those who have already started their journey - Or a success story -
  • . It will inspire anyone to start programming. Even me. Even in Lisp.
  • Find like-minded people
  • Find an inspiring challenge

    For example

    General exercises:
    Project Euler contains over 500 mathematical problems(on number theory, number systems, etc.) that need to be solved using programming in any language.
    Code Abbey stores over 200 programming problems. 125 of them are awarded a certificate for their solutions, which motivates many students.
    Rosalind is another site similar to Project Euler, which provides over 200 bioinformatics problems to choose from.
    Codingbat.com provides Java and Python exercises for both beginners and advanced programmers.
    codegolf.stackexchange.com is a site where programming puzzles are published and discussed.
    Ruby Quiz is a series of puzzles that ask you to write short programs of varying complexity. Initial solutions are described in Ruby, but can be implemented in any language.

Where to start learning programming from scratch?
In this article, I tried to analyze in detail whether it is possible to become a programmer from scratch on your own and what options are there for mastering programming on your own and starting making money from it.
UPD: Those who are looking for where to start learning programming from scratch in 2018 (or are just getting ready to start in 2019 :)) are very lucky thanks to Yakov Kramarenko’s book “Introduction to Development” software" I sincerely recommend checking it out - it's worth updating article #1 on Google ranking and reader reviews for those who are learning programming on their own.

I tried to give the best - in my opinion - way. I warn you - it is not easy! Further reading may cost you many hours of interesting activities :)

I’ll say right away - if you decide to study programming only on your own, without investing money, you will have to spend more time. Expect to master new specialty at least a year later if you are studying in parallel with other work.

If you find something to add to this article to make it more useful for people, write in the comments.

This article contains better practice, based on my experience, if you want to learn programming on your own. All this is still relevant with a couple of additions.

A book on web programming for beginners

The 2016 version is translated: https://courses.prometheus.org.ua/courses/Prometheus/CS50/2016_T1/about.

It is better to take the course in English. You will improve your language and the information will be fresher. Although the course did not change much - only in 2017 Python began to be used instead of PHP.

Completing the course will take time, but will provide a fairly complete understanding that is otherwise difficult to obtain on your own.

Initially, you need to decide which area of ​​programming interests you. If we're talking about about learning development from scratch and you want to start making money from it soon, then in my opinion there are two options: development for mobile devices or web development.

The best choice in such a situation, in my opinion, is to start learning web development. Here the entry threshold for beginners is lower and there is an opportunity to start fulfilling simple orders earlier.

How to become a programmer yourself from scratch

If I started from scratch to learn web development on my own (realizing that without investing money it would be more long haul), then I would recommend this path to myself:

1. Understand HTML and CSS

A good course for basic development of HTML and CSS: https://learn.shayhowe.com/html-css/ (English) or https://webref.ru/layout/learn-html-css (translation).

After that, it’s worth looking at the capabilities of Bootstrap, which has become the de facto standard for accelerated development of web applications: http://getbootstrap.com/

This will be enough for the next steps.
You might want to stop at this point and study CSS in more detail. This will give you the opportunity to work as a layout designer - a person who makes a static design out of HTML page, after which the programmer revives it, implementing the logic of the project.

You can also make money from this - both as a freelancer and by working in an IT company that specializes in web development.

But since we decided to become a programmer, we move on!

2. Get to know jQuery

If you liked it, you can continue to understand the frontend and start learning Javascript.

If https://angularjs.org/ or http://backbonejs.org/ follows, then this is the path to front-end development. A good specialty, especially since such knowledge will be useful to any programmer who has chosen web development.

My advice is to stick with jQuery for now and move on.

3. Master a server programming language

There is a lot of choice here. The most promising programming languages ​​are Ruby, Java, Python, Node.JS (Javascript for the server).

The most in simple language programming for a beginner will be Python. If you learn Python and then the Django web development framework, you'll have everything you need to tackle some pretty complex projects on your own.

A good option is the programming language Python and Django

Plus - Python and Django will teach you the “correct” programming. Python is consistently among the TOP5-10 most popular languages, and good specialists Python has some of the highest paid programmers. Python is both a simple and understandable programming language for novice programmers, and is used in many large companies and on large projects.

To get started on your own, read "Python for Kids" by Jason Briggs or watch:

Among other materials, I recommend Learn Python The Hard Way. book “Simple Python. Modern programming style." And, of course, The Python 2 Tutorial and The Python 3 Tutorial.

Django is arguably the best framework for web development

The best tool for all occasions is very difficult to find. Django has the potential to become such a tool for web development.

Where to start to learn Django:

Start with the official documentation, there is a very good tutorial there: https://docs.djangoproject.com/en/2.1/intro/

Tango with Django is good opportunity improve your English and at the same time gain an understanding of how web projects are structured and how everything works.

Option #2 - PHP and WordPress

Another way is to start with PHP and work with popular CMS. If you are learning programming yourself and want to get started quickly, start with PHP.

Many people consider PHP to be a “not quite real” programming language, and for good reason. PHP is rarely used in large web applications and is designed only for the web - it cannot be used in other areas.

On the other hand, PHP leads in the number of websites launched in the world. The most popular CMS (content management systems) are based on it.

After that, figure out how to create themes for WordPress - this is probably the most popular CMS in the world, if measured by the number of sites running.

Once you understand this well, you can already find a job. There are a lot of sites running PHP and WordPress, so there is enough work for everyone.

How to start making money as a programmer

Many people imagine the work of a freelance programmer like this:

In reality it looks something like this:

If you are ready to work as a programmer and are looking for a way to earn money, welcome to freelancing! Freelance exchanges will allow you to find simple orders (possibly almost free at first) - to get practice. Generally, working for an IT company can be more lucrative if you are just looking for a programming job.

After point 2 - having mastered HTML, CSS and jQuery - you can go to freelance exchanges and take simple orders, building up your profile.

Do you know English? https://www.upwork.com/

Not at all, even with a dictionary? http://freelance.ru/

By the time you can make websites yourself, it will be easier for you to find clients - there will be reviews and experience.

Fast path to web development

Based on my experience, it will take 6 to 12 months to learn programming from scratch. best case scenario, while 6 months is if someone helps you.

To speed up the process of entering IT, look for the opportunity to go to training (you may need more than one) or find a person who will train with you. In reality, without a person who will pass on their knowledge to you, it is very difficult; you can sit for a year reading books and never start. And with knowledgeable person who can simply talk about difficult things- much easier.

At one time, I chose the entry path through training. Given that I knew a lot about development, this allowed me to master in 2 months what could have taken six months. Find your way.

I have people who have seriously decided to start a programming career and want to speed up the process. There are many other courses. If you find yourself a mentor - a person who will lead you by the hand - this will significantly shorten your path to becoming a developer.

As soon as you feel confident that you can create something, look for a company where you can develop further or clients.

HTML, CSS, Python and Javascript are just the basic knowledge, the first stage. Next, practice, studying algorithms and development tools is very important.

If you have questions, ask in the comments! I hope this article will help you take the first step. Good luck!

You should start your path to a career as a programmer by answering the question, do you need programming at all? This question does not apply to those who are studying or have studied in a specialty close to programming. If you were better at math at school than the humanities, if you like to spend a lot of time on the computer, if you want to learn something new, then programming is for you.

Where to start

There are several options for the development of events, as a result of which a person becomes a programmer. The first is parents-programmers who taught their children everything. These children don't even need to go to university. The second option is the fashionable profession of a programmer. After school, we had to choose where to go to study, and we chose the fashionable field of IT, which we seemed to like. And the last option is a hobby that has grown into work.

If none of the above happened to you, then you have a choice of four options:

  • Self-education. This option can be used either independently or in combination with other methods. The Internet is full of applications that help you learn various programming languages ​​and technologies. But this is the most difficult path for beginners.
  • University. If you finish school and want to be a programmer, then go to university. If not for knowledge, then for crust. It can serve as a bonus when applying for a job. Although you will also gain some knowledge. But don't forget to educate yourself. Choosing a university should be approached very responsibly. Carefully study the training programs and choose the best technical universities.
  • Mentor. It will be very good if you find a person who agrees to help you and point you in the right direction. He will suggest suitable books and resources, check your code, give useful tips. By the way, we have already written about where you can find a mentor. You can look for a mentor among familiar programmers, at IT parties and conferences, on online forums, and so on.
  • Specialized practical courses. Try looking for courses in your city that will teach you some programming language or technology. I was pleasantly surprised by the number of such courses in Kyiv, including free ones and with subsequent employment.

Which language, technology and direction to choose

When you become a programmer, after a year or two you will be free to choose any language you like. But when choosing a first programming language, a beginner should consider the following criteria:

  • Availability of vacancies on the market. The ultimate goal of this path is to find a job as a programmer. And this will be difficult to do if no one is looking for developers in your programming language on the job market. Check job sites, see who is most sought after, write down a dozen languages. And move on to the next criterion.
  • Low entry level. If you have to spend long time to learn a language, it may discourage you from programming in general. Read about the languages ​​you selected above. Review the literature you will need to read to learn these languages. And choose those that are described as easy, or that seemed easy to you. Such languages ​​may be PHP, Ruby, Python.
  • The thrill of the process. If you don't enjoy writing code in your chosen language, you won't enjoy the process, your work, or your life. Do you need it? Make the right choices.

You will also have to decide on the direction of programming. Mobile, desktop, games, web, low level programming and so on. The most popular and relatively easy industries are development for web, mobile and desktop clients. One language may be suitable for each direction and not another at all. That is, when choosing a programming language, it is also worth starting from this factor.

Either way, learn web technologies. This is a markup language, styles and that will make your page dynamic. The next step is to learn a server-side language (Python, PHP, Ruby and others) and web frameworks suitable for it. Study the databases: almost every programmer vacancy mentions this.

How to get initial experience

Without experience you won't get a job. Without work you won't get experience. Vicious circle real life. But it’s okay, we’ll get out of it.

First, don't wait until you've read every book on your chosen programming language. Start writing your first lines of code after the second chapter of the book. Complete all the tasks from the books, retype the examples, understand them. Complicate the examples and tasks from books with your own ideas. Create your own tasks for the material you have covered. Solve these problems.

Secondly, you need to find your first projects. This is probably the most difficult option, but working. You will have to look for orders yourself, fulfill them, and bother with payment. For a beginner, this is extremely difficult, but then all other options will seem like a piece of cake. Completed projects can be recorded as experience and shown to your future employer. Real projects are a big plus on your resume.

If you know English language, it is better to register on English-language exchanges. The market is bigger there. If you don't know English, learn it. In the meantime, Russian-language freelance exchanges are available to you. Look for small projects that are at or just above your skill level. Apply for a couple dozen of these jobs. And get ready to receive a sea of ​​refusals. But if one or two applications come through, you'll have a chance to gain real experience.

Another good option for getting real experience is open source. Such projects always need new people, even beginners. You can search for bugs in the project or look in the bug tracker and suggest methods for solving them. You can easily find such projects on GitHub or . Feel free to ask questions there.

The fourth option for gaining experience is helping fellow programmers. Ask them to hand over small, simple tasks to you. If something doesn't work out, you will always have someone to turn to. And at the same time you will participate in a real project.

The last way is own projects, various hackathons or working in a coworking space. It’s difficult to start your own projects on your own; it’s better to look for acquaintances or friends.

Why choose Python

Let's talk a little more about choosing your first programming language. The first language should be simple and popular in the market. Such a language is Python. I highly recommend choosing it as your first programming language.

The Python program code is readable. You don't even need to be a programmer to get a basic understanding of what's going on in a program. Because of the simple Python syntax you will need less time to write a program than, for example, in Java. Huge base libraries that will save you a lot of effort, nerves and time. Python is high level language. This means you don’t have to think too much about memory cells and what to put there. Python is a general purpose language. And it's so simple that even children can learn it.

In fairness, it is worth mentioning other programming languages. Java could be a good choice for a beginner. This language is more popular than Python, but also a little more complex. But the development tools are much better developed. One has only to compare Eclipse and IDLE. After Java, it will be easier for you to move on to working with low-level programming languages.

PHP- another very popular language. And I think it's even simpler than Python. It is very easy to find a mentor or a solution to a problem on the forum. All because there is in the world huge amount PHP programmers of different levels. There is no normal import in PHP; there are many options for solving the same problem. And this complicates learning. And PHP is designed exclusively for the web.

Languages C And C# very difficult for a beginner. Ruby - good choice as a second language, but not a first. JavaScript- a very simple language, but it won’t teach you anything good. But the task of the first programming language is still to teach you something correct, to set some kind of logic.

Is English important?

Important! Don't know? Teach. Do you know? Improve. Learn to read, write, listen and speak English. Focus on technical literature. Listen to English-language podcasts. Read English-language programming textbooks.

What you need to know besides the programming language

Of course, besides the programming language and English, you need to know something else. But what depends on the direction you choose. A web programmer must know HTML, CSS, JavaScript. A desktop programmer teaches operating system APIs and various frameworks. A mobile application developer learns Android, iOS or Windows Phone frameworks.

Everyone needs to learn algorithms. Try taking a course on Coursera or finding a book on algorithms that suits you. In addition, you need to know one of the databases, programming patterns, and data structures. It's also worth checking out code repositories. At least with one. Knowledge of version control systems is required. Choose Git, it's the most popular. You need to know the tools you are working with, operating system and development environment. And the main skill of a programmer is to be able to Google. You won't live without this.

Last steps

You need to prepare a resume. Not just a resume, but a . You shouldn’t write there, but you also don’t need to remain silent about your skills. Once you are invited to an interview, you must prepare for it. Go through the material that is listed on your resume. You must be confident in your knowledge. Look back at the projects you've worked on and think about the technologies you've used. And forward - to a bright future with new profession programmer