Как стать автором
Обновить

Комментарии 9

Интересно как ведет себя jvm-овский gc для чистого языка как frege? Он не тормозит от большого кол-ва маленьких объектов в памяти?

Плюсую. Ещё хотелось бы взглянуть на бенчмарки какого-нибудь Finger Tree для этого языка, в GHC, например, патчили рантайм, чтобы там такие деревья действительно шустро работали...

Сразу стоит отметить, что мы занимались исключительно разработкой плагина.

Что насчет большой производительности языка, то о ней даже не стоит говорить. Если посмотреть, во что превращается код на Frege, то можно заметить, что он полон различных оберток (например, Lazy<>), которые сильно тормозят его. 

Но Frege не гонится за производительностью: его преимущество в том, что он такой же лаконичный и безопасный (в плане иммутабельности данных), как Haskell, но совместим с другими JVM-языками. Да, производительность — его слабое место :(

Интересно, сколько времени на это ушло? Когда писал свой плагин, документация скудная была. Информацию приходилось по крупицам искать в других плагинах или в кишки IDE с дэбагером лезть.

Могу сказать, что на одну лишь навигацию с индексацией было потрачено около 30-40ч в неделю в течении 1.5-2 месяцев, и она ещё очень далека от идеала.

С документацией до сих пор большие проблемы, хотя есть тот милый туториал, указанный в статье, но его все равно слишком мало. В основном, информация бралась из плагинов для Фортрана, Хаскеля и Эльма. И, конечно, приходилось очень много дебагать, как вы уже сказали, в кишках :(

На систему сборки ушло довольно много времени, хотя она и не была завязана на фрейморк IDEA. Все потому, что язык слабо поддерживается, версии компиляторов между собой плохо совместимы, да и существующие системы сборки Frege сильно устарели и не очень хотят работать :(

Но вообще о системе сборки будет написано в 2 части статьи)

Рассматривали вариант сделать https://langserver.org/ ? В теории это могло бы дать поддержку языка во множестве различных ide. А возможно бы и упростило вам работу, благодаря наличию документации и рабочих примеров.

Language Server хороший вариант, если мы хотим сделать универсальный вариант для нескольких ide, текстовых редакторов и тд. Но продукты JB как раз отличаются тем, что реализуют всё сами, а не пользуются готовыми LSP. Плюс этого подхода — более гибкий функционал, больше возможностей для интеграции, скорость работы и тд. Для плагинов принят такой же подход. Ну а frege без java не имеет смысла (потому что тогда это просто хаскель), так что интегрироваться только в IDEA - нормально вроде

Отличное введение в платформу IntelliJ! Буду использовать как еще одно пособие для новичков.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий