Bir Boyut Neden Yazılımın Evrensel Olarak Uyumlu Değil?

  • Brian Curtis
  • 0
  • 3887
  • 714
reklâm

En sevdiğiniz açık kaynak uygulamanıza bir özellik paketi güncellemesi indirdiniz. Her şey iyi çalışıyor ve siz onu diğer cihazlarınızda kullanıyorsunuz - bu yüzden onu da kullanıma sunmanın zamanı geldi..

Parlak yeni Linux dizüstü bilgisayarınız haricinde Windows kurulum paketinizle uyumlu değildir. Android tabletinize ne dersiniz? IPhone? PS4? Neden sadece bu yazılımı alıp istediğiniz yerde kullanamıyorsunuz? Hayalindeki farklı engelleri araştıralım “bir kere satın alın, istediğiniz yere koşun.”

Yazılım Geliştirme ve İşletim Sistemi Mimarisi

Yazılımın işletim sistemleri arasında neden çalışmadığını anlamak, yazılımın nasıl yapıldığına ilişkin biraz (sadece biraz söz veriyorum) gerektirir..

Yazılım Geliştirme Süreci

Masaüstü, sunucu ve mobil cihazlar için çok temel bir yazılım geliştirme akışında (yani web değil Programlama ve Web Geliştirme: Fark Nedir? Programlama ve Web Geliştirme: Fark Nedir? Uygulama programcılarının ve web geliştiricilerin aynı işi yaptığını düşünebilirsiniz. , ama bu gerçeklerden uzak. Programcılar ve web geliştiricileri arasındaki temel farklar.), bir programcı:

  1. Biraz yazın kod bir veya daha fazla dosyaya.
  2. derlemek Bilgisayarın yürütebileceği bir şey içine kod.
  3. Ölçek Programın beklendiği gibi çalıştığından emin olmak için.
  4. Paketle ve dağıt / dağıt yazılım.

Bizi burada ilgilendiren ilk ve ikinci adımların bir birleşimidir. Süreci derleme yazılımı veya koddan kodlama yapmak, bir bilgisayarın anladığı (makine dili) karmaşıktır. Bu konuya ayrıntılı bir şekilde girmeyeceğiz, ancak ne olduğunu yüksek düzeyde anlamakta fayda var..

İşletim Sistemi Mimarisi

Anlaması gereken önemli bir nokta, bir işletim sisteminin tek bir varlık olmadığıdır. Aksine, yazılım katmanlarından oluşur.

İşletim sistemi çekirdekleri

Bir işletim sistemi çekirdek bilgisayarın donanımı ile iletişim kurmaktan sorumludur. Yazılım, komutlarını çekirdeğe iletir; bu da donanıma komutları verir (örneğin) sabit diskten bir dosyayı okumak veya ekranda bir pencere çizmek. Temel olarak, donanım ile çeşitli yazılım parçaları arasındaki tüm bilgileri (depolanan veriler, hesaplamalar veya kullanıcı girişi olsun) koordine eder. Çekirdek, tüm bu işlevselliği yazılım üzerinden erişilebilir hale getirir. sistem çağrıları.

Resim Kredisi: Wikimedia Commons

Her işletim sisteminin çekirdeği, hangilerinin uygun olduğu, ne dendiği veya hangi seçenekleri kullandıkları konusunda sistem çağrılarını farklı uygular. Sonuç olarak, yazılım hedeflediği her işletim sisteminin çekirdeği tarafından desteklenen sistem çağrılarını dikkate almalıdır. Linux'ta GPU'ya veri göndermek için kullandığınız sistem çağrısı, farklı bir ada, sağlamanız gereken bilgi listesine veya Windows'ta her ikisine de sahip olabilir. Bu kesin çağrı hiç orada bile olmayabilir.

Sistem Kütüphaneleri

Çoğu durumda yazılım doğrudan çekirdeğe çağrı yapmaz. Bunun yerine, sistem kütüphaneleri, veya temel fonksiyonların koleksiyonları. Kütüphaneler var (örneğin), dosyaları sabit sürücüye kaydeden her programın bunu yapması için bir işlev yazması gerekmez. Bunun yerine, basitçe bağlantıları bir sistem kitaplığı ve mevcut bir işlevi kullanır. Linux için GLibC kitaplığı, Win32 API'sindeki .DLL dosyalarındaki veya bir Mac / Sistem / Kitaplık dizininin içeriğinde olduğu gibi en önemli örnektir. OS X Kitaplığı Klasörüne Nasıl Erişilir ve Neden Kullanışlı OS X Kitaplığına Nasıl Erişilir Klasör ve Neden Kullanışlı Çoğu OS X Library klasörü yalnız başına bırakılmıştır, ancak Kullanıcı Kitaplığı içindeki ve etrafındaki yolunuzu bilmek faydalıdır. .

Resim Kredisi: Wikimedia Commons aracılığıyla ScottXW

Sistem kütüphaneleri, rutin görevler için uygulamalar ve çekirdek arasında bir tür tercüman görevi görür. Uygulamalar yapmak fonksiyon çağrıları Düşük seviyeli ayrıntıların çoğunu idare eden bu kütüphanelere. Ayrıca, kolaylık sağlamak için çekirdeğe sistem çağrıları yapabilirler. Tahmin edebileceğiniz gibi, bu, bu kütüphanelerin belirli bir çekirdek için yazılmış olduğu ve bu nedenle farklı çekirdekleri olan işletim sistemlerinde kullanılamadığı anlamına gelir..

İşletim Sistemi Yürütme Başlıkları

Evrensel yazılıma giden son engel, işletim sistemleri için çalıştırılabilir dosyaların formatıdır. Bir işletim sistemi çalışan dosyaların belirli bir ikili dosya biçimini izlemesini bekler Dosya Biçimleri ve Özellikleri Hakkında Bilmeniz Gereken Her Şey Dosya Biçimleri ve Özellikleri Hakkında Bilmeniz Gereken Her Şey, dosya kelimesini birbirlerinin yerine kullanırız: müzik, resim, elektronik tablo, slayt gösterisi , ve bunun gibi. Ama yine de bir dosyayı "dosya" yapan nedir? Bilgisayarın bu temel kısmını anlamaya çalışalım. . Örneğin, Linux ve FreeBSD gibi işletim sistemlerinde çalışan Yürütülebilir ve Bağlanabilir Format (ELF) dosyaları, aşağıdaki resimde gösterildiği gibi, dosyanın belirli özelliklerini belirli baytlarda belirtmelidir..

uygulama ikili arayüzü (ABI) mümkün gösterilen özel bir önem taşımaktadır. İşlemci, çekirdek ve sistem kütüphanelerinden gelen aramaların bir kombinasyonu, ABI’nin uygulama programlama arayüzü (API) Bu, iki programın birbiriyle nasıl iletişim kurduğunu tanımlar. Ancak API, iki yazılım parçasını belirtmek için programcılar (insanlar) tarafından kaynak kodda kullanılan bir şeydir. meli birbiriyle konuşmak. ABI, yazılım derlenip çalıştırıldıktan sonra bunu yapmalarına izin veren şeydir. Her işletim sistemi aynı işletim sisteminin sürümleri arasında değişebilen veya değişmeyen belirli bir ABI uygular..

Genel olarak, işletim sistemleri, işlemci tipi, çekirdek ve herhangi bir standart sistem kütüphanesinin birleşimiyle belirlenen kendi ABI'lerini uygular. Ancak bazen bir işletim sistemi birden fazla uygulayacaktır. FreeBSD, Linux ikili dosyalarını desteklemektedir, örneğin, FreeBSD çekirdeğine bir eklenti olarak bir Linux ABI sağladığından (Linux çekirdeği yerine). Bu sanallaştırma programlarından farklıdır Sanal Makine Nedir? Bilmeniz Gereken Her Şey Sanal Makine Nedir? Bilmeniz Gereken Her Şey Sanal makineler, mevcut bilgisayarınızda başka işletim sistemlerini çalıştırmanıza izin verir. İşte onlar hakkında bilmeniz gerekenler. Makinenin tamamını taklit etmek için yazılımı kullanan VMWare veya VirtualBox gibi (donanım ve diğerleri). Sonuç olarak, bu tür ABI uyumluluğu daha hızlıdır, ancak bakımı çok daha fazla çaba göstermektedir. Bu nedenle, Microsoft son zamanlarda Ubuntu'nun Windows Mağazasında Artık Kullanılabilir olduğunu görüyor olsa da, nadiren Windows Mağazasında Ubuntu'nun Kullanılabilir olduğunu Windows Insiders şimdi Ubuntu'yu Windows 10'a indirip yükleyebilir. Bu Linux ve Windows'u bir araya getirmeden çok az kişi tanık olacak kadar uzun yaşayacağını hayal etti. bunu yaparken.

İstisna: Yorumlanan Yazılım

Yukarıdakilere dayanarak, geliştiricilerin bir ve sadece bir tür hedef sistem için yazılım yazdığını öğrendik. İstemedikleri zamanlar hariç. Mac'te indirip çalıştırabileceğiniz, daha sonra Windows'ta kopyalayıp çalıştırabileceğiniz ve hatta tekrar kopyalayıp Linux'ta sorunsuz bir şekilde çalıştırabileceğiniz birçok uygulama vardır. Bu nasıl mümkün olabilir?

Şu ana kadar yalan mı söylüyordum?

Görünüşe göre, yüzeyde tıpkı onun gibi görünen bir yazılım kategorisi var. “her yere koşuyor.” Desteklenen herhangi bir platformda indirebilir ve çalıştırabilirsiniz - anahtar kelime “destekli.” Aslında, uygulamanın kaynak kodunu indirirken, başka bir uygulamayı ( tercüman) kaynak kodu doğrudan gerçek zamanlı olarak çalıştırıyor. Bu aşırı basitleştirici bir şey, bu yüzden bunun birkaç dilde nasıl çalıştığını tam olarak inceleyelim..

Java

Java ilk yayımlandığında, sözünü verdi (kelimenin tam anlamıyla) “bir kez yazın, her yerde çalıştırın.” Fikir, dosyaların kaydedilmesi, hesaplamalar yapılması veya bir uygulama penceresi oluşturmak için Java işlevlerini kullanarak uygulamalar oluşturmaktı. Sonra bir Java Runtime Enviornment (JRE) Desteklenen her bilgisayar platformu için kodu çalıştıracak ve bunları yerel işletim sistemi işlevlerine çevirecekti. Java için püf noktası, o zaman, çalışmıyor “direkt olarak” işletim sisteminde. JRE’nin bir bölümünde Java Sanal Makinesi ve işletim sisteminde çalışan budur.

Bu ek yazılım katmanını uygulama ve işletim sistemi arasına yerleştirerek, Java, işletim sistemlerinde aynı olan bir dizi fonksiyona odaklanmanıza izin verir. Java'ya ne yapmak istediğinizi söyleyin ve sisteminiz için JVM'nin gerçekte nasıl yapılacağı konusunda endişelenmesine izin verin. Aşağıdaki resim, JIDE Software'in Java Masaüstü Uygulama Çerçevesi'nin Mac (üstte), Windows (orta-solda) için aynı uygulamayı gösterdiği yerde bunu göstermektedir., “saf Java” (orta-sağ) ve Linux (alt).

Image Credit: JIDE Yazılımı

Java programları tam olarak değil “derlemek” kendilerini gerçek zamanlı olarak. Aksine, Java derleyicisi onları içine koyacaktır “baytkodu.” Bayt kodunu yarı pişmiş bir program olarak düşünebilirsiniz. Geliştirici uygulamayı bıraktığında, hangi işletim sisteminin çalışacağını bilmeden olabildiğince derlenir. Gerçekten başlattığınızda, JVM “geri kalanını pişirin” ana işletim sisteminin belirli işlevlerine uyması için.

piton

Popüler bir yorumlanmış dil Python 5 Neden Python Programlamanın Yararsız Olmadığına Neden 5 Neden Python Programlamanın Yararsız Olmadığının Nedenleri Python - Ya onu seviyorsun ya da ondan nefret ediyorsun. Bir sarkaç gibi bir uçtan diğerine sallanabilirsiniz. Ne olursa olsun, Python kararsız olması zor bir dildir. . Bir Python betiği çalıştırdığınızda, Python yorumlayıcısı kodu işletim sistemine ilişkin talimatlara çevirir. Ayrıca Java'ya benzer şekilde çalışabilir: “ithalat” Uygulamanızın dışından gelen kod ilk çalıştırıldığında bayt koduyla derlenir. Ardından tercüman, sonraki çalıştırmalarda, orijinal kodun değişip değişmediğini, hangi noktada onu yeni byte koduna derleyeceğini bilecektir..

Bunun harika bir yan ürünü “Talep üzerine” çalışan, komut dosyalarınızı etkileşimli olarak geliştirmek için tercümanı kullanabilmenizdir. Sadece yazarak “piton” komut satırında tercümanı başlatırsınız ve kod çalıştırabilir ve sonuçları hemen görebilirsiniz.

Bu, geliştiricilerin oyun oynayabileceği ve ince ayar yapabildiği anlamına gelir “canlı.” Ardından, bir kod satırı istediklerini yaparsa, onu bir komut dosyasına kopyalayıp yapıştırın (bu, “Kod-derleme testi” Tercüman olmayan bir dil programcısının yapmak zorunda olduğu döngü.

Yazılım Aynı Olduğunda Bile Muhtemelen Değildir

Maalesef kullanıcılar için, teknoloji endüstrisi gerçekten bir gelişme göstermedi “evrensel” biçim. Ve bunu asla yapamaz. Bu tür standartların tanıtılması genellikle “en küçük ortak payda” herkesin onayını almak için imtiyazlarla çözüm.

Ne düşünüyorsun? Bu kadar iyi olmasa bile evrensel olarak uyumlu bir yazılımı tercih eder miydiniz? Veya kullandığınız işletim sisteminden memnun musunuz ve diğer platformlardaki uygulamalara ilginiz yok mu? Aşağıdaki yorumlarda bize bildirin!

Resim Kredisi: Masterchief_Productions / Shutterstock




Henüz no comments

Modern teknoloji hakkında basit ve uygun fiyatlı.
Modern teknoloji dünyasında rehberiniz. Her gün bizi çevreleyen teknolojileri ve araçları nasıl kullanacağınızı ve Internet'te ilginç şeyleri nasıl keşfedeceğinizi öğrenin.