IDE가 백그라운드 컴파일 / 빌드를 수행하지 않는 이유는 무엇입니까?


13

오늘날 나는 상당히 복잡한 컴퓨터에서 개발하고 있으며, 여러 개의 코어, SSD 드라이브 등이 있습니다. 여전히 컴퓨터를 프로그래밍하는 대부분의 시간은 아무 것도하지 않습니다. 다소 복잡한 프로젝트를 컴파일하고 실행 / 배포해야 할 때 여전히 몇 초가 걸립니다. 왜? 이제 "인스턴스 시대"에 점점 더 많이 살고 있기 때문에 Visual Studio에서 F5를 누르고 애플리케이션을 즉시 실행 / 배포 할 수없는 이유는 무엇입니까?

몇 초는 그렇게 나쁘지 않을지 모르지만 여전히인지 마찰과 시간이 더 해져서 솔직히 프로그래밍을 덜 재미있게 만듭니다. 그렇다면 컴파일은 어떻게 즉각적 일 수 있습니까?

글쎄, 사람들은 다른 어셈블리에서 파일을 편집하는 경향이 있습니다 .Visual Studio / IDE가 지속적으로 수정하고 모든 것을 적절하게 컴파일하고 빌드하면 어떻게 될까요? 그들이 정말로 진보하고 싶었다면 클래스별로 컴파일 할 수 있습니다. 컴파일이 작동하지 않을 수도 있지만 자동으로 아무 작업도 수행 할 수 없습니다 (오류 창에 오류 메시지 추가 제외).

분명히 오늘날의 컴퓨터는이 작업에 핵심을 두 개만 부여 할 수 있으며 누군가 성가신 것을 발견하면 옵션으로 비활성화 할 수 있습니다. 완벽하고 실용적이기 위해서는 해결해야 할 수천 가지의 기술적 인 문제와 멋진 섀도 복사가 있지만 프로그래밍이 더 원활하게 이루어질 수 있음을 알고 있습니다.

이 시나리오가 불가능한 실질적인 이유가 있습니까? 계속해서 바이너리를 작성하는 것의 마모가 너무 많은가? 배포 / 실행할 때까지 어셈블리를 메모리에 보관할 수 없습니까?


Visual Studio는 vb.net, 적어도 부분적으로는 C #에서이를 수행합니다. 이것은 실제로 c # / vb.net 영원한 논쟁의 한 부분입니다 : codinghorror.com/blog/2007/06/…
Matthieu

그래, 나는 그 기사를 보았다. 이는 대부분 오류 메시지에 대한 구문 분석 / 컴파일과 관련이 있으며 즉각적인 배포 / 실행 응용 프로그램에는 그다지 중요하지 않습니다.
Homde

@konrad, VB.NET도 백그라운드 컴파일을 제공하지 않습니까?
Pacerier

답변:


6

Eclipse는 자동 컴파일 및 빌드를 수행합니다. 그들이 어떻게하는지 확인하고 싶을 수도 있습니다. 오픈 소스입니다. 파일을 저장할 때마다 컴파일되는 것 같습니다.


1
만세 이클립스!
MattC

훌륭합니다. 누구라도 사용하고 있습니까? 차이가 있습니까?
Homde

2
그것은 큰 차이를 만든다. Java 프로그래밍 개발부터 Java 기반의 웹 2.0 애플리케이션, ffmpeg 개발 및 확장 (C의 경우)에 이르기까지 수년 동안이를 사용했습니다. 및 C ++), PERL 및 Python. 상상할 수있는 거의 모든 언어를위한 플러그인이 있습니다.
Brian

6

파일을 컴파일 할 수있는 상태로 만들기 전에 몇 번의 키 입력을했는지 생각해 본 적이 있습니까? 진지하게, 클래스 f, 클래스 fo, 클래스 foo 등을 컴파일하려고하면 어떻게 될지 살펴보십시오. IDE에서 오타를 수정하고 타이핑을 끝내도록 지시하는 시점은 언제입니까? 나는 처음부터 무언가를 창조 할 때 이것을 얼마나 잘 생각했는지 궁금합니다.


