Re[14]: Читать всем - статистикаи читаемость
От: Mamut Швеция http://dmitriid.com
Дата: 15.06.05 16:21
Оценка: 30 (13) +1
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 и манипуляцию стрингами, например). Существуют десятки языков, которые позволяют выражать мысли намного понятнее, чем Оберон (русский, например или С++ — да, С++!). Оберон не хуже и, главное, не лучше этих языков. Он всего лишь один из таких языков со своим, весьма грубым синтаксисом и непонятным будущим. Но делать из него культ? Подсчитывать лексемы? Извините, у многих есть дела поважнее


dmitriid.comGitHubLinkedIn