Pull to refresh

Comments 19

Первая часть еще куда ни шло, но вторая уж совсем толстый троллинг.

Просто неуклюжий донельзя утрированный юмор, причем тут троллинг
Многое в этой жизни повидал, но FizzBuzzEnterpriseEdition меня по настоящему впечатлил.

Что делает мужик с перилами и стаканом песка?

продолжение этого высера детектед.
количество_строк_кода = время_необходимое_на_написание_кода = $$$деньги$$$

кстати в нормальном языке может быть так что количество строк кода уменьшается со временем и это правильно.
необходимоеКоличествоСтрокКода = флудерскоеКоличествоСтрокКода — время * коэффициентИнтеллектуальностиПрограммера.
Наконец-то дельная статья про все эти никому не нужные новомодные штучки.
В ООП больше всего нравится свобода действий
UFO just landed and posted this here

Больше всего в ООП мне не нравится, что его противопоставляют ФП и другим парадигмам. Это с одной стороны. С другой больше всего в ФП мне не нравится, что его противопоставляют… Шутка. Что его объединяют с другими вещами, например "Говорим ФП — поразумеваем мощную систему типов, вплоть до решения задачи исключительно через типы"

ФП таки напрямую связано с типами, потому что оно про композицию функций, а правила оной задаются в т. ч. системой типов.

То есть в нетипизированном или слаботипизированном языке композиция функций невозможна? У меня другое представление. Да, защиты от выстрела себе в ногу не будет, может даже ошибки рантайма не будет, но если самому следить, чтобы параметры/результаты соотвествовали как по типам, так и по смыслу, то в чём проблема? Даже ФП с сильной системой типов не уберегут вас от получения ерунды, если скомпозируете вычисление квадратного корня и синуса, а передадитt ид юзера. (предполагаем, конечно, что он числовой, а не какой-то UserIdType)

То есть в нетипизированном или слаботипизированном языке композиция функций невозможна?

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


Даже ФП с сильной системой типов не уберегут вас от получения ерунды, если скомпозируете вычисление квадратного корня и синуса, а передадитt ид юзера. (предполагаем, конечно, что он числовой, а не какой-то UserIdType)

Конечно, нет. Но они предоставят средства, чтобы избежать такой ерунды. Дадут возможность, при наличии желания.

Ограничения, конечно, нужны, если мы хотим получить разумный результат. Но система типов не единственно возможное средство описания этих ограничений и проверки системы на их соответствие. Это с одной стороны, а с другой- система типов ортогональна по сути используемой парадигме. Сильная система типов может быть и в ООП, например.

Интересно, когда уже появятся анекдоты о функциональщиках по шаблону анекдотов о веганах?)
Сколько общался с функциональщиками — у них всегда горят глаза, когда они говорят об ФП, и они всегда готовы с невообразимым энтузиазмом обмазывать десятками слоев говна все, что представляет какую-либо альтернативу ФП. Причем, обратного не наблюдается — адепты ООП не возбуждаются аналогично при разговорах о ФП.
UFO just landed and posted this here
Я просто ничего не понял. ООП — это не про мутабельность данных, мутабельность данных — это «структурное программирование» (которое, вообще говоря, тоже было в своё время новой идеей «разделение кода и данных в памяти»). ООП — это как раз про квалификатор private, то есть про =иммутабельность=.

А уж разделение на «функциональное и ООП» мне просто в голову бы не пришло. Metaobject Protocol, рефлекшен придумали в Lisp.
Автор явно пишет о наболевшем. В реальности нужно уметь программировать, а не рассуждать на эти темы, что лучше и что правильнее.
Sign up to leave a comment.