실제로 편집중인 파일 / 클래스를 컴파일하는 것은 아닙니다. 그러나 내가 편집 한 다른 어셈블리는 공정한 게임이어야하며 부분 컴파일을 수행 할 수 있다면 같은 어셈블리의 다른 클래스도되어야합니다 (아마도 복잡한 작업 일 것입니다). 종속성을 해결하는 데 문제가있을 수 있지만 극복 할 수없는 것은 아닙니다. 최악의 경우
외에는

2

Visual Studio는 자동 컴파일 기능을 제공하지 않습니다. 그러나 예, Eclipse와 같은 일부 IDE는 파일을 저장할 때 자동 컴파일을 수행합니다. 향후 버전의 Visual Studio에서이 기능이 추가 될 것으로 기대합니다.


1

무엇을 추측하십시오 ... 경고를 제공하는 최신 IDE를 사용하는 경우 백그라운드 컴파일을 수행하고 있습니다. 그렇게하면 해당 항목이 그대로 컴파일되지 않는다는 것을 알 수 있습니다.


7
백그라운드 파싱을하고 있습니다. 그것은 전체 컴파일과 동일하지 않습니다.
메이슨 휠러

물론 그렇습니다. 어쨌든 일부 컴파일 / 파싱이 완료되면 빌드 / 실행 프로세스에서 완전히 사용하지 않는 이유는 무엇입니까?
Homde

1
@MKO은 : AFAIK, 십오 일을 많이, 구문 분석 트리 입니다 가 생성 된 이후 소스가 변경되지 않은 경우 (대신 재 구문 분석 컴파일러의) 빌드 프로세스에 사용됩니다.
아논.

1

항상 프로젝트를 미리 컴파일 된 구성 요소로 나눌 수 있습니다. 나는 컴퓨터가 공통적으로 컴파일되는 것을 선호한다. 한 사람의인지 마찰은 다른 사람이 반성하고 커피를 마시는 시간입니다.


1

Visual Studio를 사용하고 c # 또는 VB에서 개발하면 Reshaper가 대신 할 수 있습니다. http://www.jetbrains.com/resharper/ 수동으로 다시 컴파일하지 않고도 인터페이스 변경으로 인해 코드가 손상되는 모든 위치를 알면 시간이 많이 절약됩니다.

(또한 Resharper는 여러 가지 이유로 똥이라고 생각합니다.)


reSharper가 컴파일 오류에 대해 알려줄 것이라고 생각합니다. 내가 아는 한 실제로 실제로 바이너리를 생성하지는 않습니다.
thelem

1

잘 모르겠습니다. 컴파일하는 것을 좋아합니다. 내 코드를 작성하고 컴퓨터에 " Hah! 이걸 거부하는 것을 보자! "

그런 다음 컴파일 오류가 발생하여 수정 한 다음 " Hah! 이제 거부합니다! "

그런 다음 컴파일하고 커피를 얻습니다. 좋은 느낌. :)


기분이 좋아 ..... 하루에 6500 번해야 할 경우를 제외하고.
Pacerier

0

참고 : 이것은 Netbeans (Java)에 대한 경험에서 얻은 것이므로 Visual Studio에는 적용되지 않을 수 있습니다

TMK 파일 편집을 시작할 때 백그라운드에서 다소 수행됩니다. IDE가 모든 단일 컴파일 오류와이를 감지하는 방법을 알지 못하면 백그라운드에서 클래스를 컴파일 한 다음 오류를보고한다고 가정합니다.

문제는 전체 프로젝트를 빌드하려는 경우입니다. 때로는이 "실시간"컴파일에서 모든 오류를 포착 할 수있는 것은 아니라고 생각하기 때문에 모든 것을 다시 작성합니다. 또한 라이브 컴파일 된 클래스에는 IDE에 필요하지만 바이너리로 배포해서는 안되는 추가 정보가 포함되어있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.