Mengapa IDE saya tidak melakukan kompilasi / pembangunan latar belakang?

13

Hari ini saya mengembangkan pada komputer yang cukup kompleks, ia memiliki beberapa core, drive SSD dan yang tidak. Namun, sebagian besar waktu saya memprogram komputer dengan santai tidak melakukan apa-apa. Ketika saya perlu mengkompilasi dan menjalankan / menggunakan proyek yang agak rumit di terbaik masih membutuhkan beberapa detik. Mengapa? Sekarang kita hidup semakin dalam "zaman instan" mengapa saya tidak bisa menekan F5 di Visual studio dan meluncurkan / menggunakan aplikasi saya secara instan?

Beberapa detik mungkin kedengarannya tidak terlalu buruk, tetapi masih ada gesekan kognitif dan waktu yang bertambah, dan terus terang itu membuat pemrograman kurang menyenangkan. Jadi bagaimana kompilasi bisa instan?

Orang cenderung mengedit file dalam majelis yang berbeda, bagaimana jika Visual Studio / IDE terus melakukan kompilasi / dan membangun semua yang saya modifikasi kapan saja yang mungkin sesuai. Heck jika mereka ingin benar-benar maju mereka bisa melakukan kompilasi per kelas. Kompilasi mungkin tidak berfungsi tetapi kemudian hanya bisa diam-diam tidak melakukan apa-apa (kecuali menambahkan pesan kesalahan ke jendela kesalahan).

Tentunya saat ini komputer dapat mendedikasikan satu atau dua inti untuk tugas ini, dan jika seseorang merasa hal itu dapat dinonaktifkan dengan opsi. Saya tahu mungkin ada seribu masalah teknis dan beberapa penyalinan bayangan mewah yang perlu diselesaikan agar ini lancar dan praktis tetapi tentu saja akan membuat pemrograman lebih mulus.

Adakah alasan praktis mengapa skenario ini tidak mungkin? Apakah keausan dari binary terus menulis terlalu banyak? Tidak bisakah majelis disimpan dalam memori sampai dikerahkan / dijalankan?

Homde
sumber
Visual Studio melakukannya untuk vb.net, dan setidaknya sebagian untuk c #. Ini sebenarnya poin dalam debat abadi c # / vb.net: codinghorror.com/blog/2007/06/…
Matthieu
ya, saya melihat artikel itu. Itu sebagian besar dalam konteks parsing / kompilasi untuk pesan kesalahan, dan tidak begitu banyak untuk penerapan / menjalankan aplikasi
instan
@konrad, Bukankah VB.NET juga menawarkan kompilasi latar belakang?
Pacerier

Jawaban:

6

Eclipse melakukan kompilasi dan pembangunan otomatis. Anda mungkin ingin memeriksa bagaimana mereka melakukannya. Ini adalah open source. Saya pikir itu mengkompilasi setiap kali Anda menyimpan file.

Brian
sumber
1
Gerhana Hore!
MattC
Itu bagus, ada yang menggunakannya? apakah itu membuat perbedaan?
Homde
2
Itu membuat perbedaan besar. Dan ini sangat berguna untuk pemrograman dengan cepat - dapat menghasilkan metode deklarasi melalui panggilan yang Anda tulis saat itu juga. Saya menggunakannya selama bertahun-tahun mulai dari pengembangan aplikasi Java, hingga aplikasi Web 2.0 berbasis Java, pengembangan ffmpeg dan ekstensi (dalam bahasa C dan C ++), PERL, dan Python. Mereka memiliki plug-in untuk hampir semua bahasa yang bisa dibayangkan.
Brian
6

Pernahkah Anda berpikir tentang berapa banyak penekanan tombol yang Anda buat sebelum Anda mendapatkan file ke kondisi yang dapat dikompilasi? Serius, lihat apa yang akan terjadi jika Anda mencoba mengkompilasi kelas f, class fo, class foo, dll. Kapan Anda ingin IDE memberitahu Anda untuk memperbaiki kesalahan ketik versus hanya membiarkan satu selesai mengetik? Saya akan bertanya seberapa baik Anda memikirkan ini dalam menciptakan sesuatu dari awal karena di situlah saya bisa melihat ini menjadi sangat menyakitkan.

JB King
sumber
Saya tidak menyarankan itu mengkompilasi file / kelas saya benar-benar mengedit. Tetapi majelis lain yang telah saya edit seharusnya merupakan permainan yang adil, dan kelas-kelas lain di majelis yang sama juga jika Anda dapat melakukan kompilasi parsial (yang mungkin akan menjadi tugas yang kompleks). Mungkin akan ada beberapa masalah dengan penyelesaian dependensi tetapi tidak bisa diatasi. Selain kasus terburuk adalah bahwa ia mengkompilasi seperti biasa, selama utas kompilasi tidak merusak antarmuka atau komputer terlalu banyak seharusnya tidak menjadi masalah
Homde
2

Visual Studio belum memberikan fasilitas kompilasi automatice. Tapi ya beberapa IDE seperti Eclipse melakukan kompilasi otomatis ketika Anda menyimpan file apa pun. Harapan di Visual Studio versi mendatang Microsoft akan menambahkan fitur ini.

MitAmr
sumber
1

Coba tebak ... jika Anda menggunakan IDE modern yang memberi Anda peringatan, itu adalah kompilasi latar belakang. Itulah sebabnya ia tahu bahwa barang-barang itu tidak akan dikompilasi seperti apa adanya.

Jesse McCulloch
sumber
7
Ini melakukan penguraian latar belakang . Itu tidak sama dengan kompilasi penuh.
Mason Wheeler
ya tentu saja, tetapi tampaknya mereka berhenti selangkah. Jika beberapa kompilasi / parsing dilakukan, mengapa tidak berjalan terus dan menggunakannya dalam proses build / run?
Homde
1
@MKO: AFAIK, dalam banyak IDE, pohon parse adalah digunakan dalam proses membangun (bukan re-parsing untuk compiler) jika sumber tidak berubah sejak itu dihasilkan.
Anon.
1

Anda selalu dapat memecah proyek menjadi komponen yang dikompilasi. Saya lebih suka kompilasi komputer saya berdasarkan perintah. Gesekan kognitif seorang pria adalah waktu pria lain untuk berefleksi dan mendapatkan kopi.

JeffO
sumber
1

Jika Anda menggunakan Visual Studio dan mengembangkan dalam c # atau VB Reshaper dapat melakukannya untuk Anda. http://www.jetbrains.com/resharper/ Saya menghemat banyak waktu dengan mengetahui semua tempat di mana perubahan saya pada antarmuka merusak kode tanpa harus melakukan kompilasi ulang secara manual.

(Juga saya pikir Resharper adalah omong kosong karena banyak alasan lain juga.)

Alex
sumber
Saya berasumsi maksud Anda reSharper akan memberi tahu Anda tentang kesalahan kompilasi. Sejauh yang saya ketahui, itu tidak akan benar-benar menghasilkan biner untuk Anda.
themem
1

Saya tidak tahu, saya agak suka harus mengkompilasi. Ini semacam saya memegang kode saya dan mengatakan pada komputer, " Hah! Mari kita lihat Anda menolak INI! "

Lalu saya mendapatkan kesalahan kompilasi, memperbaikinya, lalu, " Hah! Sekarang mari kita lihat Anda menolak INI! "

Kemudian kompilasi dan saya mengambil kopi. Terasa baik. :)


sumber
Terasa enak ..... Kecuali bila Anda harus melakukan 6500 kali dalam satu hari.
Pacerier
0

Catatan: Ini diambil dari pengalaman saya dengan Netbeans (Java), jadi ini mungkin tidak berlaku untuk Visual Studio

TMK ini dilakukan agak di latar belakang ketika Anda mulai mengedit file. Kecuali jika IDE tahu setiap kesalahan kompilasi tunggal dan bagaimana cara mendeteksinya saya akan berasumsi bahwa ia mengkompilasi kelas di latar belakang kemudian melaporkan kesalahan.

Masalahnya adalah ketika Anda ingin membangun seluruh proyek Anda. Kadang-kadang saya kira tidak semua kesalahan dapat ditangkap dengan kompilasi "langsung" ini, jadi itu hanya membangun kembali semuanya. Mungkin juga kelas live yang dikompilasi berisi informasi tambahan yang dibutuhkan IDE tetapi tidak boleh didistribusikan dalam biner.

TheLQ
sumber