Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Кто что думает?   Найти похожие ветки 

 
db2admin ©   (2007-06-04 13:53) [240]

http://www.google.com/codesearch?hl=ru&q=+lang:pascal+%3Bwhile+show:v2QXQ2QyRiA:81agreY22cg:rDspo9iWheM&sa=N&cd=1&ct=rc&cs_p=ftp://ftp.elf.stuba.sk/pub/pc/pack/qfc202c.zip&cs_f=QFC.PAS#a0


 
Zagaevskiy ©   (2007-06-04 13:55) [241]

Inc() читается нормально, а += труднее заметить в коде среди сотен строк типа -= == и *=


 
Anatoly Podgoretsky ©   (2007-06-04 14:04) [242]

> clickmaker  (04.06.2007 13:21:55)  [235]

Конечно можно, но в ЛИСПе нельзя меньше, вот в этом и разница. Я в какой то программке видел свыше сотни подряд и не одну убрать нельзя.


 
Anatoly Podgoretsky ©   (2007-06-04 14:05) [243]

> default  (04.06.2007 13:31:58)  [238]

Я не использую, я за читабельность, поэтому у меня нет никаких Inc в программах. Я пишу так, чтобы и не программисту было понятно


 
Однокамушкин   (2007-06-04 14:06) [244]


> Anatoly Podgoretsky ©   (04.06.07 14:04) [242]
> Конечно можно, но в ЛИСПе нельзя меньше, вот в этом и разница.
>  Я в какой то программке видел свыше сотни подряд и не одну
> убрать нельзя.

Правильно, одна из расшифровок LISP - Lost In Stupid Parenthesis...


 
euru ©   (2007-06-04 14:28) [245]


> Юрий Зотов ©   (04.06.07 10:56) [165]

> А ЯВУ - это НЕмашинные языки. Они - для ЧЕЛОВЕКА. Именно
> для ЧЕЛОВЕКА они и были придуманы. И поэтому они должны
> быть естественными для ЧЕЛОВЕКА. Иначе теряется сам смысл
> ЯВУ.
Это Паскаль-то естественен для человека? Ещё раз повторю: Паскаль от Си недалеко ушёл. И до естественных языков ему также далеко, как и Си.

Это хорошо видно, если сравнить Паскаль, например, с языком АВАР (Кобол-подобный язык).

1. Естественный язык состоит из предложений. На письме каждое предложение завершается точкой (ну, так принято в нормальных, естественных для человека языках). АВАР строго придерживается этого правила. В Паскале же оно в принципе не соблюдается. Неужели программисты на Паскале не видят этого неестественного для образованного человека способа записи своего труда? Или они настолько безграмотны, что просто этого не замечают?

2. Встречаются какие-то непонятные сокращения const, var, shl, shr.
Как обычный человек может понять, что const - это constant, а не, например, constrict или construction?
То же самое и с var. Более того, как только выяснится, что var - это variable, тут же возникает вопрос: а что именно является переменным у следующего за этим словом объекта данных? Быть может, имя его со временем меняется или тип его зависит от присваиваемых ему значений?
shl и shr вообще какой-то набор согласных, для которых очень сложно сходу подобрать нормальные человеческие слова. При чём как на письме, так и при устном произношении буквы R и L могут легко путаться.
И какой смысл в этих сокращениях? "Смысла никакого. Слово придумано ради самого слова - а это уже выпендреж." (с) Юрий Зотов. "Походу" [34]

АВАР в этом плане более близок нормальному человеку. В нём явно пишется CONSTANTS, вместо непонятного var используется более точное DATA, слэнговое выражение s shr 3 выражено на понятном человеческом языке SHIFT s BY 3 PLACES RIGHT.

3. Даже если слово пишется польностью, могут допускаются элементарные грамматические ошибки. Слово type может несогласовываться с последующими определениями по числу (при определении нескольких типов грамотнее, а значит, понятнее для человека, писать types). слово downto должно писаться раздельно.

4. Непонятно зачем введены различные специальные символы, как будто недостаточно способов выразить так же точно, но более понятно обычному человеку. Например, символ := обозначает "присвоить". Во-первых, нужно запоминать написание самого символа, а во-вторых правильно понимать его смысл. Т.е. непосвящённый человек сразу и не сообразит, что s := 5 означает "присвоить переменной s значение 5", что аналогично более близкому и понятному для человека "поместить значение 5 в переменную s". Именно такой вариант и используется в АВАР: MOVE 5 TO s.
Чтобы хоть как-то оправдать введения этого символа, для него придумали специальные выражения вида a := a + b, a := a /b и т.д. АВАР опять же более человечен в таких случаях:
ADD b TO a.
SUBTRACT b FROM a.
MULTIPLY a BY b.
DIVIDE a BY b.


В принципе, можно и продолжить сравнение, но, я так думаю, и из перечисленного видно, что Паскаль в сравнении с языком АВАР не намного ближе к человеческим языкам нежели Си.


 
default ©   (2007-06-04 14:28) [246]

Anatoly Podgoretsky ©   (04.06.07 14:05) [243]
это религия, Анатолий:)
мне вот нудобно сравнивать более-менее длинные и похожие имена на эквивалентость до и после присваивания, это тормозит чтения, есть риск ошибок как уже говорили
код становится более раздутым
вообщем я за "+=" и тд


 
Игорь Шевченко ©   (2007-06-04 14:30) [247]

euru ©   (04.06.07 14:28) [245]


> слэнговое выражение s shr 3 выражено на понятном человеческом
> языке SHIFT s BY 3 PLACES RIGHT.


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

Ку ?


 
default ©   (2007-06-04 14:34) [248]

огромная утопия этот АВАР и его стремление к понятности
штука в том, что когда рчь идёт о понятности вещей которые часто используются её цена стремится к минус бесконечно, потому что то, что мы часто используем мы запомним без проблем в самой неудобнйо форме
и  таких случая на арену выходят другие критерии, такие как краткость, снижения риска ошибок и тд
это относится и к операторам += и тд как к часто испольуемым


 
P   (2007-06-04 14:38) [249]

Настоящему программисту нет разницы на каком языке писать, например, как мне.


 
default ©   (2007-06-04 14:40) [250]

P   (04.06.07 14:38) [249]
речь совсем не о том, настоящий ты наш программист....
речь о том, сколько потребуется вспоминать всяких деталей и подводных камней при переключении с одного языка на другой, на каком языке труднее допустить трудноуловимые ошибки и тд и тп


 
Игорь Шевченко ©   (2007-06-04 15:09) [251]


> Настоящему программисту нет разницы на каком языке писать,
>  например, как мне.


Например на APL


 
Юрий Зотов ©   (2007-06-04 15:11) [252]

> db2admin ©   (04.06.07 13:53) [239]

Очень прискорбно видеть, как ПРОГРАММИСТ не понимает разницы между ЯЗЫКОМ и ТЕКСТОМ на этом языке.

Приводя пример плохого ТЕКСТА в ветке, где речь идет о ЯЗЫКАХ.

Увы.


 
db2admin ©   (2007-06-04 15:17) [253]

Юрий Зотов ©   (04.06.07 15:11) [252]
я просто приводил примеры плохо написанных кусков кода на паскале


 
db2admin ©   (2007-06-04 15:33) [254]

lemezza: Лекс, уползи, откуда взялся. Это цитата всего лишь по Далю.
put: а кто это такой? на каком языке програмил?
lemezza: на русь++


 
euru ©   (2007-06-04 16:21) [255]


> Игорь Шевченко ©   (04.06.07 14:30) [247]

> Писать соскучишься на таком языке.
Наоборот, очень весело писать на таком языке.


> Кроме того, чем длиннее слово, тем больше вероятность сделать
> в нем ошибку.
Двойные стандарты, однако. Если придерживаться этого правила, то в языке, включающем такие слова и выражения, как begin и a := a + b, вероятность допустить ошибку больше, чем в языке, содержащем { и a += .

А вообще приведённый мной текст - это была просто ирония. Хотя, как мне кажется, АВАР наиболее полно соответствует требованиям к языку программирования с точки зрения Юрия.


 
Defunct ©   (2007-06-04 16:31) [256]

ocean ©   (04.06.07 12:30) [214]
> Набери-ка A := inc(I);
> Во-первых, это процедура. Во-вторых, ее смысл гораздо шире, чем
> инкремент С. В-третьих, она не входит в стандарт Паскаля. Конечно,
> я могу написать
> function PlusPlus(I : Integer) : Integer;

Ой, а я всегда думал наоборот. Т.к. смысл инкремента в C гораздо шире, чем Inc в паскале. Вот наглядный пример:

1.
char *pU8 = (char *)smth;
pU8++ = 10;
pU8++ = 12;
pU8++ = 34

2.
short *pU16 = (short *)smth;
pU16++ = 10;
pU16++ = 12;
pU16++ = 34;

Обратите внимание, что во втором случае указатель автоматически будет увеличиваться на 2.


 
Defunct ©   (2007-06-04 16:34) [257]

в обоих примерах перед pU8/pU16 подразумевался оператор разименования:

*pU8++ = 10;
..


 
Однокамушкин   (2007-06-04 16:51) [258]

Многие ли люди смогут сразу сказать, что делает следующий код, при условии что d и s это указатели на char?

while (*d++ = *s++);

если подумать, то можно понять, что это копирование строки s в d... но очевидным это не назовёшь...


 
Юрий Зотов ©   (2007-06-04 16:52) [259]

> db2admin ©   (04.06.07 15:17) [253]

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

Но сам язык в чьих-то кривых мозгах и/или руках не виноват. И здесь речь идет не об этом. А о том, способствует ли сам язык лучшей читабельности программ, или он ей мешает.

> All
Господа, а чего вы к Inc прицепились? Это, во-первых, не процедура, а псевдопроцедура (компилируется в inline-код); во-вторых она является принадлежностью библиотеки конкретного компилятора и к самому языку абсолютно никакого отношения не имеет.


 
Однокамушкин   (2007-06-04 16:52) [260]

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


 
Галинка ©   (2007-06-04 16:52) [261]

"указатели, завязанные узлом" (с) - это и есть С/С++... А то как написать инкремент, это уже дело десятое.


 
Игорь Шевченко ©   (2007-06-04 17:02) [262]


> Это, во-первых, не процедура, а псевдопроцедура (компилируется
> в inline-код);


i++ тоже компилируется :)


> А о том, способствует ли сам язык лучшей читабельности программ,
>  или он ей мешает.


А что является критерием читабельности на твой взгляд ?
Согласись, что человек, знающий некий язык программирования, с большей вероятностью без труда прочитает сложный код на этом языке, чем менее сложный, но на другом языке.

Кто судьи ?


 
Игорь Шевченко ©   (2007-06-04 17:04) [263]

Однокамушкин   (04.06.07 16:51) [258]


> если подумать, то можно понять, что это копирование строки
> s в d... но очевидным это не назовёшь...


Найди разницу в выразительности между

S1 := S2

и

S1 := Copy(S2,1,Length(S2));


 
euru ©   (2007-06-04 17:05) [264]


> Юрий Зотов ©   (04.06.07 16:52) [259]

И всё же, Юрий, шутки шутками, а как вы относитесь к использованию вместо Паскаля языка АВАР?


 
Юрий Зотов ©   (2007-06-04 17:11) [265]

> euru ©   (04.06.07 17:05) [264]

Я с этим языком незнаком, что могу о нем сказать?

Судя по приведенным выше примерам, нормальный язык. За исключением того, что всякую здравую идею можно, как известно, испохабить, доведя ее до абсурда.

Это я к тому, что писать SUBTRACT A FROM B вместо всем привычной и не менее понятной математической формулы - это уже абсурд.


 
Однокамушкин   (2007-06-04 17:13) [266]


> Игорь Шевченко ©   (04.06.07 17:04) [263]
> Найди разницу в выразительности между
>
> S1 := S2
>
> и
>
> S1 := Copy(S2,1,Length(S2));

Неэквивалентные конструкции однако... в первом случае будет увеличен счётчик ссылок уже имеющейся строки без копирования, а во втором реально создана новая строка, а в неё скопировано содержание исходной...

Только всё равно непонятно, как это связано с моим примером...


 
Игорь Шевченко ©   (2007-06-04 17:16) [267]

Однокамушкин   (04.06.07 17:13) [266]


> Неэквивалентные конструкции однако...


Эта...а в Delphi 1 или в BP7.0 ? А кто сказал, что это Delphi ваще ?

Речь идет о выразительности и только о выразительности.


 
Однокамушкин   (2007-06-04 17:30) [268]


> Игорь Шевченко ©   (04.06.07 17:16) [267]
>> Эта...а в Delphi 1 или в BP7.0 ? А кто сказал, что это Delphi
> ваще ?

Ну... подловил... :))))

> Речь идет о выразительности и только о выразительности.

Имхо, выразительнее S1:=S2, потому что здесь используется одна синтаксическая конструкция, специально предназначенная для того, что является целью этой операции...

Но я по-прежнему не понимаю, какое это отношение имеет к while (*d++=*s++); это совсем другой случай, здесь в одну строку запихано аж 6 конструкций, да ещё и использована та возможность одной из них, о которой обычно забывают... я имею ввиду, что оператор присваивания возвращает результат... одна простая констркуция против шести запутанных - в чём аналогия?


 
clickmaker ©   (2007-06-04 17:36) [269]


> while (*d++=*s++);

REP MOVSB форева :)


 
Игорь Шевченко ©   (2007-06-04 17:48) [270]

Однокамушкин   (04.06.07 17:30) [268]


> Имхо, выразительнее S1:=S2, потому что здесь используется
> одна синтаксическая конструкция, специально предназначенная
> для того, что является целью этой операции...


Это потому что в языке есть элементарный тип "строка". В языке С такого типа нет. Поэтому приходится использовать конструкции с указателями. Опять же - всего лишь ограничения языка. Цикл обхода связанного списка в языке С выглядит выразительнее, чем в языке Паскаль. Кстати.


> одна простая констркуция против шести запутанных


Для того, кто хорошо знает язык, запутанностью это не выглядит. Точно также, как для привыкших к паскалю не выглядят запутанными конструкции с множествами (+, *)


 
euru ©   (2007-06-04 17:52) [271]


> Юрий Зотов ©   (04.06.07 17:11) [265]

> всякую здравую идею можно, как известно, испохабить, доведя
> ее до абсурда.
Сдаётся мне, что вы необъективно языки оцениваете.

Пусть у нас есть выражение
  А := А + В;
где А, В - это некие длинные имена идентификаторов.
В этом выражении содержатся две потенциальные возможности совершить ошибку:
1. ошибиться при вводе идентификатора А, когда имя идентификатора А в левой части не будет совпадать с именем идентификатора А в правой части.
2. ошибиться в операторе, т.е. вместо знака "+" указать "*" (кстати, не соответствующий знаку умножения в математике).

АВАР полностью лишён этого недостатка.

Кроме того, фраза SUBTRACT b FROM a естествена для английского языка. Она будет понятна любому человеку, владеющему английским языком. Математическая же формула будет понятна только тем, кто предварительно изучал искусственно созданную систему математических обозначений. Да и смысл выражения А := А + В в элементарной математике (если закрыть глаза на символ ":=" и предположить, что это опечатка) обозначает, что при любых значения А значение В всегда равно нулю.


 
Virgo_Style ©   (2007-06-04 17:58) [272]

euru ©   (04.06.07 17:52) [271]

Я хотел бы поглядеть на программу вычисления, ну хотя бы корней квадратного уравнения. Впрочем, я и так уверен в ее нечитаемости.


 
Zagaevskiy ©   (2007-06-04 18:20) [273]


> Математическая же формула будет понятна только тем, кто
> предварительно изучал искусственно созданную систему математических
> обозначений

А разве ТУТ много таких людей?!
Я так понимаю, что НЕ поймёт тот, кто впервые сел программировать? типа Насти, Катюхи и тп?
А в языке АВАР я могу писать как захочу, главное на английском? (в смысле не надо знать определённых операторов???)


 
default ©   (2007-06-04 18:25) [274]

покажи программку на АВАР?!


 
Kolan ©   (2007-06-04 18:26) [275]

> Найдите отличие.
> this.somevar[x][y].R = this.somevar[x][y].R + othervar;

Оч. хорошо что на Dlephi длиннее получается. Пока пишешь может дойдет что это надо поместь в класс «R».


 
Style ©   (2007-06-04 18:27) [276]


> Кто что думает?


Интересно над кем прикалывались создатели Perl и что они курили? :)


 
McSimm_ ©   (2007-06-04 18:43) [277]


> ADD b TO a.
> SUBTRACT b FROM a.
> MULTIPLY a BY b.
> DIVIDE a BY b.


Я тут прикинул...
MOVE (SUBTRACT (MULTIPLY (MULTIPLY x BY x) BY 5) BY C) TO y.
Правильная запись ?

На менее читабельных языках это выглядит как
y := 5 * x * x - c;

Мне стало интересно, можно ли в таком выражении некоторые скобки убирать, пользуясь приоритетами операций ?


 
default ©   (2007-06-04 18:57) [278]

McSimm_ ©   (04.06.07 18:43) [277]
может там есть что-то типа  MULTIPLY x1,x2,...,xn и тогда
MOVE (SUBTRACT (MULTIPLY (x, x, 5) BY C) TO y.
но тоже лишь чуть лучше

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


 
Kostafey ©   (2007-06-04 22:56) [279]

А как мирно все начиналось...
Такой холивар развернули.

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

Должна быть золотая середина между излишей сжатьстью языковых конструкций
и их развернутости до абсурда. Должен быть язык представляющий собой
оптимальное соотношение того и другого.
Благо, есть такой и я имею удовольствие им сейчас пользоваться.

Религия, однако ;)


 
Real ©   (2007-06-04 23:24) [280]

Мне кажется что сторонники Паскаля это те, кто привык к хорошей документации во всем. Рискну предположить что исходники Паскаля содержат больше комментариев :) Лично мне приятно видеть "begin" вместо "{", потому что для второго нужно помнить что это означает, а для первого - достаточно прочитать обычное английское слово. Мне как и многим приходится работать на нескольких языках, иногда за один день. Из-за этого неизбежны ошибки синтаксиса (типа написание "=" вместо ":="). Я вот уже несколько раз попался на один и тот же прикол: в ПХП, после нескольких часов Делфи пишу - if (a=1) ... И конечно же получаю логическую ошибку, потому как ПХП как и Си допускает присвоение в условном операторе... В дельфи по-моему нереально попасть в такую ситуацию, потому как язык достаточно строг к своему синтаксису. Си мне иногда напоминает "бои без правил", тогда как паскаль - хорошо организованный боксерский поединок :) Конечно, иногда раздражает что для объявления переменной нужно поднятся в секцию VAR - но при этом я всегда вспоминаю что сам виноват, больше надо было уделить времени проектированию. Строгая типизация - тоже часто дает негативные последствия, но сколько благодаря этому было выявленно ошибок за все время!



Страницы: 1 2 3 4 5 6 7 8 9 
10 11 12 13 14 15 вся ветка

Форум: "Прочее";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 1.11 MB
Время: 0.174 c
15-1185452230
Stan
2007-07-26 16:17
2007.08.26
Wipe algorithms


2-1186241405
hahol
2007-08-04 19:30
2007.08.26
помогите чайнику плз


1-1182165752
Makhanev Alexander
2007-06-18 15:22
2007.08.26
Как убить поток...


15-1185772722
boriskb
2007-07-30 09:18
2007.08.26
Поздравим.


2-1186122751
p_evghenii
2007-08-03 10:32
2007.08.26
Как подождать завершения чужого процесса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский