Haskell - лень против строгости

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.พ. 2025

ความคิดเห็น • 22

  • @ivanprokofyev
    @ivanprokofyev 3 หลายเดือนก่อน

    Радостно видеть и слышать!

  • @ivanprokofyev
    @ivanprokofyev 3 หลายเดือนก่อน +1

    18:22 У меня нет академического образования Computer Science, я самоучка, но хочу возразить на утверждение о том, что такое побочные эффекты.
    1. Нельзя усвоить это понятие, если не "пощупать" в оригинале процедуры и функции, что в наше время возможно, насколько понимаю, только в Pascal.
    2. Первое нужное историческое понятие, это подпрограмма - специально вынесенный из осн. программы фрагмент кода для выполнения повторяющихся действий, к которому возможно обратиться из основной программы и после завершения работы п.п. вернуться в поток выполнения осн. программы в место вызова п.п..
    3. П.п. могут выполнять действия, например, вывод текстовых строк и/или производить вычисления.
    4. В какой-то исторический момент понятие "подпрограмма" разделяется на два: процедура и функция.
    5. Затем за процедурами закрепилась "обязанность" совершать действия (вывод строк, обращение к файлам, инициализация чего нибудь и т.д.), но не вычисления.
    За функциями - производить вычисления и больше ничего, и возвращать их вместо себя (вместо своего имени), т.е. функция, это значение и это очень важно.
    6. Исторически позже произошло стирание границы между двумя понятиями, при этом понятие "процедура" было забыто а подпрограммы стали называться функциями и больше никак.
    7. Итог: если функции совершают что-то отличное от вычислений, то это функции с побочными эффектами, если только вычисления, это чистые функции.
    -Влияние на глобальную переменную, это частный случай побочного эффекта и в общем неудачный пример, т.к. использование глобальных переменных, это плохая практика программирования.-
    Неравнодушных отсылаю к книге А.В. Столярова, "Программирование: Введение в профессию."

  • @ivanprokofyev
    @ivanprokofyev 3 หลายเดือนก่อน

    35:20 Снова прошу прощения, но это неправда, для Haskell существует интерпретатор GHCi который позволяет работать с языком в режиме REPL.
    "GHCi is GHC's interactive environment, in which Haskell expressions can be interactively evaluated and programs can be interpreted."
    Допускаю небольшую вероятность того, что я что-то не понял в утверждении о необходимости создавать файл с описанием функции для проверки её работы.

    • @БорисФайфель
      @БорисФайфель 3 หลายเดือนก่อน

      В консоли можно вводить функции. Но это не слишком удобно. И крайне неудобно отлаживать (когда исходник меняется чуть-чуть). Удобнее выполнять корректировки в отдельном исходнике.

    • @ivanprokofyev
      @ivanprokofyev 3 หลายเดือนก่อน

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

    • @БорисФайфель
      @БорисФайфель 3 หลายเดือนก่อน

      @@ivanprokofyev о чём я и говорю.

    • @ivanprokofyev
      @ivanprokofyev 3 หลายเดือนก่อน

      @@БорисФайфель , мне, всё таки, кажется, что о другом была речь.

  • @ivanprokofyev
    @ivanprokofyev 3 หลายเดือนก่อน

    11:45 К книге А.Холомьёва лучше не прикасаться.
    В 2018 году я попытался въехать в Haskell.
    Попалась мне книга А.Холомьева.
    Её невозможно читать, автор писал так, как будто с дебилами заигрывал.
    Автор (наверное) попытался написать для новичков, но у него не получилось потому, что он уже сам забыл, что значит быть новичком.
    Изложенное в книге понятно тем, кто уже умеет в Haskell (книга для своих), т.к. им не придётся в муках додумываться о том, что упустил и/или опустил автор в своём изложении.
    Начинающих книга запутает, т.к. написана, как сборник каких-то тезисов, это не учебник.
    Вторая книга, которая попала мне в руки, Д.Шевченко, "О Haskell по-человечески", она чуть лучше.
    Параллельно с чтением узнал про уроки LYAH, переключился на них, тут же узнал о книге Р.В.Душкина, "ФП на языке Haskell" и переключился на него, он получше пишет, тоже небезупречен, но это уже академический учебник.
    Все книги объединяет (LYAH в меньшей степени) то, что авторы не понимают с чего надо начинать объяснения и каждый начинает со своего угла.
    Я бы посоветовал при чтении Шевченко и Холомьева не пытаться что-либо понять, а просто пробежать по тексту и взять то, что будет понятно.
    Считаю это подходящим потому, что точки входа в тему в каждой книге разные и после пары, другой заходов в тему из разных углов следующий источник, который уже поосновательнее и посложнее, воспринимается проще.
    Возможно будет лучше, если совсем не брать в руки книги Холомьёва и Шевченко.

    • @БорисФайфель
      @БорисФайфель 3 หลายเดือนก่อน

      Это ваше оценочное суждение

    • @ivanprokofyev
      @ivanprokofyev 3 หลายเดือนก่อน

      ​@@БорисФайфель , в таком случае, так мы далеко можем зайти.
      Я могу ответить: "А это Ваше суждение", т.е. его цена не выше моего.
      На самом деле, то были мои соображения и описание моего опыта.

    • @БорисФайфель
      @БорисФайфель 3 หลายเดือนก่อน

      @@ivanprokofyev а зачем оценивать друг друга? Пусть оценивают читатели и слушатели. 😀

    • @ivanprokofyev
      @ivanprokofyev 3 หลายเดือนก่อน

      @@БорисФайфель , вот я бы и не хотел чтобы мои соображения без моего согласия называлия суждениями, да ещё и оценочными.

    • @БорисФайфель
      @БорисФайфель 3 หลายเดือนก่อน

      @@ivanprokofyev в чём разница между "соображением" и "суждением"? 😀

  • @БорисФайфель
    @БорисФайфель 3 หลายเดือนก่อน +1

    Незначительная поправка: книга А.С. Мена "Изучаем Хаскелл" - это перевод с английского. Но автор - явно не англосакс! 😀

  • @ivanprokofyev
    @ivanprokofyev 3 หลายเดือนก่อน

    9:17 Всех прошу простить за замечание, но этот учебник свободно доступен online в HTML виде.
    Употреблять такое в переводе вредно для умственного здоровья.