|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
Что такое side-effects30.12.2015, 18:09. Показов 8271. Ответов 27
Метки нет (Все метки)
Добрый день,
что такое side-effects и с чем их едят? В каких коварных моментах языка стоит помнить про данный термин. Когда незнания его может привести к последствиям. По анализу вопросу понял, что это: если функция не умеет внешних связей и работатет по принципу: вы мне запрос - я вам ответ.То такая функция без side-effect'ов.
0
|
|
| 30.12.2015, 18:09 | |
|
Ответы с готовыми решениями:
27
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое хэндлер файла? Что такое файловый указатель? |
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 30.12.2015, 18:17 | |
|
Так вот же ж:
https://en.wikipedia.org/wiki/... science%29
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
| 30.12.2015, 18:25 [ТС] | ||||||
|
Я прочитал достаточно информации на википедии, stackoverflow и других ресурсах, чтобы нормально так запутаться. Везде вода, зачем не понятно, как использовать знания полученые прочитав ту или инную статью - не понятно. Что это вещь спасёт мир всём понятно, но никто не говорит кейсы дальше чем
0
|
||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 30.12.2015, 18:35 | ||
|
0
|
||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||||||||
| 30.12.2015, 19:04 | |||||||||||
Сообщение было отмечено rikimaru2013 как решение
Решение
rikimaru2013, хочешь более нетривиальных примеров?
Например, код:
Ответ: смотря что ими считать. Например, ленивость - можно считать сайдэффектом оператора &&. Если наша логика каким-либо образом завязана на порядок вычислений, например так:
А теперь представим, что у нас появилась перегрузка оператора && для некоторых классов, а операторы ++ примененные к `a`,`b`, `c` возвращает объекты этих классов. Появляются другие сайдэффекты: 1) Пропадает ленивость. 2) Порядок вычисления аргументов теперь не определен. Резюмируя: никогда не полагайся на ленивость оператора && (и подобных с тем же свойством), если существует ненулевая вероятность, что в данном контексте он может быть перегружен. Ленивостью обладает только встроенная версия, а пользовательская перегрузка обладает только свойствами обычной функции.
6
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 30.12.2015, 23:28 | ||
Сообщение было отмечено rikimaru2013 как решение
Решениелюбая ботва, которая может неявно (скрытно от программиста) влиять на среду. например, первая функция подкрутила гайки глобальной переменной а вторая функция рассчитывает на то, что этой переменной кто-то подкрутит гайки. в чем тут подвох? логика второй функции зависит от логики первой. нельзя поправить первую функцию без учета второй, есть риск, что она поломается. другой пример: какой то идиот вкрячил в конструктор копии сайд эффект: инициализацию базы данных. в релизе компилятор оптимизировал конструкторы копии забив на все побочные эффекты (copy elision) а потом приперся на форум, и выложил километр своего говнокода со словами: "у меня тут чота не работает" третий пример: по стандарту, циклы без побочных эффектов (без изменения внешнего состояния) - UB почитайте про то, как компилятор сумел доказать теорему Ферма: http://habrahabr.ru/post/229963/ там есть ссылки на оригинальный текст. а ниже - перевод на русском.
3
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||
| 30.12.2015, 23:51 [ТС] | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 30.12.2015, 23:57 | ||
|
вашу тему вероятно я даже не видел, поскольку не знаю о чем это вы сейчас. это просто пример. и суть простая - побочные эффекты - этакие "нежданчики". они как бы есть, но как бы прозрачно для программиста. если на них заложилась какая то важная логика - это путь тернистый, странных ошибок. одна из причин, из-за которой считается, что "глобальные переменные - зло", связанна с тем, что манипуляции с глобальными переменными - суть побочные эффекты.
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 31.12.2015, 01:15 [ТС] | |
|
hoggy, вызов другого метода в методе является side-effect'ом? Как бы метод зависит от результатов работы др метода (и/или вызов статического метода синглтона)
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 31.12.2015, 01:18 | ||
Сообщение было отмечено rikimaru2013 как решение
Решението есть, если компилятору известно туловище вызываемой функции, то это все равно, что мы код мысленно inline вставили. компилятору доступен контекст, и он сможет оптимизировать. если не доступен, то он должен сделать вызов, не зная к чему это приведет. это "не знание" и есть "побочный эффект" с точки зрения компилятора.
1
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 31.12.2015, 01:34 [ТС] | |
|
hoggy, тогда как компилятор не смог увидить перегрузки для
if(a++ && b++ && c++) {} и соптимизировать код. На этапе компиляции - все поведения определены
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||
| 31.12.2015, 01:39 | ||
|
hoggy, ты тут ошибаешься. Нет такого понятия как "побочные эффекты с точки зрения компилятора". Даже если отвлечься от высокоуровневого термина "побочный эффект", стандарт четко говорит, что это такое:
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||
| 31.12.2015, 01:44 | |||||||||
|
если на этапе компиляции единицы трасляции, компилятору был доступен контекст, значит он использовал эту информацию. в данном случае имеет место быть ленивым вычислениям:
вопрос лишь в том - доступна ли она компилятору. и включены ли режимы оптимизации его работы. Добавлено через 4 минуты как бе понятно, что это именно что понятие, а не формальная терминология. и это понятие существует для того, что бы можно было понять сабж.
1
|
|||||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 31.12.2015, 02:08 | |||
И например тут http://en.cppreference.com/w/c... eval_order со мной согласны.Добавлено через 10 минут Для тех, кто еще не понял, что такое функция без побочных эффектов. Грубо(!) говоря, эта функция, 1) возвращаемое значение которой зависит только от параметров, в нее переданных 2) если все места, где она вызывается, заменить возвращаемым значением, поведение программы не изменится. Зачем такие функции нужны: 1) их легче понимать 2) их легче сопровождать 3) их легче отлаживать 4) их легче тестировать 5) их легче переиспользовать 6) их легче верифицировать.
3
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 31.12.2015, 02:59 | ||
|
но не говориццо, что такое "побочный эффект" поэтому, с точки зрения терминологии (а не понятий), не понятно, что именно оно - "оно". и что с того? ссылку на которую вы дали, это понятие не раскрывает. а если рассуждать с точки зрения "понятия" которое я дал в #10, то уточнениям "точкам следования" с++11 оно никак не противоречит.
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
||||
| 31.12.2015, 05:10 | ||||
|
К тому же в С++11 уже нет такой штуки как точки следования. Давай не пользоваться старой терминологией.
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 31.12.2015, 14:18 | |||||
там нет определения, что есть "сайт эффект".
0
|
|||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||
| 31.12.2015, 14:33 | |||
|
1
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 31.12.2015, 14:46 | |||||||
|
которое ответ на моё предыдущее сообщение, ключевое слово которого было: с точки зрения компилятора если вас не интересует точка зрения компилятора, тогда мне не очевидно, зачем вообще вы начали развивать эту тему. от этого зависит способность компилятора оптимизировать, например. я конечно согласен с вами, что определение самолета не зависит от оптимизации его маршрута. но мне бы и в голову не пришло думать о подобных бреднях. "самолеты, которые доставляют почту в южные страны..." ахренительное определение самолетов.
0
|
|||||||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||
| 31.12.2015, 14:57 | |||||
![]() Добавлено через 3 минуты PS И расширь свой кругозор, поучи функциональую парадигму, а то грустно все...
0
|
|||||
| 31.12.2015, 14:57 | |
|
Помогаю со студенческими работами здесь
20
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них
Ремонт Х-к Teka NF660i side by side нет регулировки температуры в морозильнике Ремонт Холодильник Акаi ARL2522MS side-by-side, доза фреона 600а Холодильник BOSCH KFU 5750/03 (side by side), Подобрать компрессор Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|