Fork me on GitHub
#clojure-russia
<
2015-08-12
>
nicola11:08:27

Давайте после FP conf тогда, с отчетиком. След. понедельник

linuccio13:08:20

Почему Clojure не написана на Clojure?

linuccio13:08:34

Сам транслятор

linuccio13:08:40

Базовые структуры данных

linuccio13:08:15

Почему принято именно такое архитектурное решение?

linuccio13:08:11

Почему не стали делать bootstrapping как, скажем, в OCaml?

wiruzx13:08:54

Производительность?

linuccio13:08:54

Или нежелание имплементировать какие-то низкоуровневые вещи в языке?

linuccio13:08:57

Которые там не нужны

dottedmag13:08:03

Интероп.

dottedmag13:08:12

Зачем нужна своя строка, когда есть java.lang.String?

linuccio13:08:39

А почему небыло бы интеропа?

dottedmag13:08:55

Потому что тогда нужно было бы бридж.

linuccio13:08:13

но ведь всё компилируемое?

dottedmag13:08:13

=> много-много лишних CPU-тактов на каждый "нырок" в Java.

linuccio13:08:06

В байткоде JVM есть обращение к методам, классам?

linuccio13:08:20

создание объекта, преобразование типов...

linuccio13:08:20

Я так понимаю никаких нырков не было бы

linuccio13:08:28

И интероп был бы такой же прозрачный

linuccio13:08:03

Тут именно какие-то инженерные причины, но какие я не понимаю

linuccio13:08:00

Если только интероп в обратную сторону. Что бы Java могла вызывать функции Clojure

dottedmag13:08:31

Ну вот какой байткод бы генерировал (.toLowerCase "HELLO"), если бы литерал был не java.lang.String?

dottedmag13:08:46

В обратную сторону интероп нужен, конечно.

linuccio13:08:56

Почему он не был бы String?

dottedmag13:08:21

Ну вот базовые структуры данных если не Java, а на самой Clojure написать.

dottedmag13:08:37

Все эти строки, таблицы и массивы.

dottedmag13:08:17

То, что компилятор не на Clojure - это уже не так важно, можно и на Clojure сделать, если захочется.

linuccio13:08:49

Не, я не про JDK, а про хешмепы кложуровские

linuccio13:08:59

например

linuccio13:08:06

и функции и прпр

serce13:08:23

Clojure динамическая, на мультидиспатчинг серьезный оверхед

serce13:08:43

А структуры данных должны быть максимально перфомансны

linuccio13:08:07

вот, то есть всё же нежелание делать что-то более низкоуровневое в языке?

linuccio13:08:47

Типа, если делать бутстраппинг, то нужно делать сначала то, что сделает структуры данных на низком уровне

linuccio13:08:22

а хочется сразу язык чистый от низкоуровневости?

dottedmag13:08:34

Бутстраппинг полезен тогда, когда платформа очень бедная. А тут платформа отличная, можно прямо на ней реализовать кучу кода, не тратить время на то, чтобы два раза реализовывать одно и тоже, и получить вдобавок возможность в любой момент полную сборку с нуля провести.

linuccio13:08:16

эт да, я с вами согласен

linuccio13:08:27

но JDK в бинарном виде и так можно было бы использовать

linuccio13:08:41

бутстраппинг касался бы только того, что в самом трансляторе

dottedmag13:08:18

Транслятор - штука достаточно развесистая (это ж не брейнфак), и для него пришлось бы написать ощутимое количество бутстрап-кода.

linuccio13:08:44

Скажем, делаем какой-то абстрактный лисп, начиная с того, что почти напрямую в байткод компилится

linuccio13:08:54

И выращиваем динамическую Clojure simple_smile

dottedmag13:08:59

Но зачем?

linuccio13:08:04

Вот и я про то же

linuccio13:08:55

Прекольная ссылка

linuccio13:08:59

Просто интересно зачем)

linuccio13:08:04

Зачем это может понадобиться

linuccio13:08:07

Какие преимущества

linuccio13:08:11

Какие недостатки

linuccio13:08:14

И почему так не сделали

linuccio13:08:31

Прочитал по ссылке. Получается, что это было/есть в планах.

dottedmag13:08:44

Последний раз страницу трогали 5 лет назад

linuccio13:08:35

Да, но аргументы убедительны. Скорее нужно больше сил, чем это просто плохая идея.

jekavz13:08:54

там есть комментарий "Comment: Migrated to Confluence 4.0"

linuccio13:08:11

Вообще, семантика конструкций бутстрап кода не будет же проявляться в самом языке

linuccio14:08:52

Или как в C# - managed & unmanaged код

linuccio14:08:05

@jekavz что это значит?

jekavz14:08:08

@linuccio: я так понимаю, что 5 лет назад статья из вики переехала в Confluence 4.0

linuccio14:08:08

то есть, возможно идея вообще древняя и по практическим причинам не интересная?

jekavz14:08:37

возможно она активно обсуждается в другом месте и сейчас simple_smile

ilshad14:08:17

А мне кажется, что бустрап - вполне логичное развитие, просто пока руки не дошли и, учитывая что роадмап есть, вряд ли дойдут в обозримом будущем. Т.е. хорошо бы иметь, но не такой уж высокий приоритет.

dottedmag14:08:02

jekavz: Это и есть confluence. Это комментарий при апгрейде самой confluence.

kirillov19:08:27

Ребята, задумал тут поработать с русским текстом, начал искать библиотеки для морфологического разбора русского текста и обломался. Что, реально так плохи дела? Даже Java пестрит только модулями для Lucene

dottedmag21:08:45

Нуу. Есть mystem, который можно завернуть, но это будет долго его каждый раз вызывать.

kirillov21:08:18

да… смотрю в сторону CoreNLP и как построить кастомную модель на базе русских корпусов (http://opencorpora.org/?page=downloads)