테스트 님이 쓰신 글 :
: 파스칼 인라인 변수를 오류로 처리하는 것은 여전하고
:
: C++ code insight 기능도 동작하기는 하나
: 인덱싱 속도가 매우 느려서 구문파싱이 완료될 때 까지
: 한참 기다려야 동작한다는 것이 문제네요.
:
: 동작 안될 때는 소스파일을 강제로 저장하고
: 일단 컴파일을 한번 해줘야 비로소 동작.
: 너무 엉터리로 만들어 놓은 느낌이 다분 합니다.
:
: IDE의 안정성과 정교함은 비쥬얼 스튜디오 따라 갈려면 요원해 보입니다.
: 컴파일러와 IDE 만드는 기술력은 MS에 비하면 기술력이 한참 떨어지는 듯.
:
:
: 그리고 사용하다보면 IDE 에서 예외도 자주 발생하네요.
답변:
1. 델파이
Pascal Inline Variable 신텍스를 오류로 표시하는 건
파스칼 랭귀지 서버 프로토콜이 구현되어 컴파일러 레벨에서의 파싱코드가 지원되지 않으면...
지금과 같이 단순하게 Lex 코드 베이스로 구현되어 있는 방식으로는 처리할 수 없을 거고.
델파이는 Language Server Protocol을 이용하는 구조가 아닌, 기존의 code insight legacy 구조에 머물러 있음.
2. C++ Builder
Code insight 방식은 Code completion 기능을 지원하기 위해 IDE 내부에서 파싱처리 했던 기존의 방식인데...
파싱 처리시 로드가 크게 걸릴 경우, IDE를 얼려 버리는 문제를 갖고 있었기 때문에
기존 방식을 버리고 Language Server Protocol 을 구현한 별개의 외부 프로세스(엠바 툴의 경우 오픈소스인
cquery.exe 베껴서 배포하고 있음)를 이용하는 방식을 사용하고 있는데...
기존의 code insight 방식과 LSP(Language Server Protocol)방식은 구조가 완전이 다릅니다.
현재 10.3.2 도... IDE의 LSP 클라이언트 코드가 잘못 구현되어 있어요.
강제로 소스코드에 스페이스 문자 삽입 등... 변경을 가하지 않으면 IDE 내부 클라이언트 코드에서 LSP 서버로(cquery.exe)
json rpc 요구패킷을 파이프라인으로 보내지 않고 있습니다. 어떤 애들이 작업하고 있는지는 몰라도 C++ LSP 구조를 잘모르고
있는 파스칼 프로그래머 몇몇으로 구성된 인원이 대충 만들고 있나 봅니다.
소스코드에 변경이 가해졌을 경우... LSP 에서 파싱을 수행할 때도... precompiled 방식을 이용해서 불필요한 파싱을 최소화
하도록 구현해서 응답을 빠르게 해야 하는데 이마저도 이루어지고 있지 않은 것 같고요. 한마디로 엉망 이죠.
C++ 디버깅도 문제가 있는데요...
32비트 코드 디버깅시 브레이크는 걸리나... 변수 값이 죄다 ???? 로 나옵니다.
변수 값을 볼려면... legacy 컴파일러를 사용하거나 64비트로 컴파일 해야 해요.
32비트 legacy 컴파일러 사용시... C++17 기능은 사용하지 못함.
제품을 이따위로 개판으로 만들어 놓고...
생산성이 좋아졌네... 큰소리 치면서 릴리즈 하는 뻔뻔함은 도대체 어디서 나오는 건지.
요즘은 외부에서 누굴 만나서 당당하게 엠바툴 쓰세요라고 말을 못하고 있습니다. 아니 안하고 있습니다. 괜히 욕먹을 거 같아서요..