Александр Рябиков @rsashka
Системный архитектор
Information
- Rating
- 851-st
- Location
- Россия
- Date of birth
- Registered
- Activity
Specialization
Embedded Software Engineer, Software Architect
Lead
C++
OOP
Linux
Programming microcontrollers
Embedded system
C
Qt
Software development
В противном случае у вас и сейчас будет мешанина из кода Python, PHP, C\C++, если вы ищите не специфическую библиотечную функцию.
Наверно мне следовало бы изначально более конкретизировать этот термин, т.к. все мы понимаем под ним что-то свое. Кто-то отсутствие необходимости уметь формализировать алгоритмы, кто-то замену одних терминов на другие, а третий устный диалоговый режим взаимодействия с компьютером.
Для меня ближе понимание именно третьего варианта, т.е. возможность коммуникации с компьютером без строгого формального синтаксиса и фиксированного набора ключевых слов, которые присущи почти каждому ЯП.
А про комментарии немного не согласен. Они имеют значение только в двух случаях, либо нужно изучить код с целью поиска бага, либо нужно изучить код понимания интерфейса к деталям реализации, если API отсутствует документация.
Для первого случая комментарии помогают редко. Конечно, если проблема не в выборе алгоритма реализации, когда в комментарии написано, что-то типа «сортировка пузырьковая и может тормозить на больших объемах данных». Ну а без документированного API действительно тяжело.
И как оценивать «правильность» комментария?
Я не утверждал, а наоборот опровергал тезис, что на естественном языке может программировать любой, только нужно выучить алфавит.
В данном случае речь идет как раз о человеке, который умеет формализовать алгоритмы, но не знает языка. И вот в этом случае предложенный подход будет отличным выходом. Пусть пишет алгоритм на естественном языке, а с реализацией на конкретном языке можно не заморачиваться.
Но мне кажется для этих целей не нужно придумывать отдельный язык символов или иероглифов. Будет достаточно использование уникального маркера, наличие бы которого и сигнализировало о том, что слово относится к внутренним терминам и его не нужно «переводить».
Безусловно, пунктуация тоже не интернациональна, однако требуется выбрать какую нибудь точку отсчета.
Попробую ответить на высказанные замечания.
1. Отступы планируется использовать для форматирования списков (но реализация этого может быть сделана не с самого начала).
2. Фигурные скобки или обратные кавычки, это дело привычки. Может быть вы и правы, но данный момент не принципиальный и решается заменой двух символов в лексере.
3. Перевод строки используется для форматированных списков в несколько строк, а запятая для списков или разделения частей в одном предложении.
4. Динамическая грамматика — определенно! Причем грамматика рекурсивная с возможностью вложенного разбора.
5. Использование математических операторов сильно зависит от контекста. Минус как дефис, *- маркер списка и т. д.
6. Отмечать требуется для исключения неоднозначности с поиском псевдонимов и сокращений. Особенно с функциональностью игнорирования опечаток.
7. Нужно определить синоним системной переменной и склонять его как угодно.
8. Насчет приоритетов у символа @, незнаю, не обращал внимания на этот момент.
Что касается визуального программирования, то мне кажется, что его результат сложно сохранять в текстовом человекочитаемом виде.
Но если говорить не про полноценное программирование, а про приведенный вами пример с решением квадратного уравнения, то там школьных знаний будет вполне достаточно.
Тогда вашу программу может сопровождать и дорабатывать не только программист на Билдере/Дельфи, а домохозяйка, которая объясняет сыну математику.
Причем не обязательно по русски, но и после преобразования на английском или эсперанто.
В вашем примере, замените «Программист» на «Аналитик» или продвинутый пользователь, тогда будет все правильно.
А из основных применений видится следующие:
— Предметно ориентированное программирование за счет написания программ «не программистами». Фактически, это стирание грани между постановкой задачи (её текстовым описанием) и непосредственно написанием программного кода.
— Расширение и интернационализация открытых программных проектов за счет привлечения обычных пользователей, которые хотели бы внести свой вклад в развитие проекта, но не являются программистами или не знают используемого языка.
Вопрос поднимался уже давно qna.habr.com/q/154077, и продолжает оставаться очень актуальным, т.к. в рекламных материалах компаний рейтинговый механизм Хабра не работает в принципе, а видеть одно и тоже под разными соусами реально раздражает.
Вопрос поднимался уже давно qna.habr.com/q/154077, и продолжает оставаться очень актуальным, т.к. в рекламных материалах компаний рейтинговый механизм Хабра не работает в принципе, а видеть одно и тоже под разными соусами реально раздражает.