Текущий архив: 2007.08.26;
Скачать: CL | DM;
ВнизКто что думает? Найти похожие ветки
← →
Real © (2007-06-04 23:24) [280]Мне кажется что сторонники Паскаля это те, кто привык к хорошей документации во всем. Рискну предположить что исходники Паскаля содержат больше комментариев :) Лично мне приятно видеть "begin" вместо "{", потому что для второго нужно помнить что это означает, а для первого - достаточно прочитать обычное английское слово. Мне как и многим приходится работать на нескольких языках, иногда за один день. Из-за этого неизбежны ошибки синтаксиса (типа написание "=" вместо ":="). Я вот уже несколько раз попался на один и тот же прикол: в ПХП, после нескольких часов Делфи пишу -
if (a=1) ...
И конечно же получаю логическую ошибку, потому как ПХП как и Си допускает присвоение в условном операторе... В дельфи по-моему нереально попасть в такую ситуацию, потому как язык достаточно строг к своему синтаксису. Си мне иногда напоминает "бои без правил", тогда как паскаль - хорошо организованный боксерский поединок :) Конечно, иногда раздражает что для объявления переменной нужно поднятся в секцию VAR - но при этом я всегда вспоминаю что сам виноват, больше надо было уделить времени проектированию. Строгая типизация - тоже часто дает негативные последствия, но сколько благодаря этому было выявленно ошибок за все время!
← →
Kostafey © (2007-06-04 23:26) [281]> [280] Real © (04.06.07 23:24)
+1
Ни дать - ни взять
← →
Loginov Dmitry © (2007-06-04 23:26) [282]А мне вот нравится в Паскале представление операторных скобок в виде begin...end. В случае их использования по правилу "begin и end всегда должны располагаться на одном уровне", скорость анализа кода ощутимо увеличивается Многие begin располагают сразу за предыдущим оператором, например,
if (Условие) then begin
что-то там...
end
но это хуже вариант, усваиваемость кода ухудшается.
Во многих современных языках (Си, PHP, C# и т.п.) используются невзрачные фигурные скобки. Ну как их не располагай, усваимость все-равно ниже, чем при использовании правильно расположенных begin...end. Опять получается, что краткость в ущерб усваимости.
Не нравятся "извращенные" конструкции типа a = (b>c)?(b):(c). Такая конструкция неестественна :) Однако ее замена оператором IF естественности ничуть не прибавляет, а объем кода увеличивает. В Паскале IF более "естественен" благодаря наличию "лишнего" слова THEN.
Отдельного разговора заслуживает навороченный оператор цикла for(;;). (какая форма цикла FOR более естественна, та, что здесь, или та, что в Паскале?)
← →
Kostafey © (2007-06-04 23:40) [283]> А мне вот нравится в Паскале представление операторных скобок
> в виде begin...end
Так а > [280] Real © (04.06.07 23:24) о чем говорил ?
> Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> :(c).
Ну да, вместо них я пишу что-то вроде:
function cppq(strq: string; str1: string; str2: string):string;
begin
if strq=str1 then
Result:=str1
else
Result:=str2;
end;
Полезня в СPP эта конструкция !
> Отдельного разговора заслуживает навороченный оператор цикла
> for(;;). (какая форма цикла FOR более естественна, та, что
> здесь, или та, что в Паскале?)
Обе хороши.
← →
Real © (2007-06-04 23:49) [284]
> +1
> Ни дать - ни взять
Благодарю :)
> Многие begin располагают сразу за предыдущим оператором,
> например,
>> if (Условие) then begin
> что-то там...
> end
Заметил что большая часть исходников на си-подобных языках страдает этим форматированием. Поэтому первым делом заменяю всеif (условие) {
...
}
наif (условие)
{
...
}
← →
Eraser © (2007-06-04 23:51) [285]> [280] Real © (04.06.07 23:24)
> Строгая типизация - тоже часто дает негативные последствия,
> но сколько благодаря этому было выявленно ошибок за все
> время!
эт точно, а php по-хорошему нужно все входные параметры функции приводить в нужному типу, иначе проблемы могут быть, так что отсутствие типизации, как это не пародоксально, приводит только к увеличению кода.
> [282] Loginov Dmitry © (04.06.07 23:26)
насчет скобок - не согласен, нормальная усваиваемость, особенно если писать в видеif (a == b)
{
c = a;
}
т.е. не далеть строку для скобки, а неif (a == b) {
c = a;
}
илиif (a == b) {c = a;}
> Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> :(c). Такая конструкция неестественна :)
не естесственна, согласен, но часто не хватает её в паскале.. ) есть конечно IfThen, но это немного не то.
но это все конечно дело вкуса.
← →
Vendict © (2007-06-05 00:14) [286]Defunct © (03.06.07 22:23) [113]
В некоторых процессорах имеется аппратный автоикремент индексного регистра, поэтому запись:
A[ i++ ] = x;
выглядит куда более понятной, читаемой и компактной чем
A[ i ] := x;
i := i + 1;
ничего себе понятной ! не зная языка, не скажешь, что первым делается, увеличивается i или меняется значение элемента массива.
← →
Kostafey © (2007-06-05 00:18) [287]> ничего себе понятной ! не зная языка, не скажешь, что первым
> делается, увеличивается i или меняется значение элемента
> массива.
Ну для CPP/Pascal знание - незниние языка не столь актуально...
Вот однажды мне подсунули пронраммульку на Fortran...;)
Куда деваться-разобрался, перенес в Delphi.
← →
euru © (2007-06-05 00:47) [288]
> default © (04.06.07 18:57) [278]
> мне вот интересно, этот язык был экспериментальный или как?
> ...для диссера может лишь...видна же сразу утопичность практического
> применения таких языков из-за чрезвычайной их перегруженности
> Kostafey © (04.06.07 22:56) [279]
> А этот АВАР - вообще имхо сумасшедший.Структура кода на
> нем, наверно будет, не читаема, короче не язык - бредполный
> (уж простите за грубость), ну не воспринимается он визуально,
> просто никак вообще не воспринимается.
Вы хотя бы для прикола в Яндексе слово "ABAP" набрали и оценили его экспериментальность.
> McSimm_ © (04.06.07 18:43) [277]
> Я тут прикинул...
> MOVE (SUBTRACT (MULTIPLY (MULTIPLY x BY x) BY 5) BY C) TO y.
> Правильная запись ?
Разве такая запись похожа на человеческую? На АВАР это записывается так:MOVE 5 TO y.
MULTIPLY y BY x.
MULTIPLY y BY x.
SUBTRACT c FROM y.
Но можно использовать и упрощённый синтаксис:y = 5 * x * x - c.
:)
> default © (04.06.07 18:25) [274]
> покажи программку на АВАР?!
Да пожалуйста.* Вариация на тему "Hello, world"
report z_hello_world.
start-of-selection.
write / "Hello, world!".
← →
Real © (2007-06-05 00:53) [289]
> > default © (04.06.07 18:25) [274]
> > покажи программку на АВАР?!
> Да пожалуйста.
> * Вариация на тему "Hello, world"
> report z_hello_world.
>
> start-of-selection.
> write / "Hello, world!".
Ужас какой-то... :)
← →
Kostafey © (2007-06-05 01:06) [290]> Вы хотя бы для прикола в Яндексе слово "ABAP" набрали и
> оценили его экспериментальность.
А он оказывается даже на практике применяется.
Ничего не понимаю (С)
← →
Defunct © (2007-06-05 01:41) [291]Мне в паскале нравится только одно - базовый тип String. Против этого не попрешь. В С string"а нет, в C++ string реализован через прогнившую абстракцию. Которая рушится при первой же попытке сделать
S = "hello " + "world";
Как ни странно почему-то никто этого не отметил.
Все остальные так называемые преимущетсва Паскаля - якобы более лучшая читаемость кода, строгая типизация позволяющая выявлять ошибки - надуманы. Читаемость кода зависит от опыта и от привычки, а это дело наживное. Годик другой поработать с C - и будет все понятно и естесственно.
← →
Однокамушкин (2007-06-05 08:38) [292]
> Kostafey © (04.06.07 23:40) [283]
> > Не нравятся "извращенные" конструкции типа a = (b>c)?(b)
> > :(c).
>
> Ну да, вместо них я пишу что-то вроде:
>
> function cppq(strq: string; str1: string; str2: string):
> string;
> begin
> if strq=str1 then
> Result:=str1
> else
> Result:=str2;
> end;
>
> Полезня в СPP эта конструкция !
Неэквивалентная замена... сравните:a = b == 0 ? 0 : c/b;
иfunction cppq(Cond: Boolean; const x, y: Real): Real;
begin
if Cond then
Result := x
else
Result := y;
end;
a := cppq(b = 0, 0, c/b);
так что эту конструкцию не всегда можно заменить функцией, иногда надо if прямо по месту вставлять...
> Defunct © (05.06.07 01:41) [291]
> Все остальные так называемые преимущетсва Паскаля - якобы
> более лучшая читаемость кода, строгая типизация позволяющая
> выявлять ошибки - надуманы.
Вы забыли ещё несколько вполне реальных преимуществ Паскаля... например, отсутствие мерзости под названием препроцессор... или нормальная раздельная компиляция модулей, а не объединение исходников на уровне текста... да и строгая типизация лично мне не раз помогала, так что надуманным это преимущество я назвать никак не могу...
← →
Однокамушкин (2007-06-05 08:56) [293]
> Игорь Шевченко © (04.06.07 17:48) [270]
> Для того, кто хорошо знает язык, запутанностью это не выглядит.
> Точно также, как для привыкших к паскалю не выглядят запутанными
> конструкции с множествами (+, *)
Не согласен... психологи говорят, что человек может одновременно оперировать не более чем семью сущностями, да и то не у всех это получается... шесть конструкций в одной строке - это близко к пределу... А операции с множествами - это оперирование одной сущностью, и тут просто надо знать, что это за сущность...
Правда, для тех, кто много раз использовал while (*d++ = *s++); эта конструкция уже воспринимается как единое целое, а не комбинация шести конструкций, и вы этом смысле читается легко... но множество комбинаций, которые человек может запомнить как единое целое, очень мало по сравнению со всем множеством комбинаций...
А какое-нибудь сложное арифметическое выражение, содержащее, скажем, только +,-,*,/ (на Паскале и на Си оно запишется, кстати, одинаково) будет восприниматься тяжело, несмотря на то, что каждое действие само по себе просто и понятно... Так что не в сложности отдельной операции дело, а в том, как они комбинируются...
← →
db2admin © (2007-06-05 09:06) [294]Loginov Dmitry © (04.06.07 23:26) [282]
#define begin {
#define end }
был в свое время файл заголовок в си, который синтаксис си очень похожим делал на синтаксис паскаля
← →
Alkid © (2007-06-05 09:09) [295]Господа, внесу свежую мысль:
Синтаксис - это вопрос вкуса.
Он ортогонател семантике.
Нету по определению более лучшего синтаксиса или более худшего. Это вопрос првычки. Я привык к С-подобному синтаксису и дельфёвый мне кажется очень неуклюжим. Кто-то привык в паскалевсокму, и сишный синтаксис кажется ему убогим и нечитаемым.
Истины тут нет.
← →
Однокамушкин (2007-06-05 09:46) [296]
> Alkid © (05.06.07 09:09) [295]
Неправильная мысль... существуют формальные правила описания синтаксиса (например, форма Бэкуса-Наура) и связанные с ними правила синтаксического разбора... соответственно, грамматики языка могут иметь разные классы - LR(1), LL(1) и т.д... и при таком формальном описании количество и сложность синтаксических конструкций становится измеряемой объективной величиной...
Чтобы было понятнее, поясню... например, писать "{" или "begin" или там "%" или "mod" - это дело вкуса, потому что структура формальных правил при этом не меняются, просто одна лексема заменяется другой... а вот появление оператора ++ грамматику меняет сильно, потому что синтаксис выражения a+++b не описывается контекстно-свободной грамматикой, только контекстно-зависимой, а это объективно сложнее... кстати, если бы вместо ++ и -- использовались бы, например, @+ и @-, проблем бы не было, выражения a@++b и a+@+b не перепутаешь... проблема синтаксиса си в данном случае в том, что плохо проработан алфавит языка, т.е. "++" является одновременно и отдельным символом языка, и допустимой комбинацией двух символов...
← →
palva © (2007-06-05 09:52) [297]> Alkid © (05.06.07 09:09) [295]
Это точно. А то я все в недоумении читаю наезды на if (a=1) {;} или *a++=*b++;
Что здесь может быть заумного? Для меня, как для сишника гораздо заумнее выглядит a := b
← →
Alkid © (2007-06-05 09:53) [298]
> Однокамушкин (05.06.07 09:46) [296]
Я это всё прекрасно понимаю, да. Но это всё теория. На практике синтаксис является именно делом вкуса. Случаи, где возникает неоднозначность с теми же операторами "++" и "--" редки. Скажу прямо - я на С/С++ программирую уже лет 7-8 и у меня НИ РАЗУ подобные неоднозначности не возникали. Я что-то делаю не так?
← →
Anatoly Podgoretsky © (2007-06-05 09:54) [299]> Однокамушкин (05.06.2007 09:46:56) [296]
> проблема синтаксиса си в данном случае в том, что плохо проработан алфавит языка
Да кто же его прорабатывал
← →
db2admin © (2007-06-05 09:56) [300]Alkid © (05.06.07 09:53) [298]
ну не знаю попробуй книжки почитать Фленова например ))
← →
SPeller_work (2007-06-05 09:56) [301]А я вот уже 2 года пишу на пхп, Дельфи не трогаю. Сишный синтаксис поначалу непривычен после паскалевского, но привыкаешь. Но читаемость сишных кодов всеравно хуже паскалевских из-за большого количества мелких, но значимых синтаксических деталей вроде {/(:? . Гибкость языка приятна, очень удобно писать $array[] = "new value"; когда хочешь добавить новый элемент к массиву, но поначалу попадался на конструкциях вроде $f = "a" . (true) ? "b" : "c"; (скажите без проверки, чему будет равна переменная f), когда гонялся за "вкусностями" языка.
Пришлось мне пописать и на визуал бейсике, 2005-м. Смесь си и бейсика оставила впечатление хуже паскаля, си и даже старого (визуал)бейсика.
По поводу темы обсуждения: лично для меня - разницы, на чем писать - нет. Но паскаль нравится больше потому что код нагляднее и элегантнее. Как-то проще мне на нем выводить то что задумано. Возможно, это из-за того, что на нем вобщем-то и выходил на нынешний уровень программирования. Пхп хоть и знаю сейчас очень хорошо, но всё-равно как-то не то пальто.
← →
palva © (2007-06-05 10:01) [302]> чему будет равна переменная f
b это без проверки. Угадал?
← →
Loginov Dmitry © (2007-06-05 10:05) [303]ab
← →
Reindeer Moss Eater © (2007-06-05 10:07) [304]Лучше всего синтаксис у C#. Лучше даже, чем у Object Pascal.
← →
palva © (2007-06-05 10:07) [305]Фигасе! А я привык на c ставить операцию ? чуть ли не на последнее место. Я бы конечно скобками проложился, если бы сам писал.
← →
Однокамушкин (2007-06-05 10:28) [306]
> Reindeer Moss Eater © (05.06.07 10:07) [304]
> Лучше всего синтаксис у C#. Лучше даже, чем у Object Pascal.
Это что ж за синтаксис такой замечательный, что он не даёт мне объявить нормальную процедуру там, где требуется именно процедура? Я должен объявлять новый класс, в нём - статический метод, и при вызове этого метода указывать имя класса... класс - это нечто такое, экземпляры чего должны создаваться (или он должен служить предком для других классов), а тут получается, что язык вынуждает меня создавать класс, от которого ни наследования нет, ни экземпляры его не создаются... класс играет роль пространства имён... Какая от этого польза в народном хозяйстве?!!!
А уж что там они со сборками и пространствами имён накрутили, на этом вообще диссертацию по психиатрии писать можно... есть хорошо известная ещё со времён модулы-2 концепция модулей, которые являются и единицам компиляции, и единицами инкапсуляции, и единицами компоновки, и пространствами имён... все дельфисты должны знать эту концепцию, в Delphi её реализовали практически без изменений... А в C#? Простанство имён может быть размазано на несколько сборок, сборка - содержать несколько пространств имён, что является единицей компиляции, вообще понять невозможно... Очень надеюсь, что пессимистичные прогнозы насчёт висты исполнятся, мелкомягкие рухнут, и мы будем избавлены от этого кошмара...
Кстати, эта перепутанность сборок и пространств имён может приводить к совершенно неожиданным ошибкам - пример есть в книге http://www.piter-press.ru/book.phtml?978546900378
← →
Reindeer Moss Eater © (2007-06-05 10:33) [307]Это что ж за синтаксис такой замечательный, что он не даёт мне объявить нормальную процедуру
Это не синтаксис, это объектная модель такая.
Кстати я у нее плюсы нашел (после того, как поматерился минут 10)
Если любая "запятая" - это непременно член класса, то до нее лекго добраться через хинты и подсказки иде.
В частности это касается разных констант - параметров процедур.
Ну удобно же.
← →
Однокамушкин (2007-06-05 10:55) [308]
> Reindeer Moss Eater © (05.06.07 10:33) [307]
> Это не синтаксис, это объектная модель такая.
Это имхо не объектная модель, а имитация объектной модели для рекламных целей... ООП сейчас в моде, вот они, вслед за джавой, и сделали такой синтаксис, чтобы можно было заявлять, что язык получился чисто объектно-ориентированным... Только ерунда всё это... есть три основных конструкции, каждая из которых однозначно выдаёт принадлежность языка к классу императивных: while, if и goto - в шарпе есть все три... так что это не ОО-язык, это императивный язык с элементами ООП, поэтому насильственное запихивание любой функции в класс смотрится в нём, как седло на корове... настоящий ОО-язык - это, например, Smalltalk... ради интереса попробуйте найти его описание и посмотреть, как в нём организуются циклы и ветвления... вот в таком языке действительно функция вне объекта - нонсенс...
И ещё - я вовсе не против императивных языков с элементами ООП, как раз такие мне больше всего и нравятся, а Smalltalk считаю не очень удобным... просто мне не нравится, когда такой язык пытаются преподнести как чистый ОО-язык исключительно из маркетинговых соображений...
← →
Игорь Шевченко © (2007-06-05 11:00) [309]Real © (04.06.07 23:24) [280]
> Лично мне приятно видеть "begin" вместо "{", потому что
> для второго нужно помнить что это означает, а для первого
> - достаточно прочитать обычное английское слово.
Для китайца или для русского что begin, что { - ни то, не другое не является родным. Скобку быстрее набить. Так что не надо говорить про "простое английское слово". Особенно про слово implementation - уж роднее некуда.
> Конечно, иногда раздражает что для объявления переменной
> нужно поднятся в секцию VAR - но при этом я всегда вспоминаю
> что сам виноват, больше надо было уделить времени проектированию
Лично меня раздражает, что все переменные надо объявлять в этой секции, даже те, которые нужны сугубо локально, внутри блоков begin..end. Код запутывается донельзя.
Defunct © (05.06.07 01:41) [291]
> Читаемость кода зависит от опыта и от привычки, а это дело
> наживное
Целиком и полностью поддерживаю.
← →
Reindeer Moss Eater © (2007-06-05 11:03) [310]просто мне не нравится, когда такой язык пытаются преподнести как чистый ОО-язык исключительно из маркетинговых соображений...
А я вообще не обращаю внимания на то, как его пробуют преподнести.
Мне нравится он сам по себе и все.
:)
← →
Юрий Зотов © (2007-06-05 11:42) [311]Возвращаясь к синтаксису Си, предлагаю улыбнуться свежеживому примеру:
palva © (05.06.07 09:52) [297]
"...я все в недоумении читаю наезды на if (a=1) {;} или *a++=*b++;
Что здесь может быть заумного? Для меня, как для сишника гораздо заумнее выглядит a := b"
SPeller_work (05.06.07 09:56) [301]
"скажите без проверки, чему будет равна переменная f"
palva © (05.06.07 10:01) [302]
"b это без проверки. Угадал?"
Loginov Dmitry © (05.06.07 10:05) [303]
"ab"
palva © (05.06.07 10:07) [305]
"Фигасе!"
=====================================
Что видим? То, что даже сишник с опытом, человек, хорошо знающий язык - и то "с лету" не понял написанного. Даже ему - и то потребовалось время на осмысливание.
Что тут скажешь? Простой, понятный, прозрачный синтаксис. Однозначно.
:о)
← →
etc (2007-06-05 11:47) [312]
> Юрий Зотов © (05.06.07 11:42) [311]
не путайте PHP и С, PHP хоть и С подобный, но всеже не С, так что это нормально.
← →
palva © (2007-06-05 11:53) [313]> хорошо знающий язык - и то "с лету" не понял написанного
Xорошо знающий язык C и то "с лету" не понял написанного на PHP. Бывает и такое. Но обычно сишник "понимает" также кучу других языков именно потому, что сишные конструкции для него прозрачны. А операция . в C просто отсутствует.
← →
Игорь Шевченко © (2007-06-05 11:53) [314]
> Что видим? То, что даже сишник с опытом, человек, хорошо
> знающий язык - и то "с лету" не понял написанного.
Ты забыл добавить, что написанного на другом языке. Опыт сишника в данном случае равен опыту паскалиста.
← →
ocean © (2007-06-05 12:15) [315]Глупо защищать С в Дельфовой конференции, но невозможно же слушать эти наезды. "Неоднозначный синтаксис, а вдруг я совершу ошибку"? Понятно, что при работе в команде "молодых дарований" и в условиях вечной нехватки времени это становится существенным. Но, извините, это все же слова ремесленника. "У простых людей и болезни должны быть прямые: переломы конечностей, грыжа..." "Дайте мне begin...end"
С и Паскаль - разные вещи. С прекрасен своей буйной адресной арифметикой, и оператор ++ - его изюминка.
← →
DesWind © (2007-06-05 12:30) [316]Разбирался тут в заголовочных файлах от MS для написания плагина, думал поседею.Макросов понапихали до нельзя. Конечно в итоге код в примере получился из трех строчек, но разобраться что на самом деле происходит очень тяжко. И в тоже время вполне понятны и прозрачны заголовочные файлы для Миранды.
← →
Плохиш © (2007-06-05 12:34) [317]
> ocean © (05.06.07 12:15) [315]
> Глупо защищать С в Дельфовой конференции, но невозможно
> же слушать эти наезды.
ИМХО, вдвойне глупо приходить в делфийную конференцию и вопить какой делфи - плохой, а си - крютой и после плякать, что тебя послали...
← →
Alkid © (2007-06-05 13:10) [318]Ну здесь особо никто, вроде, и не вопил, что дельфи плохой :-)
Или я что-то пропустил?
← →
IMHO © (2007-06-05 13:15) [319]
> Игорь Шевченко © (05.06.07 11:53) [314]
>
>
> > Что видим? То, что даже сишник с опытом, человек, хорошо
> > знающий язык - и то "с лету" не понял написанного.
>
>
> Ты забыл добавить, что написанного на другом языке.
Чукча не читатель, чукча исключительно писатель?
← →
Игорь Шевченко © (2007-06-05 13:17) [320]IMHO © (05.06.07 13:15) [319]
В зеркало, дружок
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 вся ветка
Текущий архив: 2007.08.26;
Скачать: CL | DM;
Память: 1.11 MB
Время: 0.146 c