metaclass: (Default)
[personal profile] metaclass
Кроме всего прочего, меня еще посещает мысль, что привычное программирование в виде последовательного набора линейного текста слабо совместимо с идеями DSL и метапрограммирования, из-за чего в новых языках возникают жуткие малочитабельные конструкции.

Вот к примеру - нужно вставить в код двумерную таблицу каких-нибудь коэффициентов фильтра дурачных. Какой у нас есть выбор?

1) Записать ее в виде массива прямо на нашем языке программирования. Выглядит криво, редактировать неудобно, менять в рунтайме не получится, зато обращение быстрое.

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

3) Запилить это дело в СУБД, грузить оттуда. Все то же самое, что с файлом, но еще нужен контекст коннекта к БД. Зато можно сделать редактор таблицы, бо если есть БД, то в проекте и вся инфраструктура CRUD-редакторов обычно наличествует.

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

В идеале это было бы что-то вроде: мы пишем некий код, нам понадобилось вставить что-то что в виде кода описывается с трудом. Мы пишем прямо тут в коде некую команду/ссылку на класс/чорти-чо и сбоку бантик но самое главное- чтобы это не более 5-15 символов занимало, и тут же запускаем на исполнение и у нас прямо посреди текстового редактора вылазит редактор в виде электронной таблицы/дизайнер GUI/поле для ввода SQL запроса и некий набор опций "куда сохранять результат(отдельный файл, ресурс, прямо в коде, бд, настройки) и без всяких хождений по сотне файлов проекта мышой начинаем править объект в естесвенном и удобном для него виде.
Причем если нам понадобится - мы можем написать прямо для проекта своих таких произвольных редакторов и вызывать их. Да еще и оставить это дело в проекте в рунтайме для настройки его на месте.

Отдаленно похожим на такое является intellisense - что бы там не говорили гуру с бесконечной памятью, лучше набрать пару-тройку символов идентификатора и дальше выбрать из списка, чем набирать идентификатор длиной в 10-15 символов целиком. Это как бы получается "редактор для более удобного ввода идентификаторов".

Вроде, насколько я помню, что-то похожее есть в IDEA, с ее рефакторингами и подсказками.

И самое главное - что это дело требует меньших усилий для переключения контекста работы, как сейчас - переход от кода к SQL запросам или редактированию GUI требует перехода куда-то хз куда в IDE, да еще не всегда на это горячие клавиши есть.

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

Date: 2008-12-21 02:38 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
По-моему, лучше всего начать с аналитики предметной области и устаканиванием самого языка

Date: 2008-12-21 03:01 pm (UTC)
From: [identity profile] vp.livejournal.com
Афтар же не об этом пишет. Имеется ввиду, что напрочь отсутствуют средства, которые перекликаются с ресурсами что-ли... Но чтоб были более гибкие сущности, органично вставляемые в код. Хочу - вставил картинку в редактируемом виде (аналог как засовываются битмапы в бордандовских IDE), хочу - вставил набор данных 1000х1000 строк, причем так, чтоб потом это можно было за 1 секунду поменять, а не 1000 строк в коде добавлять +1 элемент через запятую. Языки то развиты.. А вот таких полезных прибамбасов нету.

Date: 2008-12-21 03:10 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Это лишь говорит о том, что нету языка, который поддерживает такие средства редактирования + IDE.
Но я лично глубоко сомневаюсь в удобстве такого подхода.
Проблема не в рюшечках "редактировать на месте",
Вот Qt вполне успешно решили эту проблему различного представления данных - без интеграции вставки картинок в исходный код. Точнее, картинки я в исходный код могу вставлять, но не руками, а через ресурсы. А вот на эти ресурсы - транслятор их в плюсовые сорцы, что линкуются в общем порядке.
Вопрос - в языке, и его интепорабельности к конкретной предметной области.
Об этом я и написал в своём комменте.

Date: 2008-12-21 08:12 pm (UTC)
From: [identity profile] axiger.livejournal.com
> Это лишь говорит о том, что нету языка, который поддерживает...
Forth

Date: 2008-12-21 08:14 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Расскажите, мне, пожалуйста, каким образом я могу нарисовать GUI-форму средствами forth, вставить в неё картинку, и повесить обработку события "пользователь джвады кликнул по картинке"

Date: 2008-12-21 08:31 pm (UTC)
From: [identity profile] vp.livejournal.com
оо! сейчас придут гики, и скажут, что
1. формы не нужны
2. если нужно взаимодействие с пользователем, то это нужно делать только через веб
3. если нужны формы, то пользуйтесь связкой +питон +лурвлурв +удвудвоуд +улврулвру
4.
5.
..

Date: 2008-12-23 12:43 pm (UTC)
From: [identity profile] axiger.livejournal.com
Разными образами
http://fforum.winglion.ru/viewtopic.php?t=1436&sid=b71414f6fa0d6208362027f72752fabd
(deleted comment)

