Чому мій IDE не збирає / будує фон?


13

Сьогодні я розробляю на досить складному комп’ютері, він має декілька ядер, SSD-накопичувачі і що ні. Тим не менш, більшість часу я програмую комп’ютер, без особливих зусиль нічого не роблю. Коли мені потрібно скласти та запустити / розгорнути дещо складний проект, у кращому випадку це займе пару секунд. Чому? Тепер, коли ми все більше і більше живемо в "епоху миттєвості", чому я не можу натиснути F5 у студії Visual і миттєво запустити / розгорнути свою програму?

Пару секунд може здатися не дуже поганим, але все-таки когнітивне тертя та час додають, і, чесно кажучи, це робить програму менш цікавою. То як компіляція могла бути миттєвою?

Ну, люди прагнуть редагувати файли на різних збірках, що робити, якщо Visual Studio / IDE постійно робив компіляцію / та будував все, що я змінив у будь-який час, що може бути доречним. Чорт забирай, якщо вони хотіли б по-справжньому просунутись, вони могли б робити компіляцію за клас. Компіляція може не працювати, але тоді вона може просто мовчки нічого не робити (крім додавання повідомлень про помилку у вікно помилки).

Безумовно, сьогоднішній комп’ютер може присвятити цьому ядру або дві, і якщо хтось вважатиме це дратівливим, його можна відключити за вибором. Я знаю, що, мабуть, є тисяча технічних проблем та певне копіювання тіней, яке потрібно вирішити, щоб це було безпроблемним та практичним, але це, безумовно, зробить програмування більш безпроблемною.

Чи є якась практична причина, чому цей сценарій неможливий? Чи не буде занадто великим зношення постійних записів бінарних файлів? Не вдалося збірки зберегти в пам'яті, поки не розгорнуто / запущено?


Visual Studio робить це для vb.net, і принаймні частково для c #. Це насправді пункт у вічній дискусії c # / vb.net: codinghorror.com/blog/2007/06/…
Матьє

так, я переглянув цю статтю. Це здебільшого в контексті розбору / складання повідомлень про помилки, а не стільки для миттєвого розгортання / запуску програм
Хомд

@konrad, Чи VB.NET також не пропонує фонову компіляцію?
Pacerier

Відповіді:


6

Eclipse робить автоматичне складання та створення. Ви можете перевірити, як вони це роблять. Це з відкритим кодом. Я думаю, що вона компілюється щоразу, коли ви зберігаєте файл.


1
Ура-затемнення!
MattC

Це чудово, хто ним користується? це має значення?
Хомде

2
Це робить величезну різницю. І це дуже корисно для швидкого програмування - може генерувати декларації методів за допомогою дзвінка, який ви пишете на льоту. Я використовував його роками від розробки програм Java, до додатків Web 2.0 на основі Java, розробки та розширення ffmpeg (в C і C ++), PERL та Python. Вони мають плагіни майже для кожної мови, яку можна уявити.
Брайан

6

Чи замислювались ви над тим, скільки натискань клавіш ви робите, перш ніж отримати файл до стану, який він може бути складений? Серйозно, погляньте на те, що станеться, якщо ви спробуєте скласти клас f, клас fo, клас foo і т. Д. Коли ви хочете, щоб IDE сказав вам виправити друкарський помилок, а не просто дозволити закінчити введення тексту? Я б запитав, наскільки добре ви це продумали, створюючи щось з нуля, бо саме там я міг бачити, що це дуже болісно.


Я не припускаю, що це компіляція файлу / класу, який я фактично редагую. Але інші збірки, які я відредагував, повинні бути справедливою грою, а також інші класи в тій же збірці, якби ви могли зняти часткову компіляцію (що, мабуть, було б складним завданням). Можливо, виникнуть деякі проблеми з вирішенням залежностей, але це не повинно бути нездоланним. Крім того, найгірший випадок полягає в тому, що він збирається, як зазвичай, до тих пір, поки компілююча нитка не
зашкодить

2

Visual Studio не надає можливості для автоматизації компіляції. Але так, деякі IDE, як Eclipse, роблять автоматичну компіляцію, коли ви зберігаєте будь-який файл. Сподіваюсь, у наступних версіях Visual studio Microsoft додасть цю функцію.


1

Здогадайтесь, що ... якщо ви використовуєте сучасний IDE, який дає вам попередження, він робить компіляцію фону. Ось як відомо, що ці елементи не будуть складені так, як є.


7
Це робить розбір фону . Це не те саме, що повна компіляція.
Мейсон Уілер

так, звичайно, але, схоже, вони зупиняються на крок недовго. Якщо якась компіляція / синтаксичний розбір робиться все-таки, чому б не піти цілим шляхом і використовувати його в процесі збирання / запуску?
Хомде

1
@MKO: AFAIK, у великій кількості Ід, дерево розбору буде використаний в процесі складання (замість того , щоб повторно розбір для компілятора) , якщо джерело не змінився , так як він був створений.
Анон.

1

Ви завжди можете розбити проект на попередньо складені компоненти. Я віддаю перевагу комп’ютерним компіляціям на замовлення. Пізнавальне тертя одного чоловіка - це час іншого для роздумів та отримання кави.


1

Якщо ви використовуєте Visual Studio і розвиваєтеся в c # або VB Reshaper, це можна зробити за вас. http://www.jetbrains.com/resharper/ Я економлю багато часу, знаючи всі місця, де мої зміни інтерфейсу порушують код, не потребуючи перекомпіляції вручну.

(Також я думаю, що Решарпер - це лайно і з багатьох інших причин.)


Я припускаю, що ви маєте на увазі, що reSharper розповість вам про будь-які помилки компіляції. Наскільки я знаю, він насправді не генерує двійковий код для вас.
thelem

1

Я не знаю, мені подобається складати речі. Мені якось керувати своїм кодом і казати комп’ютеру: "А-а ! Побачимо, ти відкидаєш це! "

Тоді я отримую помилку компіляції, виправляю її, а потім: " Ага! Давайте подивимось, що ти відкидаєш це! "

Потім вона збирається, і я схоплю трохи кави. Почувається добре. :)


Відчуває себе добре ... За винятком випадків, коли це потрібно робити 6500 разів за один день.
Pacerier

0

Примітка. Це взято з мого досвіду роботи з Netbeans (Java), тому це може не стосуватися Visual Studio

TMK це робиться дещо на задньому плані, коли ви починаєте редагувати файл. Якщо IDE не знає кожної окремої помилки компіляції і як її виявити, я вважаю, що вона компілює клас у фоновому режимі, а потім повідомляє про будь-які помилки.

Питання полягає в тому, коли ви хочете побудувати весь свій проект. Іноді я здогадуюсь, що не всі помилки можна впіймати при цьому "живому" складенні, тому він просто відновлює все. Можливо також, що складений в реальному часі клас містить додаткову інформацію, яка потрібна IDE, але не повинна поширюватися у двійковій формі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.