Open the-homeless-god opened 9 months ago
Иммутабельность означает, что функция не может менять какие-либо параметры, которые ей передаются (так как они находятся вне её). Например, заваривание чая. Мы передаём в эту функцию чашку, воду, заварку, сахар и возможно что-то ещё. От того что мы налили чай в чашку, последняя совершенно не изменила свою функцию, это всё ещё чашка, так как она выполняет одни и те же функции, что и до этого. Когда чай закончится, она всё ещё останется чашкой, так как никакие новые функции она не выполняет и не перестаёт выполнять старые. То же самое можно сказать про воду, заварку и остальное. Вода всё ещё содержится в чае и выполняет свои же функции, следовательно это всё ещё вода.
Монада — набор параметров, который может задать порядок выполнения самой функции, в которую он передаётся. Если брать пример выше, то сахар, кружка, вода и другие параметры и есть монада. Если передать слишком большой параметр воды и недостаточно большой параметр кружки, то чай выполнит функцию выливания на пол, но это всё ещё будет чай.
Не знаю, могу предположить, что какие-нибудь элементарные частицы и являются вечными машинами, так как не содержат в себе какие-либо иные функции, а значит их нельзя никак разбить и следовательно они никогда никуда не денутся.
ООП работает с объектами — наборами данных в какой-то конкретный момент и это всё занимает место и может быть изменено или утеряно. ФП работает с функциями — математическими выражениями, которые непрерывны и значениями в них манипулировать нельзя, так как все они вычисляются, а не хранятся где-то.
Выписать все дробные числа от 0 до 1. Или просто выписать все числа находящиеся между двумя соседними целыми числами. Если хранить эти значения где-либо, то места не хватит, так как их бесконечное количество. Если хранить только в какой-то конкретной переменной, то с переменной может что-то случится (молния в компьютер ударит) и данные или изменятся и пропадут в какой-то момент. ФП в данной ситуации будет возвращать только само значение функции и нигде его не хранить, а значит и работать будет непрерывно, пусть и до бесконечности (что, как ни странно подтверждает, что это вообще будет работать).
Не знаю.
Снова берём чашку из примера с чаем. Чашка это какая-то функция, которая делает что-то (хранит жидкость). Если мы разобьём какую-то конкретную чашку и купим новую, это всё равно будет та же самая чашка, так как выполняет одну и ту же функцию. Если мы нальём чай в тарелку, это всё равно будет чашка с точки зрения этой функции, потому что тарелка выполняет ту же самую (хранить жидкость), что и чашка вопрос лишь в наименовании самого параметра.
Не знаю.
Иммутабельность или неизменность - это отсутствие возможности изменить функцию или объект, который мы создали. Если мы внесем изменения, то будет создан новый объект или функция. Например мы создали класс кошка и присвоили ему определенные свойства, данный объект нельзя изменить.
Монада - это последовательный порядок выполнения команд функции. Например, алгоритм по очистке ковра.
Взаимодействие энергии, материи и пространства.
ООП: работа с объектами, обязательно хранение данных, имеет ограничения по выполнению. ФП: работа с функциями, отсутствие хранения данных, может выполняться бесконечно.
Арифметическая или геометрическая прогрессия до бесконечности.
-
Кран с водой. Кипячение чайника. Открытие замка.
-
Иммутабельность — это определенной свойство, объект имеющий это свойство не может уже изменяться после создания, при изменениях это уже будет новый объект. Например это будет ароматическая свечка, при горении ее аромат будет иммутабельным в воздухе, и мы не сможем у нее сменить его, поменять на другой, как-то ослабить, только если изначально купить другую свечку.
Обеспечивает способ комбинировать функции и значения в удобном и предсказуемом порядке. Монада представляет из себя концепцию, которая позволяет управлять последовательностью операций над значениями таким образом, что выражения выглядят как последовательность шагов в императивном стиле, но при этом сохраняют чистоту функционального подхода. В качестве примера опять возьмем свечку, допустим мы хотим создать приятную атмосферу в комнате и для этого зажжем ее. Действия будут следующие: a)Зажигание свечи (чтобы начать распространение аромата) b)Наслаждение ароматом(после того как свеча зажжена, мы можем наслаждаться приятным ароматом, который заполняет комнату) c)Погашение свечи (мы гасим свечу, чтобы прекратить ее горение) В этом примере монада свечи представляет собой способ управления последовательностью действий с ароматической свечой. Мы можем последовательно выполнять операции с ней, начиная с зажигания, затем наслаждаясь ароматом и заканчивая погашением, также как мы могли бы использовать монаду в функциональном программировании для последовательного выполнения функций.
Бесконечная последовательность чисел
ООП подобно работе с состояниями и объектами, а FP больше описывает процессы и функции
Подсчет количества четных чисел в списке
Как то, что позволяет разбивать текст на строки
У нас есть ароматическая свеча, которую можно зажечь и наслаждаться ее ароматом. Когда мы зажгли свечу, она начнет выделять аромат. Представим, что мы зажигаем эту же свечу снова, когда она уже горит. Свеча будет продолжать гореть и выделять аромат, но результат (аромат) останется тот же. То же самое произойдет, если мы зажжем ее несколько раз подряд, она будет продолжать выделять аромат, и при том, тот же самый, в итоге результат останется неизменным. Таким образом, в данном примере действие "зажжение свечи" является идемпотентным, потому что оно может быть выполнено несколько раз, но каждое последующее применение не изменит окончательного результата.
Под иммутабельностью подразумеваются какие-либо данные/объекты, которые не могут быть изменены в дальнейшем после их создания. Из таковых легче всего привести константы, возьмем к примеру число Пи. Это соотношение длины круга к длине его диаметра, благодаря вычислениям это число всегда равно 3.14159265...... Ну, или, как нас всех учили - 3.14.
Насколько мог сам понять, монада позволяет определить порядок выполнения функции(?..). Например, возьмем какого-нибудь дурачка со списком продуктов, которые ему нужно купить. Так как он дурачок, он берет один продукт и сразу идет на кассу. Таким образом он бегает туда-сюда с каждым отдельным пунктом и наконец завершает шоппинг :D. Благодаря монаде можем подарить ему мозг, с помощью которого он сначала возьмет тележку, накидает туда необходимые вещи по списку до конца и только потом пойдет на кассу.
Возможно, бесконечная машина - зацикленная программа без возможности вывести результат/быть завершенной/выйти из цикла.
ООП основана на объектах, которые хранят в себе некоторые данные и методы для их обработки, те, в свою очередь, могут меняться во время выполнения программы. Помимо этого, объекты могут взаимодействовать друг с другом. Изменения вносятся модификацией самих объектов или добавлением новых классов. ФП же основана на математических функциях, которые передаются как аргументы и возвращаются как результат. В ФП функции не имеют состояний и они не изменяют данные. Изменения в программе вносятся с созданием новых функций или же изменением существующих.
Не понял вопроса
Чтение какого-либо текста. Возьмем, например, книгу "Мастер и Маргарита". Её можно перечитывать сколько угодно раз, текст в ней с каждым прочтением остается все тем же.
Иммутабельность - это неизменяемый объект, то есть нельзя изменить после его создания(станет доступной только для чтения). Применяется в строках, массивах и классах. Например, свидительство о рождении, номер банковской карты, номер паспорта, многие константы, такие как число пи или e - они все неизменяемые данные и доступны только для чтения.
Монада - это набор функций, которые преобразуют значения в определенный тип, представляющий вычисления. Например, используя функцию, можно преобразовать тип данных int в string или добавить некий элемент в список.
Арифметические операции с бесконечными числами (пи или е), рекурсивные функции.
С помощью FP можно написать функцию фильтра данных, рекурсию, любые вычисления и операции над числами.
Не понял вопрос)
Кнопка лифта, открытие домофона, кнопка вкл/выкл,
Это фоновые процессы, которые работают в автономном режиме и управляются командами для запуска и остановки процессов.
What's immutability? Provide a few examples. В переводе дословно означает неизменность, т.е. это состояние, при котором объект (функция..?) остаются неизменными, не смотря на любые манипуляциями над ними. Например, смартфон. Сколько не говори, что он тебе нужен для учебы, для работы, для спорта, для аудиокниг, музыки и т.д. Он все равно остается гаджетом, от которого ты со временем становишься зависимым. Это если говорить про неизменность объекта. А если мы говорим о функции, то в качестве примера можно взять суп. Для того, чтобы приготовить суп на входе нужны продукты и кипяченная вода. И не важно, что на выходе можно получить борщ, чай, кофе или глинтвейн. Потому что во всех случаях мы получаем неизменный суп. В одном случае это суп из свеклы и мяса, в другом суп из листьев, в третьем из кофейных зерен, в четвертом из вина и корицы.
Describe the monad. Provide a few examples. Уникально сказать будет сложно. Осмелюсь предположить, что это перечень входных данных нашей функции, которые и определяют порядок ее выполнения, т.е. рассматривая функцию суп, вся его входящая информации и будет Монадой.
Provide a few examples for endless machines. Множество звезд во вселенной; подсчет родившихся и умерших людей...?
What's difference between OOP and FP? Если очень коротко, ООП - работа объектов, ФП - работа функций. Предположу, что колоссальная разница наверное в том, что ФП как работа с функциями не исключает того, что функция может работать бесконечно.
Provide examples for tasks that can be solved only with FP. Назову то, что ранее слышала от кого-то: если нам будет необходимо отсортировать/отфильтровать список по какому-то параметру/условию, но при это не изменять изначальный набор данных.
How do you understand carrying? Если бы было может какое-то дополнение к вопросу, то было бы проще, потому что как не юзай все переводчики или слова синонимы, все равно в голову лезут мысли о какой-то транспартировке чтоли.. далее эту мысль развивать не осмелюсь
Example of idempotency in real life. Идемпотентность это когда ты повторяешь действие, а результат не меняется. Если тебе нравится человек, а он не отвечает тебе взаимностью, то как не пытайся, как правило, ничего не изменится. Или как отстирать белую футболку от черной смородины, футболка не отстирается, как не старайся.
What's daemon in *nix systems? Опираясь на несколько статей в интернете скажу как можно проще: это программа, которая запускается в фоновом режиме причем не требующая взаимодействия с пользователем. Чаще всего запускаются одновременно с общей загрузкой системы. А еще (если я правильно поняла) эта программа не требует управления
Иммутабельность (неизменность) — это свойство чего-либо оставаться постоянным, не подвергающимся изменениям после создания. Неизменными остаются константы (пи, ускорение свободного падения, число эйлера и тд). Также неизменными остаются какие-либо моменты прошлого. Мы не можем вернуться во времени и изменить их, они уже существуют и не поддаются влиянию из настоящего или будущего.
Монада – можно сказать шаблон, который помогает последовательно выполнять действия в функции. Например, когда мы едем по навигатору, он нам указывает дальнейшее движение. Результат предыдущего шага становится входным значением для последующего шага. Также покупка билета на какое-либо мероприятие, монада гарантирует, что человек сначала выберет мероприятие, затем произведет оплату и после получит билет – сделает все в нужной последовательности.
Бесконечная последовательность чисел, время. Возможно, частицы материи, ведь они могут бесконечно существовать в виде своих составляющих.
ООП основано на том, что существуют какие-то объекты, у которых могут быть характеристики(поля) и они могут выполнять какие-то действия (функции/методы). ФП основано на описании функции, а не объектов. В ФП данные и действия – это разные сущности. Так в ООП все функции привязаны к определенному объекту и могут выполняться только им. В ФП же нет привязки и все функции находятся сами по себе, следовательно их может использовать любой объект.
Работа с бесконечными списками, рекурсии, каррирование
Каррирование (currying) — это преобразование функции с множеством аргументов в набор вложенных функций с одним аргументом. Благодаря каррированию функцию можно вызывать последовательно, передавать данные по одному параметру. Функция не заполнится пока все параметры не будут переданы.
Неважно сколько раз человек нажмет на кнопку вызова лифта, один раз или десять, лифт уже вызван. Если человек поднял флаг один раз, то его повторное поднятие флага не изменит ситуацию, флаг как развевался по ветру, так и будет развеваться, неважно сколько раз человек поднимет флаг.
Это программа, которая работает в фоновом режиме с определенной уникальной целью. Они нужны, чтобы отслеживать состояние систем, обслуживать подсистемы, выполнять определенные действия в запланированное время и гарантировать корректную работу всей ОС в целом. Например, отслеживать состояние сетевого подключения.
Иммутабельность - означает, что мы не можем менять состояние объекта или значение функции после их создания. Например мы создаем файл. Мы можем изменять его содержимое, но не сам файл, т.к. его состояние измениться и для этого нам придется создать новый файл.
Монада - это когда для функции можно задать императивную последовательность выполнения. Например, чтобы поехать на машине нам необходимо открыть машину, затем дверь, далее завести машину.
Гравитационное взаимодействие
ООП работает с объектами, использует методы, свойства. Данные необходимо хранить. ФП работает с функциями, не хранит данные.
Вычисление факториала числа.
-
Кнопки вкл/выкл на панели управления являются идемпотентной операцией, т.к. имеют одинаковый эффект независимо от того, сколько раз она выполняется.
-
Пример 1 (+ псевдокод на Python): строки (они же String)
nickname = 'Sakvago'
nickname[0] = 'T'
При выводе получим ошибку, потому что строки иммутабельны. Питон позволяет нам считать строку из символов и только потом производить изменения, но напрямую работать с символами в строке он не даст
Пример 2: формулы в математике (х²) для любого значения x его квадрат будет неизменным
Монада - в первую очередь это концепция функционального программирования (пожалуй, это единственное что я быстро запомнила 😂). Она позволяет нам выстроить структуру и упорядочить вычисления (операции, функции или выражения) нужным нам образом. Читала про хаскель то, что там используют ">>=" для возвращения первым оператором значения, которое нужно передать второму и ">>" если первый оператор просто выполняет операцию и не возвращает значение, которое нужно передать второму. В качестве примера 1, насколько я поняла прикол хаскеля, можно привести монаду ввода-вывода:
main = putStrLn "Привет" >> putStr "Как дела?"
В выводе получим:
Привет
Как дела?
Пример 2: стиральная машинка Грубо говоря, она использует монаду в плане использования разных средств во время стирки, сначала отсек с предварительным средством, потом отсек с порошком, потом отсек с кондиционером. Иначе она бы в рандоме могла залить сначала кондиционер, смыть его и залить порошок, от чего смысл кондиционера теряется..
Пример бесконечной машины - плохо написанный код :D (шутка, иногда бесконечные циклы полезные) Программа с пустым условием для for будет работать бесконечно, ввиду отсутствия условия выхода из программы, если мы добавим еще и вывод числе с прибавлением в каждой итерации единицы, то получим программу, которая будет выводить числа до бесконечности, Не знаю, будет ли это считаться, но машина Тьюринга подразумевает использование ленты с бесконечной длиной
(названия опять же говорят сами за себя) ООП (Объектно-ориентированное программирование) ориентируется на использование объектов, данные и операции над данными сильно связаны между собой ФП (Функциональное программирование) - ориентируется на использование функций, данные слабо связаны с функциями
ФП хорошо подходит для работы с большим количеством данных. Хорошо помню только пример с вычислением промежуточных значений между двумя точками (начало отсчета и конец)
Скорее всего в вопросе подразумевается каррирование. Это такой процесс превращения функции от n аргументов в цепочку вложенных n-функций от одного аргумента. Пример: обычная функция будет представляться как f(a, b, c), а каррированная как f(a)(b)(c) /Минутка занимательной википедии или почему все думают про "перенос": наименование карринг ([англ.]currying) выбрано не случайно, так как для англо-язычных человеков это намёк на термин "перенос" ([англ.]carry) аргумента от одной функции к другой/
Пример 1: умножение числа 1 на само себя Сколько бы ученик не умножал 1 на 1, ничего кроме 1 он не получит Пример 2: кнопка активации зеленого сигнала светофора на переходе После первого нажатия включается состояния запроса, и сколько раз ты бы ее не нажал между этим состояниям запроса и его удовлетворением, ничего не изменится
Это некоторая компьютерная программа ОС (unix и unix-подобные), автоматически запущенная в фоновом режиме, не контролируемая пользователем системы и не имеющая какого-либо графического интерфейса
О-90_getСoupon(I-330_getСoupon(R-13_getСoupon(0)))
, и это только при 3 людях.
Здесь монады приходят на помощь и вызов сокращается до подобного pipeline(0, R-13_getСoupon, I-330_getСoupon, О-90_getСoupon)
, а плюсом внутри монады можно выполнять промежуточные вычисления, вообще песня.(a+b+abs(a-b))/2
Для трех: (abs(2*c-abs(b-a)-b-a)+2*c+abs(b-a)+b+a)/4
И, соответственно, можно было заменить вторую громоздкую формулу на вложение первой саму в себя: ((a+b+abs(a-b))/2+c+abs((a+b+abs(a-b))/2-c))/2
, где а было заменено на предварительное вычисление большего между а и b.1 Неизменяемость в программировании означает, что данные, как только они были созданы, не могут быть изменены. Например, в функциональном программировании переменные являются неизменяемыми. 2 Это концепция функционального программирования 3 Бесконечные машины являются абстрактными моделями компьютеров, способными выполнять бесконечное количество шагов. Например счёт чисел 4 В ООП состояние управляется через объекты и их методы, в ФП данные являются неизменяемыми и управление состоянием осуществляется через функции, данные не хранятся. 5 6 Возможность использования кода, написанного для одного языка программирования, в другом языке без значительной переработки. 7 Если пытаться несколько раз включать свет это не изменит его состояние 8 Это фоновый процесс, который работает в фоновом режиме без прямого участия пользователя.
Примером может служить иммутабельность hash-ей паролей, хранящихся в базе данных и защищённых от изменений, чаще всего их просто заменяют другим hash-ем при смене паролей, но отдельная сущность не изменяется по понятным причинам. Вычисляемые блоки блокчейна по факту тоже являются иммутабельными, сам блокчейн не может быть изменён без изменения всех звеньев цепочки, соответственно происходит перевычисление и сами блоки по существу становятся новой сущностью, то есть конкретно взятый блок или вся цепочка являются иммутабельными.
Хорошим примером может служить калькулятор, хранящий в себе полный набор возможных операций и производящий их в зависимости от задачи в разной последовательности. В моём понимании монады чем-то напоминают switch case.
Примером может служить приготовление завтрака по утрам в зависимости от входных параметров (уровень голода, нехватка микроэлементов, вкусовые предпочтения и прочее), когда мы по итогу можем менять состав того же бутерброда или просто порядок ингридиентов в нём, а в каких-то случаях совершать полную замену блюда на другой вариант. Автомат Миля-Мура как математический пример.
Простой счётчик, состояние которого - его значение, он может каждый раз прибавлять к своему значению единицу и состояние будет меняться, единственным ограничением тут будет тип данных. Сюда же относится генерация рандомных чисел. Поток ввода/вывода по идее тоже можно зациклить до бесконечности, где на каждый ввод любого строки/символа будет вывод той же строки символа, но опять же упираемся в алфавит, символы, кодировки и прочие технические ограничения.
ООП построеной вокруг парадигмы объектов, snapshots и изменениями соответственно этих объектов(параметры и свойства). ФП в свою очередь построено вокруг парадигмы функций - то что считается объектом в ООП в ФП будет представлено как функция более простых элементов и их состояний, которые тоже будут представлены в виде каких-то более простых функций. Соответственно ООП полнится мутабельностью объектов, функций и прочего, ФП больше про иммутабельность и бесконечные автоматы.
Даже не задумывался на самом деле, как будто всё можно реализовать и в ООП и в ФП, нужно либо больше ограничений и контекста, либо я просто не знаю таких кейсов.
Каррирование - это преобразование функций от многих элементов в более простые функции от одного элемента. То есть мы берём сложную фукнцию и просто декомпозируем её на более мелкие и простые функции с целью снижения арности и сложности исходной функции. Такой подход развивает системное мышление, упрощает тестирование и помогает избегать излишек кода.
Физические законы, например закон всемирного тяготения, а точнее скорость притяжения одного и того же предмета (как входного параметры). Вычисление hash-ей пароля с одним и тем же ключём. В обоих примерах функция продолжит возвращать одинаковый результат для одних и тех же значений.
Демоны - сервисы, запускающиеся в рамках бесконечного цикла (при отсутствии внешнего вмешательства и критических ситуаций) и выполняющие определённый пул задач, недавно как раз дрался с агентом OpenSSH - хороший пример демона в бесконечном цикле, сюда же скорее всего можно отнести systemd, гипервизоры в докере и cron вроде бы тоже бесконечно крутится выполняя проверки условий или ожидая хуков. Почему акцент сделан именно на *nix системах мне непонятно, я отсюда только unix знаю собственно XD
Что такое иммутабельность? Приведите несколько примеров. Иммутабельность – это свойство объекта, состояние которого не может быть изменено после того, как был создан этот объект. Например, некоторые физические константы такие как: скорость света в вакууме, ускорение свободного падения, элементарный заряд, постоянная Больцмана, постоянная Фарадея и т.д.
Опишите монаду. Приведите несколько примеров. Монада – это тип данных, представляющий собой последовательность выполнения операций. Например, порядок производства рентгеновских снимок, порядок готовки пиццы.
Приведите несколько примеров для бесконечных машин. Устройства с вечным двигателем.
В чем разница между ООП и FP? ООП (объектно-ориентированное программирование) – подход к разработке программирования путем работы с объектами. FP (функциональное программирование) – подход к разработке программирования путем работы с функциями.
Приведите примеры задач, которые могут быть решены только с помощью FP. Обработка потоков данных.
Как вы понимаете перенос? Не особо понял вопрос, но, скорее всего, перенос – это передача одной части данных кода из одной строчки целого кода в другую.
Пример идемпотентности в реальной жизни Включение/выключение компьютера. Если нажать кнопку на системном блоке, компьютер включится, также если нажать эту же кнопку и удерживать – компьютер выключится. Если проделать те же действия, результаты останутся такими же.
Что такое daemon в системах *unix? Демон в системах unix – это, как я понимаю, компьютерная программа, постоянно работающая в виде фона.
1. What's immutability? Provide a few examples. Иммутабельность является свойством объекта. Иммутабельным называют объект, который не меняет свое состояние после создания. Или уточняя можно сказать, что единожды получив значение, оно останется у объекта на протяжении всего жизненного цикла. Например: Книга - иммутабельный объект, который мы не можем изменить, допустим произошло некое событие и книга лишилась страницы, в теории можно сказать, что на этом жизненный цикл книги завершился и начался жизненный цикл книги без страницы.
2. Describe the monad. Provide a few examples. Монада - это некая конструкция (концепция 😂), которая дает возможность задать императивную последовательность выполнения операций. Так же насколько я понял монады нужны для обработки побочных эффектов). Теоретически как пример подойдет любая императивная последовательность. Или допустим монада может помочь с обработкой ошибок.
3. Provide a few examples for endless machines. не знаю, на ум приходит лишь какой то бесконечный автомат вычислений, который лишь получает входную информацию и возвращает вычисленные данные.
4. What's difference between OOP and FP? ООП - это Объектно-ориентированное программирование. Работает с объектами и данными, которые надо где-то хранить, изменять, которые можно потерять или не найти. ФП - это Функциональное программирование. Работает с функциями, которым не нужны объекты или переменные, а которые самодостаточные и могут позвать другие функции, которые вычислят для них нужные значения.
5. Provide examples for tasks that can be solved only with FP Не знаю задач которые можно решить только при помощи ФП, но могу предположить, что если такие есть, то они связаны с обработкой большего количества данных, или это какая-то задача для которой нужна отказоустойчивость системы.
6. How do you understand carrying? Каррирование - это преобразование функции от нескольких аргументов, в набор вложенных более простых функций одного аргумента. Другими словами - это декомпозиция большой или не очень функцию до тех пор, пока вся композиция функций не будет состоять из функций от одного аргумента.
7. Example of idempotency in real life В качестве примера приведу турникет с условием, что он не закрывается через промежуток времени. Кинув монетку пред закрытым турникетом, он станет открытым, после чего если мы не пройдем через него и кинем еще одну монетку то турникет останется отрытым - даст тот же результат при одинаковых входных.
8. What's daemon in *unix systems? Демоны - это программы в unix подобных системах, которые после запуска работают в фоновом режиме без прямого интерфейса для управления. Пример: Docker daemon
What's immutability? Provide a few examples. Иммутабельность - это свойство объекта, при наличии которого, объект не может быть изменён после момента создания. Пример: ускорение свободного падения, заряд нейтрона, объекты в функциональном программировании
Describe the monad. Provide a few examples. Монада - это набор входных данных объекта, по которым определяется последовательность взаимодействия с ним. Пример: алгоритм включения/выключения ПК
Provide a few examples for endless machines. Время, вселенная, вечный двигатель
What's difference between OOP and FP? ООП - программирование с точки зрения объектов (мир состоит из объектов, с которыми выполняются определённые действия) ФП - программирование с точки зрения функций (мир состоит из функций, объектов не существует)
Provide examples for tasks that can be solved only with FP. Обработка больших объёмов данных
How do you understand carrying? Насколько я поняла, это схлопывание нескольких функций с разными аргументами в одну с одним аргументом.
Example of idempotency in real life Лапочка (горит/не горит), солнце (светит/не светит)
What's daemon in *nix systems? Не знаю
Неизменность в программировании означает, что данные не могут быть изменены после их создания. Некоторые примеры неизменности включают использование неизменяемых строк в языке программирования, неизменяемость объектов в функциональном программировании, и использование неизменяемых переменных в различных контекстах.
Монада - это абстрактный тип данных в функциональном программировании, который представляет собой механизм для описания последовательных вычислений. Некоторые примеры монад включают Maybe для обработки возможных отсутствующих значений, List для работы с коллекциями данных, и IO для ввода-вывода.
Примеры бесконечных машин включают бесконечные списки в функциональном программировании, бесконечные рекурсивные алгоритмы, и бесконечные автоматы Тьюринга.
Основное различие между о ООП и ФП заключается в подходе к обработке данных и выполнению операций. В ООП данные и операции над ними объединены в объекты, в то время как в ФП данные рассматриваются как неизменяемые значения, а операции выполняются путем применения функций к данным.
Примеры задач, которые могут быть решены только с помощью функционального программирования, включают обработку больших объемов данных, параллельные вычисления, и создание чистых функций без побочных эффектов.
Демон (daemon) в системах Unix - это фоновый процесс, который работает независимо от пользовательской сессии и обычно выполняет служебные функции, такие как обслуживание запросов или выполнение определенных задач на сервер
1. Неизменность-объект/данные или что-то ещё, которое не поддаётся изменениям. Примером может послужить строка в книге, набор хромосом у здорового человека и тд).
Монада — заданный порядок выполнения действий. Примером может послужить любое действие: починить машину (найти причину поломки, заказать детали, выполнить ремонтные работы), получить новый ранг в игре, сделать домашнее задание по функциональному программированию и тд.
Не думаю, что что-то может работать вечно, так как всему свойственно ломаться и тд. Но своим примитивным мышлением приведу в качестве примера юлу.
Цель ООП разделить обязанности и сократить информацию. Цель ФП описать принцип взаимодействия команд с подпрограммами, в этом случае реализация осуществляется на уровне всего программного продукта.
Обработка потоков данных.
Думаю, криво перевела вопрос, поэтому не знаю.
Прочтение лекции. Информация каждый раз не меняется, действие тоже, максимум изменений в восприятии информации читающим.
8
Процесс, который происходит в фоновом режиме без участия пользователя.
Иммутабельность означает, что объект не может быть изменён после создания. Например, распечатанный текст или изображение уже не могут быть отредактированы. Также примером могут служить различные математические и физические константы (число пи, число Эйлера, скорость света в вакууме и т.д.).
Монада – это концепция в функциональном программировании, которая задаёт определенную последовательность выполнения операций, позволяет производить вычисления с побочными эффектами. Примеры применения монад для различных целей: Monad Maybe для обработки возможности отсутствия значения, Monad List для работы с коллекциями данных и Monad State для управления состоянием программы.
Например, концепт машины Тьюринга, которая имеет бесконечную ленту.
В ООП главную роль играют объекты, а ФП – подход, при котором объектов не существует, всё пишется с помощью функций. В функциональном программировании данные не хранятся в памяти в отличие от ООП.
Анализ большого объема данных.
Карринг — это превращение функции с несколькими аргументами в набор вложенных функций с одним аргументом.
Например, умножение на 0. Можно умножать любое число на 0 сколько угодно раз, в результате всё равно получится 0.
Демон в unix-системах – это программа, выполняющая задачи в фоновом режиме.
Изменяемость/мутабельность - это склонность предмета к изменениям/последующим преобразованиям. В программировании изменяемость подразумевает то, что какой то объект можно будет изменить. Соответственно неизменяемость/иммутабельность подразумевает обратное значение. Это значит, что созданные объекты уже нельзя будет подвергать каким либо изменениям, они постоянны. Из за того, что объекты нельзя будет изменять, данные будут иметь бОльшую надежность и защищенность. (Пример: константы, формулы, дата рождения, номер счета, радужка)
Монада реализует команды в определенном порядке, создает последовательные действия, помогает выстроить структуру. (Пример: чтобы построить дом, необходимо: залить фундамент, выложить стены, сделать крышу. Мы не сможем поставить крышу пока не будет того, на чем она будет держаться, т.е. стен, и так же с ними - никаких стен, пока не будет залит фундамент, на котором можно будет их выкладывать. В противном случае, т.е. при выполнении действий в другом порядке - будет уже не дом, а шалаш)
Последовательности: 4543875407495804..... (Сколько цифр не пиши, число бесконечно), солнечный свет???, время, линия бессмертных клеток HeLa
OOP основано на объектах, которые друг с другом взаимодействуют, весь код состоит именно из них. FP основано на функциях, создании нового на основе того, что у нас уже есть, при этом никогда не изменяя уже существующие данные.
Рекурсии, задачи имеющие огромный объем данных...
Трансформация функции, позволяет получать их частично (не вызывает функцию, изменяет, упрощает ее)
Идемпотентность - это свойство, которое при повторении имеет тот же результат, следовательно примером может быть набор и звонок по телефонному номеру (каждый раз мы будем звонить на одну и ту же симку)
Как я поняла, демон - это служебная программа, помощник, работающий в фоновом режиме, который обеспечивает контроль ОС; демоны работают сами по себе, ими нельзя управлять; демоны запускаются (когда это необходимо) в ответ на какие то действия системы и выполняют определенные функции.
1.What's immutability? Provide a few examples. Иммутабельность означает, что создав что-то один раз мы больше не можем это изменить. Например, может взять какой нибудь закон из физики, мы никак не можем его изменить, но мы можем выявить новый закон опираясь на тот что хотим изменить.
2.Describe the monad. Provide a few examples. Монада - это правильная последовательностьв ыполнения действий функций. Например, последовательное выполнения квестов в играх.
3.Provide a few examples for endless machines. While True:, числа: натуральные и иррациональные.
4.What's difference between OOP and FP? ООП - это парадигма в основе которой лежат объекты и классы, а объект, в свою очередь, состоит из атрибутов и методов ФП - это парадигма написания кода путём использования чистых функций, где ничего не изменяется.
5.Provide examples for tasks that can be solved only with FP. ФП нужно там где необходма высокая стабильность систем или точность в больших вычислениях и тд)
6.How do you understand carrying? Каррирование - это переход функции от функции с 2 аргументами и больше в функции только с одним аргументом. Благодаря этому код легче отлаживать и тестить.
7.Example of idempotency in real life Кнопка лифта, включение, выключение света на пульте и если водителю маршрутки сказать: "на остановке" 1 раз или 100 раз, то ничего не измениться, хотя это уже зависит от водителя)
8.What's daemon in *nix systems? Процесс работающий в фоновом режиме и выполняющий определённые задачи
1.What's immutability? Provide a few examples. Иммутабельность означает, что после создания объекта нельзя изменить его свойства, значения. Например: всякие константы как те что мы сами обозначаем в программировании или константы в других предметах, например физика(ускорение свободно падения и т.д), математике(число пи и т.д) и другие.
2.Describe the monad. Provide a few examples. Монада это структура построенная с помощью определенного набора операций. Например: в игре чтобы перейти на след локацию, нужно убить босса предыдущей и т.д дальше.
3.Provide a few examples for endless machines. Не уверен что есть что-то бесконечное, может только если бесконечный набор цифр или возможно расширение вселенной.
4.What's difference between OOP and FP? ООП работает с объектами которые могут быть изменены ФП работает с функциями и поэтому они не могут изменять данные с которыми работают
5.Provide examples for tasks that can be solved only with FP. Задача в которой нужно работать с большим объемом данных
6.How do you understand carrying? Функция с множеством аргументов в функцию с одним аргументом.
7.Example of idempotency in real life Переключатель света, сохранение файла кнопкой "Сохранить",
8.What's daemon in *nix systems? Программа работающая в фоновом режиме
1.Иммутабельность - это свойство/состояние данных(или чего-либо другого), которое означает их неизменяемость после создания. В пример из реальной жизни можно привести любые события, произошедшие в прошлом. События, произошедшие с человеком вчера - иммутабельны, однако они могут влиять на будущее этого человека, оставаясь неизменными.
Иммутабельность - неспособность на спонтанные или не очень мутации, буквально неспособность объекта, данных или переменной быть измененной, после его(ее) задания. Примером служат законы физики нашего мира.
Монада - что-то вроде плана, со строго определенным порядком действий.
Наверно в качестве примера бесконечной машины может служить машина Тьюринга.
ООП сосредоточен на объектах и скорее рассматривает скорее результат. ФП больше работает с функциями и направлен на изучение процессов.
Обработка или анализ большого или огромного массива информации.
-
Двойная отправка письма по электронной почте не приведет к получению 2-й копий получателем.
Это программа, работающая в фоновом режиме и не требующая взаимодействия с пользователем. В основном нужны, чтобы отслеживать состояние систем, обслуживать подсистемы, выполнять определенные действия в запланированное время и гарантировать корректную работу всей ОС в целом.