Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];
Внизкол-во подстрок в строке Найти похожие ветки
← →
Alx2 © (2009-11-29 21:38) [40]Юрий Зотов © (28.11.09 22:23) [24]
А уж если рассматривать циклы, то более громозким скорее окажется код на C или Java (где каждый цикл объявляет свой счетчик, тогда как в Delphi он может быть общим для нескольких циклов).
Но ведь С++ и Java не требуют объявления своего счетчика для каждого цикла.
← →
Alx2 © (2009-11-29 21:41) [41]Игорь Шевченко © (29.11.09 20:44) [39]
Кстати, да. Согласен полностью. Сейчас, в основном, пишу на С++. Гораздо реже на Delphi. При переключении на последний, первое время ощущаю раздражение от "воды".
← →
Игорь Шевченко © (2009-11-29 21:41) [42]Alx2 © (29.11.09 21:38) [40]
Не требуют, факт
← →
Alx2 © (2009-11-29 22:00) [43]Игорь Шевченко © (29.11.09 21:41) [42]
Получается, что Юрий Зотов что-то другое имел в виду?
← →
Alx2 © (2009-11-29 22:06) [44]Юрий Зотов © (28.11.09 22:23) [24]
2. if (логическое_выражение) оператор;
На фига логическое выражение заключать в скобки? Синтаксис и без них однозначен.
Мне кажется, в Паскале однозначность конструкции дает "then". В C этого нет.
Вот пример со скобками
if (a) *b=0;
И без скобок (если б так было можно):
if a*b=0;
Получается явная недонозначность.
← →
Alx2 © (2009-11-29 22:10) [45]Юрий Зотов © (28.11.09 22:23) [24]
1. Вызов функции без параметров. Компилятор и так знает, что вызывается функция, и что она без параметров - так на фига же ему еще () нужны?
Например, чтобы отличить адрес (переменную) от вызова по адресу. В Паскале добавлять @, здесь - опускать скобки.
PS
Сорри, что много постов, а не один сводый пост - каждый раз не уверен, что пост последний.
← →
Alx2 © (2009-11-29 22:24) [46]Юрий Зотов © (28.11.09 22:23) [24]
3. try {...} catch {...} finally {...};
Во всех секциях {} - лишние. Синтаксис однозначен и без них.
finally в стандарте С++ нет, но это не важно. После try, да, трудно примером оправдать скобки. Но после заключительного catch как тогда сказать где кончился его код? В Delphi есть обязательный "end" для этой конструкции, здесь - обязательный составной оператор.
← →
Игорь Шевченко © (2009-11-29 22:32) [47]Alx2 © (29.11.09 22:00) [43]
> Получается, что Юрий Зотов что-то другое имел в виду?
Придет Юра, расскажет, что он имел в виду.
Я к другому - каждый язык имеет свои плюсы и свои минусы, тем более, если язык достаточно распространен. Считать минусы языка за какие-то достоинства и подводить под них теоретическую базу - а смысл в этом ?
У Паскаля есть плюсы - встроенная в язык работа со строками, строгая проверка типов, разделение модуля на интерфейс и реализацию - безусловно плюсы. Невозможность реализовать итеративный цикл с произвольным началом, условием прекращения и методом итерации - безусловно минус, невозможность локализовать использованием переменных - безусловно минус, невозможность использовать результат операции присваивания - безусловно минус, отсутствие тернарных операторов - опять же, не плюс.
← →
Alx2 © (2009-11-29 22:45) [48]Игорь Шевченко © (29.11.09 22:32) [47]
Считать минусы языка за какие-то достоинства и подводить под них теоретическую базу - а смысл в этом ?
Мне показалось, что это - ревность. :)
← →
jack128_ (2009-11-29 22:55) [49]
> А уж если рассматривать циклы, то более громозким скорее
> окажется код на C или Java (где каждый цикл объявляет свой
> счетчик, тогда как в Delphi он может быть общим для нескольких
> циклов).
не придется. область видимости счетчика цикла - сам цикл, соответственно для другого цикла можно объявить переменную с тем же именем, что и в предыдущем цикле.void Test()
{
for (int i = 0; i<10; i++) {}
for (int i = 0; i<10; i++) {}
}
// касается только с++/с# - что там в джаве - те виднее.
> 1. Вызов функции без параметров. Компилятор и так знает,
> что вызывается функция, и что она без параметров - так
> на фига же ему еще () нужны?
ну по сравнению с function/procedure в паскале - это мелочь ;-) к тому же появляется явный признак, что вызвается именно функция, а просто переменная копируется.
> 3. try {...} catch {...} finally {...};
> Во всех секциях {} - лишние. Синтаксис однозначен и без
> них.
не в всех, а только в блоке try. для катча и файнали - не всегда однозначен.
ты такой синтаксис хотел бы?? -)
try
do_samething(); // здесь мона опускать скобки
catch
exсption_handler(); // здесь мона опускать скобки
finally
{
finally_handler();
}
try
do_samething(); // здесь мона опускать фиг скобки
catch
{
exсpeption_handler(); // а вот тут - нельзя.
}
??
← →
jack128_ (2009-11-29 22:57) [50]
> разделение модуля на интерфейс и реализацию - безусловно
> плюсы.
вот это кстати - вопрос. Я потихоньку на шарпе пишу - пока не заметил, чтоб отсутствие такого разделения - сильно мешало бы.
← →
Игорь Шевченко © (2009-11-29 23:10) [51]
>
> не придется. область видимости счетчика цикла - сам цикл,
> соответственно для другого цикла можно объявить переменную
> с тем же именем, что и в предыдущем цикле.
Ты бредишь.
← →
jack128_ (2009-11-29 23:13) [52]
> Игорь Шевченко © (29.11.09 23:10) [51]
ну проверь сам..
← →
Юрий Зотов © (2009-11-29 23:31) [53]> Alx2 © (29.11.09 21:38) [40]
> Но ведь С++ и Java не требуют объявления своего счетчика
> для каждого цикла.
Не требуют. Но на практике новый счетчик с тем же именем объявляется практически всегда (тем более, что этому способствуют Ctrl+Space в современных средах разработки). На Паскале такое невозможно.
> Alx2 © (29.11.09 22:06) [44]
> Мне кажется, в Паскале однозначность конструкции дает "then".
> В C этого нет. Получается явная недонозначность.
Да. И вместо того, чтобы доработать синтаксис (в Вашем примере - заменить * другим символом, оставив ее только для умножения) взяли - и влепили скобки. Сделали как проще, но не как лучше.
> Alx2 © (29.11.09 22:24) [46]
> finally в стандарте С++ нет, но это не важно.
Я о джаве говорил. Хотя это тоже не важно.
> Но после заключительного catch как тогда сказать где кончился его код?
Если принять такой синтаксис:
<простой_оператор> ::= <оператор_if> | <оператор_while> | ... и т.д.
<список_операторов> ::= <оператор> | <оператор> <список_операторов>
<блок> ::= { <список_операторов> }
<оператор> ::= <простой_оператор> | <блок>
то все становится элементарно просто:
try <список_операторов> finally <список_операторов> catch <оператор>
> jack128_ (29.11.09 22:55) [49]
> по сравнению с function/procedure в паскале - это мелочь ;-)
Жень, я ведь о вызове говорил, а не об объявлении..
> появляется явный признак, что вызвается именно функция,
> а просто переменная копируется.
Жень, я ведь о джаве говорил. Нет там таких переменных.
> ты такой синтаксис хотел бы?? -)
См. чуть выше.
← →
Юрий Зотов © (2009-11-29 23:39) [54]Alx2 © (29.11.09 22:45) [48]
> Мне показалось, что это - ревность.
Гы... нет, конечно. С [47] действительно можно согласиться. Я это все к тому, что "лишние" буковки в Паскале тыщу раз окупаются его надежностью. По мощности он не уступает C и превосходит Джаву - но он надежнее.
Кроме того, синтаксис Паскаля просто красив, черт побери. Его только надо прочувствовать. Вирт родил шедевр.
← →
jack128_ (2009-11-29 23:49) [55]
> Жень, я ведь о джаве говорил. Нет там таких переменных.
каких "таких"??
var
i: Integer;
begin
i = ident; // в паскале - ты не видя объявления ident не скажешь, что это такое, вызов функции или копирование переменной/константы
int i = ident; // в С++ ident - гарантированно константа/переменная (ну либо макрос, но макросы - это отдельная тема)
>
> > по сравнению с function/procedure в паскале - это мелочь
> ;-)
> Жень, я ведь о вызове говорил, а не об объявлении..
ну как те сказать, для меня было бы не очевидно, что объявление требует указания скобок, а вызов нет.
>
> > ты такой синтаксис хотел бы?? -)
> См. чуть выше.
не прокатило бы. Я в последнее время много всяких сорцов смотрю:
for (var i = 0; i < 10; i++)
{
// даже один оператор обрамляют в скобки.
}
хотя в этом и нет необходимости. видимо традиция...
да и в дельфе врятли бы много народу подписалось бы под такой синтаксис, который ты для сишников предлагаешь..
← →
Игорь Шевченко © (2009-11-30 00:33) [56]jack128_ (29.11.09 23:13) [52]
> ну проверь сам..
Мне не надо проверять, я на С (не С++) давно пишу. Если кто-то путает языки, это его личные проблемы. Объявление переменной внутри блока с областью видимости внутри блока - это свойство языка С,
Юрий Зотов © (29.11.09 23:31) [53]
> Но на практике новый счетчик с тем же именем объявляется
> практически всегда
Мы говорим о конструкциях языка или о практике ? Если о втором, то давай не надо, программу на Фортране можно написать на любом языке программирования, тут у каждого практика - будь здоров.
← →
korneley © (2009-11-30 01:13) [57]
> Игорь Шевченко © (29.11.09 22:32) [47]
Эх!!! Чем больше живу, тем больше не хватает "Эль-76". Всё, что угодно и куда угодно. При аппаратной поддержке. И условный слева условному справа и функция даст тебе то, куда назначить/присвоить, и вааще!!! А само звучание:
_Если
_То
_Иначе
_Все
Не говорю уже про события/исключения на русском грмтк. У меня, например, "!Аляулюгонигусей" было. Ну, типа, всё пропало :)))
А вообще, без ностальгии, - да. На чём быстрее и качественнее у конкретного тебя получается, то и оно. В рамках современных реалий.
ЗЫ: А я думаю: "И почему мне пиво нравится?" Всё он, "Эль" окаянный :)))
← →
Германн © (2009-11-30 01:31) [58]<offtop>
Лично мне на новом месте работы очень помогало то, что язык ST (стандарт МЭК 6-1131/3) в качестве основы взял Паскаль. Но после первого этапа его освоения у меня возникло что-то типа "шизофрении". На паскале (Дельфи) я пытаюсь писать
var
a : Integer;
b at a;
А на ST
A : INT"
B : BYTE absolute A;
</offtop>
← →
Юрий Зотов © (2009-11-30 01:43) [59]> Германн © (30.11.09 01:31) [58]
Периодически на Jav"е пишу
a := 1;
и не могу понять, какого черта эта зараза ругается...
:о)
← →
Германн © (2009-11-30 01:58) [60]
> Юрий Зотов © (30.11.09 01:43) [59]
:)
← →
korneley © (2009-11-30 02:14) [61]
> Периодически на Jav"е пишу
>a := 1;
> и не могу понять, какого черта эта зараза ругается.
> .
Дык, братушка, кто ж Шикльгруберу - то руки подаст? :)
← →
korneley © (2009-11-30 02:15) [62]Не понял почему := "болдом" не прошло...
← →
jack128_ (2009-11-30 11:05) [63]
> Мне не надо проверять, я на С (не С++) давно пишу. Если
> кто-то путает языки, это его личные проблемы. Объявление
> переменной внутри блока с областью видимости внутри блока
> - это свойство языка С,
я вполне четко указал языки, про которые говорил. Видимо кто то умеет писать на С, но не умеет читать по-русски...
← →
Игорь Шевченко © (2009-11-30 11:35) [64]
> я вполне четко указал языки
Ты б еще с лиспом влез
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.01.17;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.008 c