wizzard: (Default)
[personal profile] wizzard

Как еще можно представить программу, кроме исходного кода?
Отойдя от текстового представления, граф мне кажется самым логичным вариантом, т.к.программа (на java-like языке, на других языках сущности будут другие) - это несколько графов – владения (агрегация), наследования (иногда дерево), инстанцирования, data flow, вызовов функций и т.д.

Вопрос и в удобных сущностях (макросы LISP’a, системы типов Haskell/ML-подобных языков, DSL), и в их представлении.

Важно и представление, и удобное редактирование. Текст все умеют редактировать, а вот для графов настолько интуитивных и общепринятых редакторов пока не изобрели.

Если граф нарисовать на бумажке, он выглядит естественно.
Если граф изобразить из спичек и пластилина – тоже естественно.
А вот текстом – несподручно как-то. Деревья изображаются чудесно (JSON, s-expressions и прочая). Списки – еще проще. А с графами как?
Да, можно использовать имена и ссылки (см. большинство языков программирования, YAML и т.д.)

p.s. граф содержит, скажем, 1 млн вершин. я полагаю, что считать вершину графа эквивалентной строке кода – это ошибка не более чем на 1-2 порядка.
p.p.s. @hakrom: этот вопрос как бы говорит нам, что пора уже и не только текстом код рисовать 
мне почему-то кажется, что развитие пространственного воображения в таком подходе -- это очень хорошо

UPD3: примеры подобных инструментов:
National Instruments’ LabVIEW
Farb-Rausch и их werkzeug1
Wolfram Research и их Wolfram Mathematica
* EADaCS ev_genus’a
* Intentional Software Workbench
* дискуссия на похожую тему на gamedeff

Date: 2010-01-08 10:30 pm (UTC)
From: [identity profile] werdn.livejournal.com
У меня знакомый есть, который пытался такое провернуть — программирование на графах, редактор делал на жабе, чем окончилось не знаю, надо будет прошпионить

Date: 2010-01-08 10:59 pm (UTC)
From: [identity profile] udpn.livejournal.com
СВОБОДА! РАВЕНСТВО!

Date: 2010-01-08 10:58 pm (UTC)
From: [identity profile] udpn.livejournal.com
Забудь. До достаточного уровня декларативности, чтобы не понадобилось ни одной лямбда-функции, и все представилось простеньким графом кода, языкам расти ещё вечность. Просто забудь.

Удачный пример — линейка werkkzeug от farbrausch. Если аналогия не будет очевидной, хотя бы будет представление о графическом представлении =)

Date: 2010-01-08 11:23 pm (UTC)
From: [identity profile] werdn.livejournal.com
werkkzeug мне тоже нравится, но воображения или усидчивости не хватило разобраться в генераторе текстур третьей версии тула.
Хотя во втором интересно было анимашки делать трехмерные.

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2010-01-08 11:46 pm (UTC) - Expand

(no subject)

From: [identity profile] injury-time.livejournal.com - Date: 2010-04-11 12:50 pm (UTC) - Expand

(no subject)

From: [identity profile] werdn.livejournal.com - Date: 2010-04-11 03:48 pm (UTC) - Expand

Правильно!

From: [identity profile] injury-time.livejournal.com - Date: 2010-04-11 03:52 pm (UTC) - Expand

Date: 2010-01-08 11:26 pm (UTC)
From: [identity profile] shadow-aka-hf.livejournal.com
>все представилось простеньким графом кода
Откуда уверенность, что это в принципе возможно?

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2010-01-08 11:42 pm (UTC) - Expand

(no subject)

From: [identity profile] shadow-aka-hf.livejournal.com - Date: 2010-01-08 11:49 pm (UTC) - Expand

(no subject)

From: [identity profile] shadow-aka-hf.livejournal.com - Date: 2010-01-08 11:51 pm (UTC) - Expand

(no subject)

From: [identity profile] shadow-aka-hf.livejournal.com - Date: 2010-01-08 11:58 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2010-01-09 12:02 am (UTC) - Expand

(no subject)

