Re[8]: Концепции языка Zonnon
От: Трурль  
Дата: 05.12.04 14:48
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

Т>>Давно замечено: то, что сложно парсить, как правило трудно и читать (обратное неверно).


VD>Можно узнать имя этого виликого наблюдателя?

Это настолько очевидное наблюдение, что автора установить столь же сложно, как автора теоремы Пифагора. Если интересуют великие, можно назвать сэра Чарльза Энтони Хоара.

VD>Чтобы опровергнуть это виликое высказывание нужно всего лишь задуматься насколько сложно парсить регулярные выражения, и насколько их сложно читать.

Задумался. Но так и не нашел как вывести опровержение.

VD>Далее можно вспомнить один из самых простых в парсинге языков — С. И сравнить легкость чтения искходников на нем с одним самыми сложными для парсинга C++ и C#.

1. С-далеко не "один из самых простых в парсинге" языков.
2. Поскольку почти любая С-программа также и C++-программа, легкость чтения C++ никак не может быть меньше, чем C.
Re[10]: Концепции языка Zonnon
От: bkat  
Дата: 05.12.04 15:56
Оценка: :)
Здравствуйте, Трурль, Вы писали:

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


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


B>>Да чего уж там.

B>>Легче все читать тексты на естественных языках.
Т>Как насчет "Критики чистого разума", желательно в оригинале?

Я почему-то именно такой комментарий и ожидал

А слабо курочку рябу на С++ или Обероне,
да так, чтобы детям понятно и интересно было?
Впрочем учитывая вот это:
http://www.rsdn.ru/Forum/Message.aspx?mid=930240&only=1
Автор: bkat
Дата: 03.12.04

курочка ряба на С++ тут запросто может появиться
Re[9]: Концепции языка Zonnon
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.12.04 23:09
Оценка:
Здравствуйте, Трурль, Вы писали:

VD>>Можно узнать имя этого виликого наблюдателя?

Т>Это настолько очевидное наблюдение, что автора установить столь же сложно, как автора теоремы Пифагора.

Шутку понял. Смешно!

Т> Если интересуют великие, можно назвать сэра Чарльза Энтони Хоара.


VD>>Чтобы опровергнуть это виликое высказывание нужно всего лишь задуматься насколько сложно парсить регулярные выражения, и насколько их сложно читать.

Т>Задумался. Но так и не нашел как вывести опровержение.

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

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

Т>1. С-далеко не "один из самых простых в парсинге" языков.


Уж извини, но С-ишные парсеры в качестве курсовых на третьих курсах сдают. Проще толькот классический паскаль.

Т>2. Поскольку почти любая С-программа также и C++-программа, легкость чтения C++ никак не может быть меньше, чем C.


1. Далеко не каждая С-программа удовлетвояет требованиям С++. Но это не так важно.
2. Главно, что С++-программа — это в основном далеко не С-программа. Многие идиомы встроенные в С++ на С приходится эмулировать (т.е. они присуствую только в качестве паттернов которые не все соблюдают). А зачастую С-программы вообще обходятся без этих идиом и пишутся в классическом структурном стиле. Все это подкрепляется более слабой типизацией С. В итоге если код не тривиален, мы зачастую получаем программы очень сложные для понимания и развития. Понятно, что тут многое зависит от класса программиста создавшего код, но при прочих равных более сложные в парсинге языки явно выигрывают. Содбсвтенно иначе бы они и не вытеснили С в нишу где важна в первую оченредь простота реализации (переноса) компилятора и совместимость — а именно в область создания драйверов и ядер ОС.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Концепции языка Zonnon
От: Сергей Губанов Россия http://sergey-gubanov.livejournal.com/
Дата: 07.12.04 08:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>...Обяснил я этот феномен для себя так — одним из критерив понятности языка является его выразительность (наглядность описания некоторой задачи)...


У каждого свои представления о выразительности, тебя не затруднит привести пару тройку образцовых примеров, того как ты представляешь ее себе?
Re[10]: Концепции языка Zonnon
От: LCR Россия lj://_lcr_
Дата: 07.12.04 12:19
Оценка:
Здравствуйте, VladD2, Вы писали:

Утверждение "то, что сложно парсить, как правило трудно и читать" эквивалентно утверждению "если сложно парсить, то трудно читать", которое истинно в 99% случаях (эти проценты появились из-за вставочки "как правило").

Утверждение "если сложно парсить, то трудно читать" эквивалентно "если легко читать, то легко парсить".

Первый "контрпример" про регулярные выражения не подходит: их сложно читать, но технически легко (если владеть соответствующей техникой составления грамматик для lex/yacc) парсить. Их даже тоже можно сложно парсить, и на истинность утверждения этот пример не повлияет.

Второй "контрпример" про Си, Плюсы и Шарп. Видимо ты хотел сказать, что существует код на Шарпе или Плюсах, который легко читается, но офигенно трудно парсится. Существование такого гипотетического кода под большим вопросом, да и в добавок тоже не опровергает это утверждение — ты просто попадёшь в этот 1%.

Третий "контрпример" про всякие простые языки, которые легко парсятся, но трудно читаются. Они могут читаться сколько угодно трудно, но истинности утверждения это не нарушает.

PS: Подсказка для ищущих контрпример: нужно искать что-нибудь лёгкое для чтения, но в то же время трудное для парсера.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[11]: Концепции языка Zonnon
От: Трурль  
Дата: 07.12.04 12:55
Оценка: 2 (1) :)
Здравствуйте, bkat, Вы писали:

B>А слабо курочку рябу на С++ или Обероне,

На С++ слабо, а вот на Прологе можно.

сказка:-
  жить(Дед), жить(Баба), 
  принадлежит(Курочка, Дед), 
  принадлежит(Курочка, Баба),
  цвет(Курочка,ряба), 
  снести(Курочка, Яичко),
  \+ простое(Яичко), золотое(Яичко),
  бить(Дед, Яичко), \+ разбить(Дед, Яичко),
  бить(Баба, Яичко), \+ разбить(Баба, Яичко),
  бежать(мышка), махнуть(мышка, хвостик),
  упасть(Яичко),
  разбиться(Яичко),
  плакать(Дед), плакать(Баба), 
  кудахтать(Курочка),
  говорить(Курочка, \+ плакать(Дед) ),
  говорить(Курочка, \+ плакать(Баба) ),
  говорить(Курочка, снести(Курочка, ДругоеЯичко)),
  \+ золотое(ДругоеЯичко), простое(ДругоеЯичко).
Re[12]: Концепции языка Zonnon
От: hrg Россия  
Дата: 07.12.04 18:57
Оценка:
Трурль -> Re[11]: Концепции языка Zonnon

B>>А слабо курочку рябу на С++ или Обероне,

Т> На С++ слабо, а вот на Прологе можно.

Т>
Т> сказка:-
Т>   жить(Дед), жить(Баба),
Т>   принадлежит(Курочка, Дед),
Т>   принадлежит(Курочка, Баба),
Т>   цвет(Курочка,ряба),
Т>   снести(Курочка, Яичко),
Т>   \+ простое(Яичко), золотое(Яичко),
Т>   бить(Дед, Яичко), \+ разбить(Дед, Яичко),
Т>   бить(Баба, Яичко), \+ разбить(Баба, Яичко),
Т>   бежать(мышка), махнуть(мышка, хвостик),
Т>   упасть(Яичко),
Т>   разбиться(Яичко),
Т>   плакать(Дед), плакать(Баба),
Т>   кудахтать(Курочка),
Т>   говорить(Курочка, \+ плакать(Дед) ),
Т>   говорить(Курочка, \+ плакать(Баба) ),
Т>   говорить(Курочка, снести(Курочка, ДругоеЯичко)),
Т>   \+ золотое(ДругоеЯичко), простое(ДругоеЯичко).
Т>


Налицо workflow обработки яйца Ж)

<!-- Yury Kopyl aka hrg | Гордость мешает доходам! -->
Posted via RSDN NNTP Server 1.9 delta
Re[11]: Концепции языка Zonnon
От: hrg Россия  
Дата: 07.12.04 18:57
Оценка:
LCR -> Re[10]: Концепции языка Zonnon

PS:: Подсказка для ищущих контрпример: нужно искать что-нибудь лёгкое для
PS:: чтения, но в то же время трудное для парсера.

из Perl Cookbook

# all in one
($var = << HERE_TARGET) =~ s/^\s+//gm;
    your text
    goes here
HERE_TARGET


<!-- Yury Kopyl aka hrg | Только взял боец гитару, сразу — видно
гармонист -->
Posted via RSDN NNTP Server 1.9 delta
Re[11]: Концепции языка Zonnon
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.12.04 20:44
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:

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


VD>>...Обяснил я этот феномен для себя так — одним из критерив понятности языка является его выразительность (наглядность описания некоторой задачи)...


СГ>У каждого свои представления о выразительности, тебя не затруднит привести пару тройку образцовых примеров, того как ты представляешь ее себе?


Хорошим примером является описание регулярных выражений в EBNF-форме и в виде регэкспов. Ну, или пример чтения текстовых файлов на C# и Обероне.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Концепции языка Zonnon
От: LCR Россия lj://_lcr_
Дата: 08.12.04 05:57
Оценка:
Здравствуйте, hrg, Вы писали:

hrg>из Perl Cookbook


hrg>
hrg># all in one
hrg>($var = << HERE_TARGET) =~ s/^\s+//gm;
hrg>    your text
hrg>    goes here
hrg>HERE_TARGET
hrg>


Я представил себе на секунду, что Перл мне абсолютно незнаком, и нифига не понял
Трудный для чтения пример.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[13]: Концепции языка Zonnon
От: hrg Россия  
Дата: 08.12.04 22:46
Оценка:
LCR -> Re[12]: Концепции языка Zonnon

hrg>>из Perl Cookbook


hrg>>
hrg>># all in one
hrg>>($var = << HERE_TARGET) =~ s/^\s+//gm;
hrg>>    your text
hrg>>    goes here
hrg>>HERE_TARGET
hrg>>


L> Я представил себе на секунду, что Перл мне абсолютно незнаком, и

L> нифига не понял
L> Трудный для чтения пример.

tastes differ

<!-- Yury Kopyl aka hrg | Только взял боец гитару, сразу — видно
гармонист -->
Posted via RSDN NNTP Server 1.9 delta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.