Как и в чем изучать C/C++

C — язык программирования, отличающийся высокой скоростью разработки и производительности. Язык компилируемый и для работы на разных архитектурах требует наличия необходимого компилятора.

C++ — расширение языка C вносящее возможности объектно-ориентированного программирования, стандартные библиотеки и дополнительные улучшения. Упрощает разработку и предоставляет готовый, оптимизированный дополнительный функционал (STL).

Здесь описан порядок изучения, если уже есть навык программирования, но возникла срочная необходимость освоить один из языков.

Что почитать?

Короткая, понятная книжка, дающая общее представление о программировании на языке C. Доступна бесплатно: Введение в C

Подробное издание по языку C, на которое ссылаются многие лекции и курсы. Для улучшения понимания языка C — must have. Книга доступна в интренете на различных обучающих сайтах. Купить бумажную версию можно здесь: Язык программирования C. Брайан Кернигат, Деннис Ритчи.

Для перехода к объектно-ориентированному программированию и изучению C++ можно рекомендовать только книгу от автора самого языка C++: Программирование. Принципы и практика использования C++. Бьярне Страуструп.

Все три книги легко читаются и изложены понятным языком. Самое важное, о чем говорится в каждой из книг — это выполнение всех упражнений и задач. В течение 1-2 месяцев можно достичь очень приличного уровня программирования на C/C++. Это при условии наличия начальных знаний программирования.

Что посмотреть?

Подкрепить знания можно видео лекциями и online-курсами. Лучшие курсы по C/C++ мною были обнаружены на сайте Stepic.org.

Отличный вводный курс основ на C++ преподается Александром Смалем, сотрудником Computer Center Science. Записаться на курс: Программирование на языке C++

Продолжить освоение и закрепить материал можно курсом C++ от Яндекса. Записаться на курс: Введение в программирование (C++)

Продолжить изучение и углубиться в программирование на C/C++ под Linux можно на курсе: Основы программирования для Linux

Затем можно бесконечно совершенствовать свои навыки и пройти следующие курсы:

В чем программировать?

Ниже описаны две среды для программирования: Sublime Text 3 и CodeBlocks. Обе доступны на Windows и Linux. От себя рекомендую учиться под Linux. Если Linux не знаком, то в интернете достаточно документации, как установить и настроить Linux для работы. Самым популярным и простым дистрибутивом на данный момент является Linux Mint, основанный на последних версиях Ubuntu.

Sublime Text 3

Наилучшим решением для себя вижу этот редактор. Популярность, скорость, стабильность, расширяемость плагинами на Python и условная бесплатность. Скачать можно здесь: Sublime Text 3

Настройка и установка расширений

Подробнее о каждом расширении вы можете почитать в интернете. Здесь же описана краткая последовательность действий для первичной настройки.

  1. Первым делом установим Package Control.
  2. Установка: ctrl+shift+p > Install Packages > All Autocomplete
  3. Установка: ctrl+shift+p > Install Packages > BracketHighlighter
  4. Установка: ctrl+shift+p > Install Packages > C Improved
  5. Установка: ctrl+shift+p > Install Packages > CTags
  6. Установка: ctrl+shift+p > Install Packages > DoxyDoc
  7. Установка: ctrl+shift+p > Install Packages > SublimeLinter

Компиляция программ

Компиляция и запуск программы с помощью сочетания кнопок Ctrl+B (последняя, вызванная) или Ctrl+Shift+B (для выбора доступных вариантов).

По умолчанию показывается только вывод компилятора и программы. Взаимодействовать с программой невозможно, что легко можно исправить.

Добавляем свои настройки компиляции и запуска. Создаем новый файл настроек через главное меню: Tools->Build System->New Build System…

Добавляем содержимое и созраняем в файл C++.sublime-build:

{
    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\"",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++, source.cpp",

    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && xterm -T ${file_base_name} -e 'bash -c \"${file_path}/${file_base_name};echo;echo;  echo Press ENTER to continue; read line;exit; exec bash\"'"
        }
    ]
}

Вверху основная команда для компиляции текущего файла. Внизу компиляция и последующий запуск в xterm для взаимодействия с программой.

Вместо xterm можно использовать gnome-terminal или любой другой терминал, правильно подобрав ключи запуска. Xterm должен быть предварительно установлен и настроен (см. конец статьи).

Переход на определения по Ctrl+Alt+Click

Работая в разных IDE, я успел привыкнуть к переходу на инициализацию переменной или на определение метода по сочетанию Ctrl+Click. Здесь же такой переход можно осуществить только по нажатию F12, что мы сейчас и исправим привязав нужное действие к сочетаниюCtrl+Alt+Click.

Необходимо создать файл настроек Default (Linux).sublime-mousemap:

$ cd ~/.config/sublime-text-3/Packages/User
$ touch "Default (Linux).sublime-mousemap"
$ subl "Default (Linux).sublime-mousemap"

И добавить необходимые настройки:

[
    {
        "button": "button1", 
        "count": 1, 
        "modifiers": ["ctrl", "alt"],
        "press_command": "drag_select",
        "command": "goto_definition"
    }
]

Alt добавлен, чтобы сохранить функцию мульти-выбора при нажатом Ctrl.

Code::Blocks

Отличная IDE, где есть все необходимое для программирования на C/C++. Доступна в основных репозиториях на Linux. Можно установить на Windows в связке с MinGW. Официальный сайт : Code::Blocks

Для запуска приложения под Linux использует xterm, который необходимо предварительно установить, если его нет.

Лично имею мало опыта работы в данной IDE, но по опыту, от знакомства до первой программы проходит всего пара минут.

Xterm

Установка и настройка xterm для удобного тестирования программ.

$ sudo apt-get install xterm

По умолчанию в xterm установлен страшный шрифт. Для замены шрифта необходимо выполнить следующее:

Создать файл ~/.Xresources и добавить в него:

XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 9

Теперь перезагрузиться или выполнить команду:

$ xrdb -merge ~/.Xresources

Доступные шрифты, которые можно использовать в настройках, видны по команде:

$ fc-list | cut -f2 -d: | sort -u | less