Я должен зарегистрировать программное обеспечение, я в настоящее время продолжаю работать. Программное обеспечение состоит из нескольких языков программирования и сценариев, которые получили меня взгляды. Если новые разработчики приезжают и должны зафиксировать что-то, они могли бы знать Java, но возможно не колотить сценарии. Было бы хорошо, если бы была программа, которая помогла бы понять что
for f in "$@" ; do
средства. Я думал о чем-то, что создает статическую страницу HTML с кодом плюс подсветка синтаксиса и если бы Вы нависаете над чем-то (как "для"), это отобразило бы всплывающее окно с объяснением:
for
запускает цикл, который выполняет итерации по всем значениям, которые следуютin
. В цикле можно получить доступ к каждому значению через переменную$f
. Тело цикла междуdo
иdone
Чему-то нравится, это уже существует?
[РЕДАКТИРОВАНИЕ] Это - просто пример. Вы получите другую справку для f
, in
, "$@"
, ;
и do
, т.е. каждый элемент строки должен быть объяснен. Неизвестные элементы (как названия команды) должны связаться с Google. Таким образом, можно понять то, что это делает даже при пропавших без вести некоторой детали.
[EDIT2] я знаю, что Вы не можете записать программу, которая понимает то, что делает другая программа. То, что я ищу, является простым инструментом, который сделает "расширенную подсветку синтаксиса" в том смысле, что она окрасит выражение и даст короткое объяснение, что это означает (плюс, возможно, ссылка на некоторую всестороннюю ссылку).
Это предназначено для кого-то, кто знает, как программировать, но возможно не видел некоторую неясную конструкцию прежде. Сказать
echo "Error" 1>&2
Каждый программист удара знает то, что это означает, но Java-разработчик мог бы быть озадачен 1>&2
несмотря на то, что они могут предположить это echo
== System.out.println
. Простые "Перенаправления stdout к stderr" разрешат вещи и дадут тот момент "АГА!" который позволяет им оставаться в их текущем ходе мыслей.
ИМО, было бы проще и эффективнее просто собирать ссылки на хорошие языковые ссылки и руководства на странице Wiki.
Для всех основных языков такие источники существуют и регулярно обновляются. Если вы пытаетесь создать свою собственную ссылку, вам также необходимо поддерживать ее. Честно говоря, синтаксис bash не будет меняться очень часто, но другие языки развиваются быстрее, так что это будет обузой.
Подобный инструмент можно было бы создать с использованием ANTLR , то есть преобразовать код в абстрактное синтаксическое дерево с использованием грамматики ANTLR для этого языка и написать генератор HTML, который создал аннотированный код.
Похоже, это полезный инструмент для изучения языка или изучения исходного кода проектов, которые вы не поддерживаете, но подходит ли он для документации?
Почему важно помогать программистам, использующим другие языки, понимать код на этом уровне детализации реализации? Любой, кто поддерживает реализацию на этом уровне, очевидно, должен будет знать язык и, вероятно, будет иметь IDE для выполнения большей части этого.
Тем не менее, я бы определенно рассмотрел такой инструмент как учебное пособие.
Это очень непростая вещь. Прежде всего по определению можно доказать, что программы, которая «поймет» любую программу, не существует. Однако вы все равно можете использовать существующую документацию. Возможно, вам помогут такие инструменты, как Doxygen. Вам нужно будет задокументировать свой код с помощью комментариев, и документация будет сгенерирована на их основе.
Язык нельзя объяснить только с помощью его синтаксиса. Среда выполнения играет большую роль вместе с основной философией языка и библиотек.
Более того, синтаксис для большинства распространенных языков не такой сложный (учитывая, что код был написан с учетом удобства сопровождения).
Продолжая пример с bash, вы не сможете глубоко понять bash, если ничего не знаете о процессах и управлении заданиями, переменных среды, большом списке команд unix (tr, sort, cut, paste, sed, awk, find, .. .) и многие другие функции, отсутствующие в синтаксисе.
Если созданный инструмент
for запускает цикл, который выполняет итерацию по всем последующим значениям. В цикле вы можете получить доступ к каждому значению через переменную $ f. Тело цикла между do и done
было бы бесполезным. Это именно тот комментарий, который программисты-стажеры (люди) никогда не просят писать.
Если подумать, это не очень полезно иметь инструмент, объясняющий синтаксис. Разработчики могли просто использовать Google по ключевым словам вместо просмотра веб-сайта аналогично http://www.codeweblog.com/source/ .
Я считаю, что хорошие комментарии будут намного полезнее, плюс есть инструменты для извлечения документации с помощью комментариев (например, HappyDoc делает это для Python).