Будущее программирование

Nov 29, 2019 16:25


Я тут сделал доклад в JetBrains (внутренний, сорян) про будущее IDE. И после доклада было много вопросов из серии “Но ведь будущее определенно за Х, а вы его даже не рассматриваете”. Отвечаю.

- Почему вы не делаете IDE для браузера?


Read more... )

Leave a comment

blackyblack November 29 2019, 15:34:51 UTC
Но ведь vs code это яваскрипт. И нормально вроде запускается. И выглядит неплохо.

Reply

tonsky November 29 2019, 15:37:19 UTC
а что я где-то на яваскрипт гнал?

Reply

blackyblack November 29 2019, 16:02:16 UTC
Вон же написано: только с++, только хардкор. Кроссплатформенность у vs code тоже из коробки идет, насколько я знаю. Короче, мой поинт в том, что создатели vs code как-то смогли, не смотря на все описанные проблемы. Как?

Reply

tonsky November 29 2019, 16:38:55 UTC
Главный, но не единственный. Плюс VS Code не запускается на iOS, насколько я знаю? JS это приятный язык для скриптования плагинов, но вот чтобы прям core на нем писать, Atom вон например отказались (как VS Code не знаю).

Reply

thedeemon December 1 2019, 15:53:07 UTC
Говорят, секрет скорости vscode в том, что там далеко не только JS, нативного кода тоже дофига.

Reply

mnogo_hodovka December 10 2019, 12:17:26 UTC
А что скажете насчёт Vim + SpaceVim + нормальный терминал типа kitty/alacritty? Может ли он заменить IDE? Не для монструозных Java/Scala, а для Rust, C, C++, D, Clojure, Erlang и подобного...

Reply

blackyblack December 10 2019, 23:57:26 UTC
Clojure и Erlang - да. Они по сути в блокноте + репл пишутся. C, C++, Java, Scala - в IDE без всякого баловства с Вим/Емакс.

Reply

mnogo_hodovka December 11 2019, 09:53:13 UTC
Не пробовал писать в SpaceVim на плюсах, но не подскажете, в чём может быть фрустрация? Какая фича из IDE, вот прям мастхэвная, может понадобиться, и её не будет в SpaceVim?

Reply

blackyblack December 11 2019, 10:27:18 UTC
Не знаю, какие фичи есть в SpaceVim. Когда я работал на Емаксе, было прям сильно неудобно. Конкретно, список того, что я хочу видеть от IDE:
- Переход к определению символа.
- Поиск по проекту (не по каталогу, а по документам, включенным в проект).
- Хорошее управление проектом, возможность добавлять отдельные каталоги или файлы вручную.
- Поддержка билд систем: грэдл, мавен.
- IntelliSense - подсказка параметров, методов объекта.
- Отладка внутри IDE.
- Подсветка ошибок, ворнингов.

Reply

mnogo_hodovka December 11 2019, 12:19:59 UTC
> Переход к определению символа
> Подсветка ошибок, ворнингов
> IntelliSense - подсказка параметров, методов объекта

Реализовано в SpaceVim, есть также плагин для Rust.

> Отладка внутри IDE

Да, есть такой плагин.

> Поддержка билд систем: грэдл, мавен

Ну это что-то Java-специфичное. А вот для всяких meson, ninja, cargo (Rust) и поддержка не нужна. Открыл простой конфиг и подправил.

> Поиск по проекту (не по каталогу, а по документам, включенным в проект)
> Хорошее управление проектом, возможность добавлять отдельные каталоги или файлы вручную

Единственная вещь, которой нет в SpaceVim. Но сам workflow сомнительный: зачем держать в директории что-то, не включённое в проект? Но в любом случае ripgrep поддерживается через плагин, а лишние файлы и директории можно в игнор добавить.

Так или иначе, выглядит сомнительным сама идея покупки IDE и установка блоба на компьютер, на котором придётся работать с проприетарным кодом. Ведь блоб может и украсть исходники. Паранойя, но вполне уместная, так как можно и без проприетарных IDE

Reply

blackyblack December 11 2019, 12:37:22 UTC
Если go to definition реализован через ctags, то это не подходит.

Reply

mnogo_hodovka December 11 2019, 16:45:38 UTC
cscope.

Reply

blackyblack December 11 2019, 16:59:25 UTC
Мне кажется, там те же недостатки, что у ctags - нужно вручную делать переиндексацию и не различаются разные объекты с одинаковым названием.

Reply

mnogo_hodovka December 11 2019, 17:11:29 UTC
Во всяких вимах с модификациями первую проблему уже решили давно. Алгоритм прост: при сохранении файла он (и только он) быстро переиндексируется.

> не различаются разные объекты с одинаковым названием

Не проверял. Возможно, это так. И здесь сразу вопрос: зачем в одном сишном/растовом/дишном/плюс-плюсном проекте так делать?

Reply

blackyblack December 11 2019, 17:17:27 UTC
А если модификация файла пришла например из гита, индексер это заметит?
Не знаю зачем, всякое бывает. Когда я с этой штукой экспериментировал, непонятливость в плане локального/глобального скоупа раздражала.

Reply

mnogo_hodovka December 11 2019, 19:43:37 UTC
> А если модификация файла пришла например из гита, индексер это заметит?

Пока что это не реализовано, а реализован хоткей "Обновить базу данных тэгов проекта в фоновом режиме".

Но в целом вещь простая: в Linux есть inotify-tools, можно запускать автоматически в бэкграунде при запуске SpaceVim и заскриптовать, чтобы при изменении файлов добавлял их в базу тэгов.

Reply


Leave a comment

Up