OberonCore
https://forum.oberoncore.ru/

"Стоимость", уровень языка и абстракций
https://forum.oberoncore.ru/viewtopic.php?f=27&t=3157
Страница 6 из 7

Автор:  albobin [ Суббота, 15 Январь, 2011 22:23 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

2 Geniepro
Ну , на том и остановимся. Удачи!

Автор:  Geniepro [ Суббота, 15 Январь, 2011 22:27 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

albobin писал(а):
Но тогда, следуя максимальной осторожности нельзя использовать в лог.выражениях условия цикла никаких функций :(
Но всё же , неужели нет ничего разумного в тех вариантах цикла о которых я говорил. Тем более , что в них нет по сути никакой новизны. Неужели практикующие программёры бросаются от них как чёрт от ладана, и какие такие основы они нарушают. только, пожалуйста, не про побочные эффекты.

Вообще, всё это сильно зависит от языка программирования. Язык определяет сознание, да...

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

Имхо, если внутри выражения производятся действия, то это усложняет анализ и понимание этого выражения. Придётся учитывать, что за действие оно ещё делает.

Автор:  Валерий Лаптев [ Воскресенье, 16 Январь, 2011 01:14 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro писал(а):
Побочные эффекты -- это действия, которых никто не ожидал в данном месте.
Идёте себе, никого не трогаете -- бум! удар по почкам из-за угла от соседа, которого знаете сто лет. Неожиданно...

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

Не правда ваша. Есть совершенно четкое определение побочного эффекта. Побочный эффект - это изменение функцией нелокальных переменных. Жуткие вещи происходят только в случаях, чем-то похожих на UB в С++.
Вот в С++ не рекомендуется писать: i = ++i = i++;
Аналогично в и в функции не рекомендуется изменять нелокальные переменные, например:
Код:
int z = 0;
int ZZ(int &x)
{ x = z + x;  z = z+x; }
// ...
z = ZZ(z);

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

Автор:  Geniepro [ Воскресенье, 16 Январь, 2011 01:21 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Валерий Лаптев писал(а):
Не правда ваша. Есть совершенно четкое определение побочного эффекта. Побочный эффект - это изменение функцией нелокальных переменных.
http://ru.wikipedia.org/wiki/Побочный_эффект_(программирование)
Цитата:
Побо́чный эффе́кт функции — возможность в процессе выполнения своих вычислений: читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывать их обработчики. Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычислятся разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.

Автор:  Comdiv [ Воскресенье, 16 Январь, 2011 18:26 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Alexey Veselovsky писал(а):
jsr они же разные :-) Т.е. это же просто текстовое описание интерфейсов и семантики.
В т.ч. не для мобилок. В основном реализуются на яве.
Есть например JSR 32 -- спецификация на реализацию sip-либы. Там определен набор интерфейсов и семантики которую они должны реализовывать. Ну и все. Подгружаем конкретную реализацию, дергаем за интерфейсы. Больше нам о реализации знать ничего не надо.

И естественно это дело от jvm не зависит от никак. Если это конечно jvm а не какое-то левое не сертифицированное поделие.
В том-то и дело, что они разные. Я так понимаю, jsr 32 не зависит ни отчего кроме других библиотек явы, поэтому его можно реализовать чисто на яве(хотя не обязательно что именно так и будет). Но есть ещё и jsr 75 для доступа к файловой системе и jsr 179 для определения местонахождения, которые зависят от нижележащего программного слоя.

Автор:  Comdiv [ Воскресенье, 16 Январь, 2011 18:31 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro писал(а):
Валерий Лаптев писал(а):
Не правда ваша. Есть совершенно четкое определение побочного эффекта. Побочный эффект - это изменение функцией нелокальных переменных.
http://ru.wikipedia.org/wiki/Побочный_эффект_(программирование)
Цитата:
Побо́чный эффе́кт функции — возможность в процессе выполнения своих вычислений: читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывать их обработчики. Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычислятся разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.

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

Автор:  Geniepro [ Воскресенье, 16 Январь, 2011 20:24 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Comdiv писал(а):
Цитата:
Побо́чный эффе́кт функции — возможность в процессе выполнения своих вычислений: читать и модифицировать значения глобальных переменных, осуществлять операции ввода/вывода, реагировать на исключительные ситуации, вызывать их обработчики. Если вызвать функцию с побочным эффектом дважды с одним и тем же набором значений входных аргументов, может случиться так, что в качестве результата вычислятся разные значения. Такие функции называются недетерминированными функциями с побочными эффектами.
По-моему, эта цитата подтверждает утверждение Валерия Лаптева. Ведь если процедура меняет значения параметров-переменных, то повторный вызов с теми же переменными будет вызовом с другим набором значений.
А упоминание про ввод/вывод и обработку исключений Вы пропустили в этой цитате?

Автор:  igor [ Воскресенье, 16 Январь, 2011 20:32 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro писал(а):
Побочные эффекты -- это действия, которых никто не ожидал в данном месте.
Идёте себе, никого не трогаете -- бум! удар по почкам из-за угла от соседа, которого знаете сто лет. Неожиданно...
Красочное описание :D Но не раскрывает сути явления.

Автор:  Info21 [ Воскресенье, 16 Январь, 2011 21:14 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro, видимо, думает, что изменение нелокальных переменных -- это непременно присваивание.

Автор:  Geniepro [ Воскресенье, 16 Январь, 2011 22:40 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

igor писал(а):
Geniepro писал(а):
Побочные эффекты -- это действия, которых никто не ожидал в данном месте.
Идёте себе, никого не трогаете -- бум! удар по почкам из-за угла от соседа, которого знаете сто лет. Неожиданно...
Красочное описание :D Но не раскрывает сути явления.

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

Автор:  Geniepro [ Воскресенье, 16 Январь, 2011 22:42 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Info21 писал(а):
Geniepro, видимо, думает, что изменение нелокальных переменных -- это непременно присваивание.

Причём здесь нелокальные переменные?
Да, и как ещё можно изменять переменные, кроме как присваиванием им новых значений?

Автор:  Info21 [ Понедельник, 17 Январь, 2011 00:54 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro писал(а):
Info21 писал(а):
Geniepro, видимо, думает, что изменение нелокальных переменных -- это непременно присваивание.

Причём здесь нелокальные переменные?
Да, и как ещё можно изменять переменные, кроме как присваиванием им новых значений?
Притом, что В.Л. о них говорил.
В.Л. правильно сказал, для краткости. Не диссертация небось.

Автор:  igor [ Понедельник, 17 Январь, 2011 06:31 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Geniepro писал(а):
... -- это несколько неожиданно...
В том то и дело, что неожиданность тут не причём. Если язык допускает побочные эффекты у функций, то лично для меня не является неожиданным, что чужая функция может изменить глобальное состояние программы.

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

Автор:  Geniepro [ Суббота, 22 Январь, 2011 23:36 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

igor писал(а):
Я за то, чтобы определения были более чёткими :)

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

Автор:  Валерий Лаптев [ Вторник, 01 Февраль, 2011 20:34 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

На РСДН было интересное обсуждение о высокоуровневости языков.
Топикстартер написал некое резюме
https://docs.google.com/document/pub?id ... OaQ9JVpC3s
Цитата:
Программа как сообщение

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

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

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

Автор:  Valery Solovey [ Среда, 02 Февраль, 2011 11:15 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

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

Но идея ничего себе. В общем случае её вряд ли решить в обозримом будущем, но если работать над частными случаями, то в ближайшем будущем возможно что-нибудь и появилось бы.

Автор:  Валерий Лаптев [ Среда, 02 Февраль, 2011 11:33 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

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

Автор:  Ильченко Эдуард [ Среда, 02 Февраль, 2011 14:02 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Valery Solovey писал(а):
И всё бы ничего, но компьютер должен быть разумным, чтобы воспринимать информацию.

А вот совершенно и не факт. Что есть «информация»? Не те же ли это «данные»?
Valery Solovey писал(а):
А сейчас он её не воспринимает, получая только данные.

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

Т. е., имхо, мозг суть процессор, обрабатывающий данные и вырабатывающий команды.
Разум, опять же, имхо, есть ни что иное, как наблюдаемое поведение системы, примеренное Наблюдателем на себя. Если Наблюдатель допускает в отношении себя подобное поведение хотя бы в какой-то мере, система будет признана наделенной разумом, если не допускает — система будет признана не имеющей разума.

Разум трансцендентен по отношению к мозгу. Мозг это машина, а разум не существует, существует разумное поведение : )

Ещё раз, разумность определяется наблюдаемым поведением системы (человека, компьютера и т. д.).
Как только компьютер получит рецепторы и эффекторы, оперирующие в той же реальности, что и физическое тело человека, и возможность ими управлять, он будет признан разумным, но боюсь человечеству будет уже всё равно : (
Валерий Лаптев писал(а):
Ну, если вспомнить схемку канала передачи сообщения, то там перед каналом есть кодер, а после канала - декодер.
Программист - кодер, а компилятор - декодер.

Может Вселенная это нечто закодированное Б-гом и скармливаемое мозгу-процессору с неизвестными для нас целями?

Автор:  Рыжий [ Среда, 02 Февраль, 2011 15:59 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Цитата:
Может Вселенная это нечто закодированное Б-гом и скармливаемое мозгу-процессору с неизвестными для нас целями?

Давно пора! Нету никакой "вселенной". Я , вот, давно подозреваю тут жульничество какое-то.

Автор:  Valery Solovey [ Среда, 02 Февраль, 2011 17:32 ]
Заголовок сообщения:  Re: "Стоимость", уровень языка и абстракций

Ильченко Эдуард писал(а):
Valery Solovey писал(а):
И всё бы ничего, но компьютер должен быть разумным, чтобы воспринимать информацию.

А вот совершенно и не факт. Что есть «информация»? Не те же ли это «данные»?
Нет. Информация - это данные плюс смысл.

Есть простой наглядный пример. Если Ваша работа связана с построением таблиц время от времени, то возьмите стопку таблиц возрастом 2 года с одинаковым количеством столбцов и одинаковым форматом данных соответственно для каждого номера столбца. Заголовки сотрите. Затем перемешайте и вытяньте наугад одну таблицу. данные всё там же, но с информацией там как-то не очень, не информативно.

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

Страница 6 из 7 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/