From: [identity profile] shadow-aka-hf.livejournal.com - Date: 2010-01-09 09:43 am (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2010-01-08 11:41 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2010-01-08 11:48 pm (UTC) - Expand

Date: 2010-01-08 11:25 pm (UTC)
From: [identity profile] shadow-aka-hf.livejournal.com
Графы в качестве простого dsl периодически встречаются. В качестве языка общего назначения с графами есть ряд сложностей. Например: средства редактирования, версионность.

для меня

Date: 2010-01-08 11:59 pm (UTC)
From: [identity profile] sashman.livejournal.com
смысла в ↑прочитанном↑ не больше, чем в аутпуте генератора энтропии

Re: для меня

Date: 2010-01-09 12:05 am (UTC)
From: [identity profile] udpn.livejournal.com
Так всегда бывает при разработке чего-то чересчур сложного. Через пару месяцев наталкиваешься на ↑такое↑ в своём блокноте, аннигилируешь блокнот самым ужасным способом и переписываешь начисто и в логичном порядке. Разве у вас не так же?

(no subject)

From: [identity profile] sashman.livejournal.com - Date: 2010-01-09 12:24 am (UTC) - Expand

Date: 2010-01-09 12:21 am (UTC)
From: [identity profile] ivan-ghandhi.livejournal.com
Граф - это две параллельные стрелки, d0 и d1.

Date: 2010-01-09 12:31 am (UTC)
From: [identity profile] sashman.livejournal.com
да, вот сейчас тут придумают уберинтуитивную шнягу, а через пару лет авторов будут обвинять в очередном витке быдлокодинга.

как было с визуальным программированием ("накидать компонентов на форму")

Date: 2010-01-09 01:06 am (UTC)
From: [identity profile] trippin-witch.livejournal.com
это неизбежно. быдлокодер - это высшая ступень эволюции программера. абсолютный быдлокодер может совсем не знать ничего о программировании, но имеет шнягу, которая сама строгает программы с нужными функциями. с каждым этапом развития девелоперских инструментов быдлокодеры-современники будут приближаться к тому самому абсолютному быдлокодеру - обычному хумансу.

Date: 2010-01-09 12:56 am (UTC)
From: [identity profile] fi_mihej.livejournal.com
т.к. я о сабже тоже думал раньше - то могу сказать что согласен в том, что оно нужно. Кроме того, мне еще видится возможность юзания в языках, идей, лежащих в основе теговых фс (т.е. не некий сферический граф в вакууме, а более конкретная и простая для восприятия, структура). Ну и я - за отказ от редакторов, в которых юнитом до сих пор является буква, а не слово: если сейчас IDE, показывают перечень методов объекта - то в появлении оперирования над графами, я тоже большой проблемы не вижу.

Date: 2010-01-09 01:37 am (UTC)
From: [identity profile] w00dy.livejournal.com
теги на сущностях - это естественно. Они позволяют построить свою внутренюю классификацию объектов. Но теги это всего лишь вспомогательный механизм для описания группы объектов или существительный, и не более того. Суть программирования же в глаголах. Мы можем сказать "помидор" или даже "спелый помидор", но это не имеет абсолютно никакого смысла, но если добавить сюда глагол, например "нарезать спелые помидоры", то уже получим полноценную программу.

Аналогом тегов в ЯП-ах можно назвать атрибуты в .NET. Они позволяют пользователю добавить дополнительные знания об объекте которых там раньше не было, и соответственно существует кто-то кто о них знает и умеет ими пользоваться.

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-01-09 02:07 am (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-01-09 02:29 am (UTC) - Expand

Date: 2010-01-09 01:24 am (UTC)
From: [identity profile] w00dy.livejournal.com
Весь смысл различных средств разработки приложений состоит в упрощении этого самого процесса разработки. И что-то мне подсказывает что вся сложность упирается в разработку базы знаний которая бы содержала понятия, которые, в свою очередь, использовались бы для написания приложений. Мы говорим "сделать кофе" и автоматически связываем целый аппарат который содержит в себе понятия "сделать" и "кофе". Причём все наши программы аля "сделать кофе", "сходить в магазин", etc. отлично ложаться в рамки процедурного программирования: вы определяем глагол и набор сущностей над которыми необходимо выполнить действие. Основная сложность состоит не в написании программы, а описании KB содержащую наши глаголы и существительные.

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-01-09 01:58 am (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-01-09 02:26 am (UTC) - Expand

(no subject)

From: [identity profile] fi_mihej.livejournal.com - Date: 2010-01-09 09:56 pm (UTC) - Expand

Date: 2010-01-09 04:52 am (UTC)
From: [identity profile] zhengxi.livejournal.com
LabView уже упомянули ?

Date: 2010-01-09 08:49 am (UTC)
From: [identity profile] metaclass.livejournal.com
И таки да, одномерное-линейное программирование текстом давно не отвечает потребностям.
Только вот графы(представленные в обычном виде, т.е. рисунок с ребрами-вершинами) для этого тоже малопригодны - достаточно посмотреть на UML диаграммы классов или сущностей для сложных систем. Оно читабельно уже с трудом, а уж редактировать "это" - тяжкий кошмар. Может, конечно, это идиоты-проектировщики интерфейсов для умл-редакторов виноваты, считающие что иначе как мышью с этим работать не будут.

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

Date: 2010-01-09 11:57 am (UTC)
From: [identity profile] ev-genus.livejournal.com
Ну конечно же стоило упомянуть рафинировано-бредовый HiAsm. Собственное в данный момент времени не уверен что представить всё "не текстом" это так уж хорошо. Текст слишком сильно впечатывается в нашу повседневность. Так что процент его применимости примерно такой как у двигателей внутреннего сгорания.

Ещё я пожалуй не совсем "за" унификацию. Обычно она приводит к ещё большей неразберихе и бредятине. У нас сейчас есть куча маленьких view на разные части "кододанных" и пишутся новые по мере необходимости.

Date: 2010-01-10 10:25 am (UTC)
From: [identity profile] 109.livejournal.com
программа - это граф control flow. всё остальное - шашечки.

Date: 2010-01-10 10:26 am (UTC)
From: [identity profile] 109.livejournal.com
ну, в смысле, традиционная императивная.

Date: 2010-01-15 06:10 am (UTC)
From: [identity profile] kpy3.livejournal.com
Есть ещё ДРАКОН(http://ru.wikipedia.org/wiki/%D0%94%D0%A0%D0%90%D0%9A%D0%9E%D0%9D), визуальный понятный, только вот приличных сред (и вообще сред) не сыщешь для него.

(no subject)

From: [identity profile] kpy3.livejournal.com - Date: 2010-01-15 11:14 am (UTC) - Expand

Profile

wizzard: (Default)
wizzard

January 2019

S M T W T F S
  12 345
6789101112
1314 1516171819
202122 23242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2025 12:57 pm
Powered by Dreamwidth Studios