Bilgisayarlar aslında yazdığınız kodu çalıştıramaz JavaScript (veya bu konuyla ilgili başka bir dil). Bilgisayarlar yalnızca makine kodunu çalıştırabilir. Belirli bir bilgisayarın çalıştırabileceği makine kodu, bu komutları çalıştıracak olan işlemci içinde tanımlanır ve farklı işlemciler için farklı olabilir.
Açıkçası, makine kodu yazma insanların yapması zor oldu (125 ek komut veya 126 veya belki 27). Bu sorunun üstesinden gelmek için montaj dilleri olarak bilinen şeyler yaratıldı. Bu diller, komutlar için daha açık isimler kullanmıştır (ekleme için ADD gibi) ve böylece tam makine kodlarını hatırlama ihtiyacını ortadan kaldırmıştır. Montaj dillerinin hala bilgisayarın bu komutları dönüştürdüğü özel işlemci ve makine koduyla birebir ilişkisi vardır.
Montaj Dilleri Derlenmeli veya Yorumlanmalıdır
Çok erken yazmanın daha kolay olduğu anlaşıldı Diller gerekliydi ve bilgisayarın bunları, bilgisayarın gerçekten anlayabileceği makine kodu yönergelerine çevirmek için kullanılabileceğini belirtti. Bu çeviri ile alınabilecek iki yaklaşım vardı ve her iki alternatif de seçildi (kullanılan dile ve nerede çalıştırıldığına bağlı olarak biri veya diğeri kullanılacaktır).
Derlenmiş bir dil, program yazıldıktan sonra kodu, derleyici ve bu programın makine kodu sürümünü üretir. Programı çalıştırmak istediğinizde, makine kodu sürümünü çağırmanız yeterlidir. Programda değişiklik yaparsanız, değiştirilen kodu test edebilmek için programı yeniden derlemeniz gerekir.
Yorumlanan dil, program çalışırken yazdığınız talimatların makine koduna dönüştürüldüğü bir dildir. Yorumlanan bir dil temel olarak program kaynağından bir talimat alır, onu makineye dönüştürür kodu, bu makine kodunu çalıştırır ve daha sonra tekrarlamak için bir sonraki talimatı kaynaktan alır. süreci.
Derleme ve Yorumlamada İki Değişken
Bir varyant iki aşamalı bir işlem kullanır. Bu varyantla, programınızın kaynağı doğrudan makine kodunda değil, bunun yerine hala belirli bir dilden bağımsız olan derleme benzeri bir dile dönüştürülür işlemci. Kodu çalıştırmak istediğinizde, derlenen kodu işlemciye özgü bir yorumlayıcı aracılığıyla işleyerek makine kodunu bu işlemciye uygun hale getirir. Aynı yaklaşım derlenmiş kod birçok farklı işlemci tarafından yorumlanabildiğinden, bu yaklaşım işlemci bağımsızlığını korurken derlemenin birçok faydasına sahiptir. Java bu değişkeni sıklıkla kullanan bir dildir.
Diğer varyant, Tam Zamanında derleyici (veya JIT) olarak adlandırılır. Bu yaklaşımla, kodunuzu yazdıktan sonra derleyiciyi çalıştırmazsınız. Bunun yerine, kodu çalıştırdığınızda bu otomatik olarak gerçekleşir. Tam Zamanında bir derleyici kullanarak, kod deyime göre yorumlanmaz, hepsi bir arada derlenir çalıştırılmak için çağrıldığında her seferinde gidin ve daha sonra yeni oluşturduğu derlenmiş sürüm Çalıştırmak. Bu yaklaşım, kodun yorumlanmış gibi görünmesini sağlar, ancak hatalar yerine yalnızca hataya ulaşıldığında, derleyici tarafından algılanan hatalar, o noktaya kadar olan tüm kodlar yerine hiçbir kodun çalıştırılmasına neden olmaz Çalıştırmak. PHP genellikle tam zamanında derleme kullanan bir dile örnektir.
JavaScript Derlenmiş veya Yorumlanmış mı?
Şimdi, yorumlanmış kodun ve derlenmiş kodun ne anlama geldiğini biliyoruz, bir sonraki cevaplamamız gereken soru bunların hepsinin JavaScript ile ne ilgisi olduğudur? JavaScript'inizi tam olarak nerede çalıştırdığınıza bağlı olarak, kod derlenebilir veya yorumlanabilir veya belirtilen diğer iki varyanttan herhangi birini kullanabilir. Çoğu zamanJavaScript'inizi bir web tarayıcısında çalıştırma ve orada JavaScript genellikle yorumlanır.
Yorumlanan diller genellikle derlenen dillerden daha yavaştır. Bunun iki nedeni var. Birincisi, yorumlanacak kodun çalıştırılmadan önce yorumlanması gerekir ve ikincisi, ifadenin her çalıştırılmasında gerçekleşir (yalnızca JavaScript'i her çalıştırdığınızda değil, bir döngü döngü etrafında her seferinde yapılması gerekir). Bu, JavaScript ile yazılmış kodun, diğer birçok dilde yazılmış koddan daha yavaş çalışacağı anlamına gelir.
Bunu bilmek, tüm web tarayıcılarında çalışabileceğimiz tek dilin JavaScript'in nerede olduğu konusunda bize nasıl yardımcı olur? Web tarayıcısında yerleşik olan JavaScript yorumlayıcısının kendisi JavaScript ile yazılmamıştır. Bunun yerine, daha sonra derlenen başka bir dilde yazılır. Bunun anlamı, JavaScript'in görevi JavaScript motorunun kendisine yüklemenize izin veren komutlardan yararlanabilmeniz için JavaScript'inizin daha hızlı çalışmasını sağlayabilmenizdir.
JavaScript'in Daha Hızlı Çalışmasını Sağlama Örnekleri
Buna bir örnek, tüm tarayıcıların olmasa da bazılarının JavaScript motoru içinde bir document.getElementsByClassName () yöntemi uygularken, diğerleri henüz bunu yapmadığıdır. Bu özel işlevselliğe ihtiyaç duyduğumuzda, JavaScript motorunun özelliği sağladığı tarayıcılarda kodun daha hızlı çalışmasını sağlayabiliriz yöntemin zaten var olup olmadığını anlamak ve JavaScript'te yalnızca bu kodun kendi sürümünü oluşturmamızı sağlamak bize. JavaScript motoru bu işlevi sağlarsa, JavaScript ile yazılmış kendi sürümümüzü çalıştırmak yerine bunu kullanırsak daha hızlı çalışmalıdır. Aynı durum, JavaScript motorunun doğrudan aramamızı sağladığı tüm işlemler için de geçerlidir.
Ayrıca JavaScript'in aynı isteği yapmanın birden çok yolunu sağladığı durumlar da olacaktır. Bu durumlarda, bilgiye erişmenin yollarından biri diğerinden daha spesifik olabilir. Örneğin, document.getElementsByTagName ('table') [0] .tBodies ve document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') her ikisi de web sayfasındaki ilk tabloda tbody etiketlerinin aynı nodelistini al, ancak bunlardan ilki almak için belirli bir komut tbody etiketleri, ikincisinin bir parametrede tbody etiketlerini aldığımızı belirlediği ve diğer değerlerin yerine etiketleri. Çoğu tarayıcıda, kodun daha kısa ve daha spesifik bir çeşidi daha hızlı çalışır (bazı durumlarda ikinci varyanttan daha hızlı) ve bu nedenle daha kısa ve daha spesifik kullanmak mantıklı sürümü. Ayrıca kodun okunmasını ve bakımını kolaylaştırır.
Şimdi bu vakaların çoğunda, işlem süresindeki gerçek fark çok küçük olacak ve sadece kodunuzun aldığı süre içinde fark edilir bir fark elde edebileceğiniz bu tür birçok kod seçeneğini bir araya getirirsiniz Çalıştırmak. Daha hızlı çalışmasını sağlamak için kodunuzu değiştirmenin, kodu önemli ölçüde daha uzun veya daha zor hale getirmesi oldukça nadirdir ve genellikle tersi doğrudur. Ayrıca, daha spesifik varyantı bile hızlandıran JavaScript motorlarının gelecekteki sürümlerinin oluşturulabileceği ek bir avantaj da vardır. ayrıca, belirli bir varyantı kullanmak, kodunuzun gelecekte hiçbir şeyi değiştirmenize gerek kalmadan daha hızlı çalışacağı anlamına gelebilir.