Программирование на C и C++
-
Метасинтаксические переменные в программировании
Метасинтаксические переменные в программировании: что такое foo, bar, plugh? Примеры использования в коде и RFC. Placeholder для замены в программах.
-
Пространства имен в информатике
Пространство имён в IT: уникальные идентификаторы объектов, иерархическая структура, избежание конфликтов имён. Объяснение с примером.
-
Перегрузка операторов в языках программирования
Перегрузка операторов в программировании: что это, как работает, плюсы и минусы. Различия в реализации в разных языках, примеры (C++).
-
Шаблоны в языке программирования C++
Шаблоны C++: обобщённое программирование, работа с разными типами данных без повторения кода. Реализация в заголовочных файлах (*.h).
-
Предварительные условия в программировании
Предварительные условия в программировании: что это, зачем нужны и как влияют на безопасность кода. Проверка условий перед выполнением операций.
-
Арифметический сдвиг в программировании
Арифметический сдвиг в программировании: виды (влево, вправо), языки (Java, C++, Python, и др.) и процессоры, использующие эту битовую операцию.
-
Венгерская нотация в программировании
Венгерская нотация в программировании: соглашения об именовании идентификаторов, указывающие тип или назначение переменной. История и применение в BCPL, Windows API.
-
Чувствительность к регистру: определение и применение
Чувствительность к регистру: что это такое? Различия между строчными и прописными буквами в компьютерах, языках программирования и поисковых запросах.
-
Зарезервированные слова и ключевые слова в языках программирования
Зарезервированные слова в программировании: что это такое и чем отличаются от ключевых слов. Определение, примеры использования и синтаксис.
-
Двоичный интерфейс между программными модулями
ABI: интерфейс между двоичными модулями программ. Определяет доступ к данным в машинном коде, в отличие от API. Важно для совместимости и работы библиотек.
-
Объединение строк в программировании
Объединение строк в программировании: конкатенация, оператор "+", работа со строками и списками. Основы и примеры из языков программирования.
-
Абстрактный синтаксис данных в информатике
Абстрактный синтаксис в информатике: структура данных как тип, без привязки к представлению. Деревья синтаксиса, FOAS и высший порядок.
-
Препроцессоры: обработка данных перед компиляцией
Препроцессор в программировании: что это такое? Обработка входных данных для компилятора, макросы, текстовые подстановки. C, PL/I и другие языки.
-
Свободные и связанные переменные: математическое и компьютерное понимание.
Свободные и связанные переменные в математике и программировании: определения, отличия, примеры использования. Важно для логики и систем уравнений.
-
Представление строк в исходном коде: нотация и разбор коллизий разделителей.
Строковые литералы в программировании: обозначение, экранирование, разделители. Разные языки программирования используют разные способы записи строк.
-
Операции CAR и CDR в языке Lisp
CAR и CDR в Lisp: примитивные операции для работы с cons ячейками. Извлекают первый (CAR) и второй (CDR) элементы из пар данных в Lisp.
-
Функция cons в Lisp и функциональном программировании
Функция `cons` в Lisp: создание пар данных, основная структура для хранения двух значений или указателей. Ключевой элемент функционального программирования.
-
Списки и последовательности в информатике.
Список в информатике: абстрактный тип данных для упорядоченных значений. Реализация через массивы и связные списки. Контейнер для хранения данных.
-
Макропрепроцессор C: история и новые возможности
Препроцессор C: макросы, включение файлов, условная компиляция для C, C++, Fortran и других языков. История и возможности препроцессора.
-
Глобальные переменные в программировании
Глобальные переменные в программировании: область видимости, время жизни, отличие в компилируемых и интерпретируемых языках. Объявление и использование.
-
Параметры и аргументы в программировании
Параметры и аргументы в программировании: различие, назначение и использование входных данных функций и подпрограмм. Объяснение с примерами кода.
-
Стандартная библиотека языка C
Стандартная библиотека C (libc) для программирования: функции для работы со строками, математики, ввода/вывода, памяти и ОС. ISO C стандарт.
-
Примитивные типы данных в программировании
Примитивные типы данных в программировании: основы, определение, роль в построении других типов. Важные понятия для разработчиков и IT-специалистов.
-
Строки с нулевым терминатором: история и недостатки
Строки с завершением нулем (C-строки): структура данных в программировании. Особенности хранения, поиск длины, ограничения и производительность.
-
L- и R-значения в программировании
Значение в программировании: представление данных, манипулируемое программой. L-value, r-value, референциальная прозрачность – ключевые понятия.
-
Стандартная библиотека языка программирования
Стандартная библиотека языка программирования: что это, зачем нужна и как определяется. Обязательные и опциональные компоненты, роль в реализации языка.
-
Стандартная библиотека C++: классы и функции
Стандартная библиотека C++: классы, функции, контейнеры, строки, потоки ввода/вывода. Поддержка C и общие задачи в программировании на C++.
-
Полиморфизм: Применение функций к аргументам разных типов
Полиморфизм в программировании: ad hoc полиморфизм, перегрузка функций и операторов. Различия между ad hoc и параметрическим полиморфизмом. Объяснение и примеры.
-
Перегрузка функций в языках программирования
Перегрузка функций в программировании: создание нескольких функций с одним именем, но разной реализацией. Избегайте неоднозначности при вызове!
-
Встроенные функции в C и C++
inline-функции в C и C++: оптимизация кода заменой вызовов тела функции, изменение связей при компиляции. Подробно о директиве inline и её влиянии.
-
Размеченные объединения: структура данных с вариантами типов
Разбор тегированных объединений (tagged unions) в программировании: структура данных для хранения значений разных типов. Варианты, копродукты, рекурсивные типы.
-
Синтаксис языка программирования C: правила и особенности
Синтаксис языка C: правила написания программ, особенности работы с числами (целые, вещественные, комплексные) и высокая переносимость. 💻
-
Приоритет операторов в программировании
Приоритет операторов в программировании: определение, анализ выражений, операнды и операторы, роль скобок. Основы синтаксиса и грамматики.
-
Цикл For: Устройство, История и Применение
Цикл for в программировании: что это, как работает, структура (заголовок и тело). Повторное выполнение кода до выполнения условия. Основы итерации.
-
Функция printf в языке C: Форматирование и вывод текста
Функция printf в C: форматирование и вывод текста. Узнайте о синтаксисе, строках формата и семействе функций printf для эффективной работы с выводом данных.
-
Объединения: переменные разных типов в одной памяти.
Объединение (union) в программировании: тип данных, хранящий переменные разных типов в одной области памяти. Экономия памяти, альтернатива структурам.
-
Неопределённое поведение в программировании
Неопределённое поведение в программировании: что это такое и к чему приводит? Объяснение UB, его отличие от других типов поведения и примеры в C.
-
Конструкторы копирования в C++: особенности и применение
Конструктор копирования в C++: создание объектов как копий существующих. Автоматически или определяемый пользователем. Важные нюансы и применение.
-
Преобразование типов данных в программировании
Преобразование типов данных в программировании: неявное и явное, примитивные и составные типы. Объяснение понятий и примеры конвертации данных.
-
Операторы в C и C++: Сходства и различия
Операторы C и C++: полный список, поддержка в C, особенности C++. Узнайте о перегрузке операторов, приведении типов и приоритете операций.
-
Стандарт языка C: Ревизия 1999 года (C99)
C99: стандарт языка программирования C 1999 года. Расширение C90, поддержка IEEE 754, улучшенная работа с железом. Обновлен стандартом C11.
-
Функция eval: Оценка строк как кода в языках программирования
Функция eval в программировании: оценка строк как кода. Различия между eval и exec, мета-оцениватели, интерпретаторы. Python, Lisp и другие языки.
-
Тернарный условный оператор в программировании
Тернарный оператор в программировании: краткая форма условного оператора if-else. Синтаксис, примеры использования в разных языках (C, Raku, Visual Basic).
-
Операции выделения срезов массивов в программировании
Нарезка массивов в программировании: извлечение подмножеств данных для создания новых массивов. Примеры, особенности и оптимизация памяти.
-
Короткое замыкание в программировании
Короткое замыкание в программировании: оптимизация вычислений логических операций (AND, OR). Языки с ленивыми вычислениями и выбор операторов.
-
Конвенция именования Лешински: особенности и применение в Access и VBA
Конвенция именования Лешински (LNC) для Access и Visual Basic: префиксы для типов объектов и полей БД. История и отличия от RVBA Conventions.
-
Числовая башня в Scheme и Lisp
Числовая башня в Scheme и Lisp: иерархия типов данных для чисел, неявные преобразования, оптимизация представления и эффективности вычислений.
-
Вариативные макросы в C и C++
Вариативные макросы в C/C++: приём переменного числа аргументов. Поддержка с C99, C++11, расширения в C++20/C23. Функциональные макросы и их применение.
-
Декорирование имён в компиляторах
Декорация имён (name mangling) в компиляторах: техника для уникальной идентификации функций и структур, необходимая для линковки и перегрузки функций.
-
Пустая строка: теория и реализация в программировании
Пустая строка в теории языков и программировании: уникальность, длина 0, хранение в памяти. Различия между формальным определением и реализацией.
-
Операторы в программировании: синтаксис и семантика
Операторы в программировании: что это такое? Арифметические, логические, сравнения, присваивания и другие – синтаксис и применение в коде.
-
Директивы и прагмы в программировании: управление компиляцией
Директивы и прагмы в программировании: как они влияют на компиляцию кода. Управление поведением компилятора, оптимизация и особенности синтаксиса.
-
Ключевое слово `volatile` в программировании: особенности и применение.
Ключевое слово `volatile` в программировании: предотвращает оптимизацию компилятора, обеспечивает доступ к актуальным данным в многопоточности и при работе с оборудованием.
-
Структуры в языке C: определение и применение.
Структуры в C: создание составных типов данных для хранения разнородной информации. Объединение переменных под одним именем, доступ через указатели.
-
Указатели и ссылки: понятие нулевого указателя и его последствия
Указатель NULL: что это такое? Объяснение понятия нулевого указателя/ссылки в программировании, его отличие от неинициализированного указателя и применение.
-
Реляционные операторы в программировании
Реляционные операторы в программировании: сравнение, равенство, неравенство. Возвращают true/false или 0/1 в разных языках. Основы синтаксиса и условия.
-
Точки последовательности в C и C++
Точки последовательности в C/C++: гарантия выполнения побочных эффектов выражений. Важны для определения корректности и результатов кода. Последовательность операций.
-
Вложенные функции в программировании
Вложенные функции в программировании: определение, область видимости и использование. Поддержка в JavaScript, ALGOL, Pascal и функциональных языках.
-
Объявление функции и прототипы функций
Объявление функций в программировании: прототипы, сигнатуры, типы данных. Разделение кода на модули в C/C++. Интерфейсы и внешние типы.
-
Операция взятия остатка от деления (Modulo)
Операция Modulo: остаток от деления в программировании. Объяснение с примерами, определение, диапазон значений и применение в вычислениях.
-
Интернирование строк: структура данных для повторного использования строк
Интернирование строк: экономия памяти и времени при работе с текстом. Хранение единственного экземпляра уникальных строк в пуле, оптимизация в Java и других языках.
-
Динамические массивы: структура данных с изменяемым размером
Динамический массив: структура данных с переменным размером для добавления/удаления элементов. Обзор, примеры (C++, Java, Rust) и преимущества.
-
Сигилы в программировании: обозначение типов и области видимости переменных
Сигил в программировании: символ перед именем переменной, указывающий тип или область видимости. Популяризирован BASIC, пример – знак $ для строк.
-
Функции с переменным числом аргументов
Вариадные функции: что это такое? Узнайте о функциях с переменным числом аргументов в математике и программировании. История и примеры использования.
-
Знак числа в программировании: signed и unsigned типы данных.
Знаковые и беззнаковые типы данных в программировании: различие, диапазон значений, представление отрицательных чисел и оптимизация памяти.
-
Квалификатор типа `const` в языках программирования C-семейства.
Ключевое слово `const` в программировании: описание, применение в C, C++, JavaScript и других языках. Обозначение неизменяемых данных и указателей.
-
Локальные переменные в программировании: область видимости и особенности
Локальные переменные в программировании: область видимости, преимущества использования, отличие от глобальных переменных. Основы модульного программирования.
-
Автоматические переменные в программировании
Автоматические переменные в программировании: локальные переменные, выделяемые и освобождаемые при входе/выходе из области видимости. Рекурсия, область действия.
-
Механизмы вызова подпрограмм в компьютерах
Вызовы подпрограмм в компьютерах: соглашения о вызовах, передача параметров через регистры/стек, важность для корректной работы программ.
-
Соглашения об именовании в программировании
Соглашения об именовании в коде: правила для переменных, функций и типов. Улучшают читаемость, упрощают ревью и анализ качества кода. 🚀
-
Тип void в программировании
Тип void в программировании: функции без возвращаемого значения. Используется для выполнения задач и побочных эффектов. Сравнение с Pascal и функциональными языками.
-
Флаги в программировании: назначение и применение.
Флаги в программировании: биты для обозначения статусов, условий и атрибутов данных. Объяснение использования и значения флагов в коде и структурах данных.
-
Переполнение в компьютерной арифметике
Переполнение целых чисел в программировании: причины, последствия и риски для безопасности. Как избежать ошибок и когда "переполнение" может быть полезным.
-
Типы данных в языке программирования C
Типы данных в C: целые, вещественные, массивы и структуры. Статья о семантике, характеристиках хранения и операциях с данными в языке C.
-
Защита от многократного включения заголовочных файлов в C и C++
Защита от двойного включения в C/C++: guards предотвращают повторную обработку заголовочных файлов, обеспечивая корректную компиляцию кода.
-
Магия в программировании: абстракция и скрытая сложность
Магия в программировании: что это такое? Абстракция, скрывающая сложность кода за простым интерфейсом. Perl, "черная магия" и понятный код – разбираемся!
-
Полевые биты в программировании
Битовые поля в программировании: структура данных для хранения битов. Оптимизация памяти, флаги, булевы значения, регистры состояния CPU.
-
Булевы выражения в программировании
Булевы выражения в программировании: логические операции (И, ИЛИ, НЕ), значения Истина/Ложь. Основы логики и Boolean circuits в коде.
-
Лексический хак: обходной путь при разборе ANSI C и современные альтернативы.
Лексический хак в C: решение проблем разбора из-за контекстной чувствительности грамматики. Обратная связь от семантического анализа к лексеру.
-
Стробирование в языках программирования: история и современные примеры
Строппинг в языках программирования: способ разграничения ключевых слов и идентификаторов. История, преимущества и отличия от современных методов.
-
Функции для работы со строками в программировании
Строковые функции в программировании: манипуляции, запросы информации о строках. Реализация в разных языках – от свойств объектов до операций со списками.
-
Тип данных long double в языках C
Тип данных long double в C: точность, реализация на x86, соответствие стандартам C89/C99/C11. Константы с суффиксом "L". Подробное описание.
-
Классы и структуры данных в C++
Классы в C++: создание пользовательских типов данных и структур. Приватные, защищенные и публичные члены, объекты и функции-члены. Основы ООП.
-
Математические функции и генерация случайных чисел в C
Математические функции C: обзор стандартной библиотеки, операций с числами с плавающей точкой и заголовков <math.h>, <tgmath.h>. C и C++ реализация.
-
Номинальные Типовые Системы в Информатике
Номинальная типизация в программировании: определение совместимости типов по имени, а не структуре. Отличие от структурной типизации, примеры в C.
-
Оператор sizeof в C и C++: размер типов и выражений
Оператор sizeof в C/C++: определяет размер выражения или типа данных в байтах. Гарантированно sizeof(char) = 1. Подробности и связь с limits.h.
-
Удаление пробелов в строках: функции и особенности реализации в разных языках программирования.
Удаление пробелов в строках: trim, ltrim, rtrim, lstrip, rstrip. Обзор функций для очистки строк от начальных и конечных пробелов в программировании.
-
Enumerated type
-
Semipredicate problem
-
C date and time functions
-
Conditional operator