Skript, Baytkod ve Natif farkları nelerdir?

Skript, Baytkod ve Natif farkları nelerdir?

Sırasıyla göz atalım.

Skript nedir?

Yazılım dünyasında Skript'ten söz ediyorsak, söz konusu yazılım dilinin bir derleyicisi yoktur ve onun yerine yorumlayıcı bir uygulaması mevcuttur.

Skript olarak yazılan kod saf bir metin dosyasına kaydedilir. İlk bakışta sıradan metindir. Onu yorumlayıcı uygulamayla açınca, kod çalıştırılır ve uygulama harekete geçer.

Skript yorumlayıcı uygulamaları klasik, gelişmiş veya modern yöntemde tasarlanır. Klasik yöntemle çalışan bir yorumlayıcı kodu her adımda yeniden metin dosyasından okur ve onu inceler, en ufak ayrıntısına kadar parçalar ve belli başlı bir işlemden geçirdikten sonra, söz konusu kodun amacını tespit eder ve sonra beklenen işlemi gerçekleştirir. Bu yöntemle geliştirilen Skript motorları çok yavaş ve ağır çalışır.

Gelişmiş veya modern yönteme göre Skript kodu okunurken, ondan bir ara-kod oluşturulur ve bu ara-kod belleğe kopyalanır. Kod okuma işlemi bittikten sonra yorumlayıcı artık bu ara-kod üzerinden skript'ten tüm işlemlerini gerçekleştirir. Söz konusu ara-kod ya pseudo-kod denen bir biçimde (gelişmiş), yada baytkod (modern) olarak organize edilir.

Pseudo-kod biçiminde bulunan ara-kod klasik yönteme göre kat ve kat daha hızlı ve verimli çalışsada, yinede performans açısından yetersiz kalır. Çünkü bu modelde de yine kod işlemleri metin olarak bulunur ve metinsel verileri işlemek çok adım ve böylece zaman kayıbı ve fazla işlemci adımları gerektirir.

Baytkod biçiminde bulunan ara-kod çok hızlı ve tertemiz çalışır. Bir kere belleğe baytkod olarak okunmuş işlem adımları normal bir uygulama hızından hiçbir fark göstermeden çalışır.

Baytkodlu skript motoru sınıfına giren dillerden bazıları JavaScript, PHP, Ruby ve Lua.

Skript'in avantajları nelerdir?
  • Bakış açısına bağlı olarak, kod herkes tarafından incelene ve düzenlenebilir
  • Yorumlayıcısı bulunan her işletim sistemi ortamında çalışır
Peki dezavantajları nelerdir?
  • Bakış açısına bağlı olarak, kodun açık olması ticari açıdan iyi olmayabilir
  • Kodun çalışabilmesi için bir yorumlayıcı uygulamaya ihtiyaç vardır
  • Baytkod veya natif bir uygulamaya kıyasen çok yavaştır
  • Skript dilinin sundukları imkanlar dışında başka hiçbir şey yapamaz
  • Kullanılan arkaplan yöntemi klasik veya pseudo ise, birçok teknik olanaklardan mahrum kalır

Baytkod nedir?

Baytkod sanal makina kodudur. Söz konusu sanal makina aslında ortada yoktur. Sanal makine aslında sadece bir organizasyon konseptidir. Fakat baytkod'un çok büyük bir avantajı vardır. Eğer çok iyi düşünülmüş ve dizayn edilmiş ise, tıpkı gerçek makina kodu gibi çok kısa ve hızlı komutlara sahiptir. Böylece baytkod olarak çalıştırılan komutların gerçek işlemci üzerinde çalışan komutlardan hiçbir farkı yoktur.

Baytkod altyapılı yazılım dilleri arasında Basit, Java ve .Net dilleri (Visual Basic, C# vesaire) var. Tabi başka baytkod dilleride var.

Baytkod'un avantajları:
  • Gerçek makinadan bağımsız olduğu için, onu çalıştıracak baytkod motorunun bulunduğu her makina ve işletim sistemi ortamında mümkün olan en yüksek performans ile çalışır
  • Kod sonuçta normal bir makina kodu gibidir ve böylece fikir hırsızlığına karşı korunmaktadır
  • Çalışma hızı diğer natif derlenmiş uygulamalar ile aynı seviyededir
Baytkod'un dezavantajı:

  • Baytkod belleğe okunması gerekiyor. Bu natif bir uygulamaya göre birkaç saniye daha fazla sürebilir.

Natif nedir?

Natif gerçek makina kodudur. Natif olarak derlenen bir uygulama dosyası belli bir makina altyapısına ve işlemcisine ve hatta amacına göre belli bir işletim sistemine göre derlenir. Başka bir model makinada çalışmaz. Mesela ARM işlemcisine göre derlenen bir uygulama, intel işlemcisinde çalışmaz. Windows için derlenen bir uygulama, Linux'ta çalışmaz. Natif uygulamalar çok hızlıdır. Ayrıca natif derlenen dosyalarda gayet ufaktır.

Natif derleyicisi olan yazılım dilleri arasında C ve C++ var. Tabi başka natif derleyici dillerde var.

Natif'in avantajları nelerdir?
  • Uygulamalar çok hızlı açılır
  • Uygulamalar çok hızlı çalışır
  • Az bellek kullanır
  • İşlem adımları daha kısadır
  • Makinadan en çok verimi sağlar
  • Derlenmiş halini içeren dosyalar (mesela EXE) gayet ufaktır
Peki dezavantajları nelerdir?
  • Derlendiği makina ile sınırlıdır
  • Derlendiği işletim sistemi ile sınırlıdır
  • Geliştirilmesi daha çok zaman, beceri ve uğraşı gerektirebilir

Peki hangisi daha iyi?

Her üç modelin branşları farklıdır. Skript dilleri daha çok internet ortamında yaygındır. Bunun haricinde lokal sistemlerde otomasyon ve yönetimsel amaçlar çerçevesinde yaygın kullanılır.

Fakat yaygın skript dilleri modern baytkod altyapısıyla çalışırlar. Pseudo ve klasik modelde skript dilleri pek yaygın değil.

Baytkod ve natif çözümler hemen her tür ortamda kullanılır. İnternet ortamında sağlanan altyapılar genelde baytkod veya natif olarak kaşımıza çıkar. Mesela Java baytkod derleyicisidir. PHP ise bir Skript dilidir, ama kodunu belleğe baytkod olarak alır ve aynı performansla çalışır. JavaScript ve NodeJS motorlarıda JavaScript kodunu baytkoda dönüştürerek belleğe taşır.

Baytkod ve natif çözümler ayrıca karşımıza her türlü uygulama olarak çıkıyor. Cep telefonuna indirilen uygulamalar, bilgisayara kurulan uygulamalar genelde bu iki derleme modelinden birinde derlenmiş ve sunulmuştur.

Donanımlara geliştirilen sürücüler (Driver) ve robotik programlamada derleme modeli natifdir. Robotik programlamada baytkod'un olduğu durumlar var. Mesela Java, LUA gibi.

Peki Basit'in rolü nedir?

Basit'in hedefi büyüktür. Basit ileriki yıllarda natif kod oluşturacak derleyicilere sahip olacaktır, fakat baytkod derleyiciside daima varlığını koruyacaktır. Hedefte daha birçok işletim sistemi ve makina altyapısı vardır. Ayrıca Basit'in ilerki zamanda sunucu motoruda çıkacaktır. Böylece internet siteleri Basit ile geliştirilebilecektir.

Yorumlar