OberonCore https://forum.oberoncore.ru/ |
|
Семантический редактор https://forum.oberoncore.ru/viewtopic.php?f=93&t=1542 |
Страница 25 из 34 |
Автор: | Владислав Жаринов [ Воскресенье, 09 Сентябрь, 2012 12:14 ] |
Заголовок сообщения: | Re: Семантический редактор |
Думаю ещё о том, чтобы проект представлять "отнесённым к платформе исполнения"... примерно как в этом посте описано... Тут бы и параллельное программирование использоовалось... через спецификацию взаимодействий. И автоматное (скажем, протоколы каналов можно автоматами представлять... а также и исполнителей). И зависимости решения бы описывалось через схемы ТП... для совместного выполнения. И гонки процессов в перспективе проверялись бы... И чтоб можно было, скажем, задать вместо одного сервера/клиента много и наоборот - и при этом перераспределить программируемые функции между ними в среде... |
Автор: | Сергей Прохоренко [ Воскресенье, 09 Сентябрь, 2012 12:40 ] |
Заголовок сообщения: | Re: Семантический редактор |
Дмитрий Грачёв писал(а): Сергей Прохоренко писал(а): Валерий Лаптев писал(а): 4. Начала набираться статистика по операциям рефакторинга. Например, возникла потребность в операции перестановки соседних операторов. Мне, например, такая операция в голову не приходила. Хватаем оператор или блок мышкой и сдвигаем вверх или вниз в произвольное место. Если туда разрешено вставить, то это обозначается курсором вставки в виде горизонтальной линии. Отпускаем левую кнопку мыши, и происходит необходимое перемещение кода. Например, можно передвинуть код вовнутрь блока или, наоборот, из блока наружу. Да, и тоже самое Ctrl+X/Ctrl+V. Но Валерий Викторович не хочет пока такую штуку студентам давать. Хотя это вроде не копирование, и ничего криминального тут нет. Он передумает. Студенты заставят. Я забыл добавить, что должен поддерживаться принцип "только один оператор на строке", чтобы облегчить перемещения кода вверх-вниз. Кстати, идея "унифицированного контейнера" будет реализовываться? Она мне очень понравилась. |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 13:00 ] |
Заголовок сообщения: | Re: Семантический редактор |
Владислав Жаринов писал(а): Как с отражением наследования и над-императивных подходов (возможно, как здесь предполагалось)?.. Естественно, мы будем среду развивать. В разные стороны. Но сейчас первоочередные задачи такие: 1. Сделать приличный хелп - прямо в среде редактор принимает все, что можно в rtf. Но хелп надо сначала спроектировать, иерархию построить. И потом физически в среду все это всунуть. Да еще поиск привинтить. 2. Наследование Дима Грачев практически сделал - там кое-какие мои соображения еще допилить... Кстати, от множественного мы совсем отказались по результатам бесед здесь на форуме. Будем использовать композицию-агрегацию. 3. Собрать статистику по рефакторингу и реализовать стройную систему операций рефакторингов. 4. Посмотреть и помыслить о расширении стандартной библиотеки. Какие модули еще доделать... 5. Сделать на основе комментариев средства типа предусловий-постусловий. Как в эйфеле. 6. внедрить в среду систему лабов и особенно модели оценивания работы студентов. 7. пристегнуть средства проектирования-рисования разнообразных графических схем (как минимум UML и Дракон) Это даст возможность обратиться к автоматному программированию. И где-то можду этими делами подумаем о функциональной парадигме в рамках вреды. |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 13:07 ] |
Заголовок сообщения: | Re: Семантический редактор |
Сергей Прохоренко писал(а): Дмитрий Грачёв писал(а): Да, и тоже самое Ctrl+X/Ctrl+V. Но Валерий Викторович не хочет пока такую штуку студентам давать. Хотя это вроде не копирование, и ничего криминального тут нет. Он передумает. Студенты заставят. Я забыл добавить, что должен поддерживаться принцип "только один оператор на строке", чтобы облегчить перемещения кода вверх-вниз. Кстати, идея "унифицированного контейнера" будет реализовываться? Она мне очень понравилась. 1. Не передумаю. Но требуется физически состряпать документ о классификации операций рефакторинга - как мы сейчас это представляем. 2. Кстати, появились две девочки, которые будут заниматься сайтом и форумом по нашей среде. Скоро можно будет там. 3. Когда я думал об этом - была мысль этот механизм сделать встроенным в язык. Сейчас мы как-то об этом подзабыли - из-за стойкого убеждения минимизации языка. Но я к этой идее вернусь попозжа. На базе нашего встроенного массива можно будет реализовать. А пока во фреймворке сделаем модули - стандартные структуры данных. |
Автор: | Владислав Жаринов [ Воскресенье, 09 Сентябрь, 2012 13:14 ] |
Заголовок сообщения: | Re: Семантический редактор |
А сайт будете делать тоже в среде? Вот насчёт "пристегнуть"... как раз хотелось бы естественной интеграции средств спецификации... отсюда и мысли выше... Не вообще чего-то, что опубликовано, а только необходимые средства в нужных местах... Кстати, механизм N-мерной таблицы, представленный в этом посте, как Вы можете оценить?.. |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 13:19 ] |
Заголовок сообщения: | Re: Семантический редактор |
Вот для обучения работы с файлами состряпали простейший модуль Файлы: Код: модуль Файлы подключить ФайлыБаза; подключить Строки; константа целое Чтение = 0; константа целое Запись = 1; константа целое Дозапись = 2; #Используется для ввода/вывода данных из файловой системы Объект данного типа можно получить функцией "Открыть(путь, режим): Файл"# откр тип Файл откр поле-ФайлыБаза.Файл базовыйФайл; откр поле-ФайлыБаза.Поток базовыйПоток; конец Файл; #Открывает файл для чтения, записи или дозаписи В качестве переменной "режим" должна быть указана одна из констант Чтение, Запись или Дозапись# откр функция(выходной Строки.Строка путь, выходной целое режим):Файл Открыть переменная-Файл файл; присвоить файл.базовыйФайл := ФайлыБаза.СоздатьФайл(путь); присвоить файл.базовыйПоток := файл.базовыйФайл.Открыть(режим); вернуть файл; конец Открыть; #Закрывает файл, делая его доступным для открытия в новом режиме# откр процедура(выходной Файл файл) Закрыть вызвать файл.базовыйПоток.Закрыть(); конец Закрыть; #Возвращает истину, если достигнут конец файла# откр функция(выходной Файл файл):булев КонецФайла вернуть файл.базовыйПоток.Конец(); конец КонецФайла; #Читает строку из файла до символа "\n"# откр функция(выходной Файл файл):Строки.Строка ПрочитатьСтроку вернуть файл.базовыйПоток.ПрочитатьСтроку(); конец ПрочитатьСтроку; #Записывает строку в файл# откр процедура(выходной Файл файл, выходной Строки.Строка строка) ЗаписатьСтроку вызвать файл.базовыйПоток.ЗаписатьСтроку(строка); конец ЗаписатьСтроку; начало конец Файлы. Файлы - текстовые и работают только со строками. Студень сначала должен строку сформировать функциями преобразования и используя модуль Строки, а потом вывести. А вот и модуль строки - уже реально используемый в среде: Код: модуль Строки откр тип Строка закр поле-массив[256] символ массивСимволов; закр поле-целое размер; откр метод(Строка этот)():целое Длина вернуть этот.размер; конец Длина; откр метод(Строка этот)(входной целое номер):символ ВзятьСимвол вернуть этот.массивСимволов[номер]; конец ВзятьСимвол; откр метод(Строка этот)(входной целое номер, входной символ симв) УстановитьСимвол присвоить этот.массивСимволов[номер] := симв; конец УстановитьСимвол; откр метод(Строка этот)(выходной Строка строка) Склеить переменная-целое новыйРазмер := этот.размер + строка.Длина(); если новыйРазмер > этот.массивСимволов.размер() то переменная-массив[новыйРазмер] символ новыйМассив; переменная-целое и := 0; пока и < новыйРазмер повторять если и < этот.размер то присвоить новыйМассив[и] := этот.ВзятьСимвол(и); иначе присвоить новыйМассив[и] := строка.ВзятьСимвол(и - этот.размер); конец ветвления; присвоить и := и + 1; конец цикла; присвоить этот.массивСимволов := новыйМассив; иначе переменная-целое и := этот.размер; пока и < новыйРазмер повторять присвоить этот.массивСимволов[и] := строка.ВзятьСимвол(и - этот.размер); присвоить и := и + 1; конец цикла; конец ветвления; присвоить этот.размер := новыйРазмер; конец Склеить; откр метод(Строка этот)(выходной массив[] символ массивСимволов) Сцепить переменная-целое новыйРазмер := этот.размер + массивСимволов.размер(); если новыйРазмер > этот.массивСимволов.размер() то переменная-массив[новыйРазмер] символ новыйМассив; переменная-целое и := 0; пока и < новыйРазмер повторять если и < этот.размер то присвоить новыйМассив[и] := этот.ВзятьСимвол(и); иначе присвоить новыйМассив[и] := массивСимволов[и - этот.размер]; конец ветвления; присвоить и := и + 1; конец цикла; присвоить этот.массивСимволов := новыйМассив; иначе переменная-целое и := этот.размер; пока и < новыйРазмер повторять присвоить этот.массивСимволов[и] := массивСимволов[и - этот.размер]; присвоить и := и + 1; конец цикла; конец ветвления; присвоить этот.размер := новыйРазмер; конец Сцепить; откр метод(Строка этот)(выходной массив[] символ массивСимволов) Инициализировать вызвать этот.Сцепить(массивСимволов); конец Инициализировать; откр метод(Строка этот)(входной целое номер, входной целое длина):Строка ВзятьПодстроку переменная-целое и := 0; переменная-массив[длина] символ строка; пока и < длина повторять присвоить строка[и] := этот.ВзятьСимвол(и + номер); присвоить и := и + 1; конец цикла; переменная-Строка подстрока; присвоить подстрока.массивСимволов := строка; вернуть подстрока; конец ВзятьПодстроку; откр метод(Строка этот)(выходной Строка подстрока):целое НайтиПодстроку переменная-целое и := 0; переменная-целое ж; пока и < этот.Длина() - подстрока.Длина() + 1 повторять присвоить ж := 0; пока ж < этот.Длина() & подстрока.ВзятьСимвол(ж) = этот.ВзятьСимвол(и + ж) повторять если ж = подстрока.Длина() - 1 то вернуть и; конец ветвления; присвоить ж := ж + 1; конец цикла; присвоить и := и + 1; конец цикла; вернуть minus1; конец НайтиПодстроку; конец Строка; #Возвращает строку из массива символов или строковой константы# откр функция(выходной массив[] символ массивСимволов):Строка Инициализировать переменная-Строка строка; вызвать строка.Инициализировать(массивСимволов); вернуть строка; конец Инициализировать; ## откр процедура(выходной Строка строка1, выходной Строка строка2) Склеить вызвать строка1.Склеить(строка2); конец Склеить; ## откр процедура(выходной Строка строка, входной массив[] символ массивСимволов) Сцепить вызвать строка.Сцепить(массивСимволов); конец Сцепить; ## откр функция(выходной Строка строка, выходной целое номер):символ ВзятьСимвол вернуть строка.ВзятьСимвол(номер); конец ВзятьСимвол; ## откр процедура(выходной Строка строка, входной целое номер, входной символ симв) УстановитьСимвол вызвать строка.УстановитьСимвол(номер, симв); конец УстановитьСимвол; ## откр функция(выходной Строка строка):целое Длина вернуть строка.Длина(); конец Длина; ## откр функция(выходной Строка строка, входной целое номер, входной целое длина):Строка ВзятьПодстроку вернуть строка.ВзятьПодстроку(номер, длина); конец ВзятьПодстроку; ## откр функция(выходной Строка строка, входной Строка подстрока):целое НайтиПодстроку вернуть строка.НайтиПодстроку(подстрока); конец НайтиПодстроку; начало конец Строки. Тут и независимы функции, и тип Строка с методами. |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 13:21 ] |
Заголовок сообщения: | Re: Семантический редактор |
А вот, кстати, как мы перечисления моделируем... Код: модуль Fonts
константа целое Ariel = 0; константа целое TimesNewRoman = 1; константа целое Consolas = 2; константа целое Verdana = 3; константа целое MsComicSans = 4; начало конец Fonts. |
Автор: | Владислав Жаринов [ Воскресенье, 09 Сентябрь, 2012 13:32 ] |
Заголовок сообщения: | Re: Семантический редактор |
Ну, это да, такой очевидный ход... Как я вижу, всё-таки процедуры в редакторе бывают и довольно развитые... так что структурные скобки не помешают... Вместо дракон-слепышей на пока подумал бы о двумерных скобках - это когда текст организован, как здесь могли видеть: viewtopic.php?p=73919#p73919. Только с заменой уже ключевых слов "маршрутных". Их можно и псевдографикой табличной рисовать... Кстати, там тоже подразумевается, что на одной строке марша - один элементарный оператор/выражение. Имена-то м.б. и длинные, я так понимаю... так что для "осмысленных" величин хорошо бы брать смысловые... а всякие "и" - для вспомогательных (типа параметра итерации) наверное... |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 13:57 ] | ||
Заголовок сообщения: | Re: Семантический редактор | ||
Владислав Жаринов писал(а): Ну, это да, такой очевидный ход... Как я вижу, всё-таки процедуры в редакторе бывают и довольно развитые... так что структурные скобки не помешают... Вместо дракон-слепышей на пока подумал бы о двумерных скобках - это когда текст организован, как здесь могли видеть: viewtopic.php?p=73919#p73919. Только с заменой уже ключевых слов "маршрутных". Их можно и псевдографикой табличной рисовать... Кстати, там тоже подразумевается, что на одной строке марша - один элементарный оператор/выражение. Имена-то м.б. и длинные, я так понимаю... так что для "осмысленных" величин хорошо бы брать смысловые... а всякие "и" - для вспомогательных (типа параметра итерации) наверное... У нас есть блоки. Которые схлопываются-развертываются. Вот как это в редакторе выглядит:
|
Автор: | Владислав Жаринов [ Воскресенье, 09 Сентябрь, 2012 13:59 ] |
Заголовок сообщения: | Re: Семантический редактор |
ОК... я имел в виду, чтобы был и "профэссиональный" вариант с заменой всяких ЕСЛИ-ТО-ИНАЧЕ и пр... и двумерной компоновкой остального... Из схем в первую очередь, мне кажется, просятся как раз вьюшки композиции/агрегации в разных аспектах - наследования, модулей/импорта, потенциальной связи процедур по вызовам, сообщениям (включая порождение/снятие/приостановку), хранению (совместно используемые файлы) вводу/выводу (кто в какие логи/буфера может писать/читать). Ну и схемы зависимостей при совместном исполнении (за счёт каких элементов контекста одни процессы влияют на другие). Только не так убого, как в ФИЭЛДе... Потом по его мотивам можно подумать о визуализации рантайма (реализация композиций/агрегаций, состояние памятей). Но первое - потенциальные... чтобы учни хотя бы "многомерный образ проекта" могли строить... Ну и схемы данных, конечно... только они д.б. согласованы с классами для объектных языков... |
Автор: | Владислав Жаринов [ Воскресенье, 09 Сентябрь, 2012 19:40 ] |
Заголовок сообщения: | Re: Семантический редактор |
Валерий Лаптев писал(а): 2. Кстати, появились две девочки, которые будут заниматься сайтом и форумом по нашей среде. Скоро можно будет там. Ну, тогда сюда ссылочку добавить... и материал приобретёт законченность... а пока напишем вместо "планируется" - "начато внедрение в учебный процесс"... Ещё на ру-борде, может, представить - и хватит... дальше сами свой коммерческий продукт рекламируйте... Да, а что это за программа, которую теперь успевают набрать, а раньше нет? Показать можно? А то тут (точнее, там ) люди спрашивают... Вообще хорошо бы свежий деморолик законченной работы (может, как раз этой) сделать... ещё лучше, если бы был для сравнения "по-старому"... |
Автор: | Валерий Лаптев [ Воскресенье, 09 Сентябрь, 2012 21:19 ] |
Заголовок сообщения: | Re: Семантический редактор |
Я с Дмитрием пообщаюсь. Он сейчас в аспирантуру поступает. Как поступит - начнем заниматься оформлением доков для участия в Старте, потом в БИТе. Там все и сделаем. И ролик, и тексты наработаем, и хелп пригвоздим... |
Автор: | Alexey_Donskoy [ Понедельник, 10 Сентябрь, 2012 08:17 ] |
Заголовок сообщения: | Re: Семантический редактор |
Валерий Лаптев писал(а): Вот как это в редакторе выглядит: Ужасно, ужасно...- Имена переменных "этот", "и" - насилие над языком и уж точно - над когнитивной эргономикой! - И по-прежнему никто не хочет по-человечески комбинировать текст с графикой. Поймите же наконец, что текстовые конструкции "иначе", "конец ..." есть артефакты сериализации алгоритма (его отображения в линейную строку символов). И ничего принципиально полезного в этой форме отображения нет (кроме необходимости компиляции этой строки мозгом в некую когнитивную структуру - неизвестно, кстати, пользы тут больше или не пользы ). - линии, показывающие иерархический уровень (отступы блоков) - просто убийственны. Даже без них, с одними отступами, пожалуй, и лучше будет. Вот что бы не нарисовать скруглённую рамку с кнопкой-"выноской", прикреплённой на нужном уровне (да хоть просто фигурную скобку в минимальном варианте)? Так, кстати, и надобность в лишних конструкциях для сериализации отпадает. Никаких "концов" и "бегинов". Вот ещё один принцип когнитивной эргономики родился у меня: надо чётко визуально разделять смысловую информацию ("что") от вспомогательной ("как"), в том числе маршрутной. О чём я тут уже много лет говорю, а воз и ныне там... Особенно актуально это для текста. Но и в том же Драконе есть такая проблема... |
Автор: | Сергей Прохоренко [ Понедельник, 10 Сентябрь, 2012 09:24 ] |
Заголовок сообщения: | Re: Семантический редактор |
Так гораздо короче, красивее и понятнее: Вложение: Skobka_2.jpg [ 3.95 КБ | Просмотров: 8624 ] "Точка с запятой", как и ключевое слово "конец/end" - тоже пример "сериализации алгоритма (его отображения в линейную строку символов)", т.е. атавизм. |
Автор: | Валерий Лаптев [ Понедельник, 10 Сентябрь, 2012 10:16 ] |
Заголовок сообщения: | Re: Семантический редактор |
Мы не собираемся делать революция прямо сейчас... Вот пообкатаем среду - там и изменения-развитие настанет черед делать. |
Автор: | Владислав Жаринов [ Понедельник, 10 Сентябрь, 2012 11:47 ] |
Заголовок сообщения: | Re: Семантический редактор |
Вот об чём и я... Ну, имена-то можно переправить сочинителю... и, как я понимаю, в семредакторе достаточно поменять в одном вхождении (или где-то в указателе сущностей, типа реестра переменных) - и автоматически заменится везде? А вот форму схемы - это уже к редактору. По замечанию: Alexey_Donskoy писал(а): Вот ещё один принцип когнитивной эргономики родился у меня: надо чётко визуально разделять смысловую информацию ("что") от вспомогательной ("как"), в том числе маршрутной. О чём я тут уже много лет говорю, а воз и ныне там... - да, это давно было сформулировано здесь: http://grafit-basis.narod.ru/L2/gen_struct_dan.html. И потом на форуме развёрнуто: viewtopic.php?p=68900#p68900 - а воз, действительно, и ныне добрался только до маршрутной структуры... Но не всё сразу...По деталям именно для маршрутной структуры. Да, скруглять углы скобок - это лучше. Табличные литеры этого не позволяют - но это решение для "облегчённой" реализации. А в данном редакторе, как я понимаю, всё равно и исхтексты в графмоде выводятся... и не моноширинно... так что пойдёт. И Алексей подтвердил сказанное чуть выше - уж если делать нетекстовое структурирование - то с заменой соответствующих текстоэлементов языка... Вот у Сергея стрелочка на конце скобки и есть обозначение цикла... а какой цикл (ПОКА, ДО, гибридный) - определяется относительным положением условия и подтел цикла... Однако, думаю, не фигурные скобки - потому, что эта форма уже занята под комментарии стандартно. Здесь и эргосмысл - прямые скобки указывают на выражение чего-то строгого, фигурные, "игривые" - чего-то неформального. Здесь и размещение пред/постусловий определяется - при прямых скобках именно. В развитие этого: Владислав Жаринов в viewtopic.php?p=73726#p73726 писал(а): ... - т.е. комменты всё-таки в свою колонку правее "полуторамерной" колонки исхтекста и со своими (фигурными) скобками к правому его краю. Структурные же скобки, как сейчас, слева от исхтекста - и утверждения как выноски от них.Т.е. каждой структурной скобке (заменяющей ключевые слова-указатели маршрутов) соответствует комментарий - как и каждому оператору. При "своей" скобке он и отображается. Интендация текста заменяется вложенностью скобок; текст располагается одномерно - в колонку строк. Это формат вьюшки исхтекста совместно с комментариями (в отличие от вида только исхтекста как "схемы со снятой графикой", где и скобки двумерны, и каждой оси порядка - своя колонка). Такие "атомарно-релятивные" комменты - прежде всего для утверждений о конструкциях, ограниченных скобками. Ну и для просто записей, включая ссылки на разные места в документах среды и во внешних. ... Для начала - хотя бы так (без возможности ещё и давать комментарии к произвольно выбранным группам строк, как в "Проекте Оберон" - для этого нужна отдельная колонка комментов во вьюшке и соответствующая система отношений в формате). Как я понимаю, "проблема в Драконе" имеется в виду прежде всего эта: Alexey_Donskoy писал(а): viewtopic.php?p=74302#p74302 - т.е. разрывы, если уж они есть, д.б. оправданными. Потому и в головном процессе здесь: viewtopic.php?p=73245#p73245 точки разрыва (на ветви) выбраны по законченным техоперациям (или группам техопераций - здесь отнесённых ко вспомогательным).... - да, и вообще запретить "силуэт", как создающий ненужные и вредные разрывы viewtopic.php?p=74485#p74485 Рэйлвэй Каген писал(а): смотрите на него, как на развёртку вырожденного тора. И ненавистные разрывы исчезнут! Да пожалуйста. Только любая развёртка по определению содержит разрыв И визуально он никуда не пропадает, как ни смотри...
Кроме того, наверное, уместнее говорить об операциях не "рефакторинга". В свете, например, этого обсуждения: viewtopic.php?f=86&t=3573. Есть что сказать и как могут строиться схемы, перечисленные здесь: viewtopic.php?p=74541#p74541 - по мере возможности... |
Автор: | Alexey_Donskoy [ Понедельник, 10 Сентябрь, 2012 11:48 ] |
Заголовок сообщения: | Re: Семантический редактор |
Валерий Лаптев писал(а): Вот пообкатаем среду - там и изменения-развитие настанет черед делать. Ресурсов больше уйдёт, чем если бы сразу делать как надо
|
Автор: | Владислав Жаринов [ Понедельник, 10 Сентябрь, 2012 11:50 ] |
Заголовок сообщения: | Re: Семантический редактор |
Да, если какие-то способы реализации "информационных представлений" жёстко связаны с архитектурой приложения... |
Автор: | Дмитрий Грачёв [ Понедельник, 10 Сентябрь, 2012 13:14 ] |
Заголовок сообщения: | Re: Семантический редактор |
Alexey_Donskoy писал(а): Валерий Лаптев писал(а): Вот пообкатаем среду - там и изменения-развитие настанет черед делать. Ресурсов больше уйдёт, чем если бы сразу делать как надо Никто не знает, как надо. У нас исследовательская работа. А по поводу скобочек - это вопрос привычек и вкусов. Тут не о чем спорить. |
Автор: | Alexey_Donskoy [ Понедельник, 10 Сентябрь, 2012 13:25 ] |
Заголовок сообщения: | Re: Семантический редактор |
Дмитрий Грачёв писал(а): Никто не знает, как надо. У нас исследовательская работа. Так исследуйте! У вас есть на чём исследовать, вот что очень хорошо. Цитата: А по поводу скобочек - это вопрос привычек и вкусов. Тут не о чем спорить. ЧСВ у программистов - обычное дело. Но достаёт часто. Что за подход такой? Дескать, сделал так, и хорошо, а кто недоволен, пусть идёт лесом со своим мнением.Есть же объективные критерии и подходы к эргономике, от них и надо отталкиваться. Когда землекопу предлагают убрать лопату и взять экскаватор, он упирается: "не, я лопатой буду, не надо спорить, дело вкуса!" Впрочем, и очевидные, казалось бы, вещи для многих не очевидны. Сейчас придёт "шеф" и скажет: "а докажите-ка, что ваш экскаватор лучше моей лопаты!" Ну, пусть будет так. Всё равно кому-то впоследствии велосипед изобретать придётся. Может, и вам же! |
Страница 25 из 34 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |