Emacs:: Literate Programming

Community «Istoc»

"Исток" — это сообщество программистов, которых объединяет не только концепция программирования Literate Programming по Дональду Кнуту, но которые ее реально применяют в своих проектах при помощи редактора кода Emacs (Org-Mode).

Читать больше »

О нас

Наша команда

«Исток» — это сообщество программистов, которых объединяет не только концепция программирования Literate Programming по Дональду Кнуту, но которые ее реально применяют в своих проектах при помощи редактора кода Emacs (Org-Mode).

Проще говоря, мы сообщество программистов, для которых Емакс не просто редактор программного кода, в т.ч. и как "операционная система" для запуска всех программ, но и средство для обработки программного кода для обычного чтения исходников программ почти как обычного текста, к примеру, как статьей на сайте HabraHabr.

На данный момент, наши проекты находяться на стадии старт-апа и мы готовы рассматривать все виды сотрудничества, которые будут сфокусированы на обработку исходников программного кода и построения экспертных систем в виде баз знаний с разными видами представления, в т.ч. кода связанного с биоинформатикой.

Члены нашего сообщества готовы консультировать другие IT-проекты по вопросам применения методики Literate Programming по Дональду Кнуту, а также при помощи специально написанных скриптов обрабатывать любые объемы программного кода, чтобы его можно задокументировать и преобразовать в удобную для чтения документацию в форматах .html .pdf по этой методике.

Присоединение к сообществу :: Контактная форма

К нашему сообществу может присоединиться любой желающий, кто хотел бы привести в порядок не только исходники своего кода, но и участвовать в наших проектах в качестве консультанта-эксперта по тем языкам программирования, которые он знает на экспертном уровне.

Кстати, для этого не обязательно нужно знать Емакс, будет достаточно одного желания сотрудничать в этом направлении, но если вас будет интересовать этот редактор, мы готовы реально помогать вам его изучать - для начала мы конвертируем исходники вашего проект в Emacs (Org-Mode) и этот прекрасный редактор затянет вас на всю оставшуюся профессиональную жизнь - проверено, гарантируем!

Для присоединения к нашему сообществу сообщите нам краткую информацию о себе при помощи этой контактной формы:

Наши Проекты

Проект: EmacsLiterateProgramming (StartUp)

Проект: DropShippingUA:BigDate (StartUp)

“Emacs:LiterateProgramming” - этот проект, создан как SaaS-платформа для конвертации исходников программного кода в формат Literate Programming по Дональду Кнуту.

На данный момент, для некоторых членов нашего сообщества основной (базовый) функционал платформы уже доступен (в т.ч на уровне open-source), что же касается расширенного функционала, то он находится на стадии бета-тестирования, и в будущем будет доступен как SaaS-платформа, с разными видами дополнительных услуг и опций (в т.ч. платных по подписке для коммерческих IT-проектов).

Цель проекта - создать веб-сервис, который будет обрабатывать любые объемы программного кода на всех языках программирования для конвертации исходников в формат более удобный для быстрого изучения архитектуры и всех программных аспектов кода того или иного IT-проекта.

Следует заметить, что для IT-компаний наш проект может быть востребован, в первую очередь, как инструмент, при помощи которого можно конвертировать исходники кода своих проектов в удобочитаемую в браузере документацию, которая поможет новым программистам сделать быстрое погружение в текущую разработку.


Проект: EmacsOrgMode:БазыЗнаний (StartUp)

Наша команда

“EmacsOrgMode:БазыЗнаний” - это проект, в рамках которого создаются тематические базы знаний на основании информации, которая доступна из открытых источников.

Цель проекта обрабатывать информационный “белый шум” по тем или иным темам (в т.ч. гуманитарным), и превращать этот информационный шум в хорошо структурированные базы знаний с разными видами представления информации, в т.ч с краткими аннотациями и с ссылками на первоисточники и т.д.

На следующем этапе, в рамках этого проекта, и на основании хорошо структурированных баз знаний, мы создаем экспертные системы с вопросами и ответами для прикладного применения в образовательных целях, в т.ч. и как датасеты для машинного обучения искусственного интеллекта.

Учитывая что в Емаксе достаточно неплохо реализовано “ленивое вычисление”, то для создания первичных структур (в т.ч. основных разделов баз-знаний), выбран формат Org-Mode, это позволяет нам конвертировать информацию в пользовательские форматы (.html .pdf .odt .doc) на любом этапе работы c базами знаний.

Следует заметить, что в рамках этого проекта, нами разрабатываются и внедряются не только разное стилистическое оформление выходных форматов, но и разные варианты структурности представления данных (в т.ч. нелинейное представление информации).

FAQs :: Вопросы-Ответы

Предлагаем вашему вниманию ответы на часто задаваемые вопросы относительно выше предоставленного текста на этой веб-странице:

Что такое базы знаний и чем они отличаются от баз данных и экспертных систем?

Базы данных - это программное обеспечение, где информация хранится и обрабатывается по принципу таблиц или по принципу “ключ-значение”. Почти всегда базы данных не имеют встроенного GUI-интерфейса не только для доступа к информации, но для ее модификации, поэтому для работы с базами данных всегда создаются дополнительные программные приложения на разных языках программирования.

Базы знаний - это хорошо структурированная тематическая информация в той или иной прикладной области, при этом она имеет интерфейсы для просмотра и анализа данных. Базы знаний могут работать на большом количестве баз данных, и являться частью экспертной системы.

