Коллекция проектов на языке C
Коллекция проектов на языке программирования C, предназначенная для начинающих с целью изучения и практики различных концепций программирования: от базовых алгоритмов до сетевого программирования. Каждый проект автономен и включает собственную документацию и систему сборки.
Обзор проектов
1. Реализация SHA-512
Реализация криптографической хеш-функции, демонстрирующая:- Побитовые операции
- Сложные алгоритмы
- Управление памятью
- Операции ввода/вывода файлов
2. HTTP сервер
Базовая реализация HTTP-сервера, охватывающая:- Программирование сокетов
- Основы протокола HTTP
- Обслуживание файлов
- Сетевое взаимодействие
3. UDP сервер-клиент
Простая система связи на базе UDP, обучающая:- Программирование UDP-сокетов
- Архитектура клиент-сервер
- Сетевые протоколы
- Обмен сообщениями
4. Сканер портов
Сетевой диагностический инструмент, демонстрирующий:- Программирование TCP-сокетов
- Техники сканирования сети
- Обработка ошибок
- Разбор аргументов командной строки
5. Реализация Ping
Собственная утилита ping, охватывающая:- Протокол ICMP
- Программирование сырых сокетов
- Диагностика сети
- Измерение времени
6. Крестики-нолики
Классическая игра, обучающая:- Многопользовательский игровой сервер
- Логика игры
- Обработка пользовательского ввода
7. Система чата
Приложение для обмена сообщениями в реальном времени, демонстрирующее:- Программирование TCP-сокетов
- Многопоточность
- Общение в реальном времени
- Архитектура клиент-сервер
8. Лексический анализатор
Простая компонентная часть фронтенда компилятора, демонстрирующая:- Токенизация исходного кода
- Техники разбора
- Принципы проектирования компиляторов
- Манипуляция строками
9. Арифметический компилятор
Простой компилятор, который принимает арифметические выражения на вход и генерирует ассемблероподобный код:- Лексический анализ (токенизация)
- Разбор и вычисление выражений
- Генерация ассемблерного кода
- Основы создания компиляторов
10. Игра Астероиды
Терминальная игра, в которой вы управляете кораблем и избегаете падающих астероидов:- Управление состоянием игры
- Обработка ввода пользователя
- Графика на базе терминала
- Механика игры в реальном времени
- Простейшее обнаружение столкновений
Начало работы
Каждый проект в этом репозитории является автономным и включает:
- Исходный код
- Makefile или конфигурацию CMake
- README с инструкциями по сборке и использованию
- Детали реализации
- Перейдите в директорию проекта
- Прочитайте файл README.md проекта
- Следуйте инструкциям по сборке
- Запустите программу, как указано
Необходимые компоненты
- Компилятор GCC (для проектов на C)
- Компилятор G++ (для проектов на C++)
- Утилита Make
- CMake (для проектов на C/C++)
- Базовые знания программирования на C/C++
- Для сетевых проектов: знание основных сетевых понятий
Рекомендуемая книга
Для начала изучения программирования на C я рекомендую эту всеобъемлющую книгу: Язык программирования Си — незаменимый ресурс для изучения основ и лучших практик программирования на C.
Путь обучения
Эти проекты расположены в порядке возрастания сложности:
- Начните с Крестики-Нолики для базовых концепций программирования
- Перейдите к SHA-512 для изучения реализации алгоритмов
- Попробуйте UDP сервер-клиент для базовых сетевых навыков
- Продвигайтесь к HTTP серверу и Чат-системе для более сложных сетевых задач
- В завершение изучите Сканер портов и Ping для продвинутых сетевых концепций
Участие в проекте
Вы можете:
- Сообщать об ошибках
- Предлагать улучшения
- Добавлять новые функции
- Создавать новые проекты
- Улучшать документацию
Лицензия
Этот проект является открытым исходным кодом и доступен для образовательных целей.
Примечание
Некоторые сетевые проекты (Сканер портов, Ping) требуют прав root/администратора для работы из-за использования "сырых" сокетов. Всегда используйте эти инструменты ответственно и только в тех сетях, где у вас есть разрешение на тестирование.
--- Tranlated By Open Ai Tx | Last indexed: 2025-07-22 ---
