OberonCore
https://forum.oberoncore.ru/

PasWiki -- веселое pro-Pascal чтение
https://forum.oberoncore.ru/viewtopic.php?f=8&t=1198
Страница 1 из 3

Автор:  Info21 [ Вторник, 14 Октябрь, 2008 23:14 ]
Заголовок сообщения:  PasWiki -- веселое pro-Pascal чтение

Программер, локализованный в провинции Альберта, Канада, пишет весело и наблюдательно:
http://z505.com/cgi-bin/qkcont/qkcont.c ... -Directory
Заодно можно английский подучить :-)

Автор:  Info21 [ Вторник, 14 Октябрь, 2008 23:23 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Вот это, например:

They C Programmers Finally Got A Clue
http://z505.com/cgi-bin/qkcont/qkcont.c ... 20A%20Clue

What The Fuck Is This C Shit
http://z505.com/cgi-bin/qkcont/qkcont.c ... 20C%20Shit

PYTHON SUCKS
http://z505.com/cgi-bin/qkcont/qkcont.c ... ON%20SUCKS
Рецепт, предложенный тут (толкнуть Java и заодно продать дорогущие машины) был действительно реализован практически на моих глазах: Java на дорогущем 64-битном железе было толкнуто наивному профессору... "Избыточная сложность как источник сверхприбыли."

Автор:  001 [ Четверг, 09 Апрель, 2009 03:27 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Ну и чего он интересного и веселого пишет?
По поводу Си:
С точки зрения семантической выразительности, как известно языки Си и Паскаль примерно одинаковы.
Но, тот автор придирается к синтаксису.
Объективными качествами синтаксиса является только в той или иной мере наличие синтаксического оверхеда.
Это begin/end вместо фигурных скобок или просто лишние слова заимствованные из естественных языков - TO, DOWNTO, THEN. И так далее.
Бесспорно, синтаксического оверхеда в Паскале больше. Другое дело хорошо это или плохо - мнения на этот счет бывают разные...
Также можно упомянуть Бритва Оккама. При проектировании языка Си придерживались именно этого принципа. И это объективно. Так что решения в дизайне языка Си (синтаксис, семантика) можно обосновать принципами и такими вещами, как синтаксический оверхед. :)

Как можно обосновать дизайн языка Паскаль, кроме как личными пристрастиями автора - совершенно не понятно.

Автор:  Сергей Губанов [ Четверг, 09 Апрель, 2009 10:15 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

>> Бесспорно, синтаксического оверхеда в Паскале больше.

Это утверждение ложно. Бесспорно обратное утверждение. Не путайте количество нетерминалов с длиной лексем.

Автор:  001 [ Четверг, 09 Апрель, 2009 13:50 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Как нетерминал может создавать синтаксических оверхед? :)
В грамматику можно добавить сколь угодно много нетерминалов, и при этом язык, задаваемый ею не изменится.

Автор:  Info21 [ Четверг, 09 Апрель, 2009 14:41 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

001 писал(а):
Как нетерминал может создавать синтаксических оверхед? :)
В грамматику можно добавить сколь угодно много нетерминалов, и при этом язык, задаваемый ею не изменится.
Зато убавить сколь угодно много нельзя.

Автор:  Madzi [ Четверг, 09 Апрель, 2009 14:49 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Рискну предположить, что всё-таки имелись ввиду терминалы.

Автор:  Valery Solovey [ Четверг, 09 Апрель, 2009 15:20 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

001>Объективными качествами синтаксиса является только в той или иной мере наличие синтаксического оверхеда.
Источник?

001>... или просто лишние слова...
Источник?

001>Бесспорно, синтаксического оверхеда в Паскале больше.
Почему бесспорно? Я бы и поспорил... Источник?

001 писал(а):
Также можно упомянуть Бритва Оккама. При проектировании языка Си придерживались именно этого принципа. И это объективно.
Вы уверены, что знаете, что такое бритва Оккама?
001 писал(а):
Как нетерминал может создавать синтаксических оверхед?
В грамматику можно добавить сколь угодно много нетерминалов, и при этом язык, задаваемый ею не изменится.
Как это возможно согласовать с бритвой Оккама. Приведите пример.

001 писал(а):
Так что решения в дизайне языка Си (синтаксис, семантика) можно обосновать принципами и такими вещами, как синтаксический оверхед. :)
А доказать, что эти критерии достаточны обоснования, слабо?

Автор:  Madzi [ Четверг, 09 Апрель, 2009 15:34 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Если уж говорить о терминалах и длине лексем, то язык μ вне конкуренции.

Автор:  Валерий Лаптев [ Четверг, 09 Апрель, 2009 16:26 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

По поводу избыточности С и паскаля.
Лично мне пофигу, что и как с теоретической точки зрения считается избыточным. А вот личные впечатления однозначны.
После писания на С и С++ необходимость писать паскалевские then, begin, end, procedure, function, i:=i+1 меня просто раздражала.
С увеличением проектов это раздражение постепенно проходило, поскольку в больших С++-проектах, особенно с шаблонами, тоже приходится писать много лишних знаков

Автор:  Madzi [ Четверг, 09 Апрель, 2009 16:43 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Просто примеры одной программы:

Мю
Код:
{1 $X1000 $Y0 (>X0 -X1 +Y2 ) }
{2 ƒT0 $N0 (^N1000 @1 +N1) ƒR0 ƒY1 -RT /RY :R2 ' seconds¶' }

'Execute Benchmark test 1000 times.¶'
'That is 1.000.000 loops!¶'
@2
'Finished¶'


С
Код:
// CBench1.mc--
// to be copied & pasted in a Memo
void Test1000() {
    nX=1000;
    nY=0;
    while(nX>0) {
        nX--;
        nY=nY+2;
    }
}
void TestManyLoops() {
    nT=Ticks();
    for(nN=0; nN<1000; nN++)
        Test1000();
    nR=Ticks()-nT/TicksPerSecond();
    puts(nR;2);
    puts(' seconds\n');
}

main() {
    puts('Execute Benchmark test 1000 times.\n');
    puts('That is 1.000.000 loops!\n');
    TestManyLoops();
    puts('Finished');
}


Basic
Код:
Test1000:
    X=1000 : Y=0
    WHILE X>0
        DEC X : Y=Y+2
    WEND
RETURN

TestManyLoops:
    T=TICKS
    FOR N=1 TO 1000
        GOSUB Test1000
    NEXT
    R=TICKS-T/TICKSPERSEC
    PRINT R USING 2;
    PRINT " seconds"
RETURN

BEGIN
PRINT "Execute Benchmark test 1000 times."
PRINT "That is 1.000.000 loops!"
GOSUB TestManyLoops
PRINT "Finished"
END


Pascal
Код:
Procedure Test1000;
begin
    nX:=1000;
    nY:=0;
    while nX>0 do begin
        dec(nX);
        nY:=nY+2;
    end;
end;

Procedure TestManyLoops;
begin
    nT:=Ticks;
    for nN:=1 to 1000 do
        Test1000;
    nR:=Ticks-nT/TicksPerSecond;
    write(nR,2);
    writeln(' seconds');
end;

begin
    writeln('Execute Benchmark test 1000 times.');
    writeln('That is 1.000.000 loops!');
    TestManyLoops;
    writeln('Finished');
end.

Автор:  Александр Ильин [ Четверг, 09 Апрель, 2009 17:20 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Madzi писал(а):
puts('Finished');
Программа на Мю пишет "Finished" автоматически?

Автор:  Vlad [ Четверг, 09 Апрель, 2009 17:26 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

001 писал(а):
Объективными качествами синтаксиса является только в той или иной мере наличие синтаксического оверхеда.


Не упоминайте словосочетание "синтаксический оверхед" всуе :) Флейм, возникший стараниями одного оберонщика (не буду показывать пальцем) в свое время на www.rsdn.ru, дискредитировал там оберон раз и навсегда :)

Автор:  Валерий Лаптев [ Четверг, 09 Апрель, 2009 17:37 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Vlad писал(а):
Не упоминайте словосочетание "синтаксический оверхед" всуе :) Флейм, возникший стараниями одного оберонщика (не буду показывать пальцем) в свое время на http://www.rsdn.ru, дискредитировал там оберон раз и навсегда :)

И очень жаль. Было бы хорошо иметь там форум по оберонам.

Автор:  Info21 [ Четверг, 09 Апрель, 2009 18:32 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Vlad писал(а):
... дискредитировал там оберон раз и навсегда
Опять вранье. Реклама хорошая была. Учитывая объективную реальность.

Автор:  Madzi [ Четверг, 09 Апрель, 2009 22:55 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Александр Ильин писал(а):
Madzi писал(а):
puts('Finished');
Программа на Мю пишет "Finished" автоматически?

Нет. Забыл :(
Кстати говоря, в Мю, только один цикл: WHILE описывается (<условие> операторы ).

Автор:  Александр Ильин [ Пятница, 10 Апрель, 2009 05:22 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Madzi писал(а):
Александр Ильин писал(а):
Программа на Мю пишет "Finished" автоматически?
Нет. Забыл :(
А было бы забавно : ))

Автор:  А.П. [ Пятница, 10 Апрель, 2009 06:49 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Валерий Лаптев писал(а):
По поводу избыточности С и паскаля...
После писания на С и С++ необходимость писать паскалевские then, begin, end, procedure, function, i:=i+1 меня просто раздражала.
С увеличением проектов это раздражение постепенно проходило, поскольку в больших С++-проектах, особенно с шаблонами, тоже приходится писать много лишних знаков

Напомню еще раз. В ББ есть возможность настраиваемой автоподстановки (предложенной Федором Васильевичем, модуль Edit), благодаря которой в 2-3 касания клавиатуры набираются не только полные слова, но целиком базовые конструкции, да еще и с правильным форматированием, не говоря уже о 100% безошибочном наборе. Причем ассортимент автоподстановок легко расширить и подправить под личные вкусы или особенности программного проекта. Подобных фич, существенно сокращающих число касаний клавы, в ББ достаточно много.
Так что "удельная эргономичность" читабельность_текста/число_касаний_клавиатуры КП/ББ, на мой взгляд, вне конкуренции.
Типичный пример из школьной учебной практики. Надо провести черепшку вперед на 100 точек экрана и повернуть налево на 45 градусов. Пишем конспект на доске и в тетради: и 100; п 45; Нажимаем: и F5 100 End п 45 End Получилось 10 нажатий. Имеем программынй текст Ч.Идти( 100 ); Ч.Повернуть( 45 ); объемом в 30 символов. Экономия на касаниях - в 3 раза.
Каркасы процедур, циклов, условных операторов набираются не в ущерб читабельности еще более экономичным образом:
p F5 w F5 f F5 if F5 iff F5

Автор:  Валерий Лаптев [ Пятница, 10 Апрель, 2009 07:42 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Напомню тоже, что переход с Паскаля на С произошел в начале 90-х, когда в Ташкенте об Оберонах никто даже одной буквы не слыхал.
То, что среда ББ позволяет - это нормально и правильно. И потом, в Турбо- системах тоже есть макросы (в турбоС точно был, а вот в Турбрпаскале - не помню).
Для постороннего человека текст на паскале выглядит почти как нормальный английский текст.
Но вот после скобок и лаконичности С это раздражало.
Я так и понял создателей С: им хотелось писать как можно меньше символов, поэтому так и сделано. Они ж не преподы, а программеры, причем очень высокого класса. Вот и создавали для себя.

Автор:  Info21 [ Пятница, 10 Апрель, 2009 09:56 ]
Заголовок сообщения:  Re: PasWiki -- веселое pro-Pascal чтение

Валерий Лаптев писал(а):
Я так и понял создателей С: им хотелось писать как можно меньше символов, поэтому так и сделано. Они ж не преподы, а программеры, причем очень высокого класса. Вот и создавали для себя.
Они просто через медленный терминал работали. Число литер было критичным. Что-то в этом роде. Никакого отношения ни к образованию, ни к классу.

Кстати, я не верю, что они в 1970 были программерами высокого класса.
В этом пункте часто путают высокую (количественно), но простую (качественно) сообразительность с классом программерства.

Это как путать природные данные и общую функциональную подготовку с техникой какого-нибудь спорта.

Вот пример из жизни: кратный чемпион мира и СССР по хоккею с мячом, впервые взявши бадминтонную ракетку в руки, тут же под ноль разделал 13-летнего пацана, год отзанимавшегося в секции. Но еще через год тот же чемпион (и по-прежнему действующий чемпион мира и СССР) у того же партнера не мог взять и одного очка.

Страница 1 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/