Tipik ana bilgisayar akışı ...
Input Disk/Tape/User (runtime) --> Job Control Language (JCL) --> Output Disk/Tape/Screen/Printer
| ^
v |
`--> COBOL Program --------'
Tipik Linux akışı ...
Input Disk/SSD/User (runtime) --> sh/bash/ksh/zsh/... ----------> Output Disk/SSD/Screen/Printer
| ^
v |
`--> Python script --------'
| ^
v |
`--> awk script -----------'
| ^
v |
`--> sed script -----------'
| ^
v |
`--> C/C++ program --------'
| ^
v |
`--- Java program ---------'
| ^
v |
: :
Kabuklar Linux'un yapıştırıcısıdır
Sh / ksh / bash / ... gibi Linux kabukları , eski ana bilgisayar Job Control Language'e çok benzer şekilde girdi / çıktı / akış kontrol atama olanakları sağlar ... ama steroidler üzerinde! Onlar edilir komple dilleri Turing verimli ve O / destekleri S herhangi bir dilde yazılmış diğer yürütme süreçlerinde veri ve kontrol geçmek geliştirilmiştir ancak kendi başlarına.
Çoğu Linux uygulaması, programın büyük bir kısmının hangi dilde yazıldığına bakılmaksızın, kabuk komut dosyalarına bağlıdır ve Bash en yaygın uygulama haline gelmiştir. Masaüstündeki bir simgeye tıklamak genellikle kısa bir Bash komut dosyası çalıştırır . Bu komut dosyası, doğrudan veya dolaylı olarak, gerekli tüm dosyaların nerede olduğunu bilir ve değişkenleri ve komut satırı parametrelerini ayarlar ve sonunda programı çağırır. Bu bir kabuğun en basit kullanımıdır.
Ancak bildiğimiz haliyle Linux, sistemi başlatan, olaylara yanıt veren, yürütme önceliklerini kontrol eden ve programları derleyen, yapılandıran ve çalıştıran binlerce kabuk komut dosyası olmadan Linux olmazdı. Bunların çoğu oldukça büyük ve karmaşıktır.
Kabuklar, derleme zamanında değil çalışma zamanında birbirine bağlanan önceden oluşturulmuş bileşenleri kullanmamıza izin veren bir altyapı sağlar. Bu bileşenler, kendi başlarına veya yeniden derlenmeden başka kombinasyonlarda kullanılabilen bağımsız programlardır. Bunları çağırmanın sözdizimi, bir Bash yerleşik komutununkinden ayırt edilemez ve aslında, sistemde tek başına çalıştırılabilir olan ve genellikle ek seçeneklere sahip olan çok sayıda yerleşik komut vardır.
Performansta Python ve Bash arasında dil çapında bir fark yoktur . Tamamen her birinin nasıl kodlandığına ve hangi harici araçların çağrıldığına bağlıdır.
Awk, sed, grep, bc, dc, tr, vb. Gibi iyi bilinen araçlardan herhangi biri, bu işlemleri her iki dilde tozda yapmayı bırakacaktır. Bash daha kolay ve çağrı ile bu gibi bir araç ile ilgili veri geri geçmek için daha etkili olduğu için daha sonra bir grafiksel kullanıcı arabirimi olmadan herhangi bir şey için tercih edilir Bash daha Python .
Verim
Bash kabuk betiğinin hangi programları çağırdığına ve bunların alt görev için uygunluğuna bağlı olarak, genel verim ve / veya yanıt verme hızının eşdeğer Python'dan daha iyi veya daha kötü olup olmayacağına bağlıdır . İşleri karmaşıklaştırmak için Python , çoğu dil gibi, diğer çalıştırılabilir dosyaları da çağırabilir, ancak daha hantaldır ve bu nedenle çok sık kullanılmaz.
Kullanıcı arayüzü
Bir alan Python net kazanır kullanıcı arayüzüdür. Yani Bir o doğal GTK formatını destekler ve çok daha sezgisel geride olduğu yerel veya istemci-sunucu uygulamaları oluşturmak için mükemmel bir dil yapar Bash .
Bash yalnızca metni anlar. Diğer araçlar bir GUI için çağrılmalı ve veriler onlardan geri iletilmelidir. Bir Python komut bir seçenektir. Daha hızlı ancak daha az esnek seçenekler YAD, Zenity ve GTKDialog gibi ikililerdir .
İken gibi kabukları Bash gibi GUI'leri ile iyice işin Yad , Gtkdialog (gömülü XML gibi GTK + işlevlerine arayüzünün) , iletişim ve xmessage , Python çok daha yetenekli ve böylece daha iyi karmaşık GUI windows içindir.
Özet
Kabuk komut dosyalarıyla derleme, bir bilgisayarı hazır bileşenlerle bir araya getirmeye benzer.
İle Bina Python , C ++ veya en başka bir dil daha birlikte akıllı olduğun gibi cips (kitaplıklar) ve diğer elektronik parçalar kaynatılması ile bir bilgisayar bina gibidir.
En iyi sonuçlar genellikle her birinin en iyi yaptıklarını yapabileceği bir dil kombinasyonu kullanılarak elde edilir . Bir geliştirici buna " çok dilli programlama " adını veriyor .