На момент написания, являюсь студентом.
🔭 В сферу интересов входят языки: C++, C(Си), Python.
Си уже знаю на достаточном, по моим оценкам1, уровне, по этому сейчас активно изучаю C++; из-за обширности последнего - python не в приоритете, несмотря на то, что уже немного изучал.
Некоторые из моих работ:
Прим: названия ведут к README указанного проекта, где рядом, в той же директории, будут лежать исходники.
-
Bash Utilities - проект, в котором реализовал свой
catиgrepна Си. Один из самых первых серьёзных проектов, из-за чего логика весьма спутана, нейминг не годиться для соответствия с концепцией "чистый код". -
Decimal - первый хоть сколько-то большой и трудный проект. В нём реализовывал свой тип данных с плавающей запятой, который реализован на основе
intмассива из 4-х элементов(предполагается, что они 32-ух битные). В этом проекте уже лучше организована логика кода, и хоть нейминг всё ещё оставляет желать лучшего, зато уже появляются комментарии, которые помогают ориентироваться в коде; к тому же, уже есть тестирование проекта на основеcheck.h. -
Matrix_C - один из последних проектов на Си. Является реализацией 2D матрицы, и операций с ней связанных.
-
Matrix_CPP - первый серьёзный C++ проект. Фактически, переписанный Matrix_C но на C++ 2. Здесь уже намного больше уделял времени на нейминг, который бы позволил сразу понять что и зачем; а так же, сделал тесты при помощи библиотеки
gtest.h. -
CTetris - в проекте создавался консольный тетрис на языке Си. Была попытка разделить функциональность на более общий код и конкретно код для тетриса; чтобы, например, можно было заменить основной файл с отображением графики, без изменений остального кода3; однако, получилось мало эффективно. Помимо прочего, основную логику игры организовал в виде конечного автомата (реализовал как двумерный массив указателей на функции; где строки - состояния, а столбцы - действия); схему КА можно увидеть в README проекта. Так-же взаимодействие с основной структуры игровой информации,
GameInfoиExtGameInfo, организовал через паттерн singleton (насколько это возможно в языке Си и насколько смог). -
ExchangeService - work in progress. Терминальное клиент-серверное приложение для обмена валют (RUB, USD). Используется: C++ (сейчас 17), boost::asio; gtest (тесты ещё не готовы); JSON (nlohmann); cmake.
Footnotes
-
На данный момент не вижу смысла ещё сильнее углубляться. Возможно, как хорошо изучу C++, ещё буду изучать Си. ↩
-
По этому, чтоб не дублировать те же комментарии - убрал их; да и сама парадигма ООП делает код достаточно структурированным, легко читаемой. ↩
-
Чтобы было возможно легко при сборке выбирать вывод графики в консоли или в X сессии в отдельном окне. ↩