Экспертная система - это базы знаний, которые имеют не только прикладной обучающий контент (в т.ч. вопросы-ответы), но и содержат факты (статические сведения о предметной области), на основании которых эти системы могут генерить рекомендации по разрешению тех или иных проблем.

Что такое Literate Programming?

Согласно Википедии: Literate Programming (в рус. переводе "Грамотное Программирование") — это концепция, методология программирования и документирования, в которой программа состоит из прозы на естественном языке вперемежку с макроподстановками и кодом на языках программирования]. Термин и саму концепцию предложил Дональд Кнут в 1981 году при разработке системы компьютерной вёрстки ΤΕΧ.

Так этот термин объясняет Википедия, но мы, в свою очень, объясним это максимально просто, итак...

Literate Programming - это когда хорошая авторская статья дополняется программным кодом, к примеру, как большинство статей на Хабрахабре, при этом эта статья является “донором” исходников для компиляции программного кода с очень минимальным количеством комментариев.

Чисто теоретически большинство статей с исходниками на Хабре - это на 90% Literate Programming, который можно распарсить и получать исходники прямо из статей.

Чем Literate Programming отличается от обычного оформления кода?

В первую очередь образом мышления, на данный момент вся индустрия программного обеспечения построена фактически на структурном формате представления кода и на максимальном уровне вычленения всего в отдельные файлы.

В результате, программисты тратят много нервной энергии не только на абстракции программного кода, но и на сочленение в голове большого количества отдельных файлов, которые, как правило, открываются во всех редактрах кода в виде горизонтальных табов, при этом внимание еще постоянно загружено иерархическими деревьями с учетом директорий и поддиректорий файлов всего проекта.

И как следствие, программисту, нужно тратить много усилий чтобы постоянно держать пересборку в голове всего не только на уровне физических файлов, но и с учетом местоположения этих файлов, при этом учитывать все аспекты абстракций и паттернов своего проекта.

Литературное программирование построено от обратного, и в первую очередь, на тенденции объединить и сочленить всё, что только можно объединить и сочленить, чтобы программист с одной локации (в идеале даже с одного открытого файла) максимально контролировал структурность проекта, в т.ч. и то, что будет генериться наружу на уровне отдельных файлов. Но самое главное в этом объединении - это создание не ограниченных возможностей комментировать программный код в виде последовательного авторского нарратива (т.е. прозы, как это обычно делают все авторы на Хабре).

Проще говоря, обычное программирование - это тенденция к росту количества файлов (горизонтальных табов) и расчленение всего что только можно расчленить до уровня отдельных файлов и формальная минимизация комментариев в коде, поэтому вхождение в проект для большинства новых программистов, мягко говоря, тяжелое.

Литературное программирование по Дональду Кнуту - это тенденция объединить все что можно объединить. Вместо горизонтальных табов - максимальное использование вертикального фолдинга непосредственно в тексте, плюс неограниченные возможности комментировать программный код в виде авторского нарратива.

В качестве заключения можно резюмировать следующее: для того чтобы понять код после обычного программиста, нужно очень сильно напрягаться и открывать большое количество файлов, код в формате литерал-программинга читается фактически как статья на Хабре, особенно если он качественно описан естестественным языком и используются фолдинг для вкрапления программного кода.

Можно ли считать качественную статью на Хабре литерал-программингом?

Нет, на Хабре статья - это произвольное изложение, литерал-программиг, это когда одна и та же самая статья становится "донором" для качественных исходников при помощи макрообработок.

Справедливости ради, нужно отметить что из многих статей на Хабре можно создать качественные исходники при помощи макрообраток в Емаксе, потому что Емакс - это, в первую очередь, редактор макросов (Emacs - Editor MACroS), а потом редактор теста и даже “операционная” система.

Насколько реально применять Literate Programming в реальном проекте?

Практически нереально, если вы работаете в команде обычных программистов, которые используют Git, потому что это принципиально разные подходы не только в оформлении кода, но и образе мышления.

Git решает проблемы корректной работы с кодом большого количества разработчиков, более того, он изначально продавливает стандарт минимализма по комментированию кода, что абсолютно противоречит основному принципу литерал-программинга, когда код программы практически вторичен, первично - авторское изложение концепций постановки и решения задач, и в качестве кода может быть прототип на псевдокоде.

На каких этапах можно применять литерал-программинг?

Если в команде все сторонники этой методики, можно в любом проекте это применять с самого начала, и все от этого только выиграют, но если на проекте есть программисты которые пишут код ради самого процесса, или по принципу “лишь бы заработало”, а только потом пытаются осмыслить то, что они написали - применять литерал-программиг нереально.

Поэтому для большинства проектов литерал-программинг лучше применять на самых последних этапах разработки, лучше всего во время глобального рефакторинга, когда код работает согласно спецификации, и его можно попытаться конвертировать в принципиально другое представление, в первую очередь, для того, чтобы он был максимально понятен и читабельный для других новых программистов.

Почему у большинства программистов литерал-программинг вызывает отторжение?

Потому что для большинства программистов, проще написать 100500 строк некачествественного кода, при этом патерно воспаряться ОПП-абстракциями с сомнительными интерполяциями и джинериками, чем просто сесть и описать задачу естественным языком, чтобы для начала осознать все аспекты проблем которые вознинут на этапе даже написания прототипа.

Контакты

Контактная форма для отправки сообщений

Community «Istoc» :: Контактная форма

Отправить нам сообщение, через контактрую форму.

2021 © Community «Istoc» Контактная форма