LINUX.ORG.RU

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

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

Да не при чем тут вообще Java, на C++ скорость будет такая же, если не медленней

Например, как работают «тэги», которые используются во всяких вимах для автодополнения. Они просто бегут по тексту, и ищут регулярками паттерны типа «function NAME(params...) { ... }», и дальше NAME появляется в автодополнении

Понятно что результат работы такого алгоритма - полная чушь.

Вместо этого нормальные IDE должны полностью скомпилировать на лету весь проект, и дойти в компиляции до стадии построения финального высокоуровневого AST. Так как IDE понимает не весь AST, оно трансформирует его до понятного подмножества - «модели выполнения» сформулированной в терминах «модели языка».

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

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

Плюс в проекте может быть несколько языков (например бэкенд на C++ с фронтом на node.js). Плюс каждый новый фреймворк вводит новую терминологию и по сути создает дополнительный язык. Возможно, проект нужно «перекомпилировать» в разрезе сразу нескольких языков!

Плюс всё это многопоточно

Плюс что угодно из этого может поменяться, в том числе в режиме отладки

Считай сам, сколько это стоит ресурсов, и где тут бутылочное горлышко. По мне так оно в первую очередь в необходимости непрерывно ИНДЕКСИРОВАТЬ ВЕСЬ МИР, и потом держать его в кэше, мгновенно перестраивая кэш в самых скотских условиях. Имхо, по сравнению со сложностью задачи, разница между тем, реализовано это на крестах или жабе - меркнет (вот было бы на питоне или жабоскрипте - да, задница).

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

Да не при чем тут вообще Java, на C++ скорость будет такая же, если не медленней

Например, как работают «тэги», которые используются во всяких вимах для автодополнения. Они просто бегут по тексту, и ищут регулярками паттерны типа «function NAME(params...) { ... }», и дальше NAME появляется в автодополнении

Понятно что результат работы такого алгоритма - полная чушь.

Вместо этого нормальные IDE должны полностью скомпилировать на лету весь проект, и дойти в компиляции до стадии построения финального высокоуровневого AST. Так как IDE понимает не весь AST, оно трансформирует его до понятного подмножества - «модели выполнения» сформулированной в терминах «модели языка».

Так как ты можешь в любой момент вызвать не только свой код, но и любой системный - нужно на лету компилировать не только твой проект, а вообще всю нижележащую платформу

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

Плюс в проекте может быть несколько языков (например бэкенд на C++ с фронтом на node.js). Плюс каждый новый фреймворк вводит новую терминологию и по сути создает дополнительный язык. Возможно, проект нужно «перекомпилировать» в разрезе сразу нескольких языков!

Плюс всё это многопоточно

Плюс что угодно из этого может поменяться, в том числе в режиме отладки

Считай сам, сколько это стоит ресурсов, и где тут бутылочное горлышко. По мне так оно в первую очередь в необходимости непрерывно ИНДЕКСИРОВАТЬ ВЕСЬ МИР, и потом держать его в кэше, мгновенно перестраивая кэш в самых скотских условиях. Имхо, по сравнению со сложностью задачи, разница между тем, реализовано это на крестах или жабе - меркнет (вот было бы на питоне или жабоскрипте - да, задница).