Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
1-1117384354
GEEK
2005-05-29 20:32
2005.06.14
Finalize(); выдает ошибку...


14-1116824427
Некто
2005-05-23 09:00
2005.06.14
Фанатам Carmageddon а


3-1115442843
Navi
2005-05-07 09:14
2005.06.14
Уникальное поле


1-1117000756
Cash
2005-05-25 09:59
2005.06.14
Как правильно создать контрол из DLL


11-1099895937
banxian zeng
2004-11-08 09:38
2005.06.14
ActiveKOL - ($G) GUID_NULL and other error





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