4. Код и разработка - о разделе
О разделе
Готовьтесь к обучению магии программирования. Что такое программа - уже ясно. Но что такое код, как он работает, как его пишут? И только ли в коде вся сложность?
Вообще, лучше воспользуйтесь содержанием или перейдите к Базе знаний. Но для удобства, я размещу здесь ссылки на основные главы раздела:
Инструменты разработки
- 4.011. Интегрированные среды разработки (IDE)
- 4.011. Скрипты, макросы и локальная автоматизация
- 4.011. Редакторы кода — VS Code, Vim, Notepad++
- 4.011. Visual Studio Code
Алгоритмы
- 4.01. Алгоритмы
- 4.01. Алгоритмы сортировки и поиска
- 4.01. Анализ эффективности алгоритмов
- 4.01. Графы — модели и задачи
- 4.01. Тренировка алгоритмического мышления
- 4.01. Кратчайший путь — алгоритм Дейкстры
- 4.01. PageRank — ранжирование на графе
- 4.01. Евклид и классические алгоритмы на числах
- 4.01. Регулярные выражения
- 4.01. Алгоритм обработки
- 4.01. Нотация Большое O
- 4.01. Классы временной сложности алгоритмов
- 4.01. Линейная, квадратичная и логарифмическая сложность
- 4.01. Алгоритмы — итоги
- 4.01. Алгоритмы — чек-лист
- 4.01. Регулярные выражения — синтаксис с нуля
- 4.01. Регулярные выражения — группы и замена
- 4.01. Регулярные выражения — проверки вокруг совпадения
- 4.01. Регулярные выражения — флаги и жадность
- 4.01. Регулярные выражения — рецепты и командная строка
Код
- 4.02. Что такое код и как он работает
- 4.02. Теория представления кода
- 4.02. Ключевые слова в языках программирования
- 4.02. Функции
- 4.02. Циклы
- 4.02. Стили оформления кода
- 4.02. Операторы
- 4.02. Обработка значения null
- 4.02. Уровни абстракции языков программирования
- 4.02. Синтаксический сахар
- 4.02. Язык программирования
- 4.02. Приёмы написания кода
- 4.02. Методы рефакторинга программного кода
- 4.02. Типы задач в программировании
- 4.02. Однострочные приёмы в коде
- 4.02. Регулярные выражения (RegEx)
- 4.02. Примитивы, value objects и маленькие типы
- 4.02. Каталог примеров кода
- 4.02. Коллекции и типы в коде
- 4.02. WebAssembly (WASM) — что это и когда использовать
- 4.02. Менеджеры версий языков — nvm, pyenv, rustup и другие
- 4.02. Пакетные менеджеры — npm, pip, cargo, go mod и другие
- 4.02. Код — итоги
- 4.02. Код — чек-лист
Выполнение кода
- 4.03. Выполнение программного кода
- 4.03. Процесс выполнения исходного кода
- 4.03. Архитектура современных процессоров
- 4.03. Выполнение кода — итоги
- 4.03. Выполнение кода — чек-лист
- 4.03. Неопределённое поведение в программах
- 4.03. Внутреннее устройство функций
- 4.03. Реализация циклов на уровне системы
- 4.03. Как работают условные операторы
- 4.03. Жизненный цикл переменных
- 4.03. Виртуальные машины для выполнения кода
- 4.03. Шестнадцатеричная система счисления в программировании
- 4.03. Регистры процессора и их роль
- 4.03. Машинное слово
- 4.03. Расположение данных в памяти и директивы компилятора
- 4.03. Исполнение байт-кода виртуальными машинами
- 4.03. Дизассемблирование и восстановление исходного кода
Проект, структура и фреймворки
- 4.04. Проект программного обеспечения
- 4.04. Модульность и компонентный подход в разработке
- 4.04. Оптимизация размера и производительности приложений
- 4.04. Фреймворк
- 4.04. Библиотека
- 4.04. Сборка, компиляция и публикация приложений
- 4.04. Манифесты зависимостей — requirements.txt, package.json, Dockerfile
- 4.04. Основы работы с контейнерами
- 4.04. Микрофреймворк
- 4.04. Основы архитектуры
- 4.04. Проект, структура и фреймворки — итоги
- 4.04. Проект, структура и фреймворки — чек-лист
Асинхронность
- 4.05. Процессы и потоки выполнения
- 4.05. Асинхронность простым языком — живые примеры
- 4.05. Практикум — последовательное и параллельное выполнение
- 4.05. Управление потоками в многозадачных системах
- 4.05. Асинхронное и синхронное выполнение
- 4.05. Межпроцессное взаимодействие и обмен данными
- 4.05. Асинхронность — итоги
- 4.05. Асинхронность — чек-лист
Архитектура выполнения
- 4.06. Архитектура выполнения программ
- 4.06. Битовые операции и низкоуровневое представление данных
- 4.06. Архитектура выполнения — итоги
- 4.06. Архитектура выполнения — чек-лист
- 4.06. Ошибки, исключения и отказоустойчивость
- 4.06. Отладка и видимость состояния
- 4.06. Вызовы и иерархия
- 4.06. Ресурсопотребление и метрики
- 4.06. Неиспользуемый код и технический долг
- 4.06. Сборка и культура производительности
Парадигмы и уровни абстракции
- 4.07. Программные парадигмы
- 4.07. Уровни абстракции в разработке ПО
- 4.07. Метапрограммирование - генерация и модификация кода
- 4.07. Принципы SOLID в объектно-ориентированном проектировании
- 4.07. Обобщения и обобщённое программирование
- 4.07. Парадигмы и уровни абстракции — итоги
- 4.07. Парадигмы и уровни абстракции — чек-лист
Объектно-ориентированное программирование
- 4.08. Объектно-ориентированное программирование
- 4.08. Абстракция - скрытие деталей реализации
- 4.08. Инкапсуляция - защита внутреннего состояния объекта
- 4.08. Наследование - повторное использование и иерархия типов
- 4.08. Полиморфизм - единый интерфейс для разных реализаций
- 4.08. Перечисления
- 4.08. Сложность ПО, декомпозиция и объектно-ориентированный подход
- 4.08. Коллекции
- 4.08. Объектно-ориентированное программирование — итоги
- 4.08. Объектно-ориентированное программирование — чек-лист
Зависимости
- 4.09. Управление зависимостями в программных проектах
- 4.09. Принцип инверсии зависимостей (DIP)
- 4.09. Внедрение зависимостей (Dependency Injection)
- 4.09. Зависимости — итоги
- 4.09. Зависимости — чек-лист
ORM и работа с данными
- 4.10. Работа приложений с базами данных
- 4.10. Взаимодействие программного кода с СУБД
- 4.10. ORM - объектно-реляционное отображение
- 4.10. Принципы проектирования ORM-систем
- 4.10. Подходы к реализации ORM
- 4.10. Миграции баз данных
- 4.10. Нормализация и денормализация данных
- 4.10. Ограничения и проблемы ORM
- 4.10. ORM на практике
- 4.10. PostgreSQL: отложенные ограничения и .NET
- 4.10. ORM и работа с данными — итоги
- 4.10. ORM и работа с данными — чек-лист
- 4.10. Работа с хранилищем
Десктопные приложения
- 4.11. Архитектура десктопных приложений
- 4.11. Работа с графовыми структурами в коде
- 4.11. Разработка приложений для настольных операционных систем
- 4.11. Особенности разработки десктопных приложений
- 4.11. WebView
- 4.11. Electron
- 4.11. Windows Forms (WinForms)
- 4.11. Разработка приложений для Windows (Microsoft Learn)
- 4.11. Microsoft Store и публикация Windows-приложений
- 4.11. Первая программа Electron с React
- 4.11. Первая форма WPF — XAML, стили и шаблоны
- 4.11. Как сделать установщик
- 4.11. Десктопные приложения — итоги
- 4.11. Десктопные приложения — чек-лист
- 4.11. Справочник по WinForms — элементы UI
- 4.11. Справочник по WPF — элементы UI
Практикум WPF и клиент-сервер
- 4.11. Практикум WPF — введение в WPF и XAML
- 4.11. Практикум WPF — основы MVVM
- 4.11. Практикум WPF — сервер ASP.NET Core Web API
- 4.11. Практикум WPF — клиент на Prism
- 4.11. Практикум WPF — тестирование API и unit-тесты
- 4.11. Практикум WPF — итоговый проект TaskDesk
Мобильные приложения
- 4.12. Мобильные приложения
- 4.12. Мобильные приложения — итоги
- 4.12. Мобильные приложения — чек-лист
- 4.12. Компоненты пользовательского интерфейса на Android
- 4.12. Сборка и развёртывание мобильных приложений
- 4.12. Супераппы
- 4.12. Отладка по USB на Android
- 4.12. React Native
- 4.12. Expo
- 4.12. MAUI
- 4.12. Dart
- 4.12. Kotlin в мобильных приложениях
- 4.12. Java в мобильных приложениях
- 4.12. Swift в мобильных приложениях
- 4.12. PWA в мобильных приложениях
- 4.12. Capacitor в мобильных приложениях
- 4.12. Unity и Unreal Engine в мобильных приложениях
- 4.12. Публикация Android-приложения
- 4.12. Первая программа на React Native
- 4.12. Первая программа на Expo
Основы работы с Git
- 4.13. Система контроля версий Git
- 4.13. Основы работы с Git — итоги
- 4.13. Основы работы с Git — чек-лист
- 4.13. Установка и настройка Git
- 4.13. Как работать с Git
- 4.13. Ветвление и слияние в Git
- 4.13. Рекомендации по использованию Git в команде
- 4.13. Справочник-шпаргалка по Git
- 4.13. Файл .gitignore
- 4.13. Код-ревью и pull request
- 4.13. Типовые ситуации с Git
Разработка и отладка
- 4.14. Процесс разработки программного обеспечения
- 4.14. Разработка и отладка — итоги
- 4.14. Разработка и отладка — чек-лист
- 4.14. Профессиональные практики и культура разработки
- 4.14. Типовые задачи разработчика — справочник-шпаргалка
- 4.14. Отладка
- 4.14. Анализ и оптимизация производительности приложений
- 4.14. Создание и публикация собственной библиотеки
- 4.14. Пет-проекты
- 4.14. План развития разработчика
- 4.14. Организация структуры кодовой базы
- 4.14. README для разработчика
- 4.14. Проверка и валидация
- 4.14. Разработка расширений для веб-браузеров
- 4.14. Настройка логирования
- 4.14. Безопасность окружения и .env файлы
- 4.14. Использование AI-ассистентов в разработке
- 4.14. Основы веб-разработки и типичные оплошности
- 4.14. Типичные ошибки новичков в бэкенд и десктоп-разработке
- 4.14. DevTools в браузере — справочник
- 4.14. Тестирование для разработчика
- 4.14. Как читать чужой код
- 4.14. Как искать баг
- 4.14. Создание и публикация расширения для Visual Studio Code
- 4.14. Visual Studio — установка, IDE и версии
Сборка мусора
- 4.15. Автоматическое управление памятью
- 4.15. Сборка мусора — итоги
- 4.15. Сборка мусора — чек-лист
- 4.15. Java, Python и Go — три модели GC
Параллельные вычисления
- 4.16. Параллельные вычислительные процессы — введение
- 4.16. Классификация параллельных архитектур
- 4.16. Память, мультипроцессоры, кластеры и GRID
- 4.16. Модели параллельных вычислений и топологии
- 4.16. Граф алгоритма и матрица следования
- 4.16. Временной анализ параллельных алгоритмов
- 4.16. Законы производительности параллельных систем
- 4.16. Инженерия параллельных алгоритмов
- 4.16. Параллельное умножение матриц
- 4.16. Сети Петри и формальные расписания
- 4.16. Практика — OpenMP, MPI и профилирование
- 4.16. Параллельное решение СЛАУ — метод Гаусса
- 4.16. Параллельные вычисления — итоги
- 4.16. Параллельные вычисления — чек-лист
Веб-разработка
- 4.17. Что такое веб-разработка
- 4.17. Веб-разработка — итоги
- 4.17. Веб-разработка — чек-лист
- 4.17. Как делают веб-приложения
- 4.17. HTML, CSS и JavaScript — три слоя веб-страницы
- 4.17. От идеи до работающего сайта
- 4.17. Основы веб-дизайна для разработчика
- 4.17. Open-source веб-фреймворки
Разработка графики
- 4.18. От чисел к картинке
- 4.18. Модель, update, render
- 4.18. Цикл и FSM
- 4.18. Структуры сцены
- 4.18. Математика 2D/3D
- 4.18. High-Level API
- 4.18. Веб — Canvas и WebGL
- 4.18. Python — Pygame и SDL
- 4.18. C# — Unity и UI
- 4.18. Skia и ANGLE
- 4.18. Графические API
- 4.18. VRAM и GPU
- 4.18. Буферизация и V-Sync
- 4.18. Битмап и монитор
- 4.18. Разработка графики — итоги
- 4.18. Разработка графики — чек-лист