Даже не придираясь к утверждению "компьютер умеет рассуждать", здесь опущено важное: компьютер "умеет рассуждать" над данными. То, что вы здесь называете типом — всего лишь метаинформация о "хранилище" (будь то переменная или колонка в БД или впишите что угодно еще), в первую очередь — ограничивающая допустимый набор его значений.
Я имел в виду, "рассуждать" как применять правила вывода в теории доказательств, теории типов и изоморфизме Карри Ховарда. Да, в достаточно мощной теории с типами можно обращаться как с данными: складывать, умножать, матчить, объявлять функции и подставлять в неё аргументы. Грубо говоря, тип — это данные, обрабатываемые в compile time, но граница с runtime может быть размыта. А значения типа ограничены теми, которые можно построить, произвольно комбинируя конструкторы типа.
Во-первых, спасибо большое, что так обстоятельно ответили. Я ожидал от поста именно такой дискуссии и вы единственный откликнувшийся.
Во-вторых, вы совершенно правы с точки зрения популярного восприятия через призму ООП. Но для меня этого мало. Меня интересует связь ООП и ФП, не то, что из них лучше, а что между ними общего. Это разные подходы, не конвертируемые один в один, поэтому кратких и точных определений без длинного списка исключительных случаем дать не могу. Точные определения есть в интернетах, не вижу смысла их копипастить. Об этом дано предупреждение ещё в начале поста, что он «очень краткий, и поэтому неполный и не претендующий на точность». Возможно, стоит заменить слово «определение», на «понятие» или даже «восприятие».
В-третьих, в следующих отдельных комментариях отвечу вам, приведу ссылки и разъясню, что я имею в виду.
Вы правильно взяли «определения» в кавычки. Но ошибки, пожалуйста приведите. Как Маугли, воспитанный Википедией, я могу и ошибаться и рад бы был от вас чему-нибудь научиться.
Цель материала была в том, чтобы человек, который раньше не встречал, что такое зависимые типы или обходил стороной слово «монада», начав с того, что ему знакомо, дочитал до конца, на этот раз понял, что штука-то в хозяйстве это полезная, и, может быть, глубже погрузился в тему, щёлкнув по ссылке.
Если текст показался очевидным, то это вообще замечательно!
Скажите это SQL из 1974 и реляционной алгебре, куда движутся распределённые хранилища, бывшие NoSQL, а сейчас NewSQL (Spanner, Cockroach DB). Или посмотрите на эволюцию Java, где добавили сахар для замыканий, анонимных функций, Stream API (оптимизация функтора). Тут аналогия с поколениями при сборке мусора: если до сих пор что-то помнят из 1971, то большие шансы, что ещё долго будут помнить. А свежий мусор из nursery забудется в следующем году.
В сети есть уйма холиваров, ООП vs ФП, языки со статической типизацией против динамической, зачем нужны компиляторы, которые мешают разрабатывать своими ошибками, когда можно покрыть юнит тестами, какой язык лучше. Если в них разобраться, то окажется что в одном варианте нужно делать ручками, а в другом за вас работу может сделать компьютер. Но, конечно, придётся потратить время, чтобы разобраться. Здесь указано, в какую сторону время тратить: в фундаментальные понятия, а не в популярные в нынешнем сезоне.
С академическими языками не обязательно извращаться. Достаточно иногда на них поглядывать, чтобы знать, что появится в промышленных языках через 3-5-10 лет.
И время от времени нужно выбрасывать языки на свалку потому, что в них накапливаются исторические слои мусора.
Немного перефразировал.
> what was in your present in the first place!
«Изначально», как ни странно, здесь имеет смысл «в конце» :) результат вычислений.
А по поводу _|_ uncyclopedia говорит:
Calculations which are undefined are denoted by the _|_ symbol, pronounced Bottom, which the documentation explains as the compiler giving you the finger.
Автор является генератором новой информации. Потребитель является фильтром информации, то есть может её оценивать. Сформулируем оптимизационную задачу.
Потребитель хочет:
(1) сэкономить на оплате;
(2) произведений качественнее и больше.
Автор хочет:
(3) извлечь больше выгоды;
(4) широкого признания своих произведений.
Все хотят сытости и большинство справедливости (если определить справедливость как то, за что голосует большинство). Как удовлетворить всем требованиям?
Очевидно, все идеи и достижения отдельного человека или организации основаны на всей предыдущей истории культуры, а не на пустом месте. Человек или организация потребляет их и производит материальный или интеллектуальный продукт, реализует его и получает доход. Точно определить долю культуры в доходе невозможно. Оценить этот параметр (из принципа справедливости и с потолка, о чем далее) можно через долю работников культуры в обществе. Эта доля дохода изымается в виде налога. Проблема (1) решена.
Раз налог уже уплачен, потребитель становиться объективен и распределяет сумму налога среди тех авторов, которые ему нравятся, стимулирует к продуктивной работе (2). В руках/голове автора его доход (3). Копии ничего не стоят и широко распространены (4).
Варьируя параметр культурного налога общество делает творческий бизнес более или менее привлекательным занятием.
Это не рыбы. Они симметричны => в горизонтальной плоскости тела => это сросшиеся в ласты ноги млекопитающих. А у рыб хвосты не симметричные в вертикальной плоскости.
Я имел в виду, "рассуждать" как применять правила вывода в теории доказательств, теории типов и изоморфизме Карри Ховарда. Да, в достаточно мощной теории с типами можно обращаться как с данными: складывать, умножать, матчить, объявлять функции и подставлять в неё аргументы. Грубо говоря, тип — это данные, обрабатываемые в compile time, но граница с runtime может быть размыта. А значения типа ограничены теми, которые можно построить, произвольно комбинируя конструкторы типа.
Во-вторых, вы совершенно правы с точки зрения популярного восприятия через призму ООП. Но для меня этого мало. Меня интересует связь ООП и ФП, не то, что из них лучше, а что между ними общего. Это разные подходы, не конвертируемые один в один, поэтому кратких и точных определений без длинного списка исключительных случаем дать не могу. Точные определения есть в интернетах, не вижу смысла их копипастить. Об этом дано предупреждение ещё в начале поста, что он «очень краткий, и поэтому неполный и не претендующий на точность». Возможно, стоит заменить слово «определение», на «понятие» или даже «восприятие».
В-третьих, в следующих отдельных комментариях отвечу вам, приведу ссылки и разъясню, что я имею в виду.
Если текст показался очевидным, то это вообще замечательно!
Это скорее, awesome list.
И время от времени нужно выбрасывать языки на свалку потому, что в них накапливаются исторические слои мусора.
> what was in your present in the first place!
«Изначально», как ни странно, здесь имеет смысл «в конце» :) результат вычислений.
Calculations which are undefined are denoted by the _|_ symbol, pronounced Bottom, which the documentation explains as the compiler giving you the finger.
У меня ещё ленивые вычисления ассоциируются с фигурно вязаным свитером: тянешь за ниточку, свитер распускается, а ниточка запутанно бегает по петлям.
Потребитель хочет:
(1) сэкономить на оплате;
(2) произведений качественнее и больше.
Автор хочет:
(3) извлечь больше выгоды;
(4) широкого признания своих произведений.
Все хотят сытости и большинство справедливости (если определить справедливость как то, за что голосует большинство). Как удовлетворить всем требованиям?
Очевидно, все идеи и достижения отдельного человека или организации основаны на всей предыдущей истории культуры, а не на пустом месте. Человек или организация потребляет их и производит материальный или интеллектуальный продукт, реализует его и получает доход. Точно определить долю культуры в доходе невозможно. Оценить этот параметр (из принципа справедливости и с потолка, о чем далее) можно через долю работников культуры в обществе. Эта доля дохода изымается в виде налога. Проблема (1) решена.
Раз налог уже уплачен, потребитель становиться объективен и распределяет сумму налога среди тех авторов, которые ему нравятся, стимулирует к продуктивной работе (2). В руках/голове автора его доход (3). Копии ничего не стоят и широко распространены (4).
Варьируя параметр культурного налога общество делает творческий бизнес более или менее привлекательным занятием.
— Памятью на внешних носителях!
ц-)