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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать ответы на тестовое задание при приёме на работу (исключения, sizeof, mutex) http://www.cyberforum.ru/cpp-beginners/thread1629201.html
Добрый день! Ходил недавно на собеседование. Имеется список вопросов, на некоторые ответил правильно на какие-то - нет. Хотелось бы услышать мнение других людей как бы они решили поставленные задачи/вопросы, особенно интересует вопрос под номером 2 и его подробный разбор. Задачи решались без компьютера и подобных средств для проверки кода. Хотелось бы услышать именно ваши рассуждения, а...
C++ Написать программу "Будильник" Хочу сделать будильник. Пишу на C++ первый день, до этого практики не было. Как отключить динамик? Если он включается то уже больше не выключается. Вот код: #define BUZ 13 #define LDR A0 #define POT A1 void setup() { http://www.cyberforum.ru/cpp-beginners/thread1629192.html
C++ Выделение памяти для строки
Почему размер строки первой 4 байта а второй 50 байт?Первая должна сколько же. #include <stdio.h> #include <Windows.h> #include <iostream> #include <string.h> using namespace std; int main() { char *name = new char; for (int i = 0; i < 50; i++)
Не генерируется новое рандомное значение C++
Привет, когда я нажимаю на H (eng) в это программе, у меня не генерируется новое рандомное значение, а остается первое. Почему? И как это пофиксить? (Я хочу, чтобы в программе каждое нажатие H генерировало новое рандомное число от 1 до 100) Вот код: #include <iostream> #include <string> #include <random> #include <ctime> #include <conio.h> using namespace std;
C++ Создать таблицу, используя двумерные массивы http://www.cyberforum.ru/cpp-beginners/thread1629159.html
Не получается создать таблицу,используя двумерные массивы.помогите пожалуйста!
C++ Создать класс Polynomial, реализующий многочлен одной переменной Создать класс Polynomial, реализующий многочлен одной переменной. Класс дол- жен содержать удобный инициализатор, перегрузку оператора для доступа к коэффициентам, оператор копирования =, оператор сложения + и вычитания −, а также метод, дающий по числу a разложение исходного многочлена по степеням (x − a). подробнее

Показать сообщение отдельно
hoggy
6369 / 2587 / 452
Регистрация: 15.11.2014
Сообщений: 5,723
Завершенные тесты: 1
30.12.2015, 23:28     Что такое side-effects
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
что такое side-effects и с чем их едят?
побочные эффекты.

любая ботва, которая может неявно (скрытно от программиста) влиять на среду.

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

в чем тут подвох?

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


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

в релизе компилятор оптимизировал конструкторы копии
забив на все побочные эффекты (copy elision)
а потом приперся на форум,
и выложил километр своего говнокода со словами:
"у меня тут чота не работает"

третий пример:
по стандарту, циклы без побочных эффектов
(без изменения внешнего состояния) - UB

почитайте про то, как компилятор сумел доказать теорему Ферма:
http://habrahabr.ru/post/229963/

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