DRAKON.SU

Текущее время: Воскресенье, 28 Апрель, 2024 10:21

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




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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
dvuugl писал(а):
Ну а с ассемблером что делать, без goto он посто не существует. Уничтожим как идейного врага, внедрим, так сказать, культурку? GOTO (в и его варианты) и есть на самом деле первая, изначальноя форма структурирования. А вовсе не нечто оному насмерть противоположное. Прародитель, замаскированный во всех этих while, if и тд.


Нормальные архитектуры (вот специально провоцирую, что-то вредный я сегодня :) ) давно уже непосредственно ориентированы на конструкции ЯВУ (можно считать, на Алгол-семейство).
viewtopic.php?f=26&t=823
http://oberoncore.ru/library/start (книги про Эльбрус)
И Модула-, Оберон- процессоры тоже.

А ещё есть dataflow-архитектуры. В частности, работы покойного В.С. Бурцева.

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


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Info21 писал(а):
dvuugl писал(а):
поливариантны. Одновременно истинно может быть так, а может и эдак.
Но отсюда не следует, что одновременно истинно может быть всё, что угодно.
Безусловно, не что угодно. Но критерий истинности здесь вне пределов формализации, вне да-нет -ной логики.


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Иван Кузьмицкий писал(а):
А что есть "структурирование"? Если я описал структуру, обозначил евоные границы, а потом нагло перепрыгнул через них с помощью GOTO - это шшшто такое, как не повод для увольнения? :)
Конечно повод- сам нарушил свои же границы, вопиющая неструктурность мышления, но виновал в этом goto или не умеющий им пользоваться автор таких волюнтаристских прыжков? Так что увольнять, увольнять :)
Структурирование есть выделение участка кода (и вообще части любой реальности), имеющего некий отдельный смысл. То есть деятельность мышления по выделению объекта. В программировании по-видимому исторически первой формой такого выделения и были метки участков кода с переходами на них. В самой распростанённой архитектуре по крайней мере.


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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
dvuugl писал(а):
Но критерий истинности здесь вне пределов формализации, вне да-нет -ной логики.


Критерий истинности всюду вне пределов формализации. Формализация и логика - способ гарантировать сохранение истинности после применения разных аппаратов преобразований. Если эта истинность изначально была.


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
О нет. В классической геометрии, вообще в строгих формальных системах именно в да-нет -ной логике.


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Илья Ермаков писал(а):
Нормальные архитектуры (вот специально провоцирую, что-то вредный я сегодня :) ) давно уже непосредственно ориентированы на конструкции ЯВУ (можно считать, на Алгол-семейство).
Замечательно. Всеми четырьмя конечностями за. Мне вот очень понравился бы FORTH- процессор. Но я не вижу всех этих прекрасных вещей в виде компьютера у меня на столе. И офисах тоже. Ни в одном и ни у кого! И в мировом масштабе тоже! Между тем Интел и проч. почему-то десятки уже лет развивают GOTO-шную архитектуру, добавляя разрядность, новые регистры, кэширование, многоядерность- бог знает что ещё, но GOTO заложено в архитектуре железа и неприкосновенно! Такие там идиоты?


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

Зарегистрирован: Понедельник, 02 Июнь, 2008 19:35
Сообщения: 3
AVC писал(а):
TAU писал(а):
Вот два разных подхода:
  • структурное программирование - это программирование без goto (без break, без return - по вкусу)
  • программы, разрабатываемые методом поэтапного уточнения, получаются структурными (там и правда потребность в goto почти не возникает)

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


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

Зарегистрирован: Понедельник, 02 Июнь, 2008 19:35
Сообщения: 3
dvuugl писал(а):
TAU писал(а):
либо мнение соответствует действительности, либо - нет.
Для программирования, как и для инженерии вообще, это не работает. Как и для искусства. Эти виды деятельности в результатах поливариантны. Одновременно истинно может быть так, а может и эдак.

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


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

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


Истинность, как соответствие знаковых систем реальности, устанавливается не формально. Формально лишь устанавливается эквивалентность знаковых систем друг другу (и тогда уже, транзитивно, реальности). Типа того.


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Сложно Вы выражаетесь, но примерно что я хотел сказать :) Предпочёл бы "понятийные системы", в духе более классической логики.


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

Зарегистрирован: Вторник, 27 Май, 2008 13:24
Сообщения: 155
Borg писал(а):
надо уйти от привычной гуманитарной размытости.. не будет никакой поливариантности при четком техзадании. И в конце концов у стоящей фирмы должны быть свои корпоративные стандарты, дабы уменьшить затраты на разработку, производство и сопровождение изделия.
Вот-вот. А откуда ему взяться, чёткому техзаданию, если размытость начинается уже на этом уровне? (упомянутые Вами корпоративные стандарты, допустимые затраты.. добавим личные предпочения начальства..) То есть Господь Бог начинает свою "гуманитарную" игру в кости уже здесь, а продолжает в самой разработке (если задача не простейшая). Если "уйти"- то конечно да, но уйти не дано никому: вероятностность, размытость заложена в самой основе мира сего.


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
dvuugl писал(а):
Иван Кузьмицкий писал(а):
А что есть "структурирование"? Если я описал структуру, обозначил евоные границы, а потом нагло перепрыгнул через них с помощью GOTO - это шшшто такое, как не повод для увольнения? :)
Конечно повод- сам нарушил свои же границы, вопиющая неструктурность мышления, но виновал в этом goto или не умеющий им пользоваться автор таких волюнтаристских прыжков? Так что увольнять, увольнять :)
Не вижу логики, однако. Если есть go to, то им можно пользоваться. А если нельзя, то go to не нужен. Вон, Дейкстра ругается - мол, go to вносит такие наборы координат для описания процесса, что расхлёбывать намучишься. Поэтому давайте уберём go to отовсюду, кроме простого машинного кода. Да и впрямь - человеку оно зачем? Человеку надо, чтобы программа как можно точнее отображала реально происходящий процесс. Чем нарабатывать культуру использования go to, дешевле будет его выкинуть совсем и не мучать людей почём зря.

dvuugl писал(а):
Структурирование есть выделение участка кода (и вообще части любой реальности), имеющего некий отдельный смысл. То есть деятельность мышления по выделению объекта. В программировании по-видимому исторически первой формой такого выделения и были метки участков кода с переходами на них. В самой распростанённой архитектуре по крайней мере.
Ну, по Дейкстре, структурное программирование как раз и провозглашает отказ от go to, предлагая более человечные средства. Кстати, ссылочки:
http://www.cs.utexas.edu/users/EWD/tran ... WD215.html
и перевод:
http://www.vspu.ac.ru/~chul/dijkstra/goto/goto.htm


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

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
Цитата:
И вообще, мне всё чаще кажется, что "читабельностью" называют вовсе не удобочитаемость, а краткость записи. То есть, писабельность. Согласен, GOTO более писабелен.

.. под читабельностью я прежде всего разумею удобочитаемость, а не краткость записи.
код
Код:
Если        а=2 Тогда  а=1;
ИначеЕсли  а=1 Тогда  а=2;
Иначе //некорректные входные данные
КонецЕсли;

является удобочитаемым, но явно менее эффективным чем код
Код:
а=3-а


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

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
Евгений Темиргалеев писал(а):
Tomba писал(а):
с точки зрения производительности: что работает быстрее - 10тыс GOTO или 10тыс CALL Procedure(...)...?
Интересно. А не могли бы Вы объяснить поподробнее, каким образом GOTO используете вместо вызова процедур. С примером, если не сложно.

... попробую (но я не спец с теоретических разделах программирования, поэтому заведомо мои построения будут некорректными... опять же - на истинности своих высказываний я не настаиваю, в отличие от некоторых выдающих здесь непреложные истины.. мир гораздо извращеннее - там есть место и гото и прочим построениям - каждое должно быть применено там где оно оправдано).
..
например, я тупо не знаю как красиво реализовать такой функционал:
- есть процедура с несколькими точками выхода;
- точка выхода по сути есть набор неких операторов, выполняющих "закрытие процедуры";
- каждая точка выхода отличается только первым оператором "закрытия процедуры";
..
примерная реализация
Код:
Процедура НекаяПроцедура()
 //некий код
 Если НуженВыход=Да Тогда
     а=1;
     гото меткаВыходИзПроцедуры;
 КонецЕсли;
 //некий код
 Если НуженВыход=Да Тогда
     а=2;
     гото меткаВыходИзПроцедуры;
 КонецЕсли;
 //некий код
 ..
 а = 99;
 меткаВыходИзПроцедуры:
    b=99;
    с=99;
    Возврат;
КонецПроцедуры //НекаяПроцедура

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июнь, 2009 00:24 

Зарегистрирован: Среда, 27 Май, 2009 01:41
Сообщения: 33
Смысл простой: я тоже за то, чтобы гото использовался как можно меньше. Согласен с кучей обоснований, приведенных выше, в пользу этого соображения. Но если приходится В КАКОЙ_ТО КОНКРЕТНЫЙ МОМЕНТ ломать мозг, чтобы избежать гото и применять нетривиальные и хитровымученные решения - я со спокойной совестью поставлю гото.
..
и меня всегда мучает вопрос: вот и ЯВУ, и ООП, и структурное программирование - чего только не придумали... НО! господа, за время моей сознательной дестельности на ниве программирования (1983 - настоящее) программы менее глючными не стали!!! Меня мучает вопрос - ПОЧЕМУ???


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июнь, 2009 07:36 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 73
Откуда: Россия, Санкт-Петербург
Tomba писал(а):
Смысл простой: я тоже за то, чтобы гото использовался как можно меньше. Согласен с кучей обоснований, приведенных выше, в пользу этого соображения. Но если приходится В КАКОЙ_ТО КОНКРЕТНЫЙ МОМЕНТ ломать мозг, чтобы избежать гото и применять нетривиальные и хитровымученные решения - я со спокойной совестью поставлю гото.

Код:
CASE выбор OF
вариант1 : действия
| вариант2: действия
ELSE  действия
END;
действия
Выход из процедуры

Tomba писал(а):
и меня всегда мучает вопрос: вот и ЯВУ, и ООП, и структурное программирование - чего только не придумали... НО! господа, за время моей сознательной дестельности на ниве программирования (1983 - настоящее) программы менее глючными не стали!!! Меня мучает вопрос - ПОЧЕМУ???

Потому что не смотря на рост числа программистов их квалификация в среднем падает.
А общественность этому способствует ("Освой C# за 21 день").


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
Tomba писал(а):
.. под читабельностью я прежде всего разумею удобочитаемость, а не краткость записи.
код
Код:
Если        а=2 Тогда  а=1;
ИначеЕсли  а=1 Тогда  а=2;
Иначе //некорректные входные данные
КонецЕсли;

является удобочитаемым, но явно менее эффективным чем код
Код:
а=3-а


Я не понимаю, что Вы имеете в виду под эффективностью. В первом примере, смысл происходящего раскрыт очень неплохо; учитывается некорректность данных, и даже видно, что веток в условном операторе может быть больше. Во втором примере смысл сильно сжат. По всему видно, что оба примера - про разные вещи. Можно ли их сравнивать между собой? Выигрыш нескольких тактов процессора не является такой уж большой победой, если текст программы перевирает и искажает реальность. Дейкстра как раз ратовал за очевидность отображения реальности в тексте программы.

Tomba писал(а):
мир гораздо извращеннее - там есть место и гото и прочим построениям - каждое должно быть применено там где оно оправдано).
Мир не "там", мир - тут. Мир не сам по себе извращённый, это люди его делают извращённым.


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

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 143
Откуда: Россия, Орёл
Tomba писал(а):
Вопрос - как реализовать данный функционал?
Код:
Процедура НекаяПроцедура()
   //некий код
   Если НуженВыход Тогда
      а=1;
   иначе
      //некий код
      Если НуженВыход Тогда
         а=2;
      иначе
         //некий код
         ..
         а = 99;
      КонецЕсли;
   КонецЕсли;
   b=99;
   с=99;
   Возврат;
КонецПроцедуры //НекаяПроцедура
Tomba писал(а):
Смысл простой: я тоже за то, чтобы гото использовался как можно меньше. Согласен с кучей обоснований, приведенных выше, в пользу этого соображения. Но если приходится В КАКОЙ_ТО КОНКРЕТНЫЙ МОМЕНТ ломать мозг, чтобы избежать гото и применять нетривиальные и хитровымученные решения - я со спокойной совестью поставлю гото.
При работе на КП не припомню случая, когда мне пришлось бы "ломать мозг". Итого скажу (делая предположение что Вы работаете на ЯВУ):

То что у Вас не получается пока писать программы без гото не ломая мозг никак не может быть доводом в пользу его необходимости (в ЯВУ).


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

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 40
Откуда: г. Ярославль
Tomba писал(а):
Смысл простой: я тоже за то, чтобы гото использовался как можно меньше. Согласен с кучей обоснований, приведенных выше, в пользу этого соображения. Но если приходится В КАКОЙ_ТО КОНКРЕТНЫЙ МОМЕНТ ломать мозг, чтобы избежать гото и применять нетривиальные и хитровымученные решения - я со спокойной совестью поставлю гото.


Я вот выдвигаю возражения против go to не потому, что так сказал Сам Великий Учитель, а потому, что пытаюсь осмыслить суть происходящего со мной в процессе программирования.

Оператор go to - это гипертекстовый скачок, так ведь? Если принять, что программа описывает последовательность действий, то это нас приводит к вектору времени. Читая программу, мы выстраиваем координатную систему процесса и восстанавливаем временную цепь. А скачок go to нарушает последовательность и перебрасывает в другую систему координат.

Отсюда я делаю такой вывод - если вдруг мне обязательно требуется переход в другое время (в другую систему координат), то скорее всего, у меня что-то построено неверно. Другими словами, я создал два куска реальности, никак не связанные между собой. Но они всё-таки плавают на одной семантике (ведь проблемная область никуда не делась), которая - как вдруг оказывается! - не отражена мной в программе! И поэтому мне приходится преодолевать семантический разрыв в тексте с помощью гипертекстового скачка.

Поэтому я считаю, что говорить об оправданности применения go to при наличии более совершенных средств выражения, не очень этично.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 11 Июнь, 2009 21:43 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 53
Иван Кузьмицкий писал(а):
Поэтому я считаю, что говорить об оправданности применения go to при наличии более совершенных средств выражения, не очень этично.
Москва тоже не сразу строилась.


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

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


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

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


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

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