ISUCT / FP-2024-Spring

0 stars 2 forks source link

Lesson 4. Checkpoint questions #4

Open the-homeless-god opened 4 months ago

the-homeless-god commented 4 months ago
  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?
Sinebrit commented 4 months ago
  1. Иммутабельность означает, что функция не может менять какие-либо параметры, которые ей передаются (так как они находятся вне её). Например, заваривание чая. Мы передаём в эту функцию чашку, воду, заварку, сахар и возможно что-то ещё. От того что мы налили чай в чашку, последняя совершенно не изменила свою функцию, это всё ещё чашка, так как она выполняет одни и те же функции, что и до этого. Когда чай закончится, она всё ещё останется чашкой, так как никакие новые функции она не выполняет и не перестаёт выполнять старые. То же самое можно сказать про воду, заварку и остальное. Вода всё ещё содержится в чае и выполняет свои же функции, следовательно это всё ещё вода.

  2. Монада — набор параметров, который может задать порядок выполнения самой функции, в которую он передаётся. Если брать пример выше, то сахар, кружка, вода и другие параметры и есть монада. Если передать слишком большой параметр воды и недостаточно большой параметр кружки, то чай выполнит функцию выливания на пол, но это всё ещё будет чай.

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

  4. ООП работает с объектами — наборами данных в какой-то конкретный момент и это всё занимает место и может быть изменено или утеряно. ФП работает с функциями — математическими выражениями, которые непрерывны и значениями в них манипулировать нельзя, так как все они вычисляются, а не хранятся где-то.

  5. Выписать все дробные числа от 0 до 1. Или просто выписать все числа находящиеся между двумя соседними целыми числами. Если хранить эти значения где-либо, то места не хватит, так как их бесконечное количество. Если хранить только в какой-то конкретной переменной, то с переменной может что-то случится (молния в компьютер ударит) и данные или изменятся и пропадут в какой-то момент. ФП в данной ситуации будет возвращать только само значение функции и нигде его не хранить, а значит и работать будет непрерывно, пусть и до бесконечности (что, как ни странно подтверждает, что это вообще будет работать).

  6. Не знаю.

  7. Снова берём чашку из примера с чаем. Чашка это какая-то функция, которая делает что-то (хранит жидкость). Если мы разобьём какую-то конкретную чашку и купим новую, это всё равно будет та же самая чашка, так как выполняет одну и ту же функцию. Если мы нальём чай в тарелку, это всё равно будет чашка с точки зрения этой функции, потому что тарелка выполняет ту же самую (хранить жидкость), что и чашка вопрос лишь в наименовании самого параметра.

  8. Не знаю.

AlexeyOvsyanniko commented 4 months ago
  1. Иммутабельность или неизменность - это отсутствие возможности изменить функцию или объект, который мы создали. Если мы внесем изменения, то будет создан новый объект или функция. Например мы создали класс кошка и присвоили ему определенные свойства, данный объект нельзя изменить.

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

  3. Взаимодействие энергии, материи и пространства.

  4. ООП: работа с объектами, обязательно хранение данных, имеет ограничения по выполнению. ФП: работа с функциями, отсутствие хранения данных, может выполняться бесконечно.

  5. Арифметическая или геометрическая прогрессия до бесконечности.

  6. -

  7. Кран с водой. Кипячение чайника. Открытие замка.

  8. -

Katerina92z1 commented 4 months ago
  1. Иммутабельность — это определенной свойство, объект имеющий это свойство не может уже изменяться после создания, при изменениях это уже будет новый объект. Например это будет ароматическая свечка, при горении ее аромат будет иммутабельным в воздухе, и мы не сможем у нее сменить его, поменять на другой, как-то ослабить, только если изначально купить другую свечку.

  2. Обеспечивает способ комбинировать функции и значения в удобном и предсказуемом порядке. Монада представляет из себя концепцию, которая позволяет управлять последовательностью операций над значениями таким образом, что выражения выглядят как последовательность шагов в императивном стиле, но при этом сохраняют чистоту функционального подхода. В качестве примера опять возьмем свечку, допустим мы хотим создать приятную атмосферу в комнате и для этого зажжем ее. Действия будут следующие: a)Зажигание свечи (чтобы начать распространение аромата) b)Наслаждение ароматом(после того как свеча зажжена, мы можем наслаждаться приятным ароматом, который заполняет комнату) c)Погашение свечи (мы гасим свечу, чтобы прекратить ее горение) В этом примере монада свечи представляет собой способ управления последовательностью действий с ароматической свечой. Мы можем последовательно выполнять операции с ней, начиная с зажигания, затем наслаждаясь ароматом и заканчивая погашением, также как мы могли бы использовать монаду в функциональном программировании для последовательного выполнения функций.

  3. Бесконечная последовательность чисел

  4. ООП подобно работе с состояниями и объектами, а FP больше описывает процессы и функции

  5. Подсчет количества четных чисел в списке

  6. Как то, что позволяет разбивать текст на строки

  7. У нас есть ароматическая свеча, которую можно зажечь и наслаждаться ее ароматом. Когда мы зажгли свечу, она начнет выделять аромат. Представим, что мы зажигаем эту же свечу снова, когда она уже горит. Свеча будет продолжать гореть и выделять аромат, но результат (аромат) останется тот же. То же самое произойдет, если мы зажжем ее несколько раз подряд, она будет продолжать выделять аромат, и при том, тот же самый, в итоге результат останется неизменным. Таким образом, в данном примере действие "зажжение свечи" является идемпотентным, потому что оно может быть выполнено несколько раз, но каждое последующее применение не изменит окончательного результата.


SergeyLeMoNChik commented 4 months ago
  1. Иммутабельность означает, что данные, как только были созданы, не могут быть изменены. Вместо этого создается копия этих данных с внесенными изменениями, исходные данные при этом не меняются. Например, как только книгу напечатали и издали, содержимое её страниц остается неизменным, если нужно исправить какую-то ошибку или детали, книгу переиздают. Ещё один пример, когда фотограф делает снимок, фотография остается неизменной, а чтобы изменить эту фотографию необходимо сделать новый снимок.
  2. Монада - это структура данных, которая представляет собой последовательный порядок выполнения команд функции. Она определяет, как и в каком порядке будут выполняться команды функции. Например, при готовке мы выполняем ряд определённых действий, сначала моются и нарезаются овощи, затем обжаривается мясо, потом добавляются овощи и тушаться вместе с мясом. Все действия выполняются последовательно и результат выполнения одной команды становится входными данными для последующей команды.
  3. Примером бесконечной машины может являться карусель, которая может вращаться бесконечно вокруг своей оси. Ещё бесконечной машиной могут являться часы, которые отсчитывают время не отсанавливаясь.
  4. В ООП осноывными сущностями являются – объекты, которые имеют состояние и поведение. В ФП же – функции, которые принимают аргументы и возвращают результат.
  5. С помощью ФП можно решить задачу по обработке большого объема данных, т.к. мы не храним этот большой объем данных, а так же можем использовать параллельные вычисления, благодаря этому мы можем выполнять несколько операция одновременно.

  6. Идемпотентность - свойство функции, в результате применения которой несколько раз к одному и тому же аргументу не отличается от результата однократного применения. Например, если мы опустим переключатель света 1 раз, то свет выключится, если мы выполним это действие ещё раз, то результат останется прежним

Kir0Ka commented 4 months ago
  1. Под иммутабельностью подразумеваются какие-либо данные/объекты, которые не могут быть изменены в дальнейшем после их создания. Из таковых легче всего привести константы, возьмем к примеру число Пи. Это соотношение длины круга к длине его диаметра, благодаря вычислениям это число всегда равно 3.14159265...... Ну, или, как нас всех учили - 3.14.

  2. Насколько мог сам понять, монада позволяет определить порядок выполнения функции(?..). Например, возьмем какого-нибудь дурачка со списком продуктов, которые ему нужно купить. Так как он дурачок, он берет один продукт и сразу идет на кассу. Таким образом он бегает туда-сюда с каждым отдельным пунктом и наконец завершает шоппинг :D. Благодаря монаде можем подарить ему мозг, с помощью которого он сначала возьмет тележку, накидает туда необходимые вещи по списку до конца и только потом пойдет на кассу.

  3. Возможно, бесконечная машина - зацикленная программа без возможности вывести результат/быть завершенной/выйти из цикла.

  4. ООП основана на объектах, которые хранят в себе некоторые данные и методы для их обработки, те, в свою очередь, могут меняться во время выполнения программы. Помимо этого, объекты могут взаимодействовать друг с другом. Изменения вносятся модификацией самих объектов или добавлением новых классов. ФП же основана на математических функциях, которые передаются как аргументы и возвращаются как результат. В ФП функции не имеют состояний и они не изменяют данные. Изменения в программе вносятся с созданием новых функций или же изменением существующих.


  5. Не понял вопроса

  6. Чтение какого-либо текста. Возьмем, например, книгу "Мастер и Маргарита". Её можно перечитывать сколько угодно раз, текст в ней с каждым прочтением остается все тем же.


HubOl01 commented 4 months ago
  1. Иммутабельность - это неизменяемый объект, то есть нельзя изменить после его создания(станет доступной только для чтения). Применяется в строках, массивах и классах. Например, свидительство о рождении, номер банковской карты, номер паспорта, многие константы, такие как число пи или e - они все неизменяемые данные и доступны только для чтения.

  2. Монада - это набор функций, которые преобразуют значения в определенный тип, представляющий вычисления. Например, используя функцию, можно преобразовать тип данных int в string или добавить некий элемент в список.

  3. Арифметические операции с бесконечными числами (пи или е), рекурсивные функции.

    • ООП позволяет написать код в виде объектов, которые могут содержать информацию. Внутри этих объектов могут быть атрибуты или состояния, а также операции, которые могут выполняться над этим состоянием.
    • FP позволяет написать только функции и в нем функции могут передаваться в качестве аргументов другим функциям, возвращаться как значения и присваиваться переменным.
  4. С помощью FP можно написать функцию фильтра данных, рекурсию, любые вычисления и операции над числами.

  5. Не понял вопрос)

  6. Кнопка лифта, открытие домофона, кнопка вкл/выкл,

  7. Это фоновые процессы, которые работают в автономном режиме и управляются командами для запуска и остановки процессов.

DmitryShi20 commented 4 months ago
  1. Неизменяемость — это когда что-то, созданное однажды, остаётся таким же навсегда. Пример - String, он остаётся неизменным.
  2. Монада — это такой инструмент в функциональном программировании, который помогает справляться с побочными эффектами.
  3. Бесконечные машины — это системы или процессы, которые работают постоянно. Пример - серверы или операционные системы.
  4. ООП и ФП — это два разных способа написания кода. В ООП всё вращается вокруг объектов и их взаимодействия, а в ФП важны функции и неизменяемость данных.
  5. ФП подразумевает неизменяемость данных, что делает его идеальным для работы с большими объемами данных, которые не должны изменяться.
  6. Перенос — это когда ты перемещаешь данные или функции из одного места в другое. Пример - перенос кода из одного проекта в другой.
  7. Идемпотентность — это когда повторное применение какой-то операции не меняет результат. Пример - если нажать кнопку увеличения громкости и громкость достигнет максимума, то последующие нажатия ничего не дадут.
  8. Демон в *nix-системах — это процесс, который работает в фоне и не требует взаимодействия с пользователем.
