Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Чтиво > Про язык программирования


Автор: Гость_Andrey1 14.12.2004, 23:53
http://sirius.ihep.su/~siver/pl-new.html

Автор: Sardar 15.12.2004, 02:59
Затронуты большие темы, которые ты кратко описал, если их раскрыть, то выйдет очень толстая книга smile

Подход с маркерами я понял как декларацию некоторого кода, использующегося в будущем. Но ведь сложно спроектировать(хотя бы общими словами) то, что будет использованно в будущем smile

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

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

За прошедшее время ты хорошо продвинулся, теперь ты смог в общих чертах обьяснить что ты хочешь сделать smile

Автор: Andrey1 15.12.2004, 12:21
Цитата(Sardar @ 15.12.2004, 02:59)
Затронуты большие темы, которые ты кратко описал, если их раскрыть, то выйдет очень толстая книга

Я работаю в этом направлении smile.
Цитата(Sardar @ 15.12.2004, 02:59)
Подход с маркерами я понял как декларацию некоторого кода, использующегося в будущем.

Да нет. Есть код, который ты маркерами выделяешь, а потом говоришь, как его преобразовать; причем преобразованный код может встать на место исходного. Типа patch'a. Таким образом, программа сможет развиваться последовательным добавлением кода (+добавление мета-данных).
Цитата(Sardar @ 15.12.2004, 02:59)
В целом ты быстро пробежался и оставил только круги круги на воде, нужно изучать глубже. Чувствую на это может уйти вся жизнь, тема огромна.

Так я по-прежнему никуда не тороплюсь.

Автор: Sardar 15.12.2004, 17:01
Цитата(Andrey1 @ 15.12.2004, 11:21)
Типа patch'a. Таким образом, программа сможет развиваться последовательным добавлением кода (+добавление мета-данных).

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

Автор: Andrey1 15.12.2004, 20:04
По любому нужна система мета-данных, которая могла бы стать заменой коментариев. Я тут об этом немного написал: http://www.linux-os.ru/Members/Andrey1/miniz/document_view

Автор: Sardar 15.12.2004, 23:47
Цитата(Andrey1 @ 15.12.2004, 19:04)
По любому нужна система мета-данных, которая могла бы стать заменой коментариев.

Прямо выскажу своё мнение о автоматической модиффикации кода - это бред! Ты хочешь описать метаданными смысл кода, на основе таких формальных определений некторый софт сможет редактировать программу, я правильно понял? А зачем оно нужно? А как формально описать смысл чего либо и при этом не потерять ясности для человека? Ты читал о контекстно зависимых грамматиках? Ими можно описать человеческий язык, так что бы машина могла генерить правильные(даже по смыслу) предложения. Но такая грамматика абсолютно не ясна человеку и составить её в ручную не удастся.
Вывод: зачем такие сложности, если можно написать на человеческом языке что этот кусок кода делает, другой программист сможет всегда его изменить. А главно человек может охватить и проанализировать(используя свой опыт) весь код и, возможно, внести изменения в другие части программы, а этот код просто выбросить smile

Ну и на последок, ты часто патчишь свой код? Ведь латание мелких дыр не должно требовать мощной системы, а внесение нового кода зависит от будущих(на текущий момент не ясных) задачь smile

Автор: Andrey1 17.12.2004, 19:13
Цитата(Sardar @ 15.12.2004, 23:47)
Прямо выскажу своё мнение о автоматической модиффикации кода - это бред! Ты хочешь описать метаданными смысл кода, на основе таких формальных определений некторый софт сможет редактировать программу, я правильно понял? А зачем оно нужно? А как формально описать смысл чего либо и при этом не потерять ясности для человека? Ты читал о контекстно зависимых грамматиках? Ими можно описать человеческий язык, так что бы машина могла генерить правильные(даже по смыслу) предложения. Но такая грамматика абсолютно не ясна человеку и составить её в ручную не удастся.

