LINUX.ORG.RU

История изменений

Исправление Norgat, (текущая версия) :

в Java экзепшены семантичные. А в clojure c java-интеропом (а нафига он нужен без джавы?) вместо экзепшена вылезает нечитаемая портянка на N экранов

Там реально нужны строчек 5. В них есть указания на файл и строку + описание Java exception. Очень быстро привыкаешь к этому, хотя да, немного неудобно, согласен. Вот в ClojureScript действительно ад с эксепшенами в рантайме.

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

Представил. И даже видел: https://github.com/clojure/core.typed (хорошим кодом я это не считаю, т.к. смесь из кучи математики + кучи кода + одного разработчика + кучи лет разработки и когда я смотрел на него последний раз, то там были хаки для обхода циклических зависимостей + макросы по 100 с лишним строк).

Патчи именно в этот проект не писал, но разбирался с его внутренней структурой так:

1) Понять что там лежит в основе. (о чём код)

2) Разобраться с зависимостями файлов друг от друга.

3) Найти точки входа (вариант тут не один, но и не бесконечность).

4) Найти где и что падает.

5) Запустить REPL и в нём прогнать случаи с интересующим кодом руками, чтобы понять где и в чём проблема. В этот момент мы чётко увидим, от каких данных зависит та или иная функция (атомы, биндинги).

6) Знаю что, где и почему падает - пофиксить это.

Тулзы для трейсинга имеются: https://github.com/clojure/tools.trace https://github.com/clojure/tools.analyzer.jvm https://github.com/clojure/tools.analyzer

Ясен чёрт, что это требует времени. Ну а разбор какого кода времени не требует?

Профилировщик можно брать стандартный JVM'овский.

ответ на это надо осмыслить и потыкать, а щаз времени нету.

Прежде чем что-то осуждать следует разобрать что и как.

Исходная версия Norgat, :

в Java экзепшены семантичные. А в clojure c java-интеропом (а нафига он нужен без джавы?) вместо экзепшена вылезает нечитаемая портянка на N экранов

Там реально нужны строчек 5. В них есть указания на файл и строку + описание Java exception. Очень быстро привыкаешь к этому, хотя да, немного неудобно, согласен. Вот в ClojureScript действительно ад с эксепшенами в рантайме.

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

Представил. И даже видел: https://github.com/clojure/core.typed (хорошим кодом я это не считаю, т.к. смесь из кучи математики + кучи кода + одного разработчика + кучи лет разработки и когда я смотрел на него последний раз, то там были хаки для обхода циклических зависимостей + макросы по 100 с лишним строк).

Патчи именно в этот проект не писал, но разбирался с его внутренней структурой так:

1) Понять что там лежит в основе.

2) Разобраться с зависимостями файлов друг от друга.

3) Найти точки входа (вариант тут не один, но и не бесконечность).

4) Найти где и что падает.

5) Запустить REPL и в нём прогнать случаи с интересующим кодом руками, чтобы понять где и в чём проблема. В этот момент мы чётко увидим, от каких данных зависит та или иная функция (атомы, биндинги).

6) Знаю что, где и почему падает - пофиксить это.

Тулзы для трейсинга имеются: https://github.com/clojure/tools.trace https://github.com/clojure/tools.analyzer.jvm https://github.com/clojure/tools.analyzer

Ясен чёрт, что это требует времени. Ну а разбор какого кода времени не требует?

Профилировщик можно брать стандартный JVM'овский.

ответ на это надо осмыслить и потыкать, а щаз времени нету.

Прежде чем что-то осуждать следует разобрать что и как.