Ne, Nasıl ve Neden JavaScript motoru?
Merhaba sevgili okuyucular, Bu makale neden bir Motora ihtiyacımız olduğunu, nasıl çalıştığını ve WTH'nin bir JS motoru olduğunu merak edenler içindir !!! Yani, Bu makale bölümlere ayrılmıştır. JS Neden Ne ve Nasıl Çalışır?
Buradaki sorumluluk reddi - ince ayrıntıları (yığın, bellek yığını, vb.) gözden geçirmeyeceğiz. Makale yalnızca JS Motoruna odaklanacaktır. Bu makaleyi diğer sıkıcı makaleler gibi değil etkileşimli hale getirmeye çalıştım. böylece bu makalenin sunduğu her şeyi anlayabilir ve elde edebilirsiniz.
Soruları yükseltelim, değil mi?
Ne ve Neden JS Motoru?
Bir JavaScript motoru , JavaScript kodunu çalıştıran bir yazılım bileşenidir . İlk JavaScript motorları yalnızca yorumlayıcıydı , ancak ilgili tüm modern motorlar…. vb. (Wikipedia'ya göre)
Monotonluğu kıralım: Yukarıdaki satırı anlamak yerine şunu anlayalım:
Diyelim ki iki kişi var, biri Fransız ve diğeri Alman✈️, ikisinin de biraz konuşmaya ihtiyacı var, nasıl yaparlardı? tabii ki bazı çevirmen/tercümanların yardımıyla.
Aynısı Bilgisayar ve Kodunuz için de geçerli, bir motora/aracıya ihtiyacı var çünkü Bilgisayarınız kodu anlayamıyor, teknik olarak bilgisayar anlamıyor, source codeanlıyor machine code.
anladığınız şu demektir:
'Merhaba!'
ve bu, bilgisayarınızın anladığı şeydir
' 01001000 01100101 01101100 01101100 01101111 00100001'
Kaynak Kodu ➡️⚙️➡️ Makine Kodu
kodu dönüştürme şekli türü belirler. gibi interpreted, compiledve JIT compiled.
Compiled dili, yorumlanması ve JIT derlemesinin ne olduğunu duymuş olabilirsiniz ????
ve inanıyorum ki birçok insan javascript'in yorumlanmış bir dil olduğunu düşünüyor. olmadığını söyleyeyim❌. “ JS, JIT (Tam Zamanında) derlenmiş bir dildir”.
her yolu anlayalım.
- Derleme: derlemede tüm kaynak kodu bir kerede daha iyi performansa sahip makine koduna dönüştürülür. derleme daha hızlıdır çünkü kaynak kod zaten derlenmiştir, biz sadece onu yürütüyoruz. bu yüzden zaten bayt kodumuz/makine kodumuz hazır olacak.
- Tercüman: aynı işi yapar ama satır satır, her şeyi aynı anda yapmaz. bu da onu derleyicilerden 10 kat daha yavaş yapar. kod aynı anda okunur ve yürütülür, JS eskiden tamamen yorumlanmış bir dildi. bu da JS'yi Çok Çok Çok daha yavaş hale getirdi!!.
- Yavaş yürütmeyi önlemek için modern JS JIT (tam zamanında) derleme yaklaşımını kullanın, burada kaynak kod makine koduna dönüştürülür, ancak derlemenin aksine taşınabilir dosya oluşturmaz. ve yürütme hemen gerçekleşir. modern JS motorunun her ikisini de kullandığı anlamına gelir.
- Yorum — Bir satırı okursunuz ve bir satırı çevirirsiniz, yine ikinci satır — bir satırı çevirirsiniz. bu da çok zaman alıyor,
- Derleme — Kitabın tamamını okudunuz - kitabın kendi versiyonunuzu Hintçe yapın ve okuması için arkadaşınıza verin. böylece daha sonra ne zaman birine açıklamaya ihtiyacın olursa, bunu yapabileceksin. bu daha hızlı bir yoldur.
- JIT derlemesi - Kitabın bir kopyasını çıkarmak yerine kitabı okursunuz. arkadaşına anlatırsın, böylece kitabın bir kopyasına gerek kalmaz. en etkili ve hızlı yol hangisidir.
JS kodu, bu adımlardan geçmesi gereken motorda bu şekilde yürütülür. kaynak kodunu makine koduna dönüştürmek için.
Tek tek anlayalım:
- Tanrı aşkına ilk adım "kodlamak" olurdu!, XD!
- Ayrıştırma: ayrıştırma, kaynak kodunu bir simgeye dönüştürür (bu, kodunuzun const, message, =, 'hello' gibi olacağı anlamına gelir. bunlar 4 belirteçtir), ardından belirteç , Soyut sözdizimi ağacı (AST ) adlı bir veri yapısına dönüştürülür. ) , buna benzeyen
Bu sadece bir kod satırı, programınızın ne kadar kapsamlı olacağını hayal edin. neden AST'ye ayrıştırmaya ihtiyacımız olduğunu merak ediyor olabilirsiniz. doğrudan sahip olduğumuz her şeyi derleyemez miyiz?
Bu nedenle, AST'nin programın ve dilin doğruluğunu✅ ve doğru kullanımını doğrulamada kritik bir rol oynadığını söyleyeyim. (örneğin , lint hakkında bilgisi olmayanlarınız için linting AST kullanır. kodunuzu kontrol eder ve hataları gösterir, harika değil mi ) ve AST aynı zamanda babel, webpack, minifiers ve diğer yerlerde de kullanılır. sözdizimi vurgulayıcıları.
AST'nin neye benzediğini görmek istiyorsanız, bu web sitesini kontrol etmek isteyebilirsiniz. veya bu örneğe bakın.
3. Derleme: ⚙️ AST'yi makine koduna/binary koduna dönüştürür, artık kod bilgisayarımızın anlayabileceği Binary koduna (0, 1) dönüştürülmüştür.
4. Yürütme: Çağrı yığınında gerçekleşir (bu, ele alınması gereken başka bir ilginç konudur, ancak burada ele almayacağız). hikaye burada bitmiyor,
5. Optimizasyon: modern JS motoru, kodu sürekli olarak optimize eder. JIT neden hızlıdır? çünkü önce makine kodunun optimize edilmemiş sürümünü oluşturacak, böylece en azından yürütme olabildiğince hızlı gerçekleşecek ve arka planda, kodu optimize edecek sürekli ♻️ optimizasyon olacak ve önceki optimize edilmemiş kod yenisiyle değiştirilecek optimize edilmiş olanlar.
Sonuç :
Neden Motora İhtiyacımız Var? ➡ Bizim kodumuz (kaynak Kodu) bilgisayar tarafından anlaşılamayacağı için sadece ikili kodu(0,1)/Makine Kodunu anlar. bu yüzden dönüşümümüz için bir arabulucuya ihtiyacımız var (Motorumuz bunu yapıyor),
Motor Ne Yapar ➡ Kaynak Kodu ➡️⚙️➡️ Makine Kodu
Motor Nasıl Çalışır ➡ Dört adımda yapar
Kaynak Kodu ➡ ➡️⚙️➡️ ➡ AST ( Soyut Söz Dizimi Ağacı ) ➡ ➡️⚙️➡️ ➡ İkili Kod/Makine kodu ➡ ➡️⚙️➡️ ➡ Çağrı yığınında yürütme ➡ ➡️⚙️➡️ ➡ optimizasyon ♻️

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































