LINUX.ORG.RU
ФорумTalks

Почему бы IDE не общаться с компилятором бинарными блобами?

 ,


0

2

Можно же передавать между IDE и компилятором сразу AST. Все равно IDE парсит исходники и создает какое-то дерево внутри (не обязательно AST), а потом компилятор делает подобную работу второй раз. Автокомплит, форматирование, все это ведь может делать компилятор, в нем уже есть нужные абстракции.

И сохранять исходники нужно сразу как обогащенный AST, что-бы по нему однозначно восстанавливался правильно форматированный текст, который нужен только в окне редактора. Тогда неправильно форматированный код просто не можно будет сохранить и не будет этого всего страдания, не будет табы vs. пробелы.

Ответ на: комментарий от vlad9486

Интересно для чего это может быть нужно?

// Корректно в C++03, некорректно в C++11 и выше.
#include <iostream>
int main() {
  auto int a = 1;
  std::cout << a << "\n";
  return 0;
}
// Корректно в C++11 и выше, некорректно в C++03.
#include <iostream>
int main() {
  auto a = 1;
  std::cout << a << "\n";
  return 0;
}
i-rinat ★★★★★
()
Ответ на: комментарий от Harald

Это часть формата. Именно потому я написал

обогащенный AST
что-бы по нему однозначно восстанавливался правильно форматированный текст

vlad9486
() автор топика
Ответ на: комментарий от i-rinat

Очевидно же, в хедере бинарника писать версию нужно. Да и не для C++ это. Его лучше не трогать, там слишком много всего готового и зрелого.

vlad9486
() автор топика
Ответ на: комментарий от t184256

Я не видел нормальных программистов не использующих ИДЕ последние 15 лет.

Наверное наши определения нормально ти разнятся

grim ★★☆☆
()
Ответ на: комментарий от pon4ik

Претензия была в том что нужен будет тот же компилятор. Если язык программирования определяет программу не как текст, а как бинарь и стандартизирован, то проблемы нет.

vlad9486
() автор топика
Последнее исправление: vlad9486 (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

Речь про демона была. Типа clang code model в Qt Creator. У меня 3ГБ через пол часа отжирает на проекте в 20к строк.

RazrFalcon ★★★★★
()
Ответ на: комментарий от vlad9486

Серьезный проект будет на машине программиста год собираться и при работе ему может требоваться БД, скажем на 1 ТБ висящая в оперативке.

peregrine ★★★★★
()
Ответ на: комментарий от vlad9486

В самых современных языках для этого есть тулчейн, который интегрируется с IDE и фиксит форматирование. Плагин для Go в VSCode ровно тем фашизмом и занимается, который ты хочешь. И даже сохранять (сохраняет см где-то у себя в кеше) нерабочий код он отучивает, иначе всё будет подчёркнуто, лишние импроты выпилятся и так далее.

WitcherGeralt ★★
()
Ответ на: комментарий от vlad9486

У меня для этого везде есть ветка draft. Если я что-то не закончил, я раскидываю TODO и пушу туда. CI это не собирает, ветка никому не мешает, так же можно делать ветки под конкретные фичи, а по завершении мерджить их в девелоп и мастер.

WitcherGeralt ★★
()
Ответ на: комментарий от peregrine

Нет, не плохо. Плохо работать с текстом. С текстом пусть гуманитарии работают. Инструментам нужен сразу смысл, а не текст, а он лучше структурами компилятора передается. Может быть неудобно будет дифы строить, а может наоборот, удобнее.

vlad9486
() автор топика
Ответ на: комментарий от WitcherGeralt

Это понятно, но у меня там всегда код компилируется, даже если не доделан.

vlad9486
() автор топика
Ответ на: комментарий от peregrine

Ну так пусть собирается на билд сервере. Программист то все равно на своей машине работает, даже если реально это выполняется где-то еще. Мне просто непонятно почему может быть нужно не использовать IDE, кроме мазохизма (аскетизма).

vlad9486
() автор топика
Ответ на: комментарий от vlad9486

Вообще-то программист только и делает что работает с текстом в IDE или текстовом редакторе. Даже формат фалов с которыми он работает самый что ни на есть текстовый. Просто текст тексту рознь.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Вообще-то программист
программист

Так речь же о инструментах. Инструменты лучше пусть работают с бинарями.

vlad9486
() автор топика
Ответ на: комментарий от peregrine

Ну пусть не IDE, а редактор. Только вот этот редактор должен понимать бинарь языка, в чем проблема то? Для работы с текстом нужна программа (IDE или редактор), для работы с бинарями тоже нужна программа.

Идея не в том что-бы всегда использовать только IDE, а в том, что-бы в исходниках не можно было выразить неправильное форматирование. И формат исходников был больше похож на то с чем работает компилятор и другие инструменты. А уже программа редактор отвечает за то, то программист увидит текст.

vlad9486
() автор топика
Ответ на: комментарий от vlad9486

Так речь же о инструментах

У нас есть инструменты гуманитарии, не знал. Запишу в цитаты.

peregrine ★★★★★
()
Ответ на: комментарий от vlad9486

Только вот этот редактор должен понимать бинарь языка

Бинаря может и не быть. Более того, бинарь может работать только на каком-то микроконтроллере и вообще не уметь работать на PC. А так, правильный подход, использовать (где это возможно) Clang для анализа кода, как это и делают современные IDE

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от vlad9486

не можно было выразить неправильное форматирование

что такое «неправильное форматирование» в твоём понимании

Harald ★★★★★
()
Ответ на: комментарий от ixrws

i7 оно еле вешелится

Speed не доведет до добра

Или вам религия не позволяет 16гб и SSD воткнуть?

если сравнивать скажем с emacs и vim

Мы же не о одминах гворим, не так ли?

grim ★★☆☆
()

Такое уже было реализовано в ZX Spectrum 48K. Там даже клавиатура была заточена под язык!

sergej ★★★★★
()
Ответ на: комментарий от InterVi

Дык ОП описал типичный линакс-way любителей пересобирать ведро. На лоре как минимум несколько таких человек есть.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от peregrine

Плохо будет разработчикам этих инструментов...

Почему?

Думаете зря redhat сделала поддержку Language Server Protocol для Java и все кому ни лень делают сервера для ЯП?

Вроде как только IntelliJ отказывается ими пользоваться.

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от thunar

Наоборот. Я описал отказ от подхода любителей пересобирать ведро.

vlad9486
() автор топика
Ответ на: комментарий от Harald

Форматировать код можно по разному. Расставлять пробелы, пустые строки можно по разному. В некоторых языках можно ставить, или не ставить дополнительные знаки препинания.

Короче, есть много вариантов кода, который по разному выглядит в тексте, но превращается в тот же AST с теми же именами сущностей.

Пусть один такой вариант называется «правильным». Тогда все остальные - неправильные.

vlad9486
() автор топика
Ответ на: комментарий от vlad9486

Текст не нужен

Ещё один... запомни, раз и навсегда: текст — нужен.

Miguel ★★★★★
()
Ответ на: комментарий от grim

Что ты понимаешь под IDE?

Я использую Emacs (точнее AquaMacs). Из фишек, специфичных для языка — только подсветку синтаксиса. Это IDE?

Miguel ★★★★★
()
Ответ на: комментарий от vlad9486

А что делать с ассемблерными вставками, например? Бинарик на стадии, которая корректно их обработает уже очень бинарный.

peregrine ★★★★★
()
Ответ на: комментарий от grim

Увы, 16гб и ssd не помогает. Не понимаю в чём проблемы, но на VS Studio банально тормозит ввод с клавиатуры. Вероятно не ввод сам по себе, а те проверки, которые делает среда для подсветки ошибок и подстановок. Ну и переключение между файлами и проектами также наверняка происходят не быстро в силу различных проверок.

Нет, мы не говорим об админах, честно говоря не встречал админов с emacs, с vim встречал. Как-то emacs слишком много для админа. На кой админу тот же org-mode или встроенная почта. А вот менеджеру проекта это вполне себе пригодится.

ixrws ★★★
()
Ответ на: комментарий от Miguel

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

А текст не нужен, потому что это дебажное представление. Первым программистам было нужно держать все в тексте потому что у них не было инструментов и приходилось все вручную. Сейчас же инструментов полно, но все равно все привыкли к уродскому тексту.

vlad9486
() автор топика
Ответ на: комментарий от peregrine

Ассемблерные вставки можно хранить сразу как машинный код. Он же однозначно превращается назад в мнемоники.

Еще литералы естественно было бы сохранять сразу как они будут отображены в памяти.

vlad9486
() автор топика
Ответ на: комментарий от vlad9486

сразу как машинный код

А какая архитектура машины? Внезапно, она может быть не той, на которой ведется разработка.

peregrine ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.