Neden Derleme Sistemi?

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfada derleme sistemlerinin ne olduğu, ne işe yaradığı, neden derleyicilerin ve derleme komut dosyalarının neden sizin için en iyi seçenek olmadığını ölçeklenmeye başlar. Pek fazla araştırmayan ve geliştirmeyi öğreneceksiniz.

Derleme sistemi nedir?

Temelde tüm derleme sistemlerinin tek bir amacı vardır: Bu sistemlerin, mühendisler tarafından okunabilen yürütülebilir ikili programlara yazılan kaynak kodu . Derleme sistemleri yalnızca gerçek kişiler tarafından yazılmış kodlara yönelik değildir. dönüşüm hunisinin orta kısmına yönelik derlemeleri otomatik olarak oluşturmalarına olanak tanır. çok önemlidir. Binlerce mühendis bulunan bir kurumda, çoğu derleme doğrudan mühendisler yerine otomatik olarak tetiklenir.

Sadece derleyici kullanamaz mıyım?

Derleme sistemi ihtiyacı ilk bakışta anlaşılmayabilir. Mühendislerin çoğu kodlamayı öğrenirken derleme sistemi kullanmayın: Çoğu kişi araçları çağırarak başlar örneğin bir komut satırından gcc veya javac ya da bir entegre geliştirme ortamı (IDE) Tüm kaynak kodu burada olduğu sürece şuna benzer bir komutla çalıştığından emin olabilirsiniz:

javac *.java

Bu komut, Java derleyicisine mevcut dizine eklemek ve bunu bir ikili sınıf dosyası haline getirmektir. En basit senaryoda bu ihtiyacınız olan her şeyi sunuyor.

Bununla birlikte, kod genişledikçe sorunlar başlar. javac akıllı dizinin alt dizinlerine bakmak için yeterli olan koddur. içe aktarın. Ancak web sitesinin diğer bölümlerinde depolanan kodları dosya sistemi (belki birkaç proje tarafından paylaşılan bir kitaplık). Ayrıca yalnızca ele alacağız. Büyük sistemler genellikle her bir birimde çeşitli programlama dilleri ve bu parçaların arasında bağımlılık olan çeşitli programlama dilleri, Bu da tek bir dil için derleyicinin tüm sistemi oluşturamayacağı anlamına gelir.

Birden fazla dil veya derlemeye ait kodlarla çalışırken yapı kodu artık tek adımlı bir süreç değil. Şimdi ekibinizin hedefinize ulaşmak için kodunuz, bu parçaların doğru sırayla derlenmesine bağlıdır ve bunları farklı bir araç seti oluşturmanız gerekir. Bağımlılık değişimleri olursa eski ikili programlara bağlı kalmamak için bu işlemi tekrarlayın. Örneğin, bu işlem kısa sürede yorucu ve hataya açık hale gelir.

Ayrıca derleyici, harici verilerin nasıl işleneceği hakkında da bilgiye sahip değil. bağımlılıkları (ör. Java'daki üçüncü taraf JAR dosyaları). Derleme sistemi olmadan internetten bağımlılığı indirerek, tabletinize bağlı dosyayı sabit diskteki bir lib klasöründe bulabilirsiniz ve derleyiciyi, kitaplığını açar. Zaman içinde, bağımlılıklarının güncellemelerini, sürümlerini ve kaynağını öğrenebilirsiniz.

Kabuk komut dosyaları için durum nedir?

Hobi projenizin, bunu gerçekleştirebileceğiniz kadar basit bir şekilde başladığını varsayalım ancak bu komut sırasında açıklanan bazı sorunlarla karşılaşmaya öğrendi. Belki de hâlâ bir derleme sistemine ihtiyacınız olmadığını düşünmüyorsanız ve işimize yarayabilecek birkaç basit kabuk komut dosyası kullanarak doğru sıraya sokmaktan ibaret değildir. Bu bir süreliğine yardımcı olsa da, kısa süre içinde daha da fazla sorunla karşılaşmaya başlayacaksınız:

  • Bu da yorucu oluyor. Sisteminiz daha karmaşık hale geldikçe derleme komut dosyalarınız üzerinde gerçek kod üzerinde çalışmak kadar uzun sürer. Hata ayıklama kabuk komut dosyaları oldukça zorlayıcıdır ve komut dosyalarının üzerine gittikçe daha fazla kod yerleştirilmektedir. teşvik eder.

  • Yavaş yavaş. Yanlışlıkla eski kitaplıklara güvenmediğinizden emin olmak için, derleme komut dosyanızın her bağımlılığı sırayla çalıştıracağım. Hangi kısımların olması gerektiğini tespit etmek için ancak bu, kulağa çok karmaşık ve senaryoya uygun görünüyor. Alternatif olarak: her seferinde hangi parçaların yeniden oluşturulması gerektiğini belirtmeyi düşünürsünüz, ardından birinci kareye dönersiniz.

  • Güzel bir haberimiz var: Şarkınızı yayınlamanın zamanı geldi. Tüm argümanları tek tek nihai derlemenizi oluşturmak için jar komutuna iletmeniz gerekir. Unutmayın merkezi depoya nasıl aktaracağınızı öğreneceksiniz. İnşa etme ve dokümanlar güncellemelerini iletin ve kullanıcılara bildirim gönderin. Hımm, belki bu başka bir komut dosyası gerektirebilir...

  • Felaket! Sabit diskiniz kilitleniyor ve şimdi tüm dosyalarınızı yeniden oluşturmanız gerekiyor. bahsedeceğim. Tüm kaynak dosyalarınızı sürümde tutacak kadar zekiydiniz ama indirdiğiniz kitaplıklara ne olacak? Bulabiliyor musunuz? ve hepsinin orijinal haline getirdiğiniz indirdiniz mi? Komut dosyalarınız muhtemelen çalıştığım yeni araçlarda - "mekan mobil uygulamalar" genelinde tekrar çalışır mı? Kendi belirlediğiniz bir ortamda uzun zaman önce derleyicinin doğru çalışmasını sağlayıp unuttunuz mu?

  • Sorunlara rağmen, projeniz şunları yapabilecek kadar başarılıdır: mühendisler işe almaya başladı. Projenin başarılı bir şekilde tekrar eski sorunları çözerken aynı sıkıntıları önyükleme işlemini otomatik olarak yapmanız gerekir. Ve En iyi çabalarınıza rağmen her birinde küçük farklar var üzerine konuşacağız. Çoğunlukla bir kişinin makinesinde işe yarayan şey işe yaramaz gerekir ve her seferinde birkaç saatlik hata ayıklama aracı yolu kitaplık sürümlerini kullanarak aradaki farkın nerede olduğunu araştırın.

  • Derleme sisteminizi otomatikleştirmeniz gerektiğine karar verdiniz. Teoride bu, sadece yeni bir bilgisayar alıp derlemenizi çalıştırmak için komut dosyasını çalıştırın. Hâlâ acı çekmeniz ve Ancak artık insan beyninin bu şekilde çalışmasını tespit edip çözebildiğini fark ettiniz. Artık her sabah Dün geceki derlemenin başarısız olduğunu fark ettiniz. Dün geceki sistemi üzerinde çalışan ancak otomatik sistemde çalışmayan bir değişiklik geliştirmenizi sağlar. Her seferinde basit bir çözüm olsa da durum çok sık yaşanır ki bu basit yöntemleri keşfetmek ve uygulamak için her gün çok fazla zaman harcıyor, gider.

  • Proje büyüdükçe derlemeler de yavaşlar ve yavaşlar. Beklerken bir gün oluşturmak için hesabınızın boşta duran masaüstüne hüzünlü bir şekilde bakıyorsunuz bir iş arkadaşına iletebilir ve bu fırsattan yararlanmanın hesaplama gücünün boşa gitmesi anlamına gelir.

Klasik bir ölçek sorunuyla karşılaştınız. Şu projede çalışan tek bir geliştirici için: en fazla bir veya iki hafta boyunca (en fazla birkaç yüz satırlık kod) yeni mezun olmuş küçük bir geliştiricinin şu ana kadarki tüm deneyimini üniversitesi), bir derleyici yeterlidir. Senaryolar muhtemelen fark ettim. Ama birden fazla geliştirici ve ekip arasında koordinasyon sağlamanız gerektiğinde mükemmel bir yapı komut dosyası bile yeterli olmaz, çünkü bu komut dosyası bu makinelerdeki küçük farklılıkları hesaba katmak zordur. Bu noktada bu basit yaklaşım bozulur ve gerçek bir yapıya yatırım yapmanın zamanı gelir.