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

Вниз

Goto in Delphi   Найти похожие ветки 

 
Empleado ©   (2011-02-22 14:45) [0]

Давно не встречал goto в коде Делфи.

System.pas(12460)
TMonitor = record...
function Enter(Timeout: Cardinal): Boolean; overload;


 
clickmaker ©   (2011-02-22 15:09) [1]

а где goto?


 
DiamondShark ©   (2011-02-22 15:11) [2]

Встретив goto, перекретись и сплюнь через левое плечо.


 
TUser ©   (2011-02-22 15:31) [3]

диавол искушает нас


 
KilkennyCat ©   (2011-02-22 15:33) [4]

а я за goto. я его использую.
а те, кто считает это некрасивым, фленову подобны.


 
RWolf ©   (2011-02-22 15:37) [5]

в повседневной жизни практически не нужно.
в некоторых случаях может повысить читабельность кода, как ни парадоксально — см. обсуждение: http://www.delphimaster.net/view/15-1273641886/all .


 
Palladin ©   (2011-02-22 15:51) [6]


> в некоторых случаях может повысить читабельность кода

+1000500, за те единицы случаев использования я применял именно ради этого


 
Anatoly Podgoretsky ©   (2011-02-22 15:54) [7]

> KilkennyCat  (22.02.2011 15:33:04)  [4]

Изыди сатана!


 
Empleado ©   (2011-02-22 16:29) [8]


> clickmaker ©   (22.02.11 15:09) [1]
> а где goto?

Sorry. Не подумал.
Delphi XE


begin
 SpinCount := FSpinCount;
// Return here if signaled and lock wasn"t acquired
TryAgain:
...
while True do
   begin
     LockCount := FLockCount;
     if LockCount = 0 then
       goto TryAgain;
     if InterlockedCompareExchange(FLockCount, LockCount + 2, LockCount) = LockCount then
       Break;
   end;
...

Всю функцию не привожу, ибо удалят же :)


 
картман ©   (2011-02-22 16:43) [9]

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


 
clickmaker ©   (2011-02-22 16:58) [10]

> чем так goto запутывает код

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


 
Sha ©   (2011-02-22 17:28) [11]

> картман ©   (22.02.11 16:43) [9]
> вот не могу понять, чем так goto запутывает код

Это когда 1-2 goto в функции, или когда их больше,
но все мспользованы единообразно,
например, для перехода на обработку ошибки.

А когда их несколько десятков и каждый использован
в своем уникальном смысле, как в фортран-программах,
то сразу все поймешь )

--
Любитель goto


 
картман ©   (2011-02-22 17:29) [12]


> clickmaker ©   (22.02.11 16:58) [10]

это я знаю - не понимаю только, почему?


 
картман ©   (2011-02-22 17:29) [13]


> А когда их несколько десятков и каждый использован
> в своем уникальном смысле, как в фортран-программах,
> то сразу все поймешь )

боже


 
MonoLife ©   (2011-02-22 17:50) [14]

> Давно не встречал goto
що! опять??!! (с)


 
Игорь Шевченко ©   (2011-02-22 18:26) [15]

Куда как более дурным тоном выглядят попытки во что бы то ни стало избавиться от goto


 
Palladin ©   (2011-02-22 18:28) [16]

А Дейкстра - негодяй.


 
Сергей М. ©   (2011-02-22 19:21) [17]


> Empleado ©   (22.02.11 16:29) [8]


Тут все просто - если на границах, пересекаемых гоуту-ужимками-прыжками, окажутся границы, обозначенные try-блоками, то жди грабли большие и больно ььющие)

Это самое малое что грозит)


 
_Юрий   (2011-02-22 19:31) [18]

На мой взгляд, если в высокоуровневом языке возникает необходимость в Goto, это означает, что код требует рефакторинга.


 
boriskb ©   (2011-02-22 19:47) [19]


> А Дейкстра - негодяй.


А Дейкстра - умница.


 
Игорь Шевченко ©   (2011-02-22 19:54) [20]


> На мой взгляд, если в высокоуровневом языке возникает необходимость
> в Goto, это означает, что код требует рефакторинга.


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


 
_Юрий   (2011-02-22 20:01) [21]


> Игорь Шевченко ©   (22.02.11 19:54) [20]


С целью избавиться - конечно же нет.
Я вот давеча решил поиспользовать goto кое где, но потом оказалось, что код был написан неоптимально, и после рефактроринга код с goto изчез сам по себе.
Давайте так: у вас есть пример из жизни, когда goto пригодился? Можно озвучить? Именно реальный пример, а не надуманные, как тут:
http://habrahabr.ru/blogs/cpp/114211/


 
Игорь Шевченко ©   (2011-02-22 20:20) [22]


> Давайте так: у вас есть пример из жизни, когда goto пригодился?


В лексических анализаторах всяческих, например, или в дизассемблерах.
код приводить не буду, потому что не вижу смысла. Дело не только в наличии/избавлении от goto, но в общей сложности кода. Любой прием, примененный для конкретно избавления от goto привнесет дополнительную сложность в код, для меня - простота кода один из важных критериев его качества.


 
Rouse_ ©   (2011-02-22 20:39) [23]

Как уже говорилось - приведите пример с Goto и мы докажем вам что он тут не нужен :)
ЗЫ: обычно бью код на мелкие модули и даже в дизассемблерном движке не встретил необходимости в GoTo


 
clickmaker ©   (2011-02-22 20:55) [24]

я тут вроде приводил этот пример уже... Но это ммм... шедевр
switch(forumAttribute)
{
   case 18:
       iSrc = imgSrc[0];
       break;
   case 530:
       goto case 18;
   case 10:
       iSrc = imgSrc[1];
       break;
   case 1034:
       goto case 10;
   case 258:
       iSrc = imgSrc[2];
       break;
   case 2:
       goto case 258;
}


 
Inovet ©   (2011-02-22 21:05) [25]

> [24] clickmaker ©   (22.02.11 20:55)
> Но это ммм... шедевр

Автор не знал, что case можно подряд несколько записать, но при том "знал" о break.


 
Rouse_ ©   (2011-02-22 21:16) [26]

Ну удивительно было бы если бы он юзая С не знал о break :)


 
Игорь Шевченко ©   (2011-02-22 21:56) [27]

если бы элемент языка был бы настолько вреден, как его представляют местные пуристы, он был бы запрещен на уровне компилятора :)


 
Rouse_ ©   (2011-02-22 22:53) [28]

Как показывает практика - запретить врятли, максимум в раздел deprecated.
Проблема не в самом операторе, а в том что он несет.
На практике встречал только два образца кода где данный оператор не вносил сумятицу в структуру изложения кода. Увы...


 
Dimka Maslov ©   (2011-02-23 00:34) [29]

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


 
Германн ©   (2011-02-23 03:39) [30]

Не упоминайте goto в форумах о дельфи и будет вам "щастье"!
Пользуйте goto в своих проектах как вам хочется.


 
Германн ©   (2011-02-23 03:52) [31]


> Пользуйте goto в своих проектах как вам хочется.
>

А также пользуйте в своих проектах with как вам хочется, и иже с ним Continue и Break. Ну и добавлю Exit.
Но помните, что за последствия отвечаете вы и никто более!


 
Дмитрий Белькевич   (2011-02-23 11:40) [32]


> Но помните, что за последствия отвечаете вы и никто более!


То есть - во всех других случаях ответственность таки можно спихнуть?


 
Alkid ©   (2011-02-23 12:52) [33]


> Игорь Шевченко ©   (22.02.11 21:56) [27]
> если бы элемент языка был бы настолько вреден, как его представляют
> местные пуристы, он был бы запрещен на уровне компилятора
> :)

Кстати, в Джаве так и сделали. Гослинг об этом так сказал: "однажды я проснулся и понял, что goto - это реально плохая вещь. Тогда я взял весь java-код в мире, и выбросил оттуда все goto. Это заняло пару часов."

С тех пор в java нет goto :)


 
alexdn ©   (2011-02-23 13:03) [34]

> Alkid ©   (23.02.11 12:52) [33]
> С тех пор в java нет goto :)
и стала java - java visual


 
Anatoly Podgoretsky ©   (2011-02-23 13:03) [35]

> Alkid  (23.02.2011 12:52:33)  [33]

А Вирт слабак


 
palva ©   (2011-02-23 13:29) [36]

Delphi используется для того, чтобы с его помощью обучать программированию. Если вы хотите научить программировать цикл без использования структурных операторов цикла типа for while, то вы не обойдетесь в своих примерах без goto. А уметь программировать в таком стиле должен уметь любой программист.


 
Игорь Шевченко ©   (2011-02-23 13:42) [37]

Alkid ©   (23.02.11 12:52) [33]


> С тех пор в java нет goto :)


Много где нету. И много где есть. И что с того ? :)


 
***   (2011-02-23 13:47) [38]

http://habrahabr.ru/blogs/development/114326/


 
Mystic ©   (2011-02-23 13:49) [39]


> Как уже говорилось - приведите пример с Goto и мы докажем
> вам что он тут не нужен :)


Например, парсинг шахматного хода. Который имеет вид: Qa1b2, Nd4, e4, cxd4, ...
На выходе битовая маска, откуда фигура ходит, поле, куда фигура ходит, что за фигура
goto удобен тут для кодирования state-машины


 
clickmaker ©   (2011-02-23 13:54) [40]

> однажды я проснулся и понял, что goto - это реально плохая
> вещь. Тогда я взял весь java-код в мире, и выбросил оттуда
> все goto. Это заняло пару часов

с бодунища и не такое сделаешь


 
Inovet ©   (2011-02-23 14:07) [41]

> [40] clickmaker ©   (23.02.11 13:54)
> с бодунища и не такое сделаешь

Где убрал - забыл, и резервную копию забыл сделать. С тех пор в java нет goto.


 
DiamondShark ©   (2011-02-23 14:24) [42]


> goto удобен тут для кодирования state-машины

Для кодирования state-машины goto не нужен вообще никак.


 
Игорь Шевченко ©   (2011-02-23 14:33) [43]

как сказано в одном из комментов к


> http://habrahabr.ru/blogs/development/114326/


"goto — инструмент. Лучше учиться, как им правильно пользоваться, чем его избегать. "

с этой точкой зрения я согласен целиком и полностью.


 
DiamondShark ©   (2011-02-23 14:34) [44]


> goto — инструмент

Грабли -- тоже инструмент.


 
clickmaker ©   (2011-02-23 14:39) [45]

> Грабли -- тоже инструмент

так же как молоток, дрель и бензопила "Дружба". И что? Если не разбрасывать, где ни попадя и не юзать с перепоя, то вполне себе жить можно


 
asail ©   (2011-02-23 14:52) [46]


> DiamondShark ©   (23.02.11 14:34) [44]

> Грабли -- тоже инструмент.

Весьма, кстати, полезный...

По сабжу, лет эдак 5-6 не возникало необходимость в Goto. Ни разу. Вот так, чтоб без него ну совсем плохо было бы. Но, вполне допускаю ситуации, где сие чудо могло бы пригодиться.
А вот, Exit использовал часто, но осторожно. Как правило, исключительно в начале функций для проверки вводных. Чтоб лишних блоков begin..end не городить.


 
Anatoly Podgoretsky ©   (2011-02-23 15:26) [47]

> palva  (23.02.2011 13:29:36)  [36]

Любой программист должен уметь не программировать в таком стиле


 
Фокс Йовович   (2011-02-23 15:39) [48]

goto полезен для выхода из кучи вложенных циклов


 
KilkennyCat ©   (2011-02-23 18:14) [49]

