ithr-school
Код
Что такое язык программирования?
Язык программирования
- искусственный язык
- текстовый язык
- состоит из синтаксиса и семантики

Синтаксис
- набор формализированных правил по составлению текстов на языке
- правила называются грамматиками и сильно ограничивают языки программирования



Семантика
- описывает смыслы, которые содержат в себе разные части языка
- описывает взаимодействия между разными частями языка


a = 2
b = 3
print(a + b)


Синтаксис - как написать так, чтобы компьютер тебя понял
Семантика - смысл того, что ты написал
Шла Саша по шоссе


Что такое код?
Просто текст


Как код хранится?




Системы контроля версий
git, mercurial, CVS

Коммит (commit)
- фиксация изменений в одном или нескольких файлах
-
🚑 Fix critical bug with empty email on registration
- коммиты идут последовательно, образуя цепочку изменений



Ветка (branch)
- Ответвление от какого-то коммита
- Нужно для параллельной работы
- Помогает избежать наслоения похожих коммитов
- Позволяет делать код-ревью


Как и где выполняются программы?


Машинный код
- простейшие операции, которые понимает компьютер (процессор)
- переложи байты, сложи два числа, сравни два числа
- совсем (или почти) нечитаем

Транспиляция
перевод из текста в машинный код
На примере Python



Так и живём
Классификация языков программирования
Низкоуровневые vs. Высокоуровневые
Низкоуровневые
- максимально близки к машинному коду
- Ассемблер (Assembler), Fort
- иногда включают также C, как представителя низкоуровневых

Сферы
- Если очень мало ресурсов, а надо делать очень много
- У программы основная задача — работать на низком уровне.

Высокоуровневые
- Все остальные 🤷
- Работают с высокими абстракциями
- Нужны везде, где работаем не с байтами
- Java, C#, Python, JS

Интерпретируемые vs. Компилируемые

Интерпретируемые
- Читает код
- Переводит его в промежуточный байт-код
- Выполняет в машинном коде шаг за шагом
- Программа, которая эта делает, называется интерпретатор

Компилируемые
- Однажды читает код
- Компилирует его в машинный код (исполняемый файл)
- Исполняемый файл запускается без дополнительных программ
- Программа, которая компилирует, называется компилятор


По типизации
Динамическая vs Статическая
Динамические
- Язык сам пытается угадать что за тип у переменной
- Одна переменная может менять свой тип
a = "abc"
print(type(a)) # string
a = 1 # wo error
print(type(a)) # int
a + "abc" # error (runtime)
Статическая
- Язык ждёт от тебя типа
- Переменная не может менять тип
- Можно быть уверенным, что однажды не сложишь строку с числом
a: str = "abc"
print(type(a)) # string
a = 1 # error
print(type(a)) # int
a + 2 # error (pre-run time)
Динамическая vs Статическая
Строгая vs Нестрогая
"2" + 2 # "22"
2 + "2" # 4
Императивные vs Декларативные vs Функциональные
Императивная
- От "приказывать"
- Набор последовательных команд, можно ходить куда угодно и что угодно
- Все популярные языки программирования
Декларативная
- От "описание"
- Описывает состояние, к которому нужно привести систему
- Языки описания инфраструктур, девопсы все, data-driven структуры
Функциональные
- От "лямбда-исчисление"
- Строгая математическая
- Языки описания инфраструктур, девопсы все, data-driven структуры
Императивные vs Декларативные vs Функциональные
Рейтинг языков программирования

Мобильная разработка
iOS
- Swift и objectiveC
- Много гайдлайнов, строгие правила
- Разработчиков не очень много
- Нужен макбук

Android
- Java и Kotlin
- Правила нестрогие
- Разработчиков больше
- Большая неконсистентность устройств

Межплатформы
- C# (Xamarin), JS (React Mobile)
- Любой фронтендер справится
- Много проблем если большое приложение

Низкоуровневая разработка
C/C++
- Игры, драйверы, системы, вирусы
- Сложный язык, разработчики часто бородатые
- Много легаси и устаревших стандартов
- Языки медленно развиваются

Assembler
- Целая серия языков
- Ну вы видели
- Вирусы, совсем низкоуровневые системы, взлом чужих программ
- Знание даёт супер-силу

Title Text
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi nec metus justo. Aliquam erat volutpat.
Языки программирования p1
By b0g3r
Языки программирования p1
Смотрим как работает
- 161