Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
ВнизКто умеет ругаться на Паскале? Найти похожие ветки
← →
Копир © (2005-05-23 16:13) [0]Удалено модератором
Примечание: Знай, что мудрость уменьшает жалобы, а не страдания! /Козьма Прутков/ (AutoModerator)
← →
Игорь Шевченко © (2005-05-23 16:17) [1]
> Т.е. набором операторов, которые в приличном
> исходнике не приветствуются, зато их все знают, но используют
> лишь
> в случае крайнего раздражения, злости, разочарования.
goto :)
← →
Андрей Жук © (2005-05-23 16:18) [2]raise Mazafakashit;
← →
P.N.P. © (2005-05-23 16:19) [3]Ну, например использование with в нек. случаях
← →
Тестировщица © (2005-05-23 16:21) [4]
> Игорь Шевченко © (23.05.05 16:17) [1]
опередил -)
← →
TUser © (2005-05-23 16:26) [5]Ну, эта
Label
в догонку
← →
Alx2 © (2005-05-23 16:26) [6]Ругаться, так ругаться: :)
Function TCluster.Radius(idx: Integer): Double;
Asm
mov ecx,eax
call TCluster.GetVectorP
mov edx,eax
mov eax,ecx
jmp TCluster.Distance
End;
Function TCluster.Distance(Const aVector: TDoubleArray): Double;
Asm
mov ecx, [eax].fDimension
sub ecx, [eax].fDelta
cmp ecx,1
jb @Distance4b
fldz
fld1
fidiv [eax].fCount
mov eax, [eax].Vectors
lea eax, [eax+ecx*8-8]
lea edx, [edx+ecx*8-8]
@Distance30:
fld ST(0)
fmul QWORD PTR [eax]
fsub QWORD PTR [edx]
fmul ST(0), ST(0)
sub eax,8
sub edx,8
dec ecx
faddp ST(2), ST(0)
jnz @Distance30
@Distance4b: fstp st(0)
fsqrt
End;
← →
Гаврила © (2005-05-23 16:26) [7]Пришел в голову жутковатый кусок кода:
For I:=0 ChildCount - 1 do
if not (Childs[I] is TMyChild) then
Abort;
← →
Alx2 © (2005-05-23 16:29) [8]>Гаврила © (23.05.05 16:26) [7]
Класс! :)
← →
Копир © (2005-05-23 16:29) [9]>Игорь Шевченко © (23.05.05 16:17) [1] :
Переводится с вавилонского "а пошёл ты..."
:-))
← →
Копир © (2005-05-23 16:30) [10]>Игорь Шевченко © (23.05.05 16:17) [1] :
Переводится с вавилонского "а пошёл ты..."
:-))
← →
Ega23 © (2005-05-23 16:30) [11]Старый прикол, помнится:
MesageBox(Handle, PChar("Jesus has changed your life!"+#13+"Save changes?"),
Pchar("Wow!"), MB_OKCANCEL or MB_ICONWARNING)
← →
TUser © (2005-05-23 16:35) [12]Самый ругательный язык - конечно, perl. Только перлята очень культурные люди, поэтому вместо матерных слов пишут значки типа ~>;!@#$&*
← →
Игорь Шевченко © (2005-05-23 16:39) [13]Удалено модератором
Примечание: Женщины искренне считают, что наряжаются либо для нашего удовольствия, либо для своего собственного. На самом деле они наряжаются, чтобы удивлять друг друга. /Франсис де Миомандр/ (AutoModerator)
← →
Sha © (2005-05-23 17:10) [14]Еще exit не очень приветствуется.
← →
pasha_golub © (2005-05-23 17:19) [15]Sha © (23.05.05 17:10) [14]
Не согласен
← →
Игорь Шевченко © (2005-05-23 17:20) [16]Sha © (23.05.05 17:10) [14]
Неправда. Загляни в ту же VCL, которую пишут авторы того самого языка.
← →
Igorek © (2005-05-23 17:22) [17]
if result = true then
result := false
else
result := true;
← →
pasha_golub © (2005-05-23 17:25) [18]Igorek © (23.05.05 17:22) [17]
Сильно! :)
← →
Ega23 © (2005-05-23 17:25) [19]if result = true then
result := false
else
result := true;
Можно круче:if result = true then
result := false
else
if result = false then
result := true;
:о)
← →
Sha © (2005-05-23 17:26) [20]> pasha_golub © (23.05.05 17:19) [15]
> Не согласен
Твое право.
> Игорь Шевченко © (23.05.05 17:20) [16]
> Неправда.
> Загляни в ту же VCL, которую пишут авторы того самого языка.
Ты ведь не думаешь, что я туда не заглядывал?
По своему опыты скажу, сопровождать проекты, изобилующие exit"ами,
ничуть не проще, чем вермишель из goto.
Поэтому каждое употребление того и другого должно иметь очень существенные причины.
← →
Юрий Зотов © (2005-05-23 17:32) [21]case result of
true:
result := false;
false:
result := true
else
result := false
end;
:о)
← →
Игорь Шевченко © (2005-05-23 17:32) [22]Sha © (23.05.05 17:26) [20]
Саша, всякий овощ приносит пользу будучи употреблен надлежащим образом в надлежащее время. Вот ты сам подумай, если все эти операторы такие нерекомендуемые, а goto и вовсе considered harmful, отчего их из языка не исключили ?
Как неоднократно показывалось в ветках про нежелательность использования goto, всегда можно перестроить алгоритм таким образом, чтобы без него обойтись, ан остался же он в языке. С чего бы ?
← →
boriskb © (2005-05-23 17:34) [23]:)))
Перестаньте матюгаться.
В приличном обществе? :))
← →
Sha © (2005-05-23 17:35) [24]> Игорь Шевченко © (23.05.05 17:32) [22]
Вот тут полностью согласен. Прямо мои слова :)
← →
DiamondShark © (2005-05-23 17:36) [25]
> отчего их из языка не исключили ?
Инерция мышления.
← →
Antonn © (2005-05-23 17:38) [26]"Мадам, позвольте вас пингануть..." (С) Не мое, но чего то вспомнилось:)
← →
Игорь Шевченко © (2005-05-23 17:39) [27]DiamondShark © (23.05.05 17:36) [25]
> Инерция мышления.
В любимом-то паскале ? :) Ну я понимаю, в С - там точно инерция, но тут :))
← →
pasha_golub © (2005-05-23 17:40) [28]Sha © (23.05.05 17:26) [20]
ну... Можно все так использовать, что тошно будет.
Я вот, например, приветствую Exit в начале методом, где идет проверка на допустимость исполнения, чтобы не строить кучу веток с If"ами. Например:
function GetTableCharset: string;
begin
If not FConnection.Active or not FActive then
Exit;
...
end;
Намного приятнее, чем на все тело метода растягивать if-end, IMHO
← →
Sha © (2005-05-23 17:49) [29]> pasha_golub © (23.05.05 17:40) [28]
Я против неоправданного употребления exit.
По-существу это замена goto на конец функции, при этом
некоторые горе-программисты умудряются забыть присвоить
возращаемое значение (совсем мы недавно отловили такой баг
в одной серьезной программе).
В VCL тоже употребление exit не всегда вызвано необходимостью.
Например, в System.pas видим:
procedure Move( const Source; var Dest; count : Integer );
var
S, D: PChar;
I: Integer;
begin
S := PChar(@Source);
D := PChar(@Dest);
if S = D then Exit;
if Cardinal(D) > Cardinal(S) then
for I := count-1 downto 0 do
D[I] := S[I]
else
for I := 0 to count-1 do
D[I] := S[I];
end;
проще было бы:
procedure Move( const Source; var Dest; count : Integer );
var
S, D: PChar;
I: Integer;
begin
S := PChar(@Source);
D := PChar(@Dest);
if S <> D
then if Cardinal(D) > Cardinal(S)
then for I := count-1 downto 0 do D[I] := S[I]
else for I := 0 to count-1 do D[I] := S[I];
end;
Это очевидный случай, есть и понаворотистее.
← →
Игорь Шевченко © (2005-05-23 17:51) [30]
> if S <> D
> then if Cardinal(D) > Cardinal(S)
> then for I := count-1 downto 0 do D[I] := S[I]
> else for I := 0 to count-1 do D[I] := S[I];
Стиль какой-то не очень читабельный. В исходном варианте лучше.
← →
Marser © (2005-05-23 17:51) [31]Немного грандовщины:
type
TEnemy = class
...
with TEnemy.create(self) do
try
kind:=Orange_plague;
Repeat
kick;
torture;
until (mind=ms_Otklucka)or Nunafig
finally
kill;
burry
end;
← →
Sha © (2005-05-23 17:55) [32]> pasha_golub © (23.05.05 17:40) [28]
Кстати, ты сделал ту же ошибку :)
← →
Sha © (2005-05-23 17:57) [33]> Игорь Шевченко © (23.05.05 17:51) [30]
Привычка, осталась с EC c их EC-7066: экономия строк (их было всего 10).
← →
DiamondShark © (2005-05-23 17:57) [34]
> Игорь Шевченко © (23.05.05 17:39) [27]
(*с кавказским акцентом*)"Пашутыль, да?"
Во-первых, святых нет.
Во-вторых, паскаль был во многом экспериментальным языком. Думаю (кажется, даже где-то читал), что Вирт, прекрасно понимая недостатки как наличия, так и отсутствия гоуту. И остался он в Паскале именно по принципу "хрен с ним", причём осознанному.
В языках-наследниках, например, в Обероне, гоуту уже нет, его место заняли структурные "младшие братья", например, оператор прерывания цикла, или выход из процедуры.
А вот в Си разнородные конструкции -- гоуту и его структурные аналоги -- сосуществовали с самого начала. Что даёт повод предположить кашу в головах разработчиков.
← →
pasha_golub © (2005-05-23 17:58) [35]Sha © (23.05.05 17:49) [29]
при этом
некоторые горе-программисты умудряются забыть присвоить
возращаемое значение
Кстати, я забыл... :)))) Но это потому шо сюда сразу писал. :)
← →
Sha © (2005-05-23 17:59) [36]> pasha_golub © (23.05.05 17:58) [35]
Ты все еще любишь exit?
← →
pasha_golub © (2005-05-23 18:00) [37]Sha © (23.05.05 17:55) [32]
> pasha_golub © (23.05.05 17:40) [28]
Кстати, ты сделал ту же ошибку :)
Опередил. :)
← →
pasha_golub © (2005-05-23 18:01) [38]Sha © (23.05.05 17:59) [36]
Да, все еще люблю. Но любовь мою не следует считать фанатической. А про ошибку... Ну, клянусь, случайность. Я всегда первым делом в функции результат возвращаю. :)
← →
raidan © (2005-05-23 18:03) [39]>pasha_golub © (23.05.05 18:01) [38]
Эх. return <value> - и no problem.
← →
GuAV © (2005-05-23 18:06) [40]while Result <> True do
begin
Result := True;
Continue;
end;
Страницы: 1 2 3 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.034 c