Здравствуйте, Сергей Губанов, Вы писали:
СГ>А я не возьму на работу людей, которые потом не возьмут на работу описанных Вами людей.
СГ>Не постигаю, что такого кроется невозможного прочитать элементарное: WHILE a DO x; y; z END
Это вы, уважаемый, никогда не работали с языками, допускающими имена переменных, состоящих не более чем из двух символов, причем если есть второй символ, до он обязан быть цифрой. Пример — реализация бейсика на "Искре-226". Зато никакого оверхеда.
Что нет? Представление цикла как метафункции является простым "но не проще". Примеры — лисп, смолток — вполне наглядные.
Вот если бы ту же самую метафункцию я привёл в виде голого лямбда- или комбинаторного выражения, это был бы действительно изврат.
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Программа записанная в Си-образном синтаксисе содержит в разы, а не на проценты больше лексем и строчек кода чем это реально необходимо. Спрашивается, и как долго этот синтаксис еще будет существовать?
Здравствуйте, Mamut, Вы писали:
M>Как видим, реальный пример на Обероне ничем не лучше, а даже хуже аналогичного примера на С/С++
Как видим, реальный пример на Обероне значительно лучше аналогичного примера на С/С++.
M> Кстати, вопрос — почему Паскалеподобные языки до сих пор так упорно цепляются за жесткое разделение FUNCTION/PROCEDURE, если разницы в них — практически ноль?
Учите матчасть. Слово FUNCTION было только в Паскале 1970 года. В Оберонах его нет.
M>И еще вопрос, на засыпку — вопрос о непоследовательности языка. Почему делить — "DIV", а сложить — "+", а не "ADD"?
Это Вам, вообще-то, надо обращаться в начальную школу — там где деление проходят. Открою Вам секрет. Оказывается если сложить два целых числа, то результат тоже будет целым числом (поэтому и "+"). В то же самое время, если разделить два целых числа, то результат будет уже вовсе не целым, а рациональным числом (поэтому DIV).
M>В общем, Оберон проиграл — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
В общем, Оберон победил — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
СГ>Не постигаю, что такого кроется невозможного прочитать элементарное: WHILE a DO x; y; z END
Потому что это — высосанный из пальца пример. Ну елки-палки, Сергей, раскройте глаза. Вы сами приводили код (хоть и с моей подачи), который не пишется в одну строчку
, из которых видно, что запись в одну строку ухудшает восприятие кода, а большое количество кричащих букв забивает код.
Нужели Вам самому приятно читать такой вот код:
PROCEDURE Insert (key: ARRAY OF CHAR; unique: BOOLEAN);
VAR p, q: List;
BEGIN
p := root;
WHILE (p.next # NIL) & (p.next.key < key) DO p := p.next END;
IF unique & (p.next # NIL) & (p.next.key = key) THEN HALT (99) END;
NEW (q); COPY (key, q.key); q.next := p.next; p.next := q
END Insert;
Чем, скажите, чем он лучше по восприятию, чем:
insert(char[] key, bool unique)
{
List p = root;
while(p.next() && (p.next().key() < key))
p.next();
if(unique && p.next() && (p.next().key() < key))
return;
/*и так далее*/
}
Скобки не нравятся? Начиная с 6-го класса средней школы (по-моему тогда начинают изучать алгебру), скобки не воспринимаются, как фнкциональные, притягивающие внимание элементы. А вот слова, состоящие исключительно из заглавных букв, написанных в одну строчку получают двойки по литературе. Или вы мат. выражения тоже пишите так:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Здравствуйте, Mr. None, Вы писали:
MN>>perl адназначна... вот где никакого оверхеда ... вот только фиг прочтёшь, что написано...
СГ>Так ведь, еще Эйнштейн говорил — сделать так просто, как только возможно, но не проще. Но не проще!!!
Ну, к Оберону это выражение не имеет никакого отношения. Там все усложнено настолько, насколько возможно, но не сложнее
Здравствуйте, Сергей Губанов, Вы писали:
B>>Людей, которые пишут так вот в одну строчку я на работу не возьму. B>>Потому что прочесть этот код будет невозможно!
СГ>А я не возьму на работу людей, которые потом не возьмут на работу описанных Вами людей. СГ>Не постигаю, что такого кроется невозможного прочитать элементарное: WHILE a DO x; y; z END
Где же оно элементарное? Тут целая лишняя лексема есть.
{ oberon }
WHILE a DO x ; y ; z END
# python
while a : x ; y ; z
Перекуём баги на фичи!
Re[14]: Ошибка 3
От:
Аноним
Дата:
15.06.05 14:45
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>В общем, Оберон победил — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
Дык ещё бы — слепым от фанатства оберонщикам мрак самого оберона не по чём — они только и успевают бешеную слюну с лица смахивать
Re[14]: Ошибка 3
От:
Аноним
Дата:
15.06.05 14:46
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>В общем, Оберон победил — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
А глазик случайно не с бельмецом ?
Re[14]: Ошибка 3
От:
Аноним
Дата:
15.06.05 14:48
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>В общем, Оберон победил — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
Да упокойся его душа, раба божьего по имени Оберон. Пусть беды на винте будут ему пухом. Аминь.
Re[14]: Ошибка 3
От:
Аноним
Дата:
15.06.05 14:53
Оценка:
Здравствуйте, Сергей Губанов, Вы писали:
СГ>Это Вам, вообще-то, надо обращаться в начальную школу — там где деление проходят. Открою Вам секрет. Оказывается если сложить два целых числа, то результат тоже будет целым числом (поэтому и "+"). В то же самое время, если разделить два целых числа, то результат будет уже вовсе не целым, а рациональным числом (поэтому DIV).
Сергей — такой туз в рукаве Вы прятали на протяжении всей дискуссии ? Вот это да... Я сражён, наповал. Лежу копытами кверху и не могу отойти. Вот это синтаксическая мощь Оберона, вот это полёт фантазии Вирта.
Здравствуйте, AndreyFedotov, Вы писали:
AF>Здравствуйте, xBlackCat, Вы писали:
BC>>Люди, а куда делся сам, так сказать, "виновник торжества"? А то как-то флейм начинает затихать. Скучно становится...
AF>Эх не берегли мы его...
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Начал я читать этот тред, довольно быстро надоело. Меня не взгляды Сергея Губанова удивляют, тут ИМХО обсуждать не стоит. Меня другое удивляет — как только какая-нибудь ерунда появится, так все сразу дружно бросаются ее опровергать, не жалея ни сил не времени. Стоит ли ? Так ведь если кто-то заявит, что 2*2=5, глядишь, целая дискуссия начнется на эту тему
Да это еще классики описали.
Вспомите Джонатана Свифта и Гулливера.
Самые простые вещи вызываются самые рьяные споры.
Горячих тем вообще мало.
Я лично знаю только две:
1) X vs. Y
2) Нужен ли goto
Здравствуйте, Аноним, Вы писали:
СГ>>Это Вам, вообще-то, надо обращаться в начальную школу — там где деление проходят. Открою Вам секрет. Оказывается если сложить два целых числа, то результат тоже будет целым числом (поэтому и "+"). В то же самое время, если разделить два целых числа, то результат будет уже вовсе не целым, а рациональным числом (поэтому DIV).
А>Сергей — такой туз в рукаве Вы прятали на протяжении всей дискуссии ? Вот это да... Я сражён, наповал. Лежу копытами кверху и не могу отойти. Вот это синтаксическая мощь Оберона, вот это полёт фантазии Вирта.
Ладно... вытаскиваем джокера.
Старый добрый васик имеет две операции деления — x/y вещественное, x\y нацело. Согласитесь, "\" короче чем "DIV".
Про APL я молчу — он не прошёл фильтр Эйнштейна.
M>>Как видим, реальный пример на Обероне ничем не лучше, а даже хуже аналогичного примера на С/С++ СГ>Как видим, реальный пример на Обероне значительно лучше аналогичного примера на С/С++.
Кхм. Это было не голословное утверждение. Там дальше было объяснение, почему, я даже не поленился, и привел оба листинга дрг рядом с другом.
M>> Кстати, вопрос — почему Паскалеподобные языки до сих пор так упорно цепляются за жесткое разделение FUNCTION/PROCEDURE, если разницы в них — практически ноль?
СГ>Учите матчасть. Слово FUNCTION было только в Паскале 1970 года. В Оберонах его нет.
Тогда зачем там слово procedure? Оверхед
M>>И еще вопрос, на засыпку — вопрос о непоследовательности языка. Почему делить — "DIV", а сложить — "+", а не "ADD"?
СГ>Это Вам, вообще-то, надо обращаться в начальную школу — там где деление проходят. Открою Вам секрет. Оказывается если сложить два целых числа, то результат тоже будет целым числом (поэтому и "+"). В то же самое время, если разделить два целых числа, то результат будет уже вовсе не целым, а рациональным числом (поэтому DIV).
Кхм. А вы могли бы просто сказать, что DIV — это целочисленное деление? Я бы понял, уверяю.
M>>В общем, Оберон проиграл — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
СГ>В общем, Оберон победил — это я невооруженным взглядом говорю И не в лексемах дело, а в ясности и отсутствии лишнего визуального шума.
Ладно, еще раз...
PROCEDURE (this: QBitArray) Fill(v: BOOLEAN; size: INTEGER): BOOLEAN, NEW; bool QBitArray::fill( bool v, int size )
BEGIN {
IF size >= 0 THEN if ( size >= 0 ) {
IF ~resize(size) THEN RETURN FALSE END if ( !resize( size ) )
ELSE return FALSE;
size = this.size(); } else {
END; size = this->size();
IF size > 0 THEN }
IF v THEN if ( size > 0 )
memset(data(), 0FFH, (size + 7) DIV 8); memset( data(), v ? 0xff : 0, (size + 7) / 8 );
ELSE if ( v )
memset(data(), 0, (size + 7) DIV 8); pad0();
END; return TRUE;
END; }
IF v THEN pad0 END;
RETURN TRUE;
END Fill;
Итак. Посчитаем (а мы ведь любим считать). В рамках данного исследования я визуальным шумом называю служебные слова и выражения, служебные символы и лексемы. Кодом я называю то, что юзера интересует — переменные, имена функций, цифры. Итак:
Перед тестом есь текст был выровнян по левому краю и убраны пробелы в конце строчек. Статистика — по MS Word Оберон
Всего тескта: 270 символов (330 — с пробелами)
Код: 94 символа
Код/Текст: ~0.35
C++
Всего текста: 170 символов (214 — с пробелами)
Код: 65 символов
Код/Текст: ~0.38
Оп-па. Сюрприз-сюрприз! С точки зрения того, что и где писать — пофиг, что Оберон, что С++. Но обратите внимание, _сколько_ надо писать в Обероне.
А теперь.... Маэстро, туш.
Предлагаю всем присутствующим принять участие вот в этом эксперименте, в котором определяется насколько легко находить определенный текств другом — в зависимости от выравнивания текста и того, написан текст заглавными или строчными буквами. Если хотите, можете посмотреть результаты, котрые говорят, что если текст написан заглавными буквами, то его сложнее читать.
Все еще не убеждены? Возьмем куски кода сверху и пропустим их через анализатор:
С++
Flesch-Kincaid Reading Ease: 62
Ideally, web page text should be around the 60 to 80 mark on this scale. The higher the score, the more readable the text.
Flesch-Kincaid Grade Level: 10
Ideally, web page text should be around the 6 to 7 mark on this scale. The lower the score, the more readable the text.
Gunning-Fox Index: 17
Ideally, web page text should be between 11 and 15 on this scale. The lower the score, the more readable the text. (Anything over 22 should be considered the equivalent of post-graduate level text).
Оберон
Flesch-Kincaid Reading Ease: -709
Ideally, web page text should be around the 60 to 80 mark on this scale. The higher the score, the more readable the text.
Flesch-Kincaid Grade Level: 315
Ideally, web page text should be around the 6 to 7 mark on this scale. The lower the score, the more readable the text.
Gunning-Fox Index: 332
Ideally, web page text should be between 11 and 15 on this scale. The lower the score, the more readable the text. (Anything over 22 should be considered the equivalent of post-graduate level text).
Как говорят англичане — ouch, it hurts.
В университетах учат, что для повышения читаемости текста необходимо избегать заглавных букв.
Я все больше и больше убеждаюсь в непригодности Оберона к написанию сколько-нибудь длинного кода из-за его вопиющей нечитаемости.
Тепреь опять оп! Сейчас мне возразат, что если бы се было так плохо, то Оберон не стали бы использовать на атомных станциях Знаете, и на ассемблере можно написать очень серьезные системы (и писали!). Но является ли это знаком того, что это великолепный язык с безупречным синтаксисом? Никак нет.
Современные _мэйнстрим_ языки программирования находятся где-то посредине между ассемблерным и паскальным синтаксисом, потому что такой синтаксис позволяет наиболее эффективно выразить все необходимые конструкции языка и позволяет в них, конструкциях и языках, довольно легко разобраться.
На данный момент существуют десятки языков, которые позволяют выражать мысли намного эффективнее, чем Оберон (возьмем Perl и манипуляцию стрингами, например). Существуют десятки языков, которые позволяют выражать мысли намного понятнее, чем Оберон (русский, например или С++ — да, С++!). Оберон не хуже и, главное, не лучше этих языков. Он всего лишь один из таких языков со своим, весьма грубым синтаксисом и непонятным будущим. Но делать из него культ? Подсчитывать лексемы? Извините, у многих есть дела поважнее
Здравствуйте, Mamut, Вы писали:
СГ>>Это Вам, вообще-то, надо обращаться в начальную школу — там где деление проходят. Открою Вам секрет. Оказывается если сложить два целых числа, то результат тоже будет целым числом (поэтому и "+"). В то же самое время, если разделить два целых числа, то результат будет уже вовсе не целым, а рациональным числом (поэтому DIV).
M>Кхм. А вы могли бы просто сказать, что DIV — это целочисленное деление? Я бы понял, уверяю.