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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
rikimaru2013
C++ Game Dev
2419 / 1113 / 240
Регистрация: 30.11.2013
Сообщений: 3,660
#1

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

30.12.2015, 18:09. Просмотров 1088. Ответов 27
Метки нет (Все метки)

Добрый день,

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

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

что такое extern? - C++
что будет если не написать extern,если можно с примерами

Что такое char* ? - C++
char* szString = "Randy"; Объясните, чем в данном случае является szString? Если это указатель, то почему ему напрямую можно...

Что такое ООП. - C++
"Объе́ктно-ориенти́рованное программи́рование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов...

Что такое istringstream? - C++
#include <iostream> #include <string> #include <sstream> #include <algorithm> using namespace std; int main() { string...

Что такое сочетание ^= - C++
Объясните пожалуйста что представляет собой следующая запись: b^=a^=b^=a%=b;

Что такое семафоры? - C++
сразу хочу показать ссылку...

Что такое указатели? - C++
Здравствуйте. Что такое указатели? Для чего они нужны? И когда их использовать? Объясните пожалуйста.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
31.12.2015, 05:10     Что такое side-effects #16
Цитата Сообщение от hoggy Посмотреть сообщение
там говориццо что является побочным эффектом,
но не говориццо, что такое "побочный эффект"
Да как не говорится? Вот: side effects, which are changes in the state of the execution environment. Все, что после which, относится именно к определению side effects, а не ко всему предыдущему.

Цитата Сообщение от hoggy Посмотреть сообщение
и рули, ссылку на которую вы дали, это понятие не раскрывает.
Ну кому как.

Цитата Сообщение от hoggy Посмотреть сообщение
то уточнениям "точкам следования" с++11 оно никак не противоречит.
Из твоего понятия следует, что вызов абсолютно любой незаинлайненной функции - это побочный эффект. Но это не так, потому что побочный эффект при вызове функции получается - только если эта вызываемая функция с побочным эффектом.
К тому же в С++11 уже нет такой штуки как точки следования. Давай не пользоваться старой терминологией.
hoggy
6427 / 2645 / 458
Регистрация: 15.11.2014
Сообщений: 5,834
Завершенные тесты: 1
31.12.2015, 14:18     Что такое side-effects #17
Цитата Сообщение от ct0r Посмотреть сообщение
Но это бред, потому что побочный эффект при вызове функции получается - только если эта вызываемая функция с побочным эффектом.
объясните это компилятору, который не телепат, и не знает, что там внутри.

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

Цитата Сообщение от ct0r Посмотреть сообщение
Все, что после which, относится именно к определению side effects, а не ко всему предыдущему.
... are all side effects, which..
"..сайд эффейты, которые..."

там нет определения, что есть "сайт эффект".
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
31.12.2015, 14:33     Что такое side-effects #18
Цитата Сообщение от hoggy Посмотреть сообщение
объясните это компилятору, который не телепат, и не знает, что там внутри.
Мы тут про побочные эффекты или про компилятор? Они не связаны друг с другом никак. Поэтому мне абсолютно всё равно, что и как там с компилятором, поскольку он никакого влияния на определение побочного эффекта не оказывает.

Цитата Сообщение от hoggy Посмотреть сообщение
"..сайд эффейты, которые..."
там нет определения, что есть "сайт эффект".
Ты всегда английский так переводишь - первые 3 слова? Давай продолжим: побочные эффекты, которые - (есть) (представляют собой) изменения в состоянии среды исполнения. Такое ощущение, как будто ты на экзамене и выкручиваешься, чтобы тебе пару не влепили.
hoggy
6427 / 2645 / 458
Регистрация: 15.11.2014
Сообщений: 5,834
Завершенные тесты: 1
31.12.2015, 14:46     Что такое side-effects #19
Цитата Сообщение от ct0r Посмотреть сообщение
Мы тут про побочные эффекты или про компилятор?
текущее сообщение - ответ на ваше сообщение,
которое ответ на моё предыдущее сообщение,
ключевое слово которого было:
Цитата Сообщение от hoggy Посмотреть сообщение
это "не знание" и есть "побочный эффект" с точки зрения компилятора.
специально я выделю жирным:
с точки зрения компилятора
если вас не интересует точка зрения компилятора,
тогда мне не очевидно, зачем вообще вы начали развивать эту тему.

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

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

Цитата Сообщение от ct0r Посмотреть сообщение
Давай продолжим: побочные эффекты, которые - (есть) (представляют собой) изменения в состоянии среды исполнения.
ну давайте:
"самолеты, которые доставляют почту в южные страны..."

ахренительное определение самолетов.

Цитата Сообщение от ct0r Посмотреть сообщение
Такое ощущение, как будто ты на экзамене и выкручиваешься, чтобы тебе пару не влепили.
обычный здравый смысл в отличии от.
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
31.12.2015, 14:57     Что такое side-effects #20
Цитата Сообщение от hoggy Посмотреть сообщение
с точки зрения компилятора
если вас не интересует точка зрения компилятора,
тогда мне не очевидно, зачем вообще вы начали развивать эту тему.
Так это ты начал со своим компилятором, которому в этой теме вообще не место.

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

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

Цитата Сообщение от hoggy Посмотреть сообщение
обычный здравый смысл в отличии от.
Тупая упертость онли.

Добавлено через 3 минуты
PS И расширь свой кругозор, поучи функциональую парадигму, а то грустно все...
hoggy
6427 / 2645 / 458
Регистрация: 15.11.2014
Сообщений: 5,834
Завершенные тесты: 1
31.12.2015, 15:03     Что такое side-effects #21
Цитата Сообщение от ct0r Посмотреть сообщение
Так это ты начал со своим компилятором, которому в этой теме вообще не место.
я как бе вашего разрешения спросить забыл.

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

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

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

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

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

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

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

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


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

а вот ваша грусть мне безразлична.
это - ваши трудности.
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
31.12.2015, 20:07     Что такое side-effects #22
Цитата Сообщение от hoggy Посмотреть сообщение
я как бе вашего разрешения спросить забыл.
Можешь не спрашивать, хоть про макак в каждом треде пиши.

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

 Комментарий модератора 
Ребят, давайте потихоньку закругляться с этим обменом любезностями. Охота ругаться, пишите друг другу в ЛС, пожалуйста.
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 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
6427 / 2645 / 458
Регистрация: 15.11.2014
Сообщений: 5,834
Завершенные тесты: 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
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 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
Еще ссылки по теме:

что такое hex - C++
Здравствуйте вообщем возник вопрос что такое hex и как он работает. У меня была простая программка BitTest - инициируются две переменные и...

Что такое mod в с++ ? - C++
что такое mod в с++ и как он работает? например, m=12*17^9 mod 23. (m должно получиться 15)

что такое Void - C++
Всем привет кто подскажет что такое Void.

что такое HANDLE? - C++
для написания проги пользовалась следующими кодами, которые нашла в инете: HANDLE hConsole, hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); ...

Что такое конструктор? - C++
Конструктор - это такие детали , как map , player, enemy.Я правильно понял?


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

Или воспользуйтесь поиском по форуму:
hoggy
6427 / 2645 / 458
Регистрация: 15.11.2014
Сообщений: 5,834
Завершенные тесты: 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
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru