metaclass: (Default)
[personal profile] metaclass
Насмотрелся я на разные мавены, рубигемы и прочие репозитории в которых Адъ и Израиль и подумал, что идея искать пакеты по именам - это зло. Пакеты надо искать по исполняемым функциям. А сами функции требуемые описывать в виде структурных типов. И чтобы они грузились сразу из исходного кода, а не из pom.xml, project.clj и gemfile.
Пишешь типа в исходнике
f :: HTTPSUrl->Maybe DataStream
f = broughtBySpidersAndCynocephalus
и оно тебе при загрузке программы все такие места проверяет и скачивает реализующую нужную функцию куски пакетов со всеми зависимостями. :)

Date: 2013-08-01 08:25 am (UTC)
From: [identity profile] falcrum.livejournal.com
И при этом все функции пишет один человек, чтоб было понятно, что делают? :)

Date: 2013-08-01 08:37 am (UTC)
From: [identity profile] metaclass.livejournal.com
Типы гарантируют что функция делает именно то что надо :)
А вот типы сами по себе придется проектировать централизованно.

Date: 2013-08-01 09:01 am (UTC)
From: [identity profile] kkirsanov.livejournal.com
>>Типы гарантируют что функция делает именно то что надо
Не а.
Вместо классического "авторы дебилы - кто же так функцию называет" будет "авторы дебилы, кто же в такие типы данные запихивает"

Хочу я функцию, которая строку в число переводит: http://www.haskell.org/hoogle/?hoogle=String-%3E+Int А там Ад, Израиль и throwSocketError

Date: 2013-08-01 09:16 am (UTC)
From: [identity profile] metaclass.livejournal.com
Там только одна подходит: read :: Read a => String -> a

Date: 2013-08-01 08:54 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Тут про число не сказано, слишком общая какая-то. Впрочем, в этом вашем хаскеле даже константа 4 слишком общая, не Int.

Date: 2013-08-01 06:20 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
a+b, a-b, a+0.12345*b -- они одного типа.

Date: 2013-08-01 08:12 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Разного :) И еще в типы можно включать размерность.
Кроме того, тривиальные функции обычно в либы нету смысла выносить.

Date: 2013-08-01 08:33 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
как это разного? все они возвращают ровно то, что на входе, да еще и число аргументов одинаковое. В общем, от их перепутывания формальные проверки типов не спасут.

Date: 2013-08-02 06:09 am (UTC)
From: [identity profile] nealar.livejournal.com
a+b и a+0.12345*b , как минимум, разного типа.
Первое работает с любыми числами, а второе - только с дробными.

Date: 2013-08-02 06:29 am (UTC)
From: [identity profile] nicka-startcev.livejournal.com
>а второе - только с дробными.

не обязательно, кстати. Во многих языках достаточно развесистая система "привидений типов".

a+0.12345*b может внутре считаться так:

float tmpf = b;
tmpf = tmp*0.12345;
int tmpi = tmpf;
return a+tmpi;

Date: 2013-08-01 08:34 pm (UTC)
From: [identity profile] nicka-startcev.livejournal.com
ну и про тривиальность -- можно и понавороченнее понавертеть. не этом суть. Какое-нибудь там положение кончика левой/правой ноги/руки в зависимости от набора углов -- углы те же, а положение другое.

Date: 2013-08-01 08:36 am (UTC)
From: [identity profile] bydlorus.livejournal.com
Для пыщпыщ и хуяк конечно очень удобно. Это вам не мейкфайлы вручную писать.

Date: 2013-08-01 09:28 am (UTC)
From: [identity profile] potan.livejournal.com
В ручную майкфайлы писать удобнее. А то захочет мавен хрен знает какую версию некой библиотеки, которую ни где не найдешь и сиди репу чеши.

Date: 2013-08-01 11:57 am (UTC)
From: [identity profile] volodymir-k.livejournal.com
надо чистить репу тому, что писал pom.xml -- раз автор написал версию, то у него она есть
или была

Date: 2013-08-01 12:42 pm (UTC)
From: [identity profile] potan.livejournal.com
Чистить репу нужно тому, кто решил что нельзя сослаться на самую свежею версию, а номер указывать только если обнаружена несовместимость.

Date: 2013-08-01 09:00 am (UTC)
From: [identity profile] evil-invader.livejournal.com
а если нужен целый фреймворк, а не конкретная функция?

Date: 2013-08-01 09:12 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
хидеры, хидеры, программисты... гм.
перепишешь. чо, меньше 2килознака в минуту печатаешь? не программист тогда!
а конфликт версий эт ваще нямка будет.
я уж молчу, шо найти сигнатуру - возможно изменившуюся - отдельный ад

Date: 2013-08-01 09:14 am (UTC)
From: [identity profile] evil-invader.livejournal.com
о, да. Версии это да. Не говоря уже о возможности выбрать более кошерную реализацию.

Date: 2013-08-01 10:26 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
да ладно реализацию.
найти инфу, что вот это - нужно... тонны описалов. тонны в квадрате описалов совместимости.
читайте, ага.
вместо одной строчки в гемфайле.

Date: 2013-08-01 09:19 am (UTC)
From: [identity profile] metaclass.livejournal.com
Изменить сигнатуру, не меняя то что делает функция? Это беспредел анти-статически-типизированный.

Date: 2013-08-01 10:24 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
ай.
вот перестали быть нужны для результата некоторые входные данные. совсем. и со сменой мажорной версии - выкинули нахрен мусор. и чо, будешь выискивать как сигнатура поменялась? или продолжишь пользоваться неподдерживаемым говном мамонта?

Date: 2013-08-01 11:30 am (UTC)
From: [identity profile] metaclass.livejournal.com
По моему, за изменение сигнатур (или там удаление используемых функций) при изменении версии, в нормальных местах руки отрывают и так.

Date: 2013-08-01 12:16 pm (UTC)
From: [identity profile] afa-at-work.livejournal.com
пф.
чо, требовать наличия нахрен не нужных данных? и да пофиг шо эти данные еще нужно выгрести - проц толстый, да.
депрекэйшн пару версий при вызове обертки со старым именем - и нахуй с пляжу. мусор с собой таскать никому не впилось. желающие дерьмища соберут или выберут нужную версию сами.

Date: 2013-08-01 09:15 am (UTC)
From: [identity profile] metaclass.livejournal.com
Фреймворк, который нельзя описать небольшим набором связанных типов для его API - плохой, негодный фреймворк.

Date: 2013-08-01 10:26 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
гы.
rake
опиши.

Date: 2013-08-01 12:03 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
пускай ставится

вместе с ОС

и железом для неё

и компанией, владеющей железом

и страной, регистрирующей компани.

и другим глобусом с другой солнечной системой

Date: 2013-08-01 12:09 pm (UTC)
From: [identity profile] evil-invader.livejournal.com
мне проще в помке прописать

Date: 2013-08-01 09:09 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
гы
вместо dllhell будет prochell
ну и улучшайзинг функции, с рефакторингом - добавят красок в жизнь девопса. розовой и голубой в основном.

Date: 2013-08-01 09:17 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ну для этого есть версии. Вон в мавенах все версии либы до начала времен живут. А тут даже версий указывать не надо - будет брать "последнюю совместимую по типу".

Date: 2013-08-01 09:30 am (UTC)
From: [identity profile] potan.livejournal.com
Пару раз натыкался, что версия изчезала. При этом один раз она тянулась по зависимостям и я не смог найти от куда.

Date: 2013-08-01 10:29 am (UTC)
From: [identity profile] afa-at-work.livejournal.com
а вот какую конкретно версию брать?
а по зависимостям?
я уж молчу шо и пропасть функция может. с депрекэйшн варном.

Date: 2013-08-01 09:17 am (UTC)
From: [identity profile] veremeenko-alex.livejournal.com
Ад будет тот ище :)

Date: 2013-08-01 10:05 am (UTC)
From: [identity profile] guamoka.livejournal.com
плейшнер в сотый раз переставлял кровати в борделе, ничего не действовало:-)

Date: 2013-08-01 10:24 am (UTC)
From: [identity profile] jakobz.livejournal.com
Лично я - за маленькие модули, вытаскивающиеся через менеджер, хорошую и большую штатную либу - чтобы модулям не надо было тащить ад из трансформеров комонад, общий стиль API, и поиск функций по типу как в hoogle.

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

В дотнете есть общий стиль и хорошая библиотека из коробки, через это даже уродский менеджер пакетов не особо и напрягает - 90% из коробки, остальное всё чаще всего делает то что нужно, и не от чего не зависит.

Как там в нетипизированных языках я вообще хз, меня вот сильно пугает перспектива подцепить несовместимые модули и в рантайме натыкаться на проблемы с их взаимоотношениями. Я как-то node.js пробовал - именно в такое говно прямо с ходу и наступил.
(deleted comment)

Date: 2013-08-01 12:07 pm (UTC)
From: [identity profile] volodymir-k.livejournal.com
тётенька, говорите, нужна?
ох уж эти программисты, чего выдумают, только чтобы не жениться


ни один даже дяденька не держит в голове весь даже standard API даже одного языка
результаты работы 1 000 000 программеров даже в гугл не выкладывают

Date: 2013-08-01 12:02 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
В прошлом году Джо Армстронг пропонувал сделать подобное и назвать Erlang2

Date: 2013-08-01 12:46 pm (UTC)
From: [identity profile] potan.livejournal.com
А нет ссылочки? По такому ключевому слову гуглиться плохо.

Date: 2013-08-01 01:35 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
В рассылке было, найти что-то не могу

Date: 2013-08-01 03:21 pm (UTC)
From: [identity profile] worker4food.blogspot.com (from livejournal.com)
[erlang-questions] Why do we need modules at all?
http://erlang.org/pipermail/erlang-questions/2011-May/thread.html#58768
Докатилось даже до русскоязычной Erlang-тусовки, отзывы были типа:
"Старый конь Армстронг начал впадать в маразм"

Date: 2013-08-02 06:02 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
"- all functions have unique distinct names"
org_erlang_lang_string_compareTo(string AnotherString)

Да, куда-то Армстронга понесло далеко. Хотя он реально умные вещи как правило говорит и делает.

Date: 2013-08-01 04:20 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
https://github.com/joearms/erl2

Date: 2013-08-01 07:43 pm (UTC)
From: [identity profile] potan.livejournal.com
Thanks!

Date: 2013-08-01 04:33 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
А чё общего с топиком, я чё-то не понял.

Date: 2013-08-01 04:50 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
Он тоже предлагал делать репозитории с функциями, которые будут компоноваться в программу.

Date: 2013-08-01 05:41 pm (UTC)
From: [identity profile] blackyblack.livejournal.com
Ясно. По ссылке я этого в упор не увидел. Тупо диалект эрланга совместимый с его же шеллом.

Date: 2013-08-01 01:19 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Тов. gds вполне годную вещь показал —
https://www.youtube.com/watch?v=MuWTQtyKih4

Date: 2013-08-01 03:54 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
И по возможности через theorems for free

Date: 2013-08-02 05:28 pm (UTC)
From: [identity profile] vsnisei.livejournal.com
Не так давно я предлагал ту же самую, тащем-та, идею, разве что глубже проработанную (см. линупс.орк.ру/forum/talks/9325089 )
В принципе, реализовать это - несложно, практически в любой ситуации. Что для нативного кода, что для управляемого.
Хоть кому-то это оказалось интересно, лол.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 23rd, 2025 06:41 pm
Powered by Dreamwidth Studios