Chayz1337 commented 4 months ago
  1. Иммутабельность - это по сути неизменяемость. Если состояние объекта = иммутабельное, то мы не можем менять его после создания. Можно привести несколько примеров из реальной жизни. Например ДНК. Она содержит генетический код организма и является неизменной. Она передается от родителей к потомству без изменений. Снежинки: Каждая снежинка имеет уникальную и неизменяемую кристаллическую структуру.
  2. Не сталкивался с таким, но могу сказать, что это определенный тип данных, который представляет вычисление, которое может завершиться неудачей или вернуть значение.
  3. В пример можно привести природу, ведь она сама может рассматриваться как бесконечная машина, поскольку она постоянно изменяется и развивается, создавая бесконечное разнообразие форм и процессов. За бесконечную машину я бы мог принять фракталы, которые самоподобны и при увеличении мы будем наблюдать бесконечное множество деталей фракталов. Круговорот воды в природе тоже элементарный пример бесконечной машины. Цикл является непрерывным и повторяется снова и снова.
  4. ООП подход предполагает собой работу с объектами, когда в ФП с функциями. Объекты в ООП могут изменяться также, как и их свойства, в фп же данные не могут изменяться. Хранение данных обязательно в первом случае, во втором же данные не хранятся нигде.
  5. ФП можно использовать для анализа и фильтрации больших наборов данных. Производительность будет выше, так как не будет храниться промежуточный результат.
  6. Как я понимаю перенос? Смотря что переносить) Вообще это процесс изменения координат объекта в пространстве в течение какого-то времени.
  7. Нажатие кнопки "Сохранить" в текстовом редакторе: нажатие кнопки "Сохранить" несколько раз не приведет к созданию нескольких копий файла.
  8. -
ksyukornilich commented 4 months ago
  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? Опираясь на несколько статей в интернете скажу как можно проще: это программа, которая запускается в фоновом режиме причем не требующая взаимодействия с пользователем. Чаще всего запускаются одновременно с общей загрузкой системы. А еще (если я правильно поняла) эта программа не требует управления

Mirra04 commented 4 months ago
  1. Иммутабельность (неизменность) — это свойство чего-либо оставаться постоянным, не подвергающимся изменениям после создания. Неизменными остаются константы (пи, ускорение свободного падения, число эйлера и тд). Также неизменными остаются какие-либо моменты прошлого. Мы не можем вернуться во времени и изменить их, они уже существуют и не поддаются влиянию из настоящего или будущего.

  2. Монада – можно сказать шаблон, который помогает последовательно выполнять действия в функции. Например, когда мы едем по навигатору, он нам указывает дальнейшее движение. Результат предыдущего шага становится входным значением для последующего шага. Также покупка билета на какое-либо мероприятие, монада гарантирует, что человек сначала выберет мероприятие, затем произведет оплату и после получит билет – сделает все в нужной последовательности.

  3. Бесконечная последовательность чисел, время. Возможно, частицы материи, ведь они могут бесконечно существовать в виде своих составляющих.

  4. ООП основано на том, что существуют какие-то объекты, у которых могут быть характеристики(поля) и они могут выполнять какие-то действия (функции/методы). ФП основано на описании функции, а не объектов. В ФП данные и действия – это разные сущности. Так в ООП все функции привязаны к определенному объекту и могут выполняться только им. В ФП же нет привязки и все функции находятся сами по себе, следовательно их может использовать любой объект.

  5. Работа с бесконечными списками, рекурсии, каррирование

  6. Каррирование (currying) — это преобразование функции с множеством аргументов в набор вложенных функций с одним аргументом. Благодаря каррированию функцию можно вызывать последовательно, передавать данные по одному параметру. Функция не заполнится пока все параметры не будут переданы.

  7. Неважно сколько раз человек нажмет на кнопку вызова лифта, один раз или десять, лифт уже вызван. Если человек поднял флаг один раз, то его повторное поднятие флага не изменит ситуацию, флаг как развевался по ветру, так и будет развеваться, неважно сколько раз человек поднимет флаг.

  8. Это программа, которая работает в фоновом режиме с определенной уникальной целью. Они нужны, чтобы отслеживать состояние систем, обслуживать подсистемы, выполнять определенные действия в запланированное время и гарантировать корректную работу всей ОС в целом. Например, отслеживать состояние сетевого подключения.

DaniilS103 commented 4 months ago
  1. Иммутабельность - означает, что мы не можем менять состояние объекта или значение функции после их создания. Например мы создаем файл. Мы можем изменять его содержимое, но не сам файл, т.к. его состояние измениться и для этого нам придется создать новый файл.

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

  3. Гравитационное взаимодействие

  4. ООП работает с объектами, использует методы, свойства. Данные необходимо хранить. ФП работает с функциями, не хранит данные.

  5. Вычисление факториала числа.

  6. -

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

  8. -

Sakvago commented 4 months ago
  1. Иммутабельность - она же "неизменность" в переводе на наш русский, определение в этом случае говорит само за себя. В понимании ООП объект считается неизменным, если с момента его появления и с течением времени его состояние не изменяется Если мы говорим про ФП, то такое определение применимо к структуре данных. Если нам необходимо изменить какое-либо состояние, то создастся новая структура данных, которая будет отражать это изменение, а исходная структура останется неизмененной.

Пример 1 (+ псевдокод на Python): строки (они же String)

nickname = 'Sakvago'
nickname[0] = 'T'

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

Пример 2: формулы в математике (х²) для любого значения x его квадрат будет неизменным

  1. Монада - в первую очередь это концепция функционального программирования (пожалуй, это единственное что я быстро запомнила 😂). Она позволяет нам выстроить структуру и упорядочить вычисления (операции, функции или выражения) нужным нам образом. Читала про хаскель то, что там используют ">>=" для возвращения первым оператором значения, которое нужно передать второму и ">>" если первый оператор просто выполняет операцию и не возвращает значение, которое нужно передать второму. В качестве примера 1, насколько я поняла прикол хаскеля, можно привести монаду ввода-вывода:

    main = putStrLn "Привет" >> putStr "Как дела?"

    В выводе получим:

    Привет
    Как дела?

    Пример 2: стиральная машинка Грубо говоря, она использует монаду в плане использования разных средств во время стирки, сначала отсек с предварительным средством, потом отсек с порошком, потом отсек с кондиционером. Иначе она бы в рандоме могла залить сначала кондиционер, смыть его и залить порошок, от чего смысл кондиционера теряется..

  2. Пример бесконечной машины - плохо написанный код :D (шутка, иногда бесконечные циклы полезные) Программа с пустым условием для for будет работать бесконечно, ввиду отсутствия условия выхода из программы, если мы добавим еще и вывод числе с прибавлением в каждой итерации единицы, то получим программу, которая будет выводить числа до бесконечности, Не знаю, будет ли это считаться, но машина Тьюринга подразумевает использование ленты с бесконечной длиной

  3. (названия опять же говорят сами за себя) ООП (Объектно-ориентированное программирование) ориентируется на использование объектов, данные и операции над данными сильно связаны между собой ФП (Функциональное программирование) - ориентируется на использование функций, данные слабо связаны с функциями

  4. ФП хорошо подходит для работы с большим количеством данных. Хорошо помню только пример с вычислением промежуточных значений между двумя точками (начало отсчета и конец)

  5. Скорее всего в вопросе подразумевается каррирование. Это такой процесс превращения функции от n аргументов в цепочку вложенных n-функций от одного аргумента. Пример: обычная функция будет представляться как f(a, b, c), а каррированная как f(a)(b)(c) /Минутка занимательной википедии или почему все думают про "перенос": наименование карринг ([англ.]currying) выбрано не случайно, так как для англо-язычных человеков это намёк на термин "перенос" ([англ.]carry) аргумента от одной функции к другой/

  6. Пример 1: умножение числа 1 на само себя Сколько бы ученик не умножал 1 на 1, ничего кроме 1 он не получит Пример 2: кнопка активации зеленого сигнала светофора на переходе После первого нажатия включается состояния запроса, и сколько раз ты бы ее не нажал между этим состояниям запроса и его удовлетворением, ничего не изменится

  7. Это некоторая компьютерная программа ОС (unix и unix-подобные), автоматически запущенная в фоновом режиме, не контролируемая пользователем системы и не имеющая какого-либо графического интерфейса

1Waldemar1 commented 4 months ago
  1. Иммутабельность гласит, что созданные один раз данные никак не могут измениться как бы то не было. При попытке изменения этих данных создаются новые версии этих данных, оставляя исходные в целости и сохранности. Например, в исторических архивах и записях информация обычно остается неизменной. Если исторический документ требует изменений, то обычно делается путем создания нового документа, сохраняя исходный документ неизменным.
  2. Монада - это способ задания порядка выполняемых операций. Например, промисы в ЯваСкрипт.
  3. Множество натуральных чисел, ну или бесконечный ленточный конвейер.
  4. ООП – это подход, созданный для облегчения восприятии кода человеком. В ООП данные обычно хранятся в объектах, которые могут иметь свойства и методы, в свою очередь эти объекты могут быть изменены (mutability). ФП подход основан на вычислениях в функциях без хранения данных (immutability), то есть на вход поступают какие-то аргументы, а на выход возвращает результат выполнения данной функции, не изменяя при этом данные.
  5. Параллелизм и асинхронщина.
  6. Лично я понимаю, что каррирование – это последовательность функций, каждая из которых принимает по одному аргументу.
  7. Например, если ты нажмёшь на телефоне кнопку home, а потом ещё раз home, то как ты был на главной странице, так и останешься на ней.
  8. Как я понял, демон в nix системах - это по сути программа, которая работает в фоновой режиме, например планировщик задач.
EwvwGeN commented 4 months ago
  1. Иммутабельность - свойство неизменности для данных. Как мы уже знаем, ФП свято чтит иммутабельность, а это значит, что все сущности являются онными. Так, если у нас, предположим, был атом водорода (1 нейтрон, 1 протон), жахнули по нему еще одним нейтроном, но у нас не поменялся атом водорода, а создался новый атом дейтерия с совершенно новой ссылкой.
  2. Монада - структура данных, упрощающая выполнение императивных последовательных операций. Пример, который можно чуть ли не первым встретить на хабре: Есть три человека R-13, I-330, О-90. Первый из них хочет собрать со всех, допустим, талончики. У каждого из людей будет описана функция, которая на основе количества уже сданных талонов выдает значение для добавления в общую "казну". Так, если бы мы хотели это сделать без монады у нас был бы тягомотный вызов а-ля О-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), а плюсом внутри монады можно выполнять промежуточные вычисления, вообще песня.
  3. Машина Тьюринга
  4. Если говорить совсем обобщая, то ООП жонглирует объектами, их свойствами, методами и тп, в свою очередь ФП же отталкивается от функции как элемента программы и оперирует самими действиями. Так, например, для ООП важно иметь сам объект мыла и 3 его свойства координат, а для ФП нам важно само действие soap_lay(), которое и возвращает 3 числа.
  5. Любую задачу можно решить как методами ООП, так и ФП, вопрос только в затраченных усилиях.
  6. Возможность заменить связанные действия на набор последовательных. Пример, нет так давно видел задачу на нахождение большего числа из пары, без условных конструкций. Для двух чисел: (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.
  7. Идемпотентность - неизменность возвращаемого значения при отправлении одного и того же аргумента. Пример, если мы будем подкидывать предмет тяжелее воздуха он будет падать всегда и ни при каких обстоятельствах не полетит вверх быстрее пули.
  8. Всевозможные демоны в таких системах это виндовские утилиты на стероидах.
rur7 commented 4 months ago

1 Неизменяемость в программировании означает, что данные, как только они были созданы, не могут быть изменены. Например, в функциональном программировании переменные являются неизменяемыми. 2 Это концепция функционального программирования 3 Бесконечные машины являются абстрактными моделями компьютеров, способными выполнять бесконечное количество шагов. Например счёт чисел 4 В ООП состояние управляется через объекты и их методы, в ФП данные являются неизменяемыми и управление состоянием осуществляется через функции, данные не хранятся. 5 6 Возможность использования кода, написанного для одного языка программирования, в другом языке без значительной переработки. 7 Если пытаться несколько раз включать свет это не изменит его состояние 8 Это фоновый процесс, который работает в фоновом режиме без прямого участия пользователя.

Gv1don commented 4 months ago
  1. Иммутабельность - отсутствие мутаций. Свойство неизменности или постоянства объекта исследования. В нашем контексте скорее всего речь идёт про функции, так вот их иммутабельность выражается в неизменяемости передаваемых на вход аргументов как объектов или же в неизменности состояний объектов согласно парадигме ФП и отсутствии сайдэффектов от выполнения этой функции.

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

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

Хорошим примером может служить калькулятор, хранящий в себе полный набор возможных операций и производящий их в зависимости от задачи в разной последовательности. В моём понимании монады чем-то напоминают switch case.

Примером может служить приготовление завтрака по утрам в зависимости от входных параметров (уровень голода, нехватка микроэлементов, вкусовые предпочтения и прочее), когда мы по итогу можем менять состав того же бутерброда или просто порядок ингридиентов в нём, а в каких-то случаях совершать полную замену блюда на другой вариант. Автомат Миля-Мура как математический пример.

  1. Простой счётчик, состояние которого - его значение, он может каждый раз прибавлять к своему значению единицу и состояние будет меняться, единственным ограничением тут будет тип данных. Сюда же относится генерация рандомных чисел. Поток ввода/вывода по идее тоже можно зациклить до бесконечности, где на каждый ввод любого строки/символа будет вывод той же строки символа, но опять же упираемся в алфавит, символы, кодировки и прочие технические ограничения.

  2. ООП построеной вокруг парадигмы объектов, snapshots и изменениями соответственно этих объектов(параметры и свойства). ФП в свою очередь построено вокруг парадигмы функций - то что считается объектом в ООП в ФП будет представлено как функция более простых элементов и их состояний, которые тоже будут представлены в виде каких-то более простых функций. Соответственно ООП полнится мутабельностью объектов, функций и прочего, ФП больше про иммутабельность и бесконечные автоматы.

  3. Даже не задумывался на самом деле, как будто всё можно реализовать и в ООП и в ФП, нужно либо больше ограничений и контекста, либо я просто не знаю таких кейсов.

  4. Каррирование - это преобразование функций от многих элементов в более простые функции от одного элемента. То есть мы берём сложную фукнцию и просто декомпозируем её на более мелкие и простые функции с целью снижения арности и сложности исходной функции. Такой подход развивает системное мышление, упрощает тестирование и помогает избегать излишек кода.

  5. Физические законы, например закон всемирного тяготения, а точнее скорость притяжения одного и того же предмета (как входного параметры). Вычисление hash-ей пароля с одним и тем же ключём. В обоих примерах функция продолжит возвращать одинаковый результат для одних и тех же значений.

  6. Демоны - сервисы, запускающиеся в рамках бесконечного цикла (при отсутствии внешнего вмешательства и критических ситуаций) и выполняющие определённый пул задач, недавно как раз дрался с агентом OpenSSH - хороший пример демона в бесконечном цикле, сюда же скорее всего можно отнести systemd, гипервизоры в докере и cron вроде бы тоже бесконечно крутится выполняя проверки условий или ожидая хуков. Почему акцент сделан именно на *nix системах мне непонятно, я отсюда только unix знаю собственно XD

NikitaZhulenkov commented 4 months ago
  1. Что такое иммутабельность? Приведите несколько примеров. Иммутабельность – это свойство объекта, состояние которого не может быть изменено после того, как был создан этот объект. Например, некоторые физические константы такие как: скорость света в вакууме, ускорение свободного падения, элементарный заряд, постоянная Больцмана, постоянная Фарадея и т.д.

  2. Опишите монаду. Приведите несколько примеров. Монада – это тип данных, представляющий собой последовательность выполнения операций. Например, порядок производства рентгеновских снимок, порядок готовки пиццы.

  3. Приведите несколько примеров для бесконечных машин. Устройства с вечным двигателем.

  4. В чем разница между ООП и FP? ООП (объектно-ориентированное программирование) – подход к разработке программирования путем работы с объектами. FP (функциональное программирование) – подход к разработке программирования путем работы с функциями.

  5. Приведите примеры задач, которые могут быть решены только с помощью FP. Обработка потоков данных.

  6. Как вы понимаете перенос? Не особо понял вопрос, но, скорее всего, перенос – это передача одной части данных кода из одной строчки целого кода в другую.

  7. Пример идемпотентности в реальной жизни Включение/выключение компьютера. Если нажать кнопку на системном блоке, компьютер включится, также если нажать эту же кнопку и удерживать – компьютер выключится. Если проделать те же действия, результаты останутся такими же.

  8. Что такое daemon в системах *unix? Демон в системах unix – это, как я понимаю, компьютерная программа, постоянно работающая в виде фона.

V1taly5 commented 4 months ago

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

Zhenka133 commented 4 months ago
  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?
 Не знаю

castaval commented 4 months ago
  1. Параметры функций не изменяются. Вместо изменения, создаем новый параметр с частично старыми и новыми свойствами.
  2. Задание последовательности работы функций, благодаря параметрам. Например работа робота пылесоса.
  3. Не совсем понял вопроса, ну думаю, сюда можно отнести гравитацию. Повороты Луны вокруг Земли.
  4. Разница в восприятии и интерпретации реальности.
    1. ООП - рассматриваем реальность как объекты. Можем проводить CRUD операции с объектами, вселенная в состоянии снапшота.
    2. Вселенная замкнута и никогда не останавливается, нет снапшота, состоянии плавно перетикают из друг в друга, это как заполнение бассейна водой. В основе всего лежат функции, спокойно передаем их как параметры.
  5. На курсе я слышал, что нет задачи, которую может решить только FP, это же всего лишь взгляд на мир. Но, я пока не могу понять обратного, как написать бд в функциональном стиле? Наверно стоит взяться за это как за пет проект и проверить самому.
  6. Как множество вложенных функций, как матрешка. Внешняя функция принимает параметр, хранит его, но возвращает следующую функцию. То есть всегда есть замыкание. Благодаря карированию код легко переиспользовать и разделять задачи.
  7. Прибавление к единице нуля. Сколько нулей не добавляй, всегда будет 1. Нажатие на двернок звонок, всегда будет звук. Предметы в вакуме всегда будут падать с одинаковой скоростью (ускорение свободного падения)
  8. Это программа, работающая на фоне. Исполняющая разные задачи, к примеру демон kubelet, отвечающий за работу машины как ноды кластера кубера.
abbb03 commented 4 months ago
  1. Иммутабельность - неизменяемость объекта в течение его жизненного цикла. Примеры:
    • macbookc aer pro 2021 - ноутбук, параметры которого определены и не могут (по задумке создающего) быть изменены
    • аудиозапись - она хранится из определенной и неизменяемой последовательности бит, кодирующей звуковые сигналы.
  2. Монада - компоновка функций за счет возможности передачи вычисления одной функции на вход другой. Нередко на этом строятся функции логирования.
  3. Brainfuck, Go programming languages
  4. ООП - это круто, актуально, практично, имеет огромное количество методик. Из минусов - с ростом комплексности системы становится трудно уместить её в голове и возникают сложности с доверием к ней из-за потенциальных сайд-эффектов, скрывающихся за вызовом очередного метода. ФП - 2-3 вакансии на континенте. Из плюсов - позволяет сделать поведение системы более соответствующим ожидаемому, поскольку старается ограничить программиста в возможностях создания сайд-эффектов.
  5. Если речь про программирование, то таких задач нет, любая может быть решена на языке Си с ассемблерными вставками.
  6. Как я понял, это снижение количества параметров функции, где идеальным результатом является 1 параметр на вызов. Это позволяет гибко создавать небольшие модули за счет замыкания изначально переданного аргумента.
  7. Если на сухие волосы полить воды - они будут мокрыми, если на мокрые волосы полить воды - они будут мокрыми. Сколько бы раз функция полива волос не была вызвана, результат в виде мокрых волос будет получен.
  8. Это программа, работающая в "фоне" и осуществляющая большую часть действий без прямого управления пользователем. Как самый заезженный пример - демон NetworkManager, обеспечивающий на машине автоматическую конфигурацию сети и подключение к ней.
ivan231412 commented 4 months ago
  1. Неизменность в программировании означает, что данные не могут быть изменены после их создания. Некоторые примеры неизменности включают использование неизменяемых строк в языке программирования, неизменяемость объектов в функциональном программировании, и использование неизменяемых переменных в различных контекстах.

  2. Монада - это абстрактный тип данных в функциональном программировании, который представляет собой механизм для описания последовательных вычислений. Некоторые примеры монад включают Maybe для обработки возможных отсутствующих значений, List для работы с коллекциями данных, и IO для ввода-вывода.

  3. Примеры бесконечных машин включают бесконечные списки в функциональном программировании, бесконечные рекурсивные алгоритмы, и бесконечные автоматы Тьюринга.

  4. Основное различие между о ООП и ФП заключается в подходе к обработке данных и выполнению операций. В ООП данные и операции над ними объединены в объекты, в то время как в ФП данные рассматриваются как неизменяемые значения, а операции выполняются путем применения функций к данным.

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

  6. Демон (daemon) в системах Unix - это фоновый процесс, который работает независимо от пользовательской сессии и обычно выполняет служебные функции, такие как обслуживание запросов или выполнение определенных задач на сервер

Violettam88 commented 4 months ago

1. Неизменность-объект/данные или что-то ещё, которое не поддаётся изменениям. Примером может послужить строка в книге, набор хромосом у здорового человека и тд).

  1. Монада — заданный порядок выполнения действий. Примером может послужить любое действие: починить машину (найти причину поломки, заказать детали, выполнить ремонтные работы), получить новый ранг в игре, сделать домашнее задание по функциональному программированию и тд.

  2. Не думаю, что что-то может работать вечно, так как всему свойственно ломаться и тд. Но своим примитивным мышлением приведу в качестве примера юлу.

  3. Цель ООП разделить обязанности и сократить информацию. Цель ФП описать принцип взаимодействия команд с подпрограммами, в этом случае реализация осуществляется на уровне всего программного продукта.

  4. Обработка потоков данных.

  5. Думаю, криво перевела вопрос, поэтому не знаю.

  6. Прочтение лекции. Информация каждый раз не меняется, действие тоже, максимум изменений в восприятии информации читающим. 8
    Процесс, который происходит в фоновом режиме без участия пользователя.

veranzz commented 4 months ago
  1. Иммутабельность означает, что объект не может быть изменён после создания. Например, распечатанный текст или изображение уже не могут быть отредактированы. Также примером могут служить различные математические и физические константы (число пи, число Эйлера, скорость света в вакууме и т.д.).

  2. Монада – это концепция в функциональном программировании, которая задаёт определенную последовательность выполнения операций, позволяет производить вычисления с побочными эффектами. Примеры применения монад для различных целей: Monad Maybe для обработки возможности отсутствия значения, Monad List для работы с коллекциями данных и Monad State для управления состоянием программы.

  3. Например, концепт машины Тьюринга, которая имеет бесконечную ленту.

  4. В ООП главную роль играют объекты, а ФП – подход, при котором объектов не существует, всё пишется с помощью функций. В функциональном программировании данные не хранятся в памяти в отличие от ООП.

  5. Анализ большого объема данных.

  6. Карринг — это превращение функции с несколькими аргументами в набор вложенных функций с одним аргументом.

  7. Например, умножение на 0. Можно умножать любое число на 0 сколько угодно раз, в результате всё равно получится 0.

  8. Демон в unix-системах – это программа, выполняющая задачи в фоновом режиме.

MariyaDokukina commented 4 months ago
  1. What's immutability? Provide a few examples. Смысл раскрывается при переводе понятия на русский язык: неизменяемость. Т.е. объект/параметр/etc. не может быть изменен после его создания. В пример из жизни можно привести деталь конструктора. Мы можем использовать ее при сборке различных моделек, но сама по себе она остается неизменной.
  2. Describe the monad. Provide a few examples. Монада – концепция FP, помогающая задать некий алгоритм, последовательность выполняющихся в функции команд. В пример можно привести приготовление чего-либо из еды. Вместо того чтобы, не знаю, ходить в магазин отдельно за каждым продуктом, нарезать, варить/жарить/… их в рандомном порядке, мы идем в 1 магазин с конкретным списком требуемых продуктов, закупаемся, потом готовим это все по определенному алгоритму из рецепта.
  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 Кипячение воды. Если мы вскипятим воду 1 раз, она станет кипячёной. Если мы после этого вскипятим её ещё раз, её состояние не изменится. Зажигание спички от другого источника огня. Если мы поднесем не зажженную спичку к другому источнику огня, она загорится. Если мы после этого поднесем уже горящую спичку к нему же - ничего не изменится.
  8. What's daemon in *nix systems? Программа ОС, работающая в фоновом режиме, не имеющая графического интерфейса и не контролируемая пользователем.
