18:22 У меня нет академического образования Computer Science, я самоучка, но хочу возразить на утверждение о том, что такое побочные эффекты. 1. Нельзя усвоить это понятие, если не "пощупать" в оригинале процедуры и функции, что в наше время возможно, насколько понимаю, только в Pascal. 2. Первое нужное историческое понятие, это подпрограмма - специально вынесенный из осн. программы фрагмент кода для выполнения повторяющихся действий, к которому возможно обратиться из основной программы и после завершения работы п.п. вернуться в поток выполнения осн. программы в место вызова п.п.. 3. П.п. могут выполнять действия, например, вывод текстовых строк и/или производить вычисления. 4. В какой-то исторический момент понятие "подпрограмма" разделяется на два: процедура и функция. 5. Затем за процедурами закрепилась "обязанность" совершать действия (вывод строк, обращение к файлам, инициализация чего нибудь и т.д.), но не вычисления. За функциями - производить вычисления и больше ничего, и возвращать их вместо себя (вместо своего имени), т.е. функция, это значение и это очень важно. 6. Исторически позже произошло стирание границы между двумя понятиями, при этом понятие "процедура" было забыто а подпрограммы стали называться функциями и больше никак. 7. Итог: если функции совершают что-то отличное от вычислений, то это функции с побочными эффектами, если только вычисления, это чистые функции. -Влияние на глобальную переменную, это частный случай побочного эффекта и в общем неудачный пример, т.к. использование глобальных переменных, это плохая практика программирования.- Неравнодушных отсылаю к книге А.В. Столярова, "Программирование: Введение в профессию."
35:20 Снова прошу прощения, но это неправда, для Haskell существует интерпретатор GHCi который позволяет работать с языком в режиме REPL. "GHCi is GHC's interactive environment, in which Haskell expressions can be interactively evaluated and programs can be interpreted." Допускаю небольшую вероятность того, что я что-то не понял в утверждении о необходимости создавать файл с описанием функции для проверки её работы.
В консоли можно вводить функции. Но это не слишком удобно. И крайне неудобно отлаживать (когда исходник меняется чуть-чуть). Удобнее выполнять корректировки в отдельном исходнике.
@@БорисФайфель, я понял, речь об удобстве, всё таки, а не о непреодолимой невозможности описания функций в REPL. Понятное дело, что-то громоздкое в режиме REPL делать не следует, оно для того, чтобы быстро проверить какую-то идею и принять решение вносить или не вносить её в исходник.
11:45 К книге А.Холомьёва лучше не прикасаться. В 2018 году я попытался въехать в Haskell. Попалась мне книга А.Холомьева. Её невозможно читать, автор писал так, как будто с дебилами заигрывал. Автор (наверное) попытался написать для новичков, но у него не получилось потому, что он уже сам забыл, что значит быть новичком. Изложенное в книге понятно тем, кто уже умеет в Haskell (книга для своих), т.к. им не придётся в муках додумываться о том, что упустил и/или опустил автор в своём изложении. Начинающих книга запутает, т.к. написана, как сборник каких-то тезисов, это не учебник. Вторая книга, которая попала мне в руки, Д.Шевченко, "О Haskell по-человечески", она чуть лучше. Параллельно с чтением узнал про уроки LYAH, переключился на них, тут же узнал о книге Р.В.Душкина, "ФП на языке Haskell" и переключился на него, он получше пишет, тоже небезупречен, но это уже академический учебник. Все книги объединяет (LYAH в меньшей степени) то, что авторы не понимают с чего надо начинать объяснения и каждый начинает со своего угла. Я бы посоветовал при чтении Шевченко и Холомьева не пытаться что-либо понять, а просто пробежать по тексту и взять то, что будет понятно. Считаю это подходящим потому, что точки входа в тему в каждой книге разные и после пары, другой заходов в тему из разных углов следующий источник, который уже поосновательнее и посложнее, воспринимается проще. Возможно будет лучше, если совсем не брать в руки книги Холомьёва и Шевченко.
@@БорисФайфель , в таком случае, так мы далеко можем зайти. Я могу ответить: "А это Ваше суждение", т.е. его цена не выше моего. На самом деле, то были мои соображения и описание моего опыта.
9:17 Всех прошу простить за замечание, но этот учебник свободно доступен online в HTML виде. Употреблять такое в переводе вредно для умственного здоровья.
Радостно видеть и слышать!
18:22 У меня нет академического образования Computer Science, я самоучка, но хочу возразить на утверждение о том, что такое побочные эффекты.
1. Нельзя усвоить это понятие, если не "пощупать" в оригинале процедуры и функции, что в наше время возможно, насколько понимаю, только в Pascal.
2. Первое нужное историческое понятие, это подпрограмма - специально вынесенный из осн. программы фрагмент кода для выполнения повторяющихся действий, к которому возможно обратиться из основной программы и после завершения работы п.п. вернуться в поток выполнения осн. программы в место вызова п.п..
3. П.п. могут выполнять действия, например, вывод текстовых строк и/или производить вычисления.
4. В какой-то исторический момент понятие "подпрограмма" разделяется на два: процедура и функция.
5. Затем за процедурами закрепилась "обязанность" совершать действия (вывод строк, обращение к файлам, инициализация чего нибудь и т.д.), но не вычисления.
За функциями - производить вычисления и больше ничего, и возвращать их вместо себя (вместо своего имени), т.е. функция, это значение и это очень важно.
6. Исторически позже произошло стирание границы между двумя понятиями, при этом понятие "процедура" было забыто а подпрограммы стали называться функциями и больше никак.
7. Итог: если функции совершают что-то отличное от вычислений, то это функции с побочными эффектами, если только вычисления, это чистые функции.
-Влияние на глобальную переменную, это частный случай побочного эффекта и в общем неудачный пример, т.к. использование глобальных переменных, это плохая практика программирования.-
Неравнодушных отсылаю к книге А.В. Столярова, "Программирование: Введение в профессию."
35:20 Снова прошу прощения, но это неправда, для Haskell существует интерпретатор GHCi который позволяет работать с языком в режиме REPL.
"GHCi is GHC's interactive environment, in which Haskell expressions can be interactively evaluated and programs can be interpreted."
Допускаю небольшую вероятность того, что я что-то не понял в утверждении о необходимости создавать файл с описанием функции для проверки её работы.
В консоли можно вводить функции. Но это не слишком удобно. И крайне неудобно отлаживать (когда исходник меняется чуть-чуть). Удобнее выполнять корректировки в отдельном исходнике.
@@БорисФайфель, я понял, речь об удобстве, всё таки, а не о непреодолимой невозможности описания функций в REPL.
Понятное дело, что-то громоздкое в режиме REPL делать не следует, оно для того, чтобы быстро проверить какую-то идею и принять решение вносить или не вносить её в исходник.
@@ivanprokofyev о чём я и говорю.
@@БорисФайфель , мне, всё таки, кажется, что о другом была речь.
11:45 К книге А.Холомьёва лучше не прикасаться.
В 2018 году я попытался въехать в Haskell.
Попалась мне книга А.Холомьева.
Её невозможно читать, автор писал так, как будто с дебилами заигрывал.
Автор (наверное) попытался написать для новичков, но у него не получилось потому, что он уже сам забыл, что значит быть новичком.
Изложенное в книге понятно тем, кто уже умеет в Haskell (книга для своих), т.к. им не придётся в муках додумываться о том, что упустил и/или опустил автор в своём изложении.
Начинающих книга запутает, т.к. написана, как сборник каких-то тезисов, это не учебник.
Вторая книга, которая попала мне в руки, Д.Шевченко, "О Haskell по-человечески", она чуть лучше.
Параллельно с чтением узнал про уроки LYAH, переключился на них, тут же узнал о книге Р.В.Душкина, "ФП на языке Haskell" и переключился на него, он получше пишет, тоже небезупречен, но это уже академический учебник.
Все книги объединяет (LYAH в меньшей степени) то, что авторы не понимают с чего надо начинать объяснения и каждый начинает со своего угла.
Я бы посоветовал при чтении Шевченко и Холомьева не пытаться что-либо понять, а просто пробежать по тексту и взять то, что будет понятно.
Считаю это подходящим потому, что точки входа в тему в каждой книге разные и после пары, другой заходов в тему из разных углов следующий источник, который уже поосновательнее и посложнее, воспринимается проще.
Возможно будет лучше, если совсем не брать в руки книги Холомьёва и Шевченко.
Это ваше оценочное суждение
@@БорисФайфель , в таком случае, так мы далеко можем зайти.
Я могу ответить: "А это Ваше суждение", т.е. его цена не выше моего.
На самом деле, то были мои соображения и описание моего опыта.
@@ivanprokofyev а зачем оценивать друг друга? Пусть оценивают читатели и слушатели. 😀
@@БорисФайфель , вот я бы и не хотел чтобы мои соображения без моего согласия называлия суждениями, да ещё и оценочными.
@@ivanprokofyev в чём разница между "соображением" и "суждением"? 😀
Незначительная поправка: книга А.С. Мена "Изучаем Хаскелл" - это перевод с английского. Но автор - явно не англосакс! 😀
9:17 Всех прошу простить за замечание, но этот учебник свободно доступен online в HTML виде.
Употреблять такое в переводе вредно для умственного здоровья.