Репозиторий функций
Aug. 1st, 2013 11:22 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Насмотрелся я на разные мавены, рубигемы и прочие репозитории в которых Адъ и Израиль и подумал, что идея искать пакеты по именам - это зло. Пакеты надо искать по исполняемым функциям. А сами функции требуемые описывать в виде структурных типов. И чтобы они грузились сразу из исходного кода, а не из pom.xml, project.clj и gemfile.
Пишешь типа в исходнике
f :: HTTPSUrl->Maybe DataStream
f = broughtBySpidersAndCynocephalus
и оно тебе при загрузке программы все такие места проверяет и скачивает реализующую нужную функцию куски пакетов со всеми зависимостями. :)
Пишешь типа в исходнике
f :: HTTPSUrl->Maybe DataStream
f = broughtBySpidersAndCynocephalus
и оно тебе при загрузке программы все такие места проверяет и скачивает реализующую нужную функцию куски пакетов со всеми зависимостями. :)
no subject
Date: 2013-08-01 08:25 am (UTC)no subject
Date: 2013-08-01 08:37 am (UTC)А вот типы сами по себе придется проектировать централизованно.
no subject
Date: 2013-08-01 09:01 am (UTC)Не а.
Вместо классического "авторы дебилы - кто же так функцию называет" будет "авторы дебилы, кто же в такие типы данные запихивает"
Хочу я функцию, которая строку в число переводит: http://www.haskell.org/hoogle/?hoogle=String-%3E+Int А там Ад, Израиль и throwSocketError
no subject
Date: 2013-08-01 09:16 am (UTC)no subject
Date: 2013-08-01 08:54 pm (UTC)no subject
Date: 2013-08-01 06:20 pm (UTC)no subject
Date: 2013-08-01 08:12 pm (UTC)Кроме того, тривиальные функции обычно в либы нету смысла выносить.
no subject
Date: 2013-08-01 08:33 pm (UTC)no subject
Date: 2013-08-02 06:09 am (UTC)Первое работает с любыми числами, а второе - только с дробными.
no subject
Date: 2013-08-02 06:29 am (UTC)не обязательно, кстати. Во многих языках достаточно развесистая система "привидений типов".
a+0.12345*b может внутре считаться так:
float tmpf = b;
tmpf = tmp*0.12345;
int tmpi = tmpf;
return a+tmpi;
no subject
Date: 2013-08-01 08:34 pm (UTC)no subject
Date: 2013-08-01 08:36 am (UTC)no subject
Date: 2013-08-01 09:28 am (UTC)no subject
Date: 2013-08-01 11:57 am (UTC)или была
no subject
Date: 2013-08-01 12:42 pm (UTC)no subject
Date: 2013-08-01 09:00 am (UTC)no subject
Date: 2013-08-01 09:12 am (UTC)перепишешь. чо, меньше 2килознака в минуту печатаешь? не программист тогда!
а конфликт версий эт ваще нямка будет.
я уж молчу, шо найти сигнатуру - возможно изменившуюся - отдельный ад
no subject
Date: 2013-08-01 09:14 am (UTC)no subject
Date: 2013-08-01 10:26 am (UTC)найти инфу, что вот это - нужно... тонны описалов. тонны в квадрате описалов совместимости.
читайте, ага.
вместо одной строчки в гемфайле.
no subject
Date: 2013-08-01 09:19 am (UTC)no subject
Date: 2013-08-01 10:24 am (UTC)вот перестали быть нужны для результата некоторые входные данные. совсем. и со сменой мажорной версии - выкинули нахрен мусор. и чо, будешь выискивать как сигнатура поменялась? или продолжишь пользоваться неподдерживаемым говном мамонта?
no subject
Date: 2013-08-01 11:30 am (UTC)no subject
Date: 2013-08-01 12:16 pm (UTC)чо, требовать наличия нахрен не нужных данных? и да пофиг шо эти данные еще нужно выгрести - проц толстый, да.
депрекэйшн пару версий при вызове обертки со старым именем - и нахуй с пляжу. мусор с собой таскать никому не впилось. желающие дерьмища соберут или выберут нужную версию сами.
no subject
Date: 2013-08-01 09:15 am (UTC)no subject
Date: 2013-08-01 10:26 am (UTC)rake
опиши.
no subject
Date: 2013-08-01 12:03 pm (UTC)вместе с ОС
и железом для неё
и компанией, владеющей железом
и страной, регистрирующей компани.
и другим глобусом с другой солнечной системой
no subject
Date: 2013-08-01 12:09 pm (UTC)no subject
Date: 2013-08-01 09:09 am (UTC)вместо dllhell будет prochell
ну и улучшайзинг функции, с рефакторингом - добавят красок в жизнь девопса. розовой и голубой в основном.
no subject
Date: 2013-08-01 09:17 am (UTC)no subject
Date: 2013-08-01 09:30 am (UTC)no subject
Date: 2013-08-01 10:29 am (UTC)а по зависимостям?
я уж молчу шо и пропасть функция может. с депрекэйшн варном.
no subject
Date: 2013-08-01 09:17 am (UTC)no subject
Date: 2013-08-01 10:05 am (UTC)no subject
Date: 2013-08-01 10:24 am (UTC)В хаскеле том же всё неплохо, за исключением любви авторов библиотек вытаскивать для либы из двух функций тонну всяких трансформеров монад. Ну и качества самих модулей, разброда и шатания, и процента реально полезных модулей ко всякому матану в альфа-версиях.
В дотнете есть общий стиль и хорошая библиотека из коробки, через это даже уродский менеджер пакетов не особо и напрягает - 90% из коробки, остальное всё чаще всего делает то что нужно, и не от чего не зависит.
Как там в нетипизированных языках я вообще хз, меня вот сильно пугает перспектива подцепить несовместимые модули и в рантайме натыкаться на проблемы с их взаимоотношениями. Я как-то node.js пробовал - именно в такое говно прямо с ходу и наступил.
no subject
Date: 2013-08-01 12:07 pm (UTC)ох уж эти программисты, чего выдумают, только чтобы не жениться
ни один даже дяденька не держит в голове весь даже standard API даже одного языка
результаты работы 1 000 000 программеров даже в гугл не выкладывают
no subject
Date: 2013-08-01 12:02 pm (UTC)no subject
Date: 2013-08-01 12:46 pm (UTC)no subject
Date: 2013-08-01 01:35 pm (UTC)no subject
Date: 2013-08-01 03:21 pm (UTC)http://erlang.org/pipermail/erlang-questions/2011-May/thread.html#58768
Докатилось даже до русскоязычной Erlang-тусовки, отзывы были типа:
"Старый конь Армстронг начал впадать в маразм"
no subject
Date: 2013-08-02 06:02 pm (UTC)org_erlang_lang_string_compareTo(string AnotherString)
Да, куда-то Армстронга понесло далеко. Хотя он реально умные вещи как правило говорит и делает.
no subject
Date: 2013-08-01 04:20 pm (UTC)no subject
Date: 2013-08-01 07:43 pm (UTC)no subject
Date: 2013-08-01 04:33 pm (UTC)no subject
Date: 2013-08-01 04:50 pm (UTC)no subject
Date: 2013-08-01 05:41 pm (UTC)no subject
Date: 2013-08-01 01:19 pm (UTC)https://www.youtube.com/watch?v=MuWTQtyKih4
no subject
Date: 2013-08-01 03:54 pm (UTC)no subject
Date: 2013-08-02 05:28 pm (UTC)В принципе, реализовать это - несложно, практически в любой ситуации. Что для нативного кода, что для управляемого.
Хоть кому-то это оказалось интересно, лол.