Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1258705344
Мишаня
2009-11-20 11:22
2010.01.17
Как узнать курс валют?


15-1258068949
Германн
2009-11-13 02:35
2010.01.17
Перевод с ... на всемирный


15-1254559231
Суслик_
2009-10-03 12:40
2010.01.17
JSON в дельфи


3-1233310362
Konrads
2009-01-30 13:12
2010.01.17
операция деления в запросе


2-1258701399
Б
2009-11-20 10:16
2010.01.17
Получить кол-во видеопамяти.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский