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

Вниз

Кто умеет ругаться на Паскале?   Найти похожие ветки 

 
Копир ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.037 c
1-1117184647
Layner
2005-05-27 13:04
2005.06.14
Приветствую всех! Простой вопрос по написанию компанента


9-1110976245
Серый
2005-03-16 15:30
2005.06.14
Микширование звуков


4-1114411459
Mihas
2005-04-25 10:44
2005.06.14
Как прочитать из окна WINWORD Текст документа?


8-1109702858
StarLit
2005-03-01 21:47
2005.06.14
Есть PageControl на форме, как поменять его стандарт. цвет?


1-1117529916
voron
2005-05-31 12:58
2005.06.14
математика