Перейти к содержанию

Модуль 2: Языки программирования

programming-languages

Наконец наступило время погрузиться в "реальные" дела разработчика! В этом модуле мы будем систематически рассматривать языки программирования. Другими словами, мы обсудим:

  • Что такое язык программирования? Зачем нам нужны языки программирования?
  • Какие существуют типы языков программирования? Каковы характеристики каждого типа?
  • Каковы общие концепции, синтаксис и характеристики современных языков программирования? Каковы обоснования такого проектирования?

Кроме того, вас ждут несколько "мини-лабораторных работ", где вы сможете попрактиковаться в программировании, а в конце этого учебника будет финальный проект, в котором будет показано, как создавать программное обеспечение с помощью языков программирования.

Как изучать этот модуль?

Этот модуль разработан с учетом начинающих пользователей, но это не означает, что он является руководством по языкам программирования. Поскольку философия этого курса заключается в том, чтобы "упускать все, что легко найти с помощью искусственного интеллекта (в 2023 году) или поисковой системы", я не буду вдаваться в подробности конкретного синтаксиса конкретных языков программирования, как при объяснении концепций, так и в лабораторных работах. Вместо этого я предполагаю, что у вас есть доступ к консультанту по искусственному интеллекту (например, ChatGPT), и вы всегда должны обращаться к нему (или Google) для получения объяснений по таким вопросам. Поиск ответов в Интернете (а начиная с конца 2022 года, с помощью искусственного интеллекта) - очень важное умение для разработчиков, и я настоятельно рекомендую вам начать развивать это умение как можно раньше.

Вот пример того, как вы можете попросить помощи у ChatGPT:

Вы:
Не могли бы вы объяснить базовые типы переменных и их размеры (в байтах) в C++?
Пожалуйста, будьте максимально краткими.

ChatGPT:
Конечно, вот краткое объяснение базовых типов переменных и их размеров в C++:

1. **char**: Обычно 1 байт. Используется для представления одиночных символов.
2. **int**: Обычно 4 байта. Используется для целых чисел.
3. **float**: Обычно 4 байта. Используется для чисел с плавающей запятой одиночной точности.
4. **double**: Обычно 8 байт. Используется для чисел с плавающей запятой двойной точности.
5. **bool**: Обычно 1 байт. Используется для булевых значений (`true` или `false`).
6. **short int** (short): Обычно 2 байта. Используется для меньших целых чисел.
7. **long int** (long): Обычно 4 байта (но может быть 8 байт на некоторых системах). Используется для больших целых чисел.
8. **long long int**: Обычно 8 байт. Используется для еще больших целых чисел.
9. **unsigned int**: Обычно 4 байта. Аналогично `int`, но только для положительных значений.
10. **long double**: Обычно 12 или 16 байт. Используется для чисел с плавающей запятой повышенной точности.

Важно отметить, что точный размер этих типов может варьироваться в зависимости от компилятора и архитектуры машины.
Упомянутые выше размеры являются распространенными, но не гарантированно справедливыми для всех сред.
Стандарт C++ определяет минимальные размеры для этих типов, но позволяет компиляторам использовать большие размеры.

Вы:
Спасибо!

ChatGPT:
Пожалуйста! Если у вас есть еще вопросы, будь то о C++ или о чем-либо еще, не стесняйтесь задавать. Приятного кодирования!

В процессе изучения этого модуля очень важно много программировать. На 2023 год много программирования все еще является неотъемлемой частью изучения программирования. Практика делает совершенство верно и в программировании.

Если вы не знаете, что кодить, хорошей отправной точкой будет изучение фреймворка. Например, вы можете изучить Unity, который является игровым движком, позволяющим создавать великолепные игры и при этом изучать программирование; или вы можете изучить Flutter, который позволяет создавать красивые приложения с легкостью. Вы также можете попросить искусственный интеллект предложить вам другие фреймворки.

Перейдите на Linux как можно скорее!

Кроме того, я настоятельно рекомендую установить операционную систему Linux и попробовать ознакомиться с терминалом (если вы не знаете, что такое терминал, спросите у ИИ) как можно скорее. Если вам действительно-действительно волнует, что вы можете испортить свой компьютер, вы можете начать с виртуальной машины, Docker или WSL на данный момент, но я рекомендую перейти к "нативной" установке (например, двойная загрузка), когда вы будете готовы. Причины использования операционной системы Linux в следующем:

  • Linux позволяет лучше понять, как работают аппаратное обеспечение компьютера, операционная система и программное обеспечение. Это происходит потому, что Linux специально создан для разработчиков, в то время как Windows предназначен для не-разработчиков, "обычных" пользователей. В результате Windows абстрагирует слишком много деталей операционных систем, программного обеспечения, аппаратного обеспечения и т. д., включая те, которые разработчики должны понимать, в то время как Linux-системы обычно этого не делают. Например, на Linux вы легко можете контролировать частоту ядер CPU, а на Windows это делается с трудом.
  • Экосистема разработки намного лучше на Linux. Множество фреймворков и программного обеспечения поддерживают только Linux; даже если это не так, настройка сред разработки (набор программного обеспечения для разработки) на Linux практически всегда намного проще. С другой стороны, настройка возможностей разработчика на Windows известна своей сложностью. Это верно даже для Visual Studio Code, Интегрированной Среды Разработки (IDE) от самой компании Microsoft.

Вы, возможно, заметили, что я использовал термин "операционные системы на основе Linux" выше. Верно, Linux сам по себе не является операционной системой; вместо этого существует множество операционных систем, основанных на Linux, таких как Debian, Ubuntu, Arch Linux и Deepin.

Лично я рекомендую начинающим использовать последнюю версию LTS (долгосрочной поддержки) Ubuntu, потому что:

  1. Установка проста и пригодна для начинающих (не будьте слишком самоуверенными и не пробуйте Arch, вы попытаетесь покончить жизнь самоубийством во время установки).
  2. У него прекрасная экосистема. В большинстве случаев, если что-то для разработчиков не поддерживает Ubuntu, вы не можете ожидать, что оно будет работать на чем-то другом.

Некоторые ресурсы, чтобы начать работу с Linux:

  • Первая и вторая лекции MIT Missing Semester: эти лекции являются хорошими учебными руководствами по началу работы с оболочками. (Если вам они кажутся слишком длинными, вы также можете попросить искусственный интеллект обучить вас.)
  • Nushell: современная оболочка (опять же, спросите у ИИ, если вы не знаете, что это). Лично я заменил bash на nushell, и я считаю, что ориентированные на данные оболочки, такие как nushell, неизбежно заменят текстовые оболочки, такие как bash, которые являются де-факто стандартом настоящего времени (2023 год). Однако nushell в настоящее время (2023 год) все еще находится в начальной стадии развития и не имеет зрелой экосистемы, и я бы порекомендовал вам ознакомиться с bash, прежде чем его попробовать.
  • Oh My Posh: Вы можете использовать это, чтобы сделать ваш терминал более красивым. Работает с множеством оболочек, включая nushell (может потребоваться некоторая настройка). Если вы используете другие оболочки, существуют другие члены "oh-my-"-семьи, например, "oh-my-bash" и "oh-my-zsh".
  • Настройка Ubuntu в стиле macOS Monterey: Учебник, который покажет вам, как сделать Ubuntu похожим на маковский стиль (да, я сделал это видео). Если вам нравится внешний вид macOS, вам может захотеться попробовать это.

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