Язык деревьев
От: uNName Беларусь  
Дата: 23.04.05 22:44
Оценка:
Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:
Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
P.S. А так же за жёсткую критику если такая будет иметь место.
P.P.S. Я вовсе не пытаюсь придумать идеальный язык.
Re: Язык деревьев
От: c-smile Канада http://terrainformatica.com
Дата: 23.04.05 23:30
Оценка: :)))
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
NN>P.S. А так же за жёсткую критику если такая будет иметь место.
NN>P.P.S. Я вовсе не пытаюсь придумать идеальный язык.

"т.к. дерево распространнено в программировании". это верно подмеченно.
"всё есть дерево". максима конечно, но в общем и целом — да.

По делу: Есть такое слово — графы, теория графов.

c-smile. Дежурный эльф-администратор информационной
сети Серебрянного Леса.
Re: Язык деревьев
От: ansi  
Дата: 24.04.05 02:58
Оценка:
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
NN>P.S. А так же за жёсткую критику если такая будет иметь место.
NN>P.P.S. Я вовсе не пытаюсь придумать идеальный язык.

А как насчет реализации этой концепции? То есть, приведи конкретные примеры, что и как ты предлагаешь.
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Cazwa Kain — Bygones";
Re: Язык деревьев
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 24.04.05 06:37
Оценка:
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
NN>P.S. А так же за жёсткую критику если такая будет иметь место.
NN>P.P.S. Я вовсе не пытаюсь придумать идеальный язык.

Похвальное начинание и интересная тема. Я бы посоветовал почитать первый том Кнута. Более конкретно — 2 главу. Непосредственно деревьям посвящен раздел 2.3, но если прочтете весь том — вреда точно не будет
В отношении того, что "всё есть дерево" я бы не был столь категоричен. Лист дерева, по определению, не может иметь больше одного родителя. Т.е. с помощью деревьев сложно представить циклические (проще говоря, "самозамкнутые" или "самоссылающиеся") структуры. А вот списковые структуры (кстати, о них можно почитать там же у Кнута) — более универсальная структура данных. Но это к слову. В конце концов, такая, например, интереснейшая тема как синтаксический анализ и вообще, разбор и компиляция — это именно дерево. Если это интересно ищите "книгу дракона".
Что еще можно было бы посоветовать ? Например, Н.Вирта "Алгоритмы + Структуры данных = Программы". Правда, в отличие от Кнута, эту книгу найти не легко, но попытайтесь
А вообще правильно уже было сказано — теория графов: это именно тот самый раздел математики, который вам нужен (если, конечно, вам интересны теоретические дебри).
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re: Язык деревьев
От: LCR Россия lj://_lcr_
Дата: 24.04.05 07:56
Оценка: :)
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево.

Неправильно. Нужно так: "Всё есть объект." :-P
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Язык деревьев
От: Кодт Россия  
Дата: 24.04.05 11:56
Оценка: :)
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
NN>P.S. А так же за жёсткую критику если такая будет иметь место.
NN>P.P.S. Я вовсе не пытаюсь придумать идеальный язык.

LISP
Хотя он и называется "list processing", но примитивы в нём — это двоичные деревья (cons-пары).
По некоторым соображениям наибольшую популярность приобрели вырожденные деревья — списки
'(a b c d) == (a.(b.(c.(d.nil))))

  .
 / \
a   .
   / \
  b   .
     / \
    c   .
       / \
      d   nil

хотя все возможности для работы именно с деревьями там есть.
Тем более, что любая программа представима в виде синтаксического дерева. (А на лиспе — прямо так и выглядит )
Перекуём баги на фичи!
Re[2]: Язык деревьев
От: dikun Беларусь  
Дата: 24.04.05 12:42
Оценка:
fplab:

> Т.е. с помощью деревьев сложно представить циклические (проще говоря,

> "самозамкнутые" или "самоссылающиеся") структуры.

Но можно? Подкиньте мысль!

> А вот списковые структуры (кстати, о них можно почитать там же у Кнута) -

> более универсальная структура данных.

Дерево хорошо тем, что оно "хорошо" улаживается в список.

> Что еще можно было бы посоветовать ? Например, Н.Вирта "Алгоритмы +

> Структуры данных = Программы". Правда, в отличие от Кнута, эту книгу найти
> не легко, но попытайтесь

Не так уж: есть добрые люди.
Можно всемогущим
Google'ом
Posted via RSDN NNTP Server 1.9
Re[3]: Язык деревьев
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 24.04.05 14:27
Оценка: :)
Здравствуйте, dikun, Вы писали:

D>fplab:


>> Т.е. с помощью деревьев сложно представить циклические (проще говоря,

>> "самозамкнутые" или "самоссылающиеся") структуры.

D>Но можно? Подкиньте мысль!


>> А вот списковые структуры (кстати, о них можно почитать там же у Кнута) -

>> более универсальная структура данных.

D>Дерево хорошо тем, что оно "хорошо" улаживается в список.


>> Что еще можно было бы посоветовать ? Например, Н.Вирта "Алгоритмы +

>> Структуры данных = Программы". Правда, в отличие от Кнута, эту книгу найти
>> не легко, но попытайтесь

D>Не так уж: есть добрые люди.

D>Можно всемогущим
D>Google'ом

Вы правы: реализовать циклические структуры на деревьях не получится. Я погорячился Кстати, спасибо за первую ссылку. Там, оказывается, лежит "Структура и интерпретация компьютерных программ". Вот бы наши издательства вместо бесконечных книг из серии "Для чайников" или "С за 21 день" издавали такие как эта
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re[4]: Язык деревьев
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 24.04.05 14:39
Оценка:
Здравствуйте, fplab, Вы писали:

F>Здравствуйте, dikun, Вы писали:


D>>fplab:


>>> Т.е. с помощью деревьев сложно представить циклические (проще говоря,

>>> "самозамкнутые" или "самоссылающиеся") структуры.

D>>Но можно? Подкиньте мысль!


>>> А вот списковые структуры (кстати, о них можно почитать там же у Кнута) -

>>> более универсальная структура данных.

D>>Дерево хорошо тем, что оно "хорошо" улаживается в список.


>>> Что еще можно было бы посоветовать ? Например, Н.Вирта "Алгоритмы +

>>> Структуры данных = Программы". Правда, в отличие от Кнута, эту книгу найти
>>> не легко, но попытайтесь

"Структура и интерпретация компьютерных программ"

Вот точная ссылка: http://ru.wikibooks.org/wiki/LOR-FAQ-Development
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re[4]: Язык деревьев
От: Кодт Россия  
Дата: 24.04.05 20:43
Оценка: +1
Здравствуйте, fplab, Вы писали:

F>Вы правы: реализовать циклические структуры на деревьях не получится. Я погорячился Кстати, спасибо за первую ссылку. Там, оказывается, лежит "Структура и интерпретация компьютерных программ". Вот бы наши издательства вместо бесконечных книг из серии "Для чайников" или "С за 21 день" издавали такие как эта


Если речь идёт именно о графах данных, то цикл на ациклическом графе, конечно же, не получится.

Но если это нечто интерпретируемое — т.е. программа или данные к программе — то почему бы нет.

Вариант раз:
все узлы дерева имеют три типа:
— лист с данными
— узел с ветками
— лист со ссылкой на другой узел (эта ссылка может выглядеть как "подняться вверх на N уровней, далее спуститься по пути S")
Программа, обходя дерево, обнаруживает и отрабатывает такие листья.

Вариант два:
это программа, содержащая инструкции циклов или разного рода рекурсию.
Перекуём баги на фичи!
Re[2]: Язык деревьев
От: Gaperton http://gaperton.livejournal.com
Дата: 24.04.05 21:22
Оценка: +1 :))
Здравствуйте, ansi, Вы писали:

A>А как насчет реализации этой концепции? То есть, приведи конкретные примеры, что и как ты предлагаешь.


Предлагается выдумать XML, XSLT и XPath .
Re[2]: Язык деревьев
От: deekey  
Дата: 25.04.05 02:42
Оценка:
Здравствуйте, Кодт, Вы писали:

