Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.17;
Скачать: CL | DM;

Вниз

кол-во подстрок в строке   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.016 c
6-1211457427
тимохов
2008-05-22 15:57
2010.01.17
Vista и ошибка 10051


2-1258722733
Andrewtitoff
2009-11-20 16:12
2010.01.17
Форма


15-1257975683
Германн
2009-11-12 00:41
2010.01.17
Параметр "Рабочая папка" в свойствах ярлыка


15-1257529216
Kolan
2009-11-06 20:40
2010.01.17
А как добавить tags, branches и trunc в уже существующий svn?


15-1257434008
pasha_golub
2009-11-05 18:13
2010.01.17
Транспорт ICQ через Jabber в Миранде