Иногда я натыкаюсь на термин, который в целом понимаю, но в такие моменты хочется не просто «узнать перевод», а именно сверить часы: правильно ли я его интерпретирую, не упускаю ли важный нюанс, не смешиваю ли его с соседними понятиями.
Это особенно заметно в тех темах, где термины похожи по звучанию, но расходятся по смыслу. Например, где проходит граница между composition и aggregation, чем concurrency отличается от parallelism, как на практике воспринимать idempotency, optimistic locking или bounded context.
В какой-то момент я понял, что мне не хватает не очередной заметки в закладках и не разрозненных ссылок на статьи, а собственного, нормально структурированного словаря. Так появился DevGlossary — инженерный словарь терминов программирования в формате Markdown.
Первичный каркас и часть формулировок я собрал с помощью GPT, а затем привел все к единой структуре и выложил на GitHub. Решил поделиться и здесь: думаю, такой ресурс может быть полезен не только мне.
Репозиторий: github.com/dartdavros/DevGlossary PR приветствуются. 👌
Зачем вообще нужен такой словарь
У большинства разработчиков со временем накапливается большой слой терминов, которые «вроде знакомы». Обычно этого хватает для разговора, чтения документации и работы в контексте. Но когда хочется восстановить картину целиком, быстро оказывается, что знания лежат неравномерно:
-
что-то помнится точно;
-
что-то понимается интуитивно, но без четкой формулировки;
-
что-то давно встречалось, но уже размылось;
-
а какие-то понятия вообще смешиваются между собой.
В результате даже знакомые термины иногда приходится перепроверять — не потому, что они неизвестны, а потому что хочется точности.
Именно для этого я и делал словарь:
-
чтобы быстро освежить термин в памяти;
-
чтобы увидеть не только краткое определение, но и практический смысл;
-
чтобы связать понятия между собой, а не хранить их как набор изолированных слов;
-
чтобы постепенно собирать личную инженерную карту понятий.
Что внутри
Словарь разбит по темам. Сейчас в нем есть такие разделы:
-
Architecture
-
OOP
-
Functional
-
Runtime and Memory
-
Concurrency
-
Algorithms and Data Structures
-
Databases
-
Networking
-
Compilers and Languages
-
Testing
-
DevOps
-
Security
Каждая тема хранится в отдельном Markdown-файле.
Внутри темы используется единый формат:
-
оглавление темы;
-
краткий список терминов и коротких определений;
-
подробные карточки терминов.
Каждая карточка термина включает:
-
краткое определение;
-
полное определение;
-
назначение;
-
когда применять;
-
ограничения и частые ошибки;
-
примеры;
-
связанные термины.
На практике это дает два режима использования:
-
как быстрый справочник, когда нужно за минуту проверить термин;
-
как карту понятий, когда хочется восстановить тему глубже.
Почему именно Markdown
Я сознательно делал проект максимально простым по форме.
Markdown дает несколько практических преимуществ:
-
словарь легко читать прямо в репозитории;
-
удобно редактировать локально в любом редакторе;
-
просто поддерживать структуру по темам;
-
легко принимать изменения через pull request;
-
при необходимости проект можно потом конвертировать в другой формат — например, в сайт, PDF или DOCX.
То есть это не «специальная платформа ради платформы», а обычный репозиторий с понятной структурой и низким порогом входа.
Как это устроено
Структура проекта сейчас такая:
DevGlossary/├─ README.md├─ INDEX.md├─ assets/│ └─ cover.png└─ topics/ ├─ _template.md ├─ architecture.md ├─ oop.md ├─ functional.md ├─ runtime-memory.md ├─ concurrency.md ├─ algorithms-ds.md ├─ databases.md ├─ networking.md ├─ compilers-languages.md ├─ testing.md ├─ devops.md └─ security.md
Главная точка входа — INDEX.md, откуда можно перейти в нужный раздел.
Для новых тем есть единый шаблон, чтобы словарь не расползался по стилю и структуре.
Для кого это может быть полезно
Мне кажется, проект может пригодиться нескольким группам:
-
разработчикам, которые хотят держать инженерную терминологию в порядке;
-
тимлидам и архитекторам, которым важно унифицировать понятия внутри команды;
-
тем, кто систематизирует знания по разработке и смежным инженерным темам;
-
тем, кто периодически хочет именно «сверить часы», а не читать длинный учебный текст.
Что дальше
Сейчас базовый каркас словаря уже собран. Дальше я планирую постепенно его уплотнять:
-
выравнивать формулировки между темами;
-
усиливать перекрестные ссылки между связанными понятиями;
-
добавлять новые термины внутри уже созданных разделов;
-
при необходимости делить большие темы на более узкие.
Отдельно хочу посмотреть, какие разделы стоит усиливать в первую очередь: например, базы данных, конкурентность, архитектуру или сетевые концепции.
Если захотите посмотреть или поучаствовать
Репозиторий проекта: github.com/dartdavros/DevGlossary
Если идея вам близка, можно:
-
просто использовать словарь как справочник;
-
открыть issue, если видите спорную формулировку;
-
прислать PR с улучшением определений, примеров, структуры или навигации.
Буду рад, если проект окажется полезным и для других 🙂
ссылка на оригинал статьи https://habr.com/ru/articles/1022396/