К>...

К>LISP
К>Хотя он и называется "list processing", но примитивы в нём — это двоичные деревья (cons-пары).
К>...

Класс

Хм... в общем случае — берем БНФ языка, по нему строим каким-нибудь взаимно-однозначным способом XSD и загоняем исходник в XML-дерево.

Осталось только красивый язык найти под эту задачу
Re: Язык деревьев
От: Aquary Россия https://wmspanel.com/
Дата: 25.04.05 04:05
Оценка:
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

Это, батенька, тема для нормальной дипломной работы большинства технических ВУЗов... На курсовой проект — точно потянет... это я как преподаватель говорю

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево.


Тебе определенно стоит посмотреть в сторону XML-технологий... XML — это воплощение идеи дерева в чистом виде. В частности, есть XQuery — готовый язык для поиска информации в XML документах (т.е. в дереве)... Также, в общем смысле, под опеделение языка подходит и XSLT... тот же проход по деверу и его последовательное преобразование.
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming
https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
http://scm-notes.blogspot.com/ — Блог об управлении конфигурацией
Re[3]: Язык деревьев
От: c-smile Канада http://terrainformatica.com
Дата: 25.04.05 04:23
Оценка: :))
Здравствуйте, deekey, Вы писали:

D>Хм... в общем случае — берем БНФ языка, по нему строим каким-нибудь взаимно-однозначным способом XSD и загоняем исходник в XML-дерево.

D>Осталось только красивый язык найти под эту задачу

Угу.

<for var="n" from="100" to="0" step="-1"> 
        <print> n, " bottles of beer on the wall"</print> 
        <print> n, " bottles of beer"</print> 
        <print> "Take one down, and pass it around..."</print> 
        <print> n-1, "bottles of beer on the wall\n"</print> 
</for>


http://www.markcarter.me.uk/computing/xs.html
Re[2]: Язык деревьев
От: beroal Украина  
Дата: 25.04.05 05:37
Оценка:
Здравствуйте, LCR, Вы писали:
LCR>Здравствуйте, uNName, Вы писали:
NN>> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:
NN>> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево.
LCR>Неправильно. Нужно так: "Всё есть объект." :-P
Если оставить в стороне конкретную задачу конретного человека, то такой подход в корне неправильный. Исходя из утверждения "всё есть X", можно построить только язык, на котором можно решать только узкоспециальные задачи. А крупную систему не построишь. Потому что не всё есть X. Сразу надо очертить класс задач, для которых этот язык.
Re[3]: Язык деревьев
От: LCR Россия lj://_lcr_
Дата: 25.04.05 06:18
Оценка:
Здравствуйте, beroal, Вы писали:

LCR>>Неправильно. Нужно так: "Всё есть объект." :-P


B>Если оставить в стороне конкретную задачу конретного человека, то такой подход в корне неправильный. Исходя из утверждения "всё есть X", можно построить только язык, на котором можно решать только узкоспециальные задачи. А крупную систему не построишь. Потому что не всё есть X. Сразу надо очертить класс задач, для которых этот язык.


Смайл видишь?

Естественно, ты прав. Любой формальный язык может не может описать слишком много хотя бы потому, что слов, построенных на этом языке счётное множество, а моделей — континуум. Даже естественные языки страдают этим недостатком — отсюда возникают всякие двусмысленности и прочие языковые парадоксы про черепах и Ахиллесов.

(Возьми любую книжку по ООП, там стопроцентно встретится эта претендующая на фундаментальность фраза "всё есть объект". Можно в это свято верить пока есть вера в то, что ООП может всё).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Язык деревьев
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 25.04.05 07:07
Оценка: :))) :))) :)
Здравствуйте, uNName, Вы писали:

NN>...основной идеей которого является что всё есть дерево...


Так, байка предостережение: Один электрик в совершенстве знал как устроен трансформатор. Так вот, однажды он придумал единую теорию Вселенной согласно которой Вселенная, как оказалось, устроена точно так же как трансформатор.
Re[4]: Язык деревьев
От: beroal Украина  
Дата: 25.04.05 07:16
Оценка: :))
Здравствуйте, LCR, Вы писали:
LCR>Смайл видишь?
У меня отключена графика.
Re: Язык деревьев
От: mefrill Россия  
Дата: 25.04.05 11:30
Оценка: +1
Здравствуйте, uNName, Вы писали:

NN> Я учащийся школы №30 г.Минска готовлюсь к конфиренции по информатике и думаю делать работу на такую тему:

NN> Все языки программирования имеют какую-либо концепцию, и я выбрал тему проектирования языка деревьев(т.к. дерево распространнено в программировании), основной идеей которого является что всё есть дерево. Имею мысли и идеи по этому поводу, но желал бы узнать что скажут и посоветуют другие. Буду благодарен за идеи и предложения.
NN>P.S. А так же за жёсткую критику если такая будет иметь место.
NN>P.P.S. Я вовсе не пытаюсь придумать идеальный язык.

Здесь важно понимать, что если ты хочешь определить язык программирования, то необходимо, прежде всего, понять что такое язык программирования вообще. Для этого надо разобраться с тем, что такое язык воодще и чем, например, человеческие языки, такие как русский, английский и т.д., отличаются от языков программирования. Здесь мне представляется главным понятие "вычисления". От этого и необходимо танцевать. Сначала необходимо определить что такое вычисление, затем понять, что каждый язык программирования на самом деле задает некоторое вычисление. Не зря ведь компьютеры это по английски вычислялки? на самомо деле, так оно и есть. Каждый язык программирования опредедляет некторое вычисление. Языки программирования можно разделить на два класса, котороый отличаются друг от друга тем, каким способом эти вычисления определяются. В императивных языках главное — это команда. Сама программа — модель вычисления, есть последовательность команд, которые должен выполнить компьютер для того, чтобы произвести вычисление. Здесь мы, кроме того как будет исполняться программа еще и определяем и путь выполнения программы, ее принцип. Вот, если программа состоит из трех подряд идущих команд, то эти команды исполнятся и это будет вычислением. В декларативных языках мы не определяем команды, а декларируем пути исполнения программы. В императивном языке сама программа иесть путь ее исполнения, в декларативных не всегда так. Так вот, есть вычисление как реальное действие, происходящее в нашем мире. Есть модель этого вычисления, то как мы думаем, это вычисление должно проводиться. И есть язык, представление этой модели различными знаками. Так вот, само вычисление изменить нельзя. Модель вычисления и синтаксис языка изменить можно. Что тебе в твоем случае необходимо сделать, это придумать модель вычисления на основе деревьев. Синтаксис языка это уже понятие вторичное, следующее из модели. Итак, определяем некторое дерево — определяем некоторый алгоритм для вычисления, и наооборот, каждый алгоритм должен быть представим в виде некоторого дерева. Если это получится, будет новый язык.
Re[2]: Язык деревьев
От: mefrill Россия  
Дата: 26.04.05 11:50
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Тем более, что любая программа представима в виде синтаксического дерева.


Представима это хорошо. Но необходимо помнить, что это всего лишь представление синтаксической структуры программы. Семантикой здесь и не пахнет. А нам необходимо определить семантику (т.е. модель вычисления), полагаясь исключительно на это самое дерево. В том же лиспе, задавая структуру программы в виде дерева, мы просто упрощаем синтаксический анализ программы, но не задаем этим деревом процесс вычисления. Вычисление задается уже интерпретацией элементов дерева в соответствии со спецификацией языка. Тоже самое и в любом другом языке. В общем, я имею ввиду, что необходимо, на самом деле, решить совсем другую задачу: посторить модель вычисления на основе дерева. Мы знаем ,что есть различные модели вычисления, например, машина Тьюринга, рекурсивные вычислимые функции или нормальные алгоритмы Маркова. А вот о модели алгоритма типа "дерево" я не слышал. Я так понимаю, что наш юный друг именно такую модель и хочет определить.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.