История изменений
Исправление 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'овский.
ответ на это надо осмыслить и потыкать, а щаз времени нету.
Прежде чем что-то осуждать следует разобрать что и как.