DRAKON.SU

Текущее время: Суббота, 20 Апрель, 2024 17:24

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 163 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 9  След.
Автор Сообщение
СообщениеДобавлено: Вторник, 09 Июнь, 2009 11:45 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 143
Откуда: Россия, Орёл
Валерий Лаптев писал(а):
Культуру применения надо воспитывать, а не запрещать.
Вот для воспитания культуры GOTO и убран. Valery Solovey выше всё пояснил.

При этом сам язык является воспитателем. А не дядя, который говорит что GOTO "плохое" и надо 10 раз подумать, прежде чем его использовать, а потом 20 раз подумать как использовать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 12:05 

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
с точки зрения производительности: что работает быстрее - 10тыс GOTO или 10тыс CALL Procedure(...)...?
//
не вижу ничего зазорного в уместном использовании гото, другое дело что каждый "уместность" понимает по-своему и перлы типа
.
Goto M1; //переход к метке М1
.
не особо радуют...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 12:49 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
Использование GOTO было уместно в стародавние времена, когда многие ещё программировали на ассемблере. Когда же у вас в исходнике есть сложные абстракции с обозначенными границами, то GOTO-прыгание в них и из них, будет по меньшей мере глупостью. Это всё равно, что оборудовать таможню, внедрить паспортный контроль и потратить средства на металлоискатели, а люди будут проходить через дырку в заборе :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 12:56 

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
бредятина полная имхо... ;-)
не вижу никакой ПРИНЦИПИАЛЬНОЙ разницы в конструкциях

Goto РасчетКФсучетомПоправки - которая адресует на 50 строк вниз по коду
и
CALL РасчетКФсучетомПоправки(); - которая адресует на 5000 строк вверх по коду программы.
.
все определяется уместностью использования Goto/
если мне гото позволит избежать 5и уровневого вложения Если и обойтисб 1 уровнем - я тут же заюзаю гото...
.
текст должен быть читабелен, понятен, и т.п. - какими методами это достигается - абсольтно все равно...
.
понятно что неиспользование гото на даннфй момент является дефакто стандартом, но отказываться от гото, там где он реально помогает - глупо...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 12:57 

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
> есть сложные абстракции с обозначенными границами, то GOTO-прыгание в них и из них,
- абсолютно согласен, возражений не имею.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 14:34 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Иван Кузьмицкий писал(а):
Использование GOTO было уместно в стародавние времена, когда многие ещё программировали на ассемблере. Когда же у вас в исходнике есть сложные абстракции с обозначенными границами, то GOTO-прыгание в них и из них, будет по меньшей мере глупостью. Это всё равно, что оборудовать таможню, внедрить паспортный контроль и потратить средства на металлоискатели, а люди будут проходить через дырку в заборе :)

И все-таки в жизни так оно и обстоит: и на ассемблере программируют (сейчас, а не "в стародавние времена", вспоминается, как у меня один студент ляпнул "когда-то, когда использовались так называемые большие ЭВМ - мэйнфреймы..."), и goto используется, и в дырки не перестают лазить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 19:08 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 143
Откуда: Россия, Орёл
Tomba писал(а):
с точки зрения производительности: что работает быстрее - 10тыс GOTO или 10тыс CALL Procedure(...)...?
Интересно. А не могли бы Вы объяснить поподробнее, каким образом GOTO используете вместо вызова процедур. С примером, если не сложно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 19:20 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
Tomba писал(а):
бредятина полная имхо... ;-)
не вижу никакой ПРИНЦИПИАЛЬНОЙ разницы в конструкциях

Goto РасчетКФсучетомПоправки - которая адресует на 50 строк вниз по коду
и
CALL РасчетКФсучетомПоправки(); - которая адресует на 5000 строк вверх по коду программы.
.
все определяется уместностью использования Goto/
если мне гото позволит избежать 5и уровневого вложения Если и обойтисб 1 уровнем - я тут же заюзаю гото...
.
текст должен быть читабелен, понятен, и т.п. - какими методами это достигается - абсольтно все равно...
.
понятно что неиспользование гото на даннфй момент является дефакто стандартом, но отказываться от гото, там где он реально помогает - глупо...


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

Прыжок GOTO ни в жисть не является более "читабельным", и я готов эту точку зрения отстаивать хотя бы с той позиции, что при передаче управления, надо проверять как входные условия, так и выходные. GOTO не может это обеспечить, хотя бы в силу своей примитивности, поэтому семантическая нагруженность GOTO больше, и читать его сложнее (надо прочесть и понять не только строчку с GOTO, но и контексты стартовой и конечной точек). Другими словами, текст с GOTO является более сложным, более тяжёлым в смысловом плане, а не в плане количества буковок.

И вообще, мне всё чаще кажется, что "читабельностью" называют вовсе не удобочитаемость, а краткость записи. То есть, писабельность. Согласен, GOTO более писабелен.

TAU писал(а):
И все-таки в жизни так оно и обстоит: и на ассемблере программируют (сейчас, а не "в стародавние времена", ...


Я имел в виду, что за неимением других средств структурирования, GOTO - в самый раз. В своё время я напрограммировался на ассемблере, помню хорошо :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 19:38 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 140
Откуда: Троицк, Москва
Иван Кузьмицкий писал(а):
текст с GOTO является более сложным, более тяжёлым в смысловом плане, а не в плане количества буковок.

И вообще, мне всё чаще кажется, что "читабельностью" называют вовсе не удобочитаемость, а краткость записи. То есть, писабельность.
Спасибо, что Вы подумали и заформулировали.
А то заставить мозг насчет GOTO аргументированно диспутировать не удается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 20:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Геннадий Тышов писал(а):
Они являются мощным средством программирования и нельзя их ликвидировать без ущерба для практики.


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

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

Поскольку, увы, многие вообще не понимают, о чём тут речь (и какие пробелы надо закрывать), поясним на примере:
- до 3 класса школьники решают текстовые задачки на "нахождение..." путём рассуждений, "тыком". Нарабатываются какие-то приёмчики, аналогии, коллекции примерчиков, "искусство".
- потом детям объясняют, что такое уравнение - и все эти задачки становятся прозаичными и простыми. Никакого "искусства". Аккуратное владение аппаратом. И нажитые приёмчики и т.п. просто обесцениваются. "Уравнения" осваивать не хочется, нажитого жалко - крики про break-и как раз из той серии. Ну, не машет крыльями самолёт - не возникают break-и. Людям, владеющих аппаратом, он просто не нужен.

Касательно аппарата не постесняемся ещё раз указать ссылки, с чего можно начать:
http://oberoncore.ru/wiki/start, раздел алгоритмизации. А потом уж отправится читать указанные там книжки.

Честное слово, коллеги, ну сколько ж можно :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 22:05 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 56
Откуда: Узбекистан, Чирчик
Евгений Темиргалеев писал(а):
Tomba писал(а):
с точки зрения производительности: что работает быстрее - 10тыс GOTO или 10тыс CALL Procedure(...)...?
Интересно. А не могли бы Вы объяснить поподробнее, каким образом GOTO используете вместо вызова процедур. С примером, если не сложно.

Ну это элементарно -- вспомните Форт (некоторые реализации). Каждая процедура там передаёт управление следующей, фактически с помощью GOTO. Выполнилась одна форт-процедура, она передала управление следующей, та -- третьей и т.д.
За счёт этого на некоторых тестах получается значительный выигрыш по сравнению со стандартными CALL/RET.

PS. В ФП есть аналог этого -- Continuation passing style, немного по другому реализовано, но суть примерно такая же...
ЗЗЫ. Хотя нет, суть у CPS всё-таки совсем другая -- сохранение состояния по ходу работы такого конвейера...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 09 Июнь, 2009 23:37 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Да, есть такая специфическая схема - концевой вызов процедур... Обычно такой стиль у новичков сразу "отбивают" (и правильно), поясняя, что не надо писать PROCEDURE A; BEGIN ... B END; PROCEDURE B; BEGIN .. C END;, а надо сделать декомпозицию сверху вниз: крупное действие составить из последовательности A; B; C.

Однако драконовские топологии при переводе в текст часто как раз отображаются на такой continuation. Тут можно это рассматривать как переход автомата. Указание, в какую ситуацию привело завершение текущего фрагмента, т.е. по какому маршруту продолжают развиваться события.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 10:51 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 77
Откуда: Астрахань
Евгений Темиргалеев писал(а):
Валерий Лаптев писал(а):
Культуру применения надо воспитывать, а не запрещать.
Вот для воспитания культуры GOTO и убран. Valery Solovey выше всё пояснил.

При этом сам язык является воспитателем. А не дядя, который говорит что GOTO "плохое" и надо 10 раз подумать, прежде чем его использовать, а потом 20 раз подумать как использовать.

Тогда неплохо бы прямо в языке запретить писать функции-методы-процедуры размером более ___ строк. Или размер цикла - не более ___ операторов (поставьте свое любимое число).
Сам язык является воспитателем. В таком языке и goto не нужен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 13:04 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
Ярослав Романченко писал(а):
За использование goto бывает и увольняют без лишних разговоров. И это правильно!

Фанатики, блин... сумасшедшие :roll:


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 13:20 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 140
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
... Тогда неплохо бы прямо в языке запретить ...
Чесслово...

1) стоимость этого запрета
2) выигрыш от этого запрета


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 13:22 

Зарегистрирован: Воскресенье, 09 Март, 2008 22:38
Сообщения: 341
utkin писал(а):
Да. Свобода мнений есть, но это не значит, что все мнения равноценны.
А когда "ополченцы" гордо называются себя "специалистами", "профессионалами" и т.п., лично у меня скулы сводит.
(Разумеется, бывают и не-"ополченцы".)

А какие могут быть критерии оценки равноценности мнений?

Какая еще равноценность мнений?
И при чем тут, кто произносит мнение?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 15:31 
Аватара пользователя

Зарегистрирован: Суббота, 19 Ноябрь, 2005 15:59
Сообщения: 7
Откуда: Зеленоград
TAU писал(а):
Кажется, предметная область отнюдь не гуманитарная - так что должно быть так: либо мнение соответствует действительности, либо - нет.

Вы не поверите: в гуманитарных областях та же фигня. :)
А по сути, налицо действительно расхождение во мнениях: что структурно, а что нет (как "пестро" и "не пестро" где-то у Гоголя).
Вот два разных подхода:
  • структурное программирование - это программирование без goto (без break, без return - по вкусу)
  • программы, разрабатываемые методом поэтапного уточнения, получаются структурными (там и правда потребность в goto почти не возникает)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 16:05 

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Ну а с ассемблером что делать, без goto он посто не существует. Уничтожим как идейного врага, внедрим, так сказать, культурку? GOTO (в и его варианты) и есть на самом деле первая, изначальноя форма структурирования. А вовсе не нечто оному насмерть противоположное. Прародитель, замаскированный во всех этих while, if и тд.
Как же вы так, с папочкой?
Цитата:
либо мнение соответствует действительности, либо - нет.
Для программирования, как и для инженерии вообще, это не работает. Как и для искусства. Эти виды деятельности в результатах поливариантны. Одновременно истинно может быть так, а может и эдак.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 16:33 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 140
Откуда: Троицк, Москва
dvuugl писал(а):
поливариантны. Одновременно истинно может быть так, а может и эдак.
Но отсюда не следует, что одновременно истинно может быть всё, что угодно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 10 Июнь, 2009 17:40 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
dvuugl писал(а):
GOTO (в и его варианты) и есть на самом деле первая, изначальноя форма структурирования. А вовсе не нечто оному насмерть противоположное.

А что есть "структурирование"? Если я описал структуру, обозначил евоные границы, а потом нагло перепрыгнул через них с помощью GOTO - это шшшто такое, как не повод для увольнения? :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 163 ]  На страницу Пред.  1, 2, 3, 4, 5, 6 ... 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB