Re[7]: Не верю
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.08.05 17:26
Оценка: :)))
Здравствуйте, eao197, Вы писали:

E>Или взять очень близкое нам программирование. Тем же C++ масса людей пользуется. Только у одних почему-то все получается и не глючит, а другим руки отрывать нужно.


Врут черти.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[28]: Простота грамматик и простота языка
От: Дарней Россия  
Дата: 19.08.05 03:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Он чистый LL(1).


Думаешь? А как быть с этим, например?
abc|def|ghi
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[8]: Не верю
От: Дарней Россия  
Дата: 19.08.05 04:35
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Или взять очень близкое нам программирование. Тем же C++ масса людей пользуется. Только у одних почему-то все получается и не глючит


Все о них слышали, но никто не видел лично
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[9]: Не верю
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.08.05 06:38
Оценка: +1 :)))
Здравствуйте, Дарней, Вы писали:

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


E>>>Или взять очень близкое нам программирование. Тем же C++ масса людей пользуется. Только у одних почему-то все получается и не глючит


Д>Все о них слышали, но никто не видел лично


Можешь на меня посмотреть.
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Не верю
От: Дарней Россия  
Дата: 19.08.05 07:11
Оценка: 1 (1) :)
Здравствуйте, eao197, Вы писали:

Д>>Все о них слышали, но никто не видел лично


E>Можешь на меня посмотреть.


Автограф можно попросить?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[11]: Не верю
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.08.05 07:14
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>>>Все о них слышали, но никто не видел лично


E>>Можешь на меня посмотреть.


Д>Автограф можно попросить?


Не-а. Религия не позволяет
... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Не верю
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 19.08.05 08:14
Оценка: -1
Здравствуйте, Privalov, Вы писали:

СГ>> Более того, языки программирования компьютеров — это инструменты. Инструменты могут быть простыми или сложными, маленькими или большими, но они всегда рациональны, стало быть обозримы, понятны, формализуемы и т. п..


P>Дак ведь инструменты художника: кисть, краски, холст, палитра, добавьте, что я пропустил, тоже рациональны.


Ровно об этом я и сказал, так что не понятно о чем Вы собрались затеять спор.
Re[29]: Простота грамматик и простота языка
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.08.05 10:03
Оценка:
Здравствуйте, Дарней, Вы писали:

VD>>Он чистый LL(1).


Д>Думаешь? А как быть с этим, например?

Д>
Д>abc|def|ghi
Д>


И что здесь не так?
Это соотвествует грмматике:
Expr = Term { '|' Term }.
Term = char { char }.

Единственная проблема возникает с посфиксными выражениями вроде итерации (*). Но она обходится за счет выделения вложенного выражения в отдельное правило:
IterationZeroOrMeny = Expr '*'.
IterationOneOrMeny  = Expr '+'.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[30]: Простота грамматик и простота языка
От: Дарней Россия  
Дата: 19.08.05 10:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>И что здесь не так?

VD>Это соотвествует грмматике:
VD>
VD>Expr = Term { '|' Term }.
VD>Term = char { char }.
VD>

VD>Единственная проблема возникает с посфиксными выражениями вроде итерации (*). Но она обходится за счет выделения вложенного выражения в отдельное правило:
VD>
VD>IterationZeroOrMeny = Expr '*'.
VD>IterationOneOrMeny  = Expr '+'.
VD>


Попробую изобразить синтаксическое дерево для этого выражения.
<AlternativeStatement>
------------- | -------------
| | |
<Alternative1> <Alternative2> <Alternative3>
При этом, чтобы понять, что данный паттерн состоит из одного AlternativeStatement, парсеру нужно разбирать его, пока он не встретит первый символ "|"
Я не прав?
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[31]: Простота грамматик и простота языка
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.08.05 10:23
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>При этом, чтобы понять, что данный паттерн состоит из одного AlternativeStatement, парсеру нужно разбирать его, пока он не встретит первый символ "|"

Д>Я не прав?

Не прав. Парсер рекурсивно вычислит вложенные правила и свернет их в Expr. Далее любые конструкции распознаются с заглядываением на один терминал вперед.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[32]: Простота грамматик и простота языка
От: Дарней Россия  
Дата: 19.08.05 10:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>вычислит вложенные правила и свернет их в Expr. Далее любые конструкции распознаются с заглядываением на один терминал вперед.


Если это "свернутое выражение", то это уже не терминал, ИМХО.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[40]: Простота грамматик и простота языка
От: vdimas Россия  
Дата: 19.08.05 11:52
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Здравствуйте, VladD2, Вы писали:


VD>> LL(*) так вообще может описать почти все что нужно для ЯП.


СГ>LL(1) тоже, так "зачем платить больше"?


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

И уже упоминалось тут, что восприятие человеком информации весьма контекстно-зависимое.
Re[41]: Простота грамматик и простота языка
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 19.08.05 13:55
Оценка: -1
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>Здравствуйте, VladD2, Вы писали:


VD>>> LL(*) так вообще может описать почти все что нужно для ЯП.


СГ>>LL(1) тоже, так "зачем платить больше"?


V> Выразительности ради.


А почему Вы думаете, что использование более сложной грамматики чем LL(1) добавит выразительности?
По моему, выразительности это ни сколько не добавит, но вот легкость восприятия поубавит.

V>Сложность реализации компилятора конкретного ЯП никого не интересует, кроме производителей этих компиляторов.


Еще это интересует программистов использующих эти компиляторы:
http://alexcheremkhin.boom.ru/oberon.htm

На основании этого опыта я даже вывел для себя следующее правило:
Не торопись менять компилятор Си++!
100% корректных среди них не бывает, а ошибки в старом компиляторе ты уже знаешь.
Я следую этому правилу до сих пор. Сейчас я использую в работе компиляторы примерно пятилетней давности.

Еще есть история про программистов Ada (вообще-то, очень сложный язык если судить по объему синтаксиса, сложнее него только C#), которые лет через десять после ее появления хвастались, что наконец-то появился компилятор, который почти что правильно компилирует.

V>И уже упоминалось тут, что восприятие человеком информации весьма контекстно-зависимое.


И что? В языках программирования и так достаточно много вещей зависящих от контекста, так зачем же еще и грамматику используемую при синтаксическом разборе усложнять больше чем это реально необходимо (а реально необходимо всего лишь LL(1)).
Re[42]: Простота грамматик и простота языка
От: Sergey J. A. Беларусь  
Дата: 19.08.05 14:01
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

СГ>Еще есть история про программистов Ada (вообще-то, очень сложный язык если судить по объему синтаксиса, сложнее него только C#), которые лет через десять после ее появления хвастались, что наконец-то появился компилятор, который почти что правильно компилирует.


Прыкольно. Наверное для такого сложного C# (который сложнее Ada) ещё лет 5-10 не смогут написать правильного коипилятора ?
Я — свихнувшееся сознание Джо.
Re[42]: Простота грамматик и простота языка
От: Павел Кузнецов  
Дата: 19.08.05 14:49
Оценка: +2
Сергей,

> А почему Вы думаете, что использование более сложной грамматики чем LL(1) добавит выразительности?


Потому что впихнуть в прокрустово ложе LL(1) ряд возможностей, добавляющих языку выразительности, не так уж легко. Например, попробуй добавить в Оберон удобные для использования шаблоны (или хотя бы generics), оставив грамматику LL(1)...
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[43]: Простота грамматик и простота языка
От: Кодт Россия  
Дата: 19.08.05 15:36
Оценка: :)
Здравствуйте, Sergey J. A., Вы писали:

SJA>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>Еще есть история про программистов Ada (вообще-то, очень сложный язык если судить по объему синтаксиса, сложнее него только C#), которые лет через десять после ее появления хвастались, что наконец-то появился компилятор, который почти что правильно компилирует.


SJA>Прыкольно. Наверное для такого сложного C# (который сложнее Ada) ещё лет 5-10 не смогут написать правильного коипилятора ?


Это ещё вопрос — что было первее, синтаксис додиеза или его компилятор.
Потому что с Адой сперва родили спецификацию, а потом задумались над воплощением. А микрософт имел возможность выдавать действительное за желаемое
Перекуём баги на фичи!
Re[43]: Простота грамматик и простота языка
От: Кодт Россия  
Дата: 19.08.05 15:47
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Сергей,


>> А почему Вы думаете, что использование более сложной грамматики чем LL(1) добавит выразительности?


ПК>Потому что впихнуть в прокрустово ложе LL(1) ряд возможностей, добавляющих языку выразительности, не так уж легко. Например, попробуй добавить в Оберон удобные для использования шаблоны (или хотя бы generics), оставив грамматику LL(1)...


В С++ проблема возникла из-за
1) неоднозначного синтаксиса (правило "если это выглядит как объявление функции...")
2) дурацкого выбора скобок

Кстати, а Эйфель — LL(1) или нет?
Перекуём баги на фичи!
Re[41]: Простота грамматик и простота языка
От: AVC Россия  
Дата: 19.08.05 18:16
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Сергей Губанов, Вы писали:


СГ>>В языке "эскимосов" просто нет соответсвующих терминов. То есть нет соответсвующих терминалов. Сложность же не зависит от количества терминалов, а зависит только от класса по Хомскому. От количества терминалов зависит объем.


Д>Не только терминов, но и конструкций, с помощью которых их можно объединять. К примеру, если в языке нет будущего времени, то становится намного сложнее выражать некоторые мысли.


Некоторые современные английские языковеды полагают, что в английской грамматике нет будущего времени.
Например, Geoffrey Broughton:

Modern grammars argues that modern English... has present and past tenses, (i.e. verb forms which reflect these meanings of time) but no future tense.

("Penguin English grammar")
Глаголы shall и will грамматически принадлежат к present tense и — ничего, справляемся мы с этим как-то...

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[44]: Простота грамматик и простота языка
От: Павел Кузнецов  
Дата: 19.08.05 20:04
Оценка:
Кодт,

> ПК>Потому что впихнуть в прокрустово ложе LL(1) ряд возможностей, добавляющих языку выразительности, не так уж легко. Например, попробуй добавить в Оберон удобные для использования шаблоны (или хотя бы generics), оставив грамматику LL(1)...

>
> В С++ проблема возникла из-за
> 1) неоднозначного синтаксиса (правило "если это выглядит как объявление функции...")
> 2) дурацкого выбора скобок

Безусловно. Я это к тому, что если шаблоны впихнуть получится, я еще чего-нибудь предложу. И так мы дойдем до предела, где без переделки существующего синтаксиса или без ущерба для удобства использования добавляемых возможностей, LL(1) вряд ли получится сохранить.

> Кстати, а Эйфель — LL(1) или нет?


Он даже не LR(1).
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[42]: Простота грамматик и простота языка
От: Шахтер Интернет  
Дата: 20.08.05 02:07
Оценка: 9 (3) +1
Здравствуйте, VladD2, Вы писали:

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


J>>2) параноидальной честностью


VD>Круто! Надо будет запомнить.


А лучше почитать что-нибудь.

здесь
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.