Polinkiss commented 4 months ago
  1. Изменяемость/мутабельность - это склонность предмета к изменениям/последующим преобразованиям. В программировании изменяемость подразумевает то, что какой то объект можно будет изменить. Соответственно неизменяемость/иммутабельность подразумевает обратное значение. Это значит, что созданные объекты уже нельзя будет подвергать каким либо изменениям, они постоянны. Из за того, что объекты нельзя будет изменять, данные будут иметь бОльшую надежность и защищенность. (Пример: константы, формулы, дата рождения, номер счета, радужка)

  2. Монада реализует команды в определенном порядке, создает последовательные действия, помогает выстроить структуру. (Пример: чтобы построить дом, необходимо: залить фундамент, выложить стены, сделать крышу. Мы не сможем поставить крышу пока не будет того, на чем она будет держаться, т.е. стен, и так же с ними - никаких стен, пока не будет залит фундамент, на котором можно будет их выкладывать. В противном случае, т.е. при выполнении действий в другом порядке - будет уже не дом, а шалаш)

  3. Последовательности: 4543875407495804..... (Сколько цифр не пиши, число бесконечно), солнечный свет???, время, линия бессмертных клеток HeLa

  4. OOP основано на объектах, которые друг с другом взаимодействуют, весь код состоит именно из них. FP основано на функциях, создании нового на основе того, что у нас уже есть, при этом никогда не изменяя уже существующие данные.

  5. Рекурсии, задачи имеющие огромный объем данных...

  6. Трансформация функции, позволяет получать их частично (не вызывает функцию, изменяет, упрощает ее)

  7. Идемпотентность - это свойство, которое при повторении имеет тот же результат, следовательно примером может быть набор и звонок по телефонному номеру (каждый раз мы будем звонить на одну и ту же симку)

  8. Как я поняла, демон - это служебная программа, помощник, работающий в фоновом режиме, который обеспечивает контроль ОС; демоны работают сами по себе, ими нельзя управлять; демоны запускаются (когда это необходимо) в ответ на какие то действия системы и выполняют определенные функции.

hubnig commented 4 months ago

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? Процесс работающий в фоновом режиме и выполняющий определённые задачи

Surferblue commented 4 months ago

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? Программа работающая в фоновом режиме

CuteDarKy commented 4 months ago
  1. Иммутабельность (неизменяемость) – это свойство объекта, в который после создания не могут быть внесены изменения. Например, фотокарточки из фотоаппарата мгновенной печати. Даже если кадр вышел неудачным, в отличие от цифровой фотографии, отредактировать такой снимок уже невозможно.
  2. Монада – это структура, которая служит для связи функций в зависимости от входных данных. Примером может быть партия в шахматы профессиональных гроссмейстеров. Известно уже множество тактик ведения игры и соперник выбирает подходящую, основывая на ходах соигрока.
  3. Бесконечность и операции над ней (факториал, умножение и тп.)
  4. ООП работает с объектами и рассматривает скорее результат. ФП работает с функциями и изучает процессы.
  5. Любые манипуляции с объёмными данными, не требующие их изменения.
  6. Каррирование функции – это преобразование сложной функции в несколько простых вложенных друг в друга.
  7. Покраска забора со свежим слоем плотной краски новым слоем этой же краски не изменяет цвет забора. Умножение числа на 0
  8. Демон в UNIX-системах – это программа, которая постоянно выполняют свою задачу без участия пользователя
globusxyz commented 4 months ago

1.Иммутабельность - это свойство/состояние данных(или чего-либо другого), которое означает их неизменяемость после создания. В пример из реальной жизни можно привести любые события, произошедшие в прошлом. События, произошедшие с человеком вчера - иммутабельны, однако они могут влиять на будущее этого человека, оставаясь неизменными.

  1. Монада - концепция фп, задающая последовательность выполнения действий. Например программа тренировок, которой следует человек.
  2. Например рекурсия
  3. ООП - в основе лежат изменяемые объекты и классы ФП - в основе лежат иммутабельные функции. + они нигде не хранятся и вычисляются в моменте.
  4. Работа с вычислениями больших и постоянно поступаемых в систему и бесконечно изменяемых данных. Где также важна стабильность.
  5. Знаю лишь то, что это преобразование функции с несколькими аргументами, в несколько функций с (желательно?) одним аргументом. Как действительно это работает idk.
  6. Примером может послужить множественные попытки заморозить лёд в морозилке. Его агрегатное состояние не изменится.
  7. -
Povalikhina commented 4 months ago
  1. Иммутабельность – состояние, в котором значения не могут быть изменены. Но это больше не про запрет на изменение, а то, что поможет справляться с изменениями. Пример: Можно ли считать примером любое закрытое оборудование? Тот же ноутбук, холодильник (в том плане, что мы не трогаем «внутренности»). С одной стороны это удобство, с другой стороны – сохранение от изменений, чтобы некто не разбирающийся не полез.
  2. -
  3. Как я поняла, это любая бесконечная функция (время может считаться бесконечной функцией? Или дилемма Ахиллеса и черепахи?). Если применять бесконечную машину к компьютерам, то это компьютер, который может за короткое время обработать бесконечное число вычислительных шагов.
  4. ООП работает с объектами, то есть в основании лежит понятие объекта, описание его свойств и методов. И уже от объекта тянется все остальное. В ФП же основным понятием является понятие функции (все есть функция).
  5. Разбиение функции на подфункции (?)
  6. Химическая реакция (какие бы реагенты я не взяла, результат один – реакция)
fixat0r commented 3 months ago
  1. Иммутабельный объект - объект, состояние которого не может быть изменено после создания, результат модификации этого объекта - новый объект, при этом старый объект не изменится. Плюс иммутабельности в облегчении параллельного программирования, меньше ошибок из-за внезапных изменений состояний объектов. Как пример - констаны в java (final int im = 5), из жизни - письмо (когда мы его отправили оно становится иммутабельным, его нельзя изменить. Только отправить новое)
  2. Монады - шаблон для организации вычислений, который помогает в управлении вычислениями, что бы код оставался чистым и понятным. Предоставляет структуру для работы с различными вычислениями (ошибки, асинхронные операции, изменение состояния). Пример: например нам нужно вызывать три функции подряд. Мы можем воспользоваться монадой и прописать в одной функции связующий код(cv), а в другой инициализацию(in). Вызов in(x) генерирует начальное значение v1. Затем cv(v1, f1) генерирует новое промежуточное значение v2, которое используется в следующем вызове cv(v2, f2). Этот процесс продолжается, пока не будет получен итоговый результат. Определяя различные cv и in, мы можем объединять различные функции в одну цепочку вычислений.
  3. Бесконечные списки: в функциональных языках программирования можно создавать бесконечные списки, представляющие бесконечные последовательности значений. Например, список всех натуральных чисел. Машина Тьюринга
  4. Самая большая разница между ооп и фп в том, что в ооп мы пишем код с позиции "все объект", а в фп - "все функция". В фп связывает функции, выход одной это начало другой, они должны только принимать аргументы и возвращать их, ничего не менять и тп, но самая база в первом предложении
  5. Биг Дата: фп может обрабатывать огромные объемы данных благодаря способности создавать "чистые" функции, которые могут быть прозрачно распределены по вычислительным ресурсам. Параллельные и распределенные вычисления: при увеличении нагрузки на систему, в ООП существенно падает производительность по сравнению с фп в контексте параллельных задач.
  6. Каррирование. Если у нас есть функция, которая принимает несколько аргументов, мы можем преобразовать ее так, чтобы каждый аргумент стал отдельной функцией. Это позволяет вызывать часть аргументов функции поочередно, создавая промежуточные функции, которые ожидают оставшиеся аргументы.
  7. Подбрасывание яблока: подбрасываем, оно падает из-за гравитации, результат не меняется сколько бы мы его не бросали (если не будет внешнего воздействия, отклонением угла падения и тп пренебрегаем). Отправляем эл письмо: сколько бы раз не тыкнули на кнопку отправить, письмо уйдет только один раз, без дублей
  8. Демон - фоновая программа, которая выполняет какую-то свою одну задачу. Аналог служб в windows. Примеры: httpd, отвечает за обслуживание веб-сайтов и предоставление HTTP-сервиса. Sshd : предоставляет безопасное удаленное подключение к системе, управляет SSH-сессиями и подключениями к удаленным серверам
sudopirei commented 3 months ago
  1. Иммутабельность - неспособность на спонтанные или не очень мутации, буквально неспособность объекта, данных или переменной быть измененной, после его(ее) задания. Примером служат законы физики нашего мира.

  2. Монада - что-то вроде плана, со строго определенным порядком действий.

  3. Наверно в качестве примера бесконечной машины может служить машина Тьюринга.

  4. ООП сосредоточен на объектах и скорее рассматривает скорее результат. ФП больше работает с функциями и направлен на изучение процессов.

  5. Обработка или анализ большого или огромного массива информации.

  6. -

  7. Двойная отправка письма по электронной почте не приведет к получению 2-й копий получателем.

  8. Это программа, работающая в фоновом режиме и не требующая взаимодействия с пользователем. В основном нужны, чтобы отслеживать состояние систем, обслуживать подсистемы, выполнять определенные действия в запланированное время и гарантировать корректную работу всей ОС в целом.