Tại sao IDE của tôi không biên dịch / xây dựng nền?


13

Hôm nay tôi phát triển trên một máy tính khá phức tạp, nó có nhiều lõi, ổ SSD và những gì không. Tuy nhiên, hầu hết thời gian tôi lập trình máy tính là không làm gì cả. Khi tôi cần biên dịch và chạy / triển khai một dự án hơi phức tạp, tốt nhất là vẫn mất vài giây. Tại sao? Bây giờ chúng ta đang sống ngày càng nhiều hơn trong "thời đại tức thì" tại sao tôi không thể nhấn F5 trong Visual studio và khởi chạy / triển khai ứng dụng của mình ngay lập tức?

Một vài giây nghe có vẻ không tệ lắm nhưng nó vẫn là ma sát nhận thức và thời gian cộng lại, và thẳng thắn nó làm cho việc lập trình trở nên ít thú vị hơn. Vì vậy, làm thế nào có thể biên dịch ngay lập tức?

Chà, mọi người có xu hướng chỉnh sửa các tệp trong các hội đồng khác nhau, điều gì sẽ xảy ra nếu Visual Studio / IDE liên tục thực hiện việc biên dịch / và xây dựng mọi thứ mà tôi đã sửa đổi bất cứ lúc nào có thể phù hợp. Heck nếu họ muốn đi thực sự tiên tiến, họ có thể thực hiện biên dịch theo từng lớp. Trình biên dịch có thể không hoạt động nhưng sau đó nó chỉ có thể âm thầm không làm gì cả (ngoại trừ việc thêm thông báo lỗi vào cửa sổ lỗi).

Chắc chắn máy tính ngày nay có thể dành một hoặc hai lõi cho nhiệm vụ này và nếu ai đó thấy khó chịu thì nó có thể bị vô hiệu hóa bởi tùy chọn. Tôi biết có lẽ có hàng ngàn vấn đề kỹ thuật và một số sao chép bóng tối cần được giải quyết để điều này trở nên liền mạch và thực tế nhưng nó chắc chắn sẽ giúp lập trình trở nên liền mạch hơn.

Có bất kỳ lý do thực tế tại sao kịch bản này là không thể? Sự hao mòn của các nhị phân viết liên tục có quá nhiều không? Không thể lắp ráp trong bộ nhớ cho đến khi triển khai / chạy?


Visual Studio làm điều đó cho vb.net, và ít nhất một phần cho c #. Đây thực sự là một điểm trong cuộc tranh luận muôn thuở
Matthieu

Vâng, tôi đã xem bài báo đó. Điều đó chủ yếu là trong bối cảnh phân tích / biên dịch cho các thông báo lỗi và không nhiều cho các ứng dụng triển khai / chạy ngay lập tức
Homde

@konrad, VB.NET không cung cấp trình biên dịch nền sao?
Pacerier

Câu trả lời:


6

Eclipse không tự động biên dịch và xây dựng. Bạn có thể muốn kiểm tra làm thế nào họ làm điều đó. Nó là nguồn mở. Tôi nghĩ rằng nó biên dịch bất cứ khi nào bạn lưu một tập tin.


1
Hoan hô Nhật thực!
MattC

Thật tuyệt, có ai dùng nó không? Liệu nó có làm cho một sự khác biệt?
Homde

2
Nó làm cho một sự khác biệt rất lớn. Và nó cực kỳ hữu ích để lập trình nhanh chóng - nó có thể tạo ra các khai báo phương thức bằng một cuộc gọi bạn viết trên máy bay. Tôi đã sử dụng nó trong nhiều năm từ phát triển ứng dụng Java, đến các ứng dụng Web 2.0 dựa trên Java, phát triển và mở rộng ffmpeg (trong C và C ++), PERL và Python. Họ có các trình cắm cho mọi ngôn ngữ có thể tưởng tượng được.
Brian

6

Bạn đã bao giờ nghĩ về việc bạn tạo ra bao nhiêu tổ hợp phím trước khi bạn đưa một tệp đến trạng thái có thể được biên dịch chưa? Nghiêm túc, nhìn vào những gì sẽ xảy ra nếu bạn cố gắng biên dịch lớp f, class fo, class foo, v.v. Khi nào bạn muốn IDE bảo bạn sửa lỗi đánh máy thay vì chỉ gõ một lần? Tôi nghi ngờ bạn đã nghĩ tốt như thế nào trong việc tạo ra thứ gì đó từ đầu vì đó là nơi tôi có thể thấy điều này thực sự khá đau đớn.


Tôi không đề xuất rằng nó biên dịch tệp / lớp tôi thực sự đang chỉnh sửa. Nhưng các hội đồng khác mà tôi đã chỉnh sửa phải là trò chơi công bằng và các lớp khác trong cùng một hội đồng cũng như nếu bạn có thể thực hiện việc biên dịch một phần (có lẽ sẽ là một nhiệm vụ phức tạp). Có lẽ sẽ có một số vấn đề với việc giải quyết các phụ thuộc nhưng nó không nên vượt qua. Bên cạnh trường hợp xấu nhất là nó biên dịch như bình thường, miễn là luồng biên dịch không làm hỏng giao diện hoặc máy tính quá nhiều thì đó không phải là vấn đề
Homde

2

Visual Studio đã không cung cấp cho các cơ sở biên dịch tự động. Nhưng vâng, một số IDE như Eclipse sẽ tự động biên dịch khi bạn lưu bất kỳ tệp nào. Hy vọng trong các phiên bản tương lai của Visual studio Microsoft sẽ bổ sung tính năng này.


1

Đoán xem ... nếu bạn đang sử dụng một IDE hiện đại cung cấp cho bạn các cảnh báo, thì nó đang thực hiện việc biên dịch nền. Đó là cách nó biết rằng những mục đó sẽ không được biên dịch như vậy.


7
Đó là phân tích cú pháp nền . Điều đó không giống như biên soạn đầy đủ.
Mason Wheeler

tất nhiên, nhưng có vẻ như họ dừng lại một bước ngắn. Nếu một số quá trình biên dịch / phân tích được thực hiện dù sao đi nữa, tại sao không đi toàn bộ và sử dụng nó trong quá trình xây dựng / chạy?
Homde

1
@MKO: AFAIK, trong rất nhiều IDE, cây phân tích cú pháp được sử dụng trong quá trình xây dựng (thay vì phân tích lại cho trình biên dịch) nếu nguồn không thay đổi kể từ khi nó được tạo.
Anon.

1

Bạn luôn có thể chia một dự án thành các thành phần được biên dịch trước. Tôi thích máy tính của tôi biên dịch trên commmand. Ma sát nhận thức của một người là thời gian của một người đàn ông khác để suy ngẫm và lấy cà phê.


1

Nếu bạn sử dụng Visual Studio và phát triển trong c # hoặc VB Reshaper có thể làm điều đó cho bạn. http://www.jetbrains.com/resharper/ Tôi tiết kiệm rất nhiều thời gian bằng cách biết tất cả những nơi mà các thay đổi của tôi đối với giao diện phá vỡ mã mà không phải biên dịch lại thủ công.

(Ngoài ra tôi nghĩ Resharper là shit vì nhiều lý do khác nữa.)


Tôi giả sử bạn có nghĩa là reSharper sẽ cho bạn biết về bất kỳ lỗi biên dịch nào. Theo như tôi biết thì nó sẽ không thực sự tạo ra nhị phân cho bạn.
thelem

1

Tôi không biết, tôi giống như phải biên dịch mọi thứ. Đó là loại tôi đang cầm mã của mình và nói với máy tính, " Hah! Hãy xem bạn từ chối NÀY! "

Sau đó, tôi nhận được một lỗi biên dịch, sửa nó, sau đó, " Hah! Bây giờ hãy xem bạn từ chối NÀY! "

Sau đó, nó biên dịch và tôi lấy một ít cà phê. Cảm thấy tốt. :)


Cảm thấy tốt ..... Ngoại trừ khi bạn phải làm điều đó 6500 lần trong một ngày.
Pacerier

0

Lưu ý: Điều này được lấy từ kinh nghiệm của tôi với Netbeans (Java), vì vậy điều này có thể không áp dụng cho Visual Studio

TMK điều này được thực hiện phần nào trong nền khi bạn bắt đầu chỉnh sửa tệp. Trừ khi IDE biết mọi lỗi biên dịch đơn lẻ và cách phát hiện nó, tôi sẽ giả sử rằng nó biên dịch lớp trong nền sau đó báo cáo bất kỳ lỗi nào.

Vấn đề là khi bạn muốn xây dựng toàn bộ dự án của bạn. Đôi khi tôi đoán không phải tất cả các lỗi đều có thể bị bắt với quá trình biên dịch "trực tiếp" này, vì vậy nó chỉ cần xây dựng lại mọi thứ. Cũng có thể là lớp biên dịch trực tiếp chứa thông tin bổ sung mà IDE cần nhưng không nên được phân phối dưới dạng nhị phân.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.