OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 17 Июнь, 2025 23:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 03:04 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Geniepro писал(а):
Фишка блэкбоксёрского редактора в том, что Вы можете сами раскрашивать код как попало, шрифты и гарнитуры менять как душе захочется.
Насколько это полезно для программистского редактора -- философский вопрос, спор о котором пользы не даст...
Вот конкретный пример.
В одной программе (отладчике) надо организовать разбор запросов и входных данных (в частности, таблиц).
По ряду причин (каких - здесь не принципиально) мне было неудобно применить yacc, который я использую обычно, поэтому я написал пару простых нисходящих разборщиков a la Wirth.
Следующим шагом я добавил "семантику" методом поэтапного дополнения (как у Вирта в старой книге "Алгоритмы + структуры данных = программы"). Т.е. просто дописал дополнительные переменные, операторы и вызовы процедур в нужных местах.
Если бы я делал это на КП в ББ, то обязательно бы выделил "семантические" операторы с помощью другого цвета или шрифта и получил бы разделение синтаксиса и семантики в самом простом виде.
Если бы потом мне потребовалось переделать семантику, я бы сразу видел (в буквальном смысле слова), что в исходнике относится к синтаксису, а что к семантике.
Это (по крайней мере, в данном случае) удобно. А возможно благодаря тому, что цвет не расходуется нерационально на выделение ключевых слов языка программирования.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 09:31 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Ещё пример: реализация автомата. Цветом выделяются варианты в CASE - состояния (тек. и те, куда возможен из него переход):
Код:
| текущСост: (* новСост1 | новСост2 *)
Жирным выделяются операторы перехода в новое состояние
Код:
state := новСост1
Благодаря такому оформлению можно легко видеть граф состояний автомата в коде.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 09:57 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
В общем, синтаксическая раскраска - это вчерашний день. Архитектурная раскраска - вот современный подход!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 10:12 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
AVC писал(а):
Если бы я делал это на КП в ББ, то обязательно бы выделил "семантические" операторы с помощью другого цвета или шрифта и получил бы разделение синтаксиса и семантики в самом простом виде.
Если бы потом мне потребовалось переделать семантику, я бы сразу видел (в буквальном смысле слова), что в исходнике относится к синтаксису, а что к семантике.

А если Вы где-то забудете раскрасить, что-то пропустите? И понеслись ошибки понимания программы...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 10:37 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Будет просто нераскрашенный кусок текста. Всего-то.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 11:45 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Иван Кузьмицкий писал(а):
Будет просто нераскрашенный кусок текста. Всего-то.

И вот придёт другой человек в проект после вас, и начнёт голову ломать -- почему этот кусок не раскрашен, тайный умысел или просто недомыслие?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 12:01 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
Geniepro писал(а):
AVC писал(а):
Если бы я делал это на КП в ББ, то обязательно бы выделил "семантические" операторы с помощью другого цвета или шрифта и получил бы разделение синтаксиса и семантики в самом простом виде.
Если бы потом мне потребовалось переделать семантику, я бы сразу видел (в буквальном смысле слова), что в исходнике относится к синтаксису, а что к семантике.

А если Вы где-то забудете раскрасить, что-то пропустите? И понеслись ошибки понимания программы...

Конечно, такое возможно (а с синтаксической подсветкой невозможно, т.к. она не добавляет новой информации).
Ведь речь у нас пока идет о вспомогательном средстве, вроде комментария. А комментарии, конечно, могут быть ошибочными.
BTW, Вы меня натолкнули на идею автоматизировать раскраску исходника (например, с помощью какого-нибудь аналога diff). (А то, глядишь, и научить компилятор распознавать цвета, вроде: компилятор зеленое и синее компилирует по разному.) :)
Шутки шутками, но цвет в современных программных средах мог бы использоваться информативнее.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 12:09 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Geniepro писал(а):
Иван Кузьмицкий писал(а):
Будет просто нераскрашенный кусок текста. Всего-то.

И вот придёт другой человек в проект после вас, и начнёт голову ломать -- почему этот кусок не раскрашен, тайный умысел или просто недомыслие?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 12:25 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
AVC писал(а):
Если бы я делал это на КП в ББ, то обязательно бы выделил "семантические" операторы с помощью другого цвета или шрифта и получил бы разделение синтаксиса и семантики в самом простом виде.
Если бы потом мне потребовалось переделать семантику, я бы сразу видел (в буквальном смысле слова), что в исходнике относится к синтаксису, а что к семантике.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 15:57 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 803
Откуда: Зеленоград
ssyy писал(а):
Даже в рамках обсуждения в этой ветке высказано несколько подходов к семантической раскраске. А теперь представьте: вам необходимо читать код другого человека (с которым вы вообще не знакомы). А он красил текст совсем не так, как вам хотелось. И вам легко будет такое читать? Очевидно, нет. Стало быть, напрашивается один из двух выводов:
1) Ручная раскраска далеко не так полезна, как её преподносят.
2) Среда, где применяется ручная раскраска, не предназначена для программирования командами.
Это Ваше конкретное умозаключение представляется мне немного странным, учитывая, что в рамках проекта может существовать соглашение об унифицированном использовании раскраски текста.
Давайте проверим это, заменив "семантическую раскраску" на "форматирование исходного текста" (обычно в рамках проекта используется то или иное соглашение об использовании отступов, пробелов, расстановке скобок; как правило, используется также соглашение о том как "правильно" именовать объекты).
Вот что получится.
Цитата:
Даже в рамках обсуждения в этой ветке высказано несколько подходов к форматированию текста. А теперь представьте: вам необходимо читать код другого человека (с которым вы вообще не знакомы). А он отформатировал текст совсем не так, как вам хотелось. И вам легко будет такое читать? Очевидно, нет. Стало быть, напрашивается один из двух выводов:
1) Ручное форматирование текста далеко не так полезно, как его преподносят.
2) Среда, где применяется ручное форматирование, не предназначена для программирования командами.
Впрочем, отсюда можно извлечь (сейчас довольно популярную) идею об использовании языков с однозначным форматированием.
Но такие языки как Си/Си++, Паскаль, Оберон предоставляют известную свободу программисту, так что критика Оберона "со стороны Паскаля" не слишком понятна.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 16:36 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
ssyy писал(а):
Иван Кузьмицкий писал(а):
В общем, синтаксическая раскраска - это вчерашний день. Архитектурная раскраска - вот современный подход!
Даже в рамках обсуждения в этой ветке высказано несколько подходов к семантической раскраске. А теперь представьте: вам необходимо читать код другого человека (с которым вы вообще не знакомы). А он красил текст совсем не так, как вам хотелось.
Мало ли что мне хотелось. Если есть чёткий корпоративный стандарт - ему должно следовать. Иначе это детский сад - васе хочется раскрашивать лопаткой, а пете палочкой.
ssyy писал(а):
И вам легко будет такое читать? Очевидно, нет. Стало быть, напрашивается один из двух выводов:
1) Ручная раскраска далеко не так полезна, как её преподносят.
2) Среда, где применяется ручная раскраска, не предназначена для программирования командами.

Я применял автораскраску синтаксиса несколько лет, просто не зная о другой возможности. И мне казалось, что раскрашивать синтаксис - это обязательная черта среды. Когда я познакомился с ББ, по привычке долго раскрашивал синтаксис (с помощью компонента автораскрашивания Master, авт. С. Губанов). А когда началось плотное программирование на ББ, то случилось страшное: раскраска синтаксиса стала мешать и отвлекать внимание! Я пока не могу сформулировать, почему. Хотя для начинающих осваивать синтаксис языка - это удобно, признаю! Чем сложнее язык, тем удобнее. Думаю, для оберона это несущественно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 16:54 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Иван Кузьмицкий писал(а):
...по привычке долго раскрашивал синтаксис (с помощью компонента автораскрашивания Master, авт. С. Губанов). А когда началось плотное программирование на ББ, то случилось страшное: раскраска синтаксиса стала мешать и отвлекать внимание!

У меня та же самая история, тоже потом "случилось страшное".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 16:59 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
ssyy писал(а):
Даже в рамках обсуждения в этой ветке высказано несколько подходов к семантической раскраске. А теперь представьте: вам необходимо читать код другого человека (с которым вы вообще не знакомы). А он красил текст совсем не так, как вам хотелось. И вам легко будет такое читать? Очевидно, нет.
Если бы я не имел опыт в чтении таких исходников, то в таком случае всё, как минимум, было бы не очевидно.

Цель ручной раскраски - обратить внимание. То есть, автор тем самым говорит: "сюда смотри внимательнее". Приведённые выше примеры раскрасок говорят о том, что виды раскрасок преследуют разные цели (наиболее нужные в данный момент авторам).

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

Если действительно от ручной раскраски присутствует дискомфорт, то автоматическая мешает ещё больше.

P.S. Я имел дело с исходниками среды и исходниками некоторых компонентов. Выделения, пусть и различные у разных авторов, довольно сильно мне помогали.

А автоматическая раскраска, можно сказать, ничего не выделяет. Имеем дело с однородной пестрящей массой.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 17:43 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Архитектурная раскраска - вот современный подход!


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 17:51 

Зарегистрирован: Вторник, 25 Апрель, 2006 16:21
Сообщения: 2180
Откуда: Нижний Новгород
Vlad писал(а):
Иван Кузьмицкий писал(а):
Архитектурная раскраска - вот современный подход!


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


Кстати, а что такое DSL? А то у меня ассоциации только с Digital Subscriber Line ;-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 17:55 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Alexey Veselovsky писал(а):
Кстати, а что такое DSL? А то у меня ассоциации только с Digital Subscriber Line ;-)


Domain Specific Language: http://en.wikipedia.org/wiki/Domain_Specific_Language


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 18:22 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Vlad писал(а):
Иван Кузьмицкий писал(а):
Архитектурная раскраска - вот современный подход!


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


Vlad, я на 4GL DSL программил много лет. Не срослось у меня с ним :) Кстати, там тоже была раскраска строго синтаксическая...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 19:00 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Иван Кузьмицкий писал(а):
Vlad, я на 4GL DSL программил много лет.


А речь не идет о каком-то конкретном DSL. Нужен конечный автомат - вы бертете DSL конечного автомата, нужен парсер - берете DSL парсера. Если "взять" для вашего языка/среды сложно - сидите и форматируете/комментируете/раскрашиваете.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 19:02 
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Язык с "отсутствующим синтаксисом" имеете в виду? Лисп-Форт? :-)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 09 Октябрь, 2008 19:11 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Илья Ермаков писал(а):
Язык с "отсутствующим синтаксисом" имеете в виду? Лисп-Форт? :-)


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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2025, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB