OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 19 Октябрь, 2019 15:12

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Свёртка кода (Folding)
СообщениеДобавлено: Пятница, 29 Июль, 2016 15:32 

Зарегистрирован: Пятница, 13 Март, 2009 16:36
Сообщения: 819
Откуда: Казань
Сейчас читаю одну статью ("A Conceptual Model for Folding" ftp://ftp.cc.gatech.edu/pub/groups/reve ... ajTR08.pdf), там написано:
Цитата:
"The primary weapon in program understanding is abstraction, the ability to selectively recognize, label and then ignore details. Modern Interactive development environments (IDEs), such as Eclipse and Visual Studio, support abstraction via folding, i.e., the ability to selectively hide and reveal source code segments."

Основное оружие для понимания программ - это абстракция, то есть способность выборочно найти, пометить нужное и игнорировать детали. Современные интегрированные среды разработки (IDE), такие как Eclipse и Visual Studio поддерживают абстракцию через свёртку кода, то есть способность выборочно прятать и снова показывать сегменты исходного кода.

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

Также есть другой метод свертки кода, который описан в статье "Reverse Literate Programming" http://www.literateprogramming.com/rlp.pdf. Там говорится о том, что путем сворачивания кода можно применять метод пошагового уточнения.

Собираюсь разработать IDE для Оберон-07, где бы совмещались оба подхода. И думаю о том, как единообразно сделать свертку и развертку кода, так как метод с + и - из современных IDE здесь уже не подходит, так как в одной строке может быть и код, который разворачивается и начало какого-нибудь оперататора, например FOR, который тоже может сворачиваться и разворачиваться. Ставить треугольники перед всеми конструкциями в коде, которые могут сворачиваться и разворачиваться тоже как-то не очень хорошо, так как слишком много треугольников будет в коде. Как вариант, конечно, можно совместить оба эти подхода, + и - слева для свёртки конструкций языка программирования, а треугольники для свертки кода - пошагового уточнения.

Что вы думаете по поводу фолдинга, насколько это важно и нужно? И как это лучше сделать чтобы было удобно этим пользоваться?


Вложения:
PlusMinus.png
PlusMinus.png [ 780.94 КБ | Просмотров: 1902 ]
Folding.png
Folding.png [ 32.16 КБ | Просмотров: 1902 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свёртка кода (Folding)
СообщениеДобавлено: Пятница, 29 Июль, 2016 16:11 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 245
В принципе, и тот, и другой фолдинг - чушь, но если первый в силу привычки уже и не замечаю в этих ваших IDE, хоть и почти не пользуюсь, то второй я вообще не понимаю, зачем нужен. Пошаговое уточнение? Да без проблем: пишем сначала
Код:
FOR i := first TO last DO
  PrintSymbol(i)
END

затем уточняем написанием тела процедуры PrintSymbol. На кой тут какой-то дополнительный инструмент, если сам ЯП даёт вам процедуры в руки? И ещё такой момент: это уточняющее описание блока кода будет, как я понял, храниться в особого вида комментарии. Тогда возникает старая-добрая проблема поддержки комментариев в актуальном состоянии при изменениях кода. Нет уж, простите, нафиг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свёртка кода (Folding)
СообщениеДобавлено: Пятница, 29 Июль, 2016 16:25 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 714
Откуда: Барнаул
Свертка - удобная штука, всё остальное - мракобесие, да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свёртка кода (Folding)
СообщениеДобавлено: Пятница, 29 Июль, 2016 16:27 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2316
Откуда: Россия, Томск
Rifat писал(а):
слишком много треугольников будет в коде
Треугольники можно отображать при приближении курсора мыши, а в остальное время скрывать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свёртка кода (Folding)
СообщениеДобавлено: Воскресенье, 14 Август, 2016 14:36 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1040
Откуда: Россия, Чебоксары
kemiisto писал(а):
затем уточняем написанием тела процедуры PrintSymbol. На кой тут какой-то дополнительный инструмент
Свёртка кода с помощью процедур рвёт контекст восприятия. При возрастании количества процедур (распухание словаря) работать становится невозможно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Свёртка кода (Folding)
СообщениеДобавлено: Понедельник, 15 Август, 2016 06:54 

Зарегистрирован: Суббота, 16 Февраль, 2008 07:58
Сообщения: 345
Откуда: Россия, Стерлитамак
Alexey_Donskoy писал(а):
Свёртка кода с помощью процедур рвёт контекст восприятия. При возрастании количества процедур (распухание словаря) работать становится невозможно.

Главное правильно словарь составлять. Но опять же, например в 1С пытка, когда приходится чуть ли не каждую процедуру разделить на 2, чтобы выполнить требования клиент-серверной архитектуры, или асинхронности. Такой код точно, воспринимать намного сложнее. Хотя человек, пожалуй, ко всему привыкнуть может, когда нет альтернатив (или они неизвестны)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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