Date: 2008-12-23 03:32 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
И где дизайнер? Я хочу формочку в дизайнере накидывать, а в сорцах уже только логику описывать

Date: 2008-12-23 05:02 pm (UTC)
From: [identity profile] axiger.livejournal.com
так бы и говорил, что тебе нужен RAD
я не знаю, поскольку сам не пользовался, но думаю есть такие. Впрочем, идеала нет - тут либо шашечки (DSL средствами языка, гибкие сущности) либо ехать (дизайнер форм, ооп.. etc).

Я вот например не смог найти дизайнер форм для GTK даже на сях (может плохо искал?), и я ничего не слышал про RAD в функциональных языках. Учитывая это думаю, что не RAD`ом единым...

Date: 2008-12-23 05:29 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Можно посмотреть на дизайнер Qt
По форме генерируется валидный плюсовый (жабный, питоновский) код, который нельзя модифицировать, но который можно инклудить (импортить), наследоваться от него, и так далее прямо в коде.
Также можно подключать обработчики на события виджетов из этой формы (т.е. подключать обработчики на события объектов виджетов из сгенерированного кода).
Ничего лучше я пока не встречал. Но такого, на мой взгляд, достаточно.

Date: 2008-12-23 08:51 pm (UTC)
From: [identity profile] anatoly borodin (from livejournal.com)
# cat /usr/ports/devel/glade2/pkg-descr
Glade is a RAD tool to enable quick & easy development of user interfaces
for GTK+/GNOME. It can generate the C source code needed to create
the interfaces designed within Glade's interface editor.

WWW: http://glade.gnome.org/

ы?

Date: 2008-12-23 09:05 pm (UTC)
From: [identity profile] axiger.livejournal.com
Все понял, ушел курить матчасть
(deleted comment)

Date: 2008-12-21 03:21 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
У IDEA есть MPS.
Я пока этого монстра не смотрел, но "Это что-то типа".

Date: 2008-12-21 03:33 pm (UTC)
From: [identity profile] lupus-lupusum.livejournal.com
automation, наверное там можно что-то сделать

Date: 2008-12-21 04:45 pm (UTC)
From: [identity profile] kkirsanov.livejournal.com
--И самое главное - что это дело требует меньших усилий для переключения контекста работы, как сейчас - переход от кода к SQL запросам или редактированию GUI требует перехода куда-то хз куда в IDE, да еще не всегда на это горячие клавиши есть.

Если не ошибаюсь то этим в Eclipse как ра mylin занимается http://www.eclipse.org/mylyn/

Date: 2008-12-21 09:09 pm (UTC)
From: [identity profile] thesz.livejournal.com
"Гуру с бесконечной памятью"

ААА!!! ;)

Двумерные картинки вместо линейного одномерного текста так и не стартовали на моей памяти.

Date: 2008-12-21 09:25 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Стартовали, массово.
Все поганьские гуи-дизайнеры, asp.net-дизайнеры, редакторы печатных форм и прочая печаль. Стандартная реализация декларативного описания: лежит куча объектов, связаны либо относительным расположением друг от друга, либо в инспекторе указаны ссылки друг на друга.

Они как бы всем хороши, кроме того, что для их расширения и переделки под себя обычно приходится лезть в ужасные дебри(если это вообще возможно), полуавтоматической генерации того что в них дизайнится из каких-либо других структур данных нет, и переход между текстом-кодом, дизайнером и инспектором объектов - обязательно ТОЛЬКО мышью и не менее чем несколькими кликами и каждый из которых должен не менее секунды отрабатывать (делать горячие клавиши, да еще быстро работающие запрещено - тогда программисты смогут быстро работать, а это запрещено рыночными соображениями).

Date: 2008-12-21 11:07 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
Угу, в Дельфи можно было свой редактор свойств наколбасить и прямо у живого компонента в дизайн-тайме что хошь накорябать.

Date: 2008-12-22 07:06 am (UTC)
From: [identity profile] vp.livejournal.com
да, вот нечто подобное и нужно. Но насколько известно, по такому пути кроме борланда никто не пошел, даже ресурсы формы вместо отдельного хранилища стали пихать в основной код и парсить пару раз чтоб им пусто было

Date: 2008-12-21 10:45 pm (UTC)
From: [identity profile] slonopotamus.livejournal.com
Почему-то напомнило мне Squeak, в котором приложение и ide существуют в одной виртуальной машине и можно себе на ходу новые фичи писать и сразу их использовать.

Date: 2008-12-22 01:11 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, идея частично оттуда и происходит :)

Date: 2008-12-22 09:30 am (UTC)
From: (Anonymous)
Посмотрите на BlackBox Component Builder..

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 16th, 2025 05:53 am
Powered by Dreamwidth Studios