Автоматическая модификация кода - это слишком круто. Я об этом даже не думал.
Смысл мета-данных вместо комментариев в том, чтобы сузить рамки описания человеком смысла кода. Чтобы это описание было понятнее описания на человеческом языке.

Цитата(Sardar @ 15.12.2004, 23:47)
Ну и на последок, ты часто патчишь свой код? Ведь латание мелких дыр не должно требовать мощной системы, а внесение нового кода зависит от будущих(на текущий момент не ясных) задачь

Патчить приходится очень часто; особенно при разработке сложных проектов (обычно их разрабатывают эволюционно).

Автор: Sardar 18.12.2004, 03:11
Цитата(Andrey1 @ 17.12.2004, 18:13)
Смысл мета-данных вместо комментариев в том, чтобы сузить рамки описания человеком смысла кода. Чтобы это описание было понятнее описания на человеческом языке.

Приведи примеры метаданных. Примерно так в Java
Код

/**
* Этот код очевидно делает что то полезное. Автор явно был не в себе, потэтому не решается
* описать сие творение остовляя это вам =)
* @hint  читай эти медатанные! :D
*
* @argument  bla  -  ну имя говорит само за себя =)
* @return   - просто возвращаем число
*/
public int test(String bla) {


Какая нидбудь утилита сможет сгенерить классную документацию, предназначенную для человека. Ты это подразумевал?


Цитата(Andrey1 @ 17.12.2004, 18:13)
Патчить приходится очень часто; особенно при разработке сложных проектов (обычно их разрабатывают эволюционно).

Во блин... я всегда знал что пользуюсь самым не эффективным по времени способом проектирования. Начинаю всегда с документации, по ходу придумываю и полностью пересматриваю идею. Обычно результирущий код в корне отличается от того, что задума в начале. Страниц 40 начальной документации выбрасывается и переписывается снова. Мне маркеры в коде не нужны, я даже не знаю как изменится моё представление через час smile

Автор: Andrey1 18.12.2004, 13:40
Цитата
Приведи примеры метаданных.


Заголовок функции/процедуры можно понимать уже как мета-данные.

А вот другие примеры:

<FIXME>
... # Это то, что рано или поздно нужно переделать
</FIXME>

<makeup by="me"> # Это мета-данное описывает, кто написал код (в данном случае,
# это некто "me")
</makeup>

<anchor id="here"/> # А этот "якорек" описывает место в программе, с названием "here".

Дальше его можно использовать, например, так:
<insert after="here">
<code> # И тут что-нибудь
</code>
</insert>

А в самом конце разработки просто применяешь все мета-скрипты и отбрасываешь все комментарии.

Думаю, мета-данные разумно писать в XML и использовать XML Native DB.

Цитата
Мне маркеры в коде не нужны, я даже не знаю как изменится моё представление через час

Однако, маркеры мешать тебе также не будут. А мне их, например, очень не хватает.


Автор: Sardar 18.12.2004, 16:22
Заранее раставлять маркеры не удобно, я не знаю понадобится ли он мне в будущем, а ставить их в буквальном смысле везде я не хочу. Нормальный обработчик кода может распарсить код и работать с ним.
Я вижу что идея удобна если ты изменил код и хочешь пропатчить его у всех. Почему нельзя скачать его заного? Ладно так надо.... но тогда зачем такие сложности, ведь можно написать код, а затем сделать по нему обычный(бинарный) патч, который и использовать.

Разного рода фишки в документации помогают выделят суть утилитами, наприме найти FIXME, идея хороша и даже реализуется многими утилитами, но называть её одной из основных фичь нового языка... сложно... smile

Автор: Andrey1 20.12.2004, 17:22
Цитата(Sardar @ 18.12.2004, 16:22)
Заранее раставлять маркеры не удобно, я не знаю понадобится ли он мне в будущем

А зачем их расставлять заранее? Можно потом расставить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)