а в асме ваще все плохо.


 
Mystic ©   (2011-02-23 18:30) [50]


> Для кодирования state-машины goto не нужен вообще никак.


Тогда часто теряется вся наглядность.


 
asail ©   (2011-02-23 19:39) [51]


> Фокс Йовович   (23.02.11 15:39) [48]

Abort, как правило, достаточно...


 
QAZ   (2011-02-24 12:18) [52]

а я обожаю связку иф\тхен+гото :)
сильно упрощает многие алгоритмы,а также делаем простые алгоритмы более продвинутыми и универсальными


 
Григорьев Антон ©   (2011-02-24 12:53) [53]


> Anatoly Podgoretsky ©   (23.02.11 13:03) [35]
> > Alkid  (23.02.2011 12:52:33)  [33]
>
> А Вирт слабак

А вот и нет. Вирт выбросил goto из своего Оберона, который вышел в 1988 году. Разработка Java началась только в 1990 году, так что Вирт был раньше. Кстати, апологеты Оберна утверждают, что авторы Java очень активно изучали опыт Оберона и даже приглашали разработчиков этого языка для консультаций, но теперь от этого открещиваются.

А ещё в Обероне Вирт выкинул оператор for, сказав, что while его вполне заменяет. Правда, в Обероне-2 ученики Вирта for восстановили, неудобно без него.


 
Anatoly Podgoretsky ©   (2011-02-24 14:05) [54]

> Григорьев Антон  (24.02.2011 12:53:53)  [53]

Разброд и шатание


 
oldman ©   (2011-02-24 16:06) [55]

Эх... Вспоминаю PL... Структурированный язык... Goto запрещен в принципе...
И ведь обходились!


 
Игорь Шевченко ©   (2011-02-24 16:28) [56]


> Вспоминаю PL


в PL/1 goto был


 
Anatoly Podgoretsky ©   (2011-02-24 16:34) [57]

> oldman  (24.02.2011 16:06:55)  [55]

Чтобы обходиться без Goto запрет не нужен


 
И. Павел ©   (2011-02-24 19:41) [58]

А мне еще в школе учительница по программированию (самая первая и самая лучшая :) изначально не рассказывала про goto. Поэтому я привык без него обходиться. Ни разу в жизни не использовал. Если не считать маленькие программки на assembler. Хоть и не считаю единичные goto смертным грехом.

А в JAVA можно давать названия блокам. Это помогает делать break и continue из вложенного цикла без вспомогательных средств и без goto. Вообще в этом языке много старых камней преткновения сгладили. Надеюсь, новых меньше добавили :)


 
KilkennyCat ©   (2011-02-24 19:55) [59]

конструкция begin...end вызывает сомнений не меньше, чем Goto.


 
Дмитрий Тимохов   (2011-02-25 01:03) [60]

a вот начал пользоваться - очень удобная штука, если, конечно, не читать, форумы с ассами программирования в дельфи


 
KilkennyCat ©   (2011-02-25 01:59) [61]

ассы - это хорошо сказано :)


 
Григорьев Антон ©   (2011-02-25 06:58) [62]


> KilkennyCat ©   (25.02.11 01:59) [61]
> ассы - это хорошо сказано :)

Это ещё Архангельский придумал, см. http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1082


 
Alkid ©   (2011-02-25 10:47) [63]


> Игорь Шевченко ©   (23.02.11 13:42) [37]
> Много где нету. И много где есть. И что с того ? :)

Это была иллюстрация к вопросу о том, почему не запрещено на уровне компилятора :)


 
oxffff ©   (2011-02-25 10:58) [64]

goto наше все.
Без безусловного перехода никуда.
(назовите это jmp(x86), br(MSIL), goto(high level language)).


 
Alkid ©   (2011-02-25 12:31) [65]


> oxffff ©   (25.02.11 10:58) [64]
>
> goto наше все.
> Без безусловного перехода никуда.
> (назовите это jmp(x86), br(MSIL), goto(high level language)).

Это зависит от выразительных средств языка.


 
oxffff ©   (2011-02-25 12:39) [66]


> Alkid ©   (25.02.11 12:31) [65]
>
> > oxffff ©   (25.02.11 10:58) [64]
> >
> > goto наше все.
> > Без безусловного перехода никуда.
> > (назовите это jmp(x86), br(MSIL), goto(high level language)).
>
>
> Это зависит от выразительных средств языка.


Он все равно присутствует в явном или не явном виде(не буквально).
Например в виде break, exit, raise.


 
RWolf ©   (2011-02-25 12:57) [67]

всё дело в семантике операции.
break и прочие означают не то же самое, что goto, хоть и транслируются в такой же переход.
и это сильно помогает читать программу, а значит, улучшает код.


 
KilkennyCat ©   (2011-02-25 13:01) [68]

это брек-то помогает читать код? особенно в сравнении с гоуту??


 
Inovet ©   (2011-02-25 13:04) [69]

> [68] KilkennyCat ©   (25.02.11 13:01)
> это брек-то помогает читать код? особенно в сравнении с гоуту??

А нет? Break досрочный выход в известое место, а goto фиг знает куда может выйти.


 
KilkennyCat ©   (2011-02-25 13:11) [70]

никогда не слышал о гоуту с рандомным переходом


 
RWolf ©   (2011-02-25 13:20) [71]

видя в коде слово break, я знаю, что а) есть охватывающий цикл, б) он может завершиться досрочно, в)он обрывается именно здесь.
если на его месте будет стоять goto, я должен буду сначала найти, куда он передаёт управление, затем понять задумку автора (в нашем случае — цикл или нет, как влияет на него переход, в каком состоянии после него остаётся контекст), ибо сам по себе goto никакой дополнительной смысловой нагрузки не несёт.


 
KilkennyCat ©   (2011-02-25 13:32) [72]

вы придираетесь.
зато я с гоуту гораздо гибче выхожу из цикла.
пример бряка:
начало цикла
  бряк
конец цикла
какая-то хрень.


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


 
KilkennyCat ©   (2011-02-25 13:34) [73]

хотя, может это мне легко... я недалеко от бейсика ушел.


 
Компромисс   (2011-02-25 13:51) [74]

начало цикла
 гоуту на некакую-то хрень
конец цикла
какая-то хрень.
некакая-то хрень


Почти спагетти получилось. Явно напрашивается функция

Найди_хрень
начало цикла
 return найденная хрень
конец цикла
return null

с очевидным использованием
хрень = Найди_хрень
if(хрень != null){
 обработай хрень
}
...


 
Компромисс   (2011-02-25 13:52) [75]

Точнее
хрень = Найди_хрень
if(хрень == null){
обработай отсутствие хрени
}
...


 
oxffff ©   (2011-02-25 14:28) [76]


> RWolf ©   (25.02.11 12:57) [67]
> всё дело в семантике операции.
> break и прочие означают не то же самое, что goto, хоть и
> транслируются в такой же переход.
> и это сильно помогает читать программу, а значит, улучшает
> код.


Не о ней речь. А вообще о безусловных переходах.

Но если рассуждать по Вашему, то например raise опасней goto, поскольку
в goto переход статичен, а  raise позволяет не только выпругныть через несколько процедур, но выпригивать из одной и той же процедуры в разные места. Страшно? Но ведь используем.


 
KilkennyCat ©   (2011-02-25 15:08) [77]

а некоторые пишут условный переход, в котором условие всегда будет одно. своего рода гоуту :) хоть и в результате неграмотности.


 
Jeer ©   (2011-02-25 15:32) [78]


> KilkennyCat ©   (25.02.11 13:11) [70]
>
> никогда не слышал о гоуту с рандомным переходом


Мы делали так:
Если в некоторой функции, в предпоследней строчке есть вызов другой функции, то вместо конструкции

CALL SUBFUNC
RET

мы делали

JMP SUBFUNC

Мелочь, а приятно.


 
Inovet ©   (2011-02-25 16:07) [79]

> [78] Jeer ©   (25.02.11 15:32)
> Мелочь, а приятно.

Экономили такты и стек.:)


 
KilkennyCat ©   (2011-02-26 16:27) [80]


>
> Экономили такты и стек.:)

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


 
Игорь Шевченко ©   (2011-02-26 22:14) [81]


> ну так, старая школа, сразу видно.


какой-то из сишных компиляторов такой код умеет делать при оптимизации по памяти.


 
oxffff ©   (2011-02-27 08:54) [82]

Из .NET

2.4 tail. (prefix) – call terminates current method
Format Assembly Format Description
FE 14 tail. Subsequent call terminates current method

Description:
The tail. prefix shall immediately precede a call, calli, or callvirt instruction. It indicates that the current method’s stack frame is no longer required and thus can be removed before the call instruction is executed. Because the value returned by the call will be the value returned by this method, the call can be converted into a cross-method jump.


 
Alkid ©   (2011-02-27 22:25) [83]


> oxffff ©   (25.02.11 12:39) [66]
> Он все равно присутствует в явном или не явном виде(не буквально).
> Например в виде break, exit, raise.

Чисто функциональные языки обходятся без этих конструкций.


 
oxffff ©   (2011-02-27 22:32) [84]


> Alkid ©   (27.02.11 22:25) [83]
>
> > oxffff ©   (25.02.11 12:39) [66]
> > Он все равно присутствует в явном или не явном виде(не
> буквально).
> > Например в виде break, exit, raise.
>
> Чисто функциональные языки обходятся без этих конструкций.
>


Чисто не повезло им. :)


 
Alkid ©   (2011-02-27 23:14) [85]


> oxffff ©   (27.02.11 22:32) [84]
> > Чисто функциональные языки обходятся без этих конструкций.
> Чисто не повезло им. :)

Скорее уж повезло :)


 
Дмитрий Тимохов   (2011-02-27 23:38) [86]


> KilkennyCat ©   (25.02.11 01:59) [61]
>
> ассы - это хорошо сказано :)

ты купился )

ладно, goto, если честно, иногда действительно удобная штука.
к тому же мало отличается от break и continue.

вообще, кто к чему привык.
у меня был период, я пытался отказаться от for+break в пользу wihile, но понял, что с for+break код для меня лично оказывается наглядней.


 
KilkennyCat ©   (2011-02-28 01:02) [87]


> Дмитрий Тимохов   (27.02.11 23:38) [86]

да, из всех циклов именно while мне наиболее ненавистен. не знаю, почему. какая подсознательная ненависть, ничего не могу с собой поделать.
Хотя, еще больше мне противен with.
И бесит, что в Делфи у for нельзя сменить шаг.
нервный я какой-то...
это все микроконтроллеры.
я вдруг решил, что на асме не модно, и решил попробовать Си.
был сегодня шокирован, когда компилятор сказал, что тип bool ему неизвестен.


 
Tag   (2011-02-28 02:06) [88]

oxffff ©   (25.02.11 12:39) [66] Он все равно присутствует в явном или не явном виде(не буквально).

Достойное словоизлияние. Что сказать-то хотел?

oxffff ©   (25.02.11 12:39) [66] Например в виде break, exit, raise.

try
 // Попрыгаем?
finally
end;

oxffff ©   (25.02.11 14:28) [76] а raise позволяет не только выпругныть через несколько процедур, но выпригивать из одной и той же процедуры в разные места. Страшно? Но ведь используем.

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


 
oxffff ©   (2011-02-28 08:30) [89]


> Tag   (28.02.11 02:06) [88]


Ты улыбнул меня своей глупостью.


 
Anatoly Podgoretsky ©   (2011-02-28 08:42) [90]

> Tag  (28.02.2011 02:06:28)  [88]

Буйным это не понять.


 
oxffff ©   (2011-02-28 08:43) [91]


> Alkid ©   (27.02.11 23:14) [85]
>
> > oxffff ©   (27.02.11 22:32) [84]
> > > Чисто функциональные языки обходятся без этих конструкций.
>
> > Чисто не повезло им. :)
>
> Скорее уж повезло :)


Честно говоря не знаю повезло или нет. :)
Опыта у меня нет. У них мыслить приходится функционально.  

P.S.

НО! Введены дополнительные понятия(надстройки) на чистое лямбда исчисление. Например комбинатор неподвижной точки, экзистенциальный тип, монада, ....
Это я к тому, что вполне возможно мыслить приходится "приблизительно одинаково удобно" в рамках разных парадигм. Вычислительные затраты только разные


 
Alkid ©   (2011-02-28 10:02) [92]


> Tag   (28.02.11 02:06) [88]
> У тебя один выход: сослаться на то, что ты пьяным был, когда
> это писал.

Same to you, man ;)


 
Alkid ©   (2011-02-28 10:04) [93]


> oxffff ©   (28.02.11 08:43) [91]
> Честно говоря не знаю повезло или нет. :)
> Опыта у меня нет. У них мыслить приходится функционально.

На то они и функциональные :)
Ничего, там есть свои проблемы :)


> НО! Введены дополнительные понятия(надстройки) на чистое
> лямбда исчисление. Например комбинатор неподвижной точки,
>  экзистенциальный тип, монада, ....
> Это я к тому, что вполне возможно мыслить приходится "приблизительно
> одинаково удобно" в рамках разных парадигм. Вычислительные
> затраты только разные

Так не единым лямбда-счислением живо функциональное программирование. Более того, не все языки там основаны на нем.


 
oxffff ©   (2011-02-28 10:42) [94]


> Alkid ©   (28.02.11 10:04) [93]
> Так не единым лямбда-счислением живо функциональное программирование.
>  Более того, не все языки там основаны на нем.


Из тырнета

Императивное программирование основано на машине Тьюринга-Поста - абстрактном вычислительном устройстве, предложенном на заре алгоритмической эры для описания алгоритмов. Функциональное программирование основано на более естественном с математической точки зрения формализме - лямбда-исчислении Черча.


 
QAZ   (2011-02-28 11:02) [95]

а кто собственно знает с чего пошел гон на гото?


 
clickmaker ©   (2011-02-28 11:21) [96]

> с чего пошел гон на гото?

с легкой руки пишущих, как в [24], например


 
QAZ   (2011-02-28 14:01) [97]


> с легкой руки пишущих, как в [24], например

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


 
clickmaker ©   (2011-02-28 14:06) [98]

> до гото че докопались?

ну, к примеру, break и continue далеко не всюду вставишь, а goto - легко


 
Противный   (2011-02-28 14:09) [99]

> QAZ   (28.02.11 11:02) [95] а кто собственно знает с чего пошел гон на гото?

Думаю, лучше начинать от противного.

Можно ли написать достаточно большую программу в виде одной монолитной процедуры?

program Monolith;
begin
 // Весь программный код
end.


Какие алгоритмические решения придется применять? Что из этого получится? Чем это чревато?

И с другой стороны вопрос: Зачем нужны тротуары, если промышленность выпускает замечательные резиновые сапоги?

QAZ   (28.02.11 14:01) [97] криво писать можно используя любой оператор, а до гото че докопались?

Кривизна написанного бывает разной. Рассуждая о goto, рекомендую вспомнить экспоненциальную функцию.

P.S. Ну и лексикон у тебя...


 
QAZ   (2011-02-28 14:21) [100]

Удалено модератором
Примечание: Учи русский


 
DiamondShark ©   (2011-02-28 14:25) [101]


>  я пытался отказаться от for+break в пользу wihile, но понял,
>  что с for+break код для меня лично оказывается наглядней.

Метания между for+break и while как бы намекают нам на линейный поиск?

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


 
DiamondShark ©   (2011-02-28 14:31) [102]


> если 1 из 1000 лесорубов отрубит сибе бошку вместо того
> чтобы срубить сосну, то это веть не значит что топор это
> зло, от которого надо избавляца вочтобытонистало, это просто
> лесоруб не выспался и забыл технику безопасности

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


 
Противный   (2011-02-28 14:31) [103]

>QAZ   (28.02.11 14:21) [100]

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

Процедурное программирование, объектно-ориентированное...

И сравнение у тебя неправильное. 1000 лесорубов с 1 топором на каждого следует заменить на 1000 топорoto на 1 лесоруба. И все равно неправильно получится.


 
KilkennyCat ©   (2011-02-28 14:34) [104]


> Противный   (28.02.11 14:09) [99]
>
> Можно ли написать достаточно большую программу в виде одной
> монолитной процедуры?
>

да.
На фортране, например.


 
QAZ   (2011-02-28 14:52) [105]

Удалено модератором


 
Противный   (2011-02-28 14:52) [106]

KilkennyCat ©   (28.02.11 14:34) [104] На фортране, например.

Ага. Молодец. "Радиостанция на танке" (С)


 
Германн ©   (2011-02-28 14:57) [107]


> Радиостанция на танке

"Рация на бронетранспортере"! (с)


 
QAZ   (2011-02-28 15:12) [108]


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

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


 
QAZ   (2011-02-28 15:25) [109]

Удалено модератором


 
QAZ   (2011-02-28 16:09) [110]

Удалено модератором


 
Противный   (2011-02-28 16:23) [111]

Удалено модератором


 
KilkennyCat ©   (2011-02-28 18:28) [112]


> Радиостанция на танке
> "Рация на бронетранспортере

чувствую пробел в своих знаниях. это откуда?


 
Германн ©   (2011-02-28 19:23) [113]


> чувствую пробел в своих знаниях. это откуда?
>

http://yandex.ru/yandsearch?text=%D0%A0%D0%B0%D1%86%D0%B8%D1%8F+%D0%BD%D0%B0+%D0%B1%D1%80%D0%BE%D0%BD%D0%B5%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B5%D1%80%D0%B5&from=fx3&clid=46510&lr=213


 
KilkennyCat ©   (2011-02-28 21:34) [114]

я так и знал, что вы не любите фортран.


 
Leonid Troyanovsky ©   (2011-02-28 21:58) [115]


> KilkennyCat ©   (28.02.11 14:34) [104]

> На фортране, например.

На фортране, ЕМНИП, осуждались сцылы взад,
ну, т.е., чтоб не лохматить листинги назад.

--
Regards, LVT.


 
KilkennyCat ©   (2011-02-28 22:03) [116]


> Leonid Troyanovsky ©   (28.02.11 21:58)


а мы резали - удобней.


 
Leonid Troyanovsky ©   (2011-02-28 22:10) [117]


> KilkennyCat ©   (28.02.11 22:03) [116]

> а мы резали - удобней.

Зад-перед останется.
Если, конечно, не в винегрет.

--
Regards, LVT.



Страницы: 1 2 3 вся ветка

Текущий архив: 2011.06.19;
Скачать: CL | DM;

Наверх




Память: 0.77 MB
Время: 0.014 c
15-1298755792
Юрий
2011-02-27 00:29
2011.06.19
С днем рождения ! 27 февраля 2011 воскресенье


2-1299834174
ssnakess
2011-03-11 12:02
2011.06.19
Тип данных String


2-1299918530
LDV
2011-03-12 11:28
2011.06.19
много get-запросов


6-1237876800
Vudu
2009-03-24 09:40
2011.06.19
Отключить/подключить интернет


3-1260823039
Motzart
2009-12-14 23:37
2011.06.19
Настройка Dataset