Pull to refresh
69
0

R&D

Send message
Даже не придираясь к утверждению "компьютер умеет рассуждать", здесь опущено важное: компьютер "умеет рассуждать" над данными. То, что вы здесь называете типом — всего лишь метаинформация о "хранилище" (будь то переменная или колонка в БД или впишите что угодно еще), в первую очередь — ограничивающая допустимый набор его значений.

Я имел в виду, "рассуждать" как применять правила вывода в теории доказательств, теории типов и изоморфизме Карри Ховарда. Да, в достаточно мощной теории с типами можно обращаться как с данными: складывать, умножать, матчить, объявлять функции и подставлять в неё аргументы. Грубо говоря, тип — это данные, обрабатываемые в compile time, но граница с runtime может быть размыта. А значения типа ограничены теми, которые можно построить, произвольно комбинируя конструкторы типа.

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

Во-вторых, вы совершенно правы с точки зрения популярного восприятия через призму ООП. Но для меня этого мало. Меня интересует связь ООП и ФП, не то, что из них лучше, а что между ними общего. Это разные подходы, не конвертируемые один в один, поэтому кратких и точных определений без длинного списка исключительных случаем дать не могу. Точные определения есть в интернетах, не вижу смысла их копипастить. Об этом дано предупреждение ещё в начале поста, что он «очень краткий, и поэтому неполный и не претендующий на точность». Возможно, стоит заменить слово «определение», на «понятие» или даже «восприятие».

В-третьих, в следующих отдельных комментариях отвечу вам, приведу ссылки и разъясню, что я имею в виду.
Вы правильно взяли «определения» в кавычки. Но ошибки, пожалуйста приведите. Как Маугли, воспитанный Википедией, я могу и ошибаться и рад бы был от вас чему-нибудь научиться.
Цель материала была в том, чтобы человек, который раньше не встречал, что такое зависимые типы или обходил стороной слово «монада», начав с того, что ему знакомо, дочитал до конца, на этот раз понял, что штука-то в хозяйстве это полезная, и, может быть, глубже погрузился в тему, щёлкнув по ссылке.
Если текст показался очевидным, то это вообще замечательно!
Приведите, пожалуйста, пруф-ссылку на копипасту :)
Это скорее, awesome list.

Скажите это 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).
Варьируя параметр культурного налога общество делает творческий бизнес более или менее привлекательным занятием.
— Чем отличается человек от животного?
— Памятью на внешних носителях!
ц-)
Это не рыбы. Они симметричны => в горизонтальной плоскости тела => это сросшиеся в ласты ноги млекопитающих. А у рыб хвосты не симметричные в вертикальной плоскости.
Только у меня логотип ассоциируется с двумя дельфинами и китом?
GFS бежит поверх ext*

Information

Rating
Does not participate
Location
Краснодарский край, Россия
Works in
Registered
Activity