Форум программистов, компьютерный форум CyberForum.ru

Что такое side-effects - C++

Восстановить пароль Регистрация
 
 
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
30.12.2015, 18:09     Что такое side-effects #1
Добрый день,

что такое side-effects и с чем их едят? В каких коварных моментах языка стоит помнить про данный термин. Когда незнания его может привести к последствиям.

По анализу вопросу понял, что это: если функция не умеет внешних связей и работатет по принципу:
вы мне запрос - я вам ответ.
То такая функция без side-effect'ов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2015, 18:09     Что такое side-effects
Посмотрите здесь:

Что такое ООП. C++
что такое цикл while и Do-while C++
что такое перезагрузка C++
C++ что такое extern?
C++ Найти такое k, что (k-1)! < A < k!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hoggy
5230 / 2121 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
31.12.2015, 15:03     Что такое side-effects #21
Цитата Сообщение от ct0r Посмотреть сообщение
Так это ты начал со своим компилятором, которому в этой теме вообще не место.
я как бе вашего разрешения спросить забыл.

Цитата Сообщение от ct0r Посмотреть сообщение
Стакан тоже можно на стол поставить. И что с того? Они связаны до гроба?
способности стакана никак не зависят от стола.
способности компилятора зависят от его знания о побочных эффектах.

итого: аналогия не уместна.

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

например, из фразы:
"Самолеты, которые - большие офигительные машины ..."

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

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

теперь вы подучите русский.

Цитата Сообщение от ct0r Посмотреть сообщение
бессмысленная упертость онли.
ваше вот это данное сообщение
и является примером "упертости" по определению понятия "упертость".


Цитата Сообщение от ct0r Посмотреть сообщение
поучи функциональую парадигму, а то грустно все...
я в курсе этой парадигмы.
и нахожу ей применение на практике.

а вот ваша грусть мне безразлична.
это - ваши трудности.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ct0r
C++/Haskell
 Аватар для ct0r
1550 / 569 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
31.12.2015, 20:07     Что такое side-effects #22
Цитата Сообщение от hoggy Посмотреть сообщение
я как бе вашего разрешения спросить забыл.
Можешь не спрашивать, хоть про макак в каждом треде пиши.

Цитата Сообщение от hoggy Посмотреть сообщение
итого: аналогия не уместна.
Пффф. Ну тогда человек и машина. Способности человека зависят от машины или наоборот. Давай, генерируй очередные отговорки.

Цитата Сообщение от hoggy Посмотреть сообщение
согласно русскому языку, прилагательное - характеристика предмета,
Где ты прилагательные нашел? Который - это прилагательное что-ли? Это местоимение Ты решил продолжать совершать одни и те же ошибки? И причем тут вообще прилагательные? Машины - это существительное.

Цитата Сообщение от hoggy Посмотреть сообщение
из этой фразы не понятно, чем на самом деле являются самолеты.
известно лишь, что они могут быть большими офигительными машинами,
а могут и не быть.
То есть из того, что самолеты - это машины, ты сделал вывод, что они могут быть машины, а могут быть и не машины? Поржал

Цитата Сообщение от hoggy Посмотреть сообщение
я в курсе этой парадигмы.
и нахожу ей применение на практике.
Какие монады писал? Какой функциональный язык ты освоил? Только не говори, что С++, шаблоны и метапрограммирование, умоляю

 Комментарий модератора 
Ребят, давайте потихоньку закругляться с этим обменом любезностями. Охота ругаться, пишите друг другу в ЛС, пожалуйста.
castorsky
 Аватар для castorsky
1948 / 1038 / 78
Регистрация: 29.11.2013
Сообщений: 3,262
31.12.2015, 20:38     Что такое side-effects #23
rikimaru2013, смотрю что никто так толком и не смог Вам ответить. Побочный эффект это когда вызываешь функцию не для возвращаемого ею значения. Обычно все вычисления можно построить одним выражением пользуясь вложенностью вызовов. Например
Lisp
1
(foo (bar (baz)))
где каждый вызов получает на вход результат предыдущего вызова. Функции с побочным эффектом это классическая интерпретация процедуры из структурного программирования. Может возвращать всё что угодно или вообще ничего, но изменять состояние программы каким-либо образом. Например функция printf используется только для достижения ее побочного эффекта, т.к. код, полученный после ее вызова (который она вернула) нам по факту вовсе не требуется.

Добавлено через 3 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
это просто пример.
и суть простая - побочные эффекты - этакие "нежданчики".
они как бы есть, но как бы прозрачно для программиста.
если на них заложилась какая то важная логика - это путь тернистый,
странных ошибок.
это под какими грибами надо было такое выдумать?
hoggy
5230 / 2121 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
01.01.2016, 02:13     Что такое side-effects #24
Цитата Сообщение от ct0r Посмотреть сообщение
Способности человека зависят от машины или наоборот
коррелируют

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

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


Цитата Сообщение от ct0r Посмотреть сообщение
де ты прилагательные нашел? Который - это прилагательное что-ли? Это местоимение
сейчас вы уже должны были подучить русский язык,
и вместо того, что бы задавать глупые вопросы,
вы уже должны были понять,
что именно являлось там прилагательным,
какую роль играет местоимение "которые",
и почему приведенная вами выше цитата
не может выступать в качестве определения термина "побочный эффект".

если до вас не дошло,
почему это так,
боюсь я уже ничем не смогу вам помочь.

Цитата Сообщение от ct0r Посмотреть сообщение
То есть из того, что самолеты - это машины, ты сделал вывод, что они могут быть машины, а могут быть и не машины?
у вам похоже реально трудности с понимаем русского языка.

или тут не по-русски написано?

Цитата Сообщение от hoggy Посмотреть сообщение
например, из фразы:
"Самолеты, которые - большие офигительные машины ..."
следует, что в данном контексте рассматриваются не все самолеты,
а лишь те, которые большие офигительные машины.
из этой фразы не понятно, чем на самом деле являются самолеты.
известно лишь, что они могут быть большими офигительными машинами,
а могут и не быть.
специально для тех, у которых двойка по русскому:
могут и не быть "большими афигительными машинами".
то есть, самолёты могут быть какими то другими,
которые не афигительные машины.

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

и поскольку, фраза не содержит определение понятия "самолетов",
то никаких других выводов вы из этой фразы сделать не сможете.

"самолёты - это ..."
"самолеты, которые ..."

сейчас похоже до вас не доходит разница между этими конструкциями.

Цитата Сообщение от ct0r Посмотреть сообщение
Только не говори, что С++, шаблоны и метапрограммирование, умоляю
ок.

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

 Комментарий модератора 
Ребят, давайте потихоньку закругляться с этим обменом любезностями. Охота ругаться, пишите друг другу в ЛС, пожалуйста.
ct0r
C++/Haskell
 Аватар для ct0r
1550 / 569 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
01.01.2016, 11:24     Что такое side-effects #25
hoggy, во-первых, кончай ругаться, это тебя унижает. А во-вторых, вернемся к английскому. Вот тут http://home.earthlink.net/~llica/wichthat.htm написано вот что:
Here is an example of the correct use of which:

Tiffany likes emeralds, which are expensive.
The set of things called emeralds are all expensive, so the clause "which are expensive" talks about the whole set of emeralds. There is no inexpensive subset of emeralds. "Which are expensive" simply gives you additional information about this whole set.
Вернемся к нашим баранам: side effects, which are changes in the state of the execution environment. Исходя из приведенной ссылки, changes in the state of execution environment - относится ко ВСЕМУ множеству побочных эффектов. То есть нет побочных эффектов, которые не являются changes in the state of execution environment. Таков английский. Что скажешь на это?

Добавлено через 6 минут
Ну и вот:
If a clause describes the whole set of the term it modifies, the clause in question should be introduced with which and separated by one or two commas from the rest of the sentence. (This is a nonrestrictive clause.) If the clause describes only a subset of the term it modifies, then the clause in question should be introduced by that and should not be separated by commas. (This is a restrictive clause.)
hoggy
5230 / 2121 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
02.01.2016, 03:28     Что такое side-effects #26
Цитата Сообщение от ct0r Посмотреть сообщение
во-первых, кончай ругаться, это тебя унижает.
1.
так я и не ругаюсь.
ругаться с кем то в интернетах мне не интересно.
я лишь указал вам, что прежде чем кидать понты,
по поводу русского,
вам не мешало бы самому его подучить.
потому что именно согласно русскому языку,
фразы вида: "предмет, который...",
уточняют какие именно предметы из множества имеются ввиду,
но никак не определяют понятие самого предмета.

2.
вторая часть никак не вытекает из первой.
и даже никак не коррелирует с нею.
в итоге получился бред.

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

не играйте со мной в эти игры.
потому что на этом поле, вы - скучный игрок.

Цитата Сообщение от ct0r Посмотреть сообщение
Вернемся к нашим баранам: side effects, which are changes in the state of the execution environment. Исходя из приведенной ссылки, changes in the state of execution environment - относится ко ВСЕМУ множеству побочных эффектов. То есть нет побочных эффектов, которые не являются changes in the state of execution environment. Таков английский. Что скажешь на это?
я специально решил проконсультироваться о одного преподавателя английского языка.
и вместе мы пришли к выводу, что вы правы в том,
что данная конструкция действительно характеризует все множество предметов.
однако, она не является определением этого множества.

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

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

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

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

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

но для того, что бы выступать в качестве определения "побочного эффекта", как термина,
данная конструкция не подходит.
ct0r
C++/Haskell
 Аватар для ct0r
1550 / 569 / 39
Регистрация: 19.08.2012
Сообщений: 1,174
Завершенные тесты: 1
02.01.2016, 11:21     Что такое side-effects #27
Цитата Сообщение от hoggy Посмотреть сообщение
не играйте со мной в эти игры.
потому что на этом поле, вы - скучный игрок.
Предпочитаю совершенствоваться в написании кода. В отличие от.

Цитата Сообщение от hoggy Посмотреть сообщение
потому что подобная конструкция предполагает,
что получатель сообщения уже имеет некоторые представления о предмете.
сама конструкция лишь акцентирует внимания читателя
на каких то важных для послания характеристиках множества этого предмета,
уточняя тем самым контекст всего послания.
но не более того.
Не совсем так. Смысл вот в чем. Возьмем другую статью как пример без всяких изумрудов - http://blog.dictionary.com/that-vs-which/ То есть главное именно то, что ты в принципе можешь выкинуть эту конструкцию без ущерба для понимания всего предложения. А для тех, кто может не понять, что же такое побочные эффекты, на всякий случай добавляется дополнительная информация, объясняющая и раскрывающая их смысл. И по словарю это как раз и является "определением".
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2016, 18:03     Что такое side-effects
Еще ссылки по теме:

C++ Что такое хэндлер файла? Что такое файловый указатель?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами? C++
Объяснить что такое "раздельная компиляция", что такое "интерфейс класса" и "реализация класса" на примере C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
hoggy
5230 / 2121 / 404
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
02.01.2016, 18:03     Что такое side-effects #28
Цитата Сообщение от ct0r Посмотреть сообщение
Не совсем так. Смысл вот в чем. Возьмем другую статью как пример без всяких изумрудов - http://blog.dictionary.com/that-vs-which/ То есть главное именно то, что ты в принципе можешь выкинуть эту конструкцию без ущерба для понимания всего предложения. А для тех, кто может не понять, что же такое побочные эффекты, на всякий случай добавляется дополнительная информация, объясняющая и раскрывающая их смысл.
вы сейчас пишите практически тоже самое, что и я писал выше.

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

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

Цитата Сообщение от ct0r Посмотреть сообщение
И по словарю это как раз и является "определением".
так речь же изначально идет об определении термина.

"на языке с++ массив - это не прерывный блок памяти".

по словарю, это - так же определение.
но оно не полное.
и "массив", как термин языка оно не определяет.

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

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

а ваша конструкция, как я уже писал выше,
предназначена для человека,
который уже имеет представлением о том,
что такое "сайд эффект".
делает акцент на важных для всего послания особенностях последних.
но не более того.
"побочный эффект", как термин, оно не определяет.
Yandex
Объявления
02.01.2016, 18:03     Что такое side-effects
Ответ Создать тему
Опции темы

Текущее время: 16:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru