WASM (Web Montajı) nedir?

İleri SeviyeDec 25, 2023
WebAssembly açık kaynaklı bir web geliştirme çerçevesidir. Ne olduğu, geçmişi, nasıl çalıştığı ve faydaları hakkında daha fazla bilgi edinin.
WASM (Web Montajı) nedir?

Blockchain endüstrisi her zaman büyüme ve gelişme arayışında olan bir endüstridir. Endüstri, Ethereum Sanal Makinesi (EVM) tarafından desteklenen Ethereum'un başlangıcından sonra son zamanlarda patlama yaşadı ve gelişti. EVM bir dereceye kadar etkili olsa da WebAssembly (WASM) şeklinde yeni bir oyuncu şehre geldi. Bu yazıda WebAssembly'nin ne olduğuna, nasıl çalıştığına ve Kripto para endüstrisi ile olan bağlarına bakacağız.

Web Montajı (WASM) nedir?

Popüler olarak WASM olarak adlandırılan Web Assembly, programcıların kaynak kodunu kullanmasına veya geliştiricinin istediği şekilde değiştirmesine olanak tanıyan açık kaynaklı bir çerçevedir. WASM, yığın tabanlı bir sanal makine (VM) için ikili talimat formatıyla bunu bir adım daha ileri götürüyor. Üst düzey programlama dilleri için taşınabilir bir derleme hedefi olarak kullanılır. Web uygulamaları için yerele yakın performans vaat eden küçük, hızlı bir ikili opsiyondur.

WebAssembly, JavaScript de dahil olmak üzere herhangi bir dil için derleme hedefi olarak hizmet verecek şekilde tasarlanmıştır. Bu, geliştiricilerin C/C++, Go, Rust ve daha pek çok programlama dilini, JavaScript'e yakın bir alternatif olarak tarayıcılarda neredeyse yerel olarak çalıştırılabilen tek bir standartta derleyebilecekleri anlamına gelir.

Geliştiriciler, oyunlar, müzik akışı, video düzenleme ve Bilgisayar destekli tasarım (CAD) uygulamaları gibi yüksek performanslı kullanım durumları için Web Assembly'den yararlanabilir. Google Earth ve Figma gibi birçok web hizmeti halihazırda WASM'yi benimsemiştir.

WebAssembly'ın Tarihçesi

WebAssembly, gelişmiş web performansı ihtiyacını ve web platformuna daha geniş bir dil yelpazesi sunma isteğini çözmek için geliştirildi. 2015 yılında Mozilla, Google, Microsoft ve Apple'dan oluşan WebAssembly Topluluk Grubu yeni bir ikili format oluşturdu. 2017 yılında, ikili format, yürütme modeli ve web platformuna entegrasyon için istikrarlı bir temel sağlamak üzere WebAssembly MVP (Minimum Uygulanabilir Ürün) piyasaya sürüldü.

Bir sonraki sürüm, Chrome, Firefox, Safari ve Edge gibi büyük tarayıcıların WebAssembly'yi içerdiği tarayıcı desteğiydi. Geliştiriciler, teknolojinin web tarayıcıları dışındaki kullanışlılığını keşfettiler ve yüksek performanslı bilgi işlem için sunucu tarafı ortamları alanında WASM'nin kullanımını keşfetmeye başladılar.

Web Montajı Nasıl Çalışır?

WebAssembly'ın nasıl çalıştığını anlamak için JavaScript motorunun nasıl çalıştığını anlamanız gerekir. JS kodunu derlemek için motor, kodu satır satır dolaşan ve kod türlerinin yanı sıra geçerli sözdizimini doğrulayan bir araç olan Ayrıştırıcıdan kodu geçirmek gibi birkaç şey yapar. Bu tamamlandığında Ayrıştırıcı, Soyut Sözdizimi Ağacı (AST) adı verilen bir ağaç veri yapısı oluşturur.

AST oluşturulduktan sonra, motor yorumlayıcısı AST'yi alır ve onu kodun ara temsili olan Bayt koduna dönüştürür. Motor derleyicisi daha sonra Bayt kodunu alır ve bunu makinelerin işlemcilerinde çalıştırabileceği koda dönüştürür.

WebAssembly, JavaScript'ten farklı şekilde çalışır ve daha hızlı olduğu söylenir çünkü WASM kodu doğrudan derleyiciye gider ve JavaScript sürecindeki birinci ve ikinci adımları etkili bir şekilde atlar. Bunun nedeni, dinamik olarak yazılan bir dil olan JavaScript'ten farklı olarak WASM'nin statik olarak yazılan bir dil olması, yani dil yazılırken türlerin önceden bildirilmesidir; bu nedenle derleme zamanında bilinirler ve kontrol edilirler.

Yani bir WASM kodu yazarken, kodu türleriyle birlikte, genellikle statik olarak yazılan bir dilde yazarsınız. Daha sonra önceden derlenmiş bir WASM modülü oluşturursunuz ve son olarak, ayrıştırma ve dönüştürme aşamasını atlayıp Ara Temsil aşamasına geçerek kodu doğrudan motor derleyicisi tarafından çalıştırırsınız.

WebAssembly'ın Özellikleri

WebAssembly birkaç dili derlemek için geliştirildi ve JavaScript'ten daha hızlı olduğu söyleniyor. Bu başarıyı başarabilmek için yalnızca çerçevenin emniyetini ve güvenliğini garanti etmekle kalmayıp aynı zamanda güvenilir olduğunu da kanıtlayan belirli özelliklerle donatılmıştır.

W3C Standardı

Etkinliği ve güvenilirliği konusunda güven tesis eden WebAssembly, web'in resmi dillerine eklendi. Şu anda dört dil var, HTML. CSS, JavaScript ve şimdi de WebAssembly. Dolayısıyla WebAssembly artık WC3 standardı olarak kabul ediliyor.

Hız ve Verimlilik

WebAssembly'nin yığın makinesi, yükleme süresini ve boyutunu büyük ölçüde etkileyen ikili kod biçiminde çalışacak şekilde tasarlandı. Hızı ve verimliliği onu blockchain geliştirmenin temel unsuru haline getirdi ve birçok geliştirici artık bu dili sağlam ekosistemler için kullanıyor.

Güvenlik

Sanal makine, WebAssembly kodunu tarar, doğrular ve bellek açısından güvenli bir sanal alanda çalıştırır. Gömülü ortam, dosya sistemi veya ağ bağlantı noktaları dahil olmak üzere yerel kaynaklara erişimi kısıtlar. Bu, web'den alınan ve tarayıcıda çalıştırılan WebAssembly kodunun, donanım ve yazılım kaynaklarıyla uğraşırken oldukça sınırlı olduğu anlamına gelir.

Açık kaynak

W3C'nin proje üzerinde çalışan birkaç tarayıcı firması var. Bu, topluluğun katkıda bulunmasına olanak tanıyarak geriye dönük uyumlu, özelliksiz uygulamaların ve özellikleri test edilmiş uygulamaların oluşturulmasına olanak tanır.

WebAssembly ve Ethereum

WebAssembly şu anda Ethereum Sanal Makinesine (EVM) yakın bir alternatif olarak görülüyor. Bunun nedeni, WebAssembly aracılığıyla geliştiricilerin artık farklı platformlarda etkili bir şekilde çalışmasını sağlarken farklı dillerin derlenebileceği etkili bir talimat seti ile donatılmış olmasıdır. WebAssembly komut seti, kayan nokta talimatlarını silerek kolayca belirlenebilir hale gelebilir, bu da onu EVM için uygun bir alternatif haline getirebilir.

Ethereum, WebAssembly'a ilgi gösterdi ve Ethereum Sanal Makinesinin önerilen yeniden tasarımı olan Ethereum WebAssembly'yi (EWASM) geliştirme çabalarına öncülük ediyor. Başarılı olduktan sonra EWASM'nin daha verimli olması ve WASM ile olan bağları nedeniyle geliştiricilerin çeşitli dillerde kod yazmasına olanak sağlaması bekleniyor. EWASM, Ethereum düğümlerinde yorumlanacak, önceden derlenmiş bir bayt kodu dili olarak EVM gibi çalışacaktır.

Bununla dApp'ler üretimde daha verimli hale gelecek. WASM'nin entegrasyonu, Rust ve Go gibi popüler dillere alışkın olan kişiler için akıllı sözleşmelerin geliştirilmesini daha erişilebilir hale getirecek. Bu, geliştiricilerin Ethereum'da kullanışlı uygulamalar oluşturmadan önce sağlam bir şekilde nasıl yazılacağını öğrenme ihtiyacını ortadan kaldırır.

WebAssembly'dan Yararlanan Blockchain Projeleri

WASM, blockchain faaliyetleri için tam olarak geliştirilmemiş olsa da, bazı projeler zaten bunu platformlarının işlevselliğini geliştirmek için kullanıyor. Örneğin:

Evren

Cosmos, merkezi bir sunucuda beklemek zorunda kalmadan dağıtılmış defterler arasındaki iletişimi kolaylaştırmak için geliştirilmiş bir blockchaindir. Popüler olarak Blok Zincirlerinin İnterneti olarak adlandırılan bu bloklar, WASM'yi ana yapı yığını olarak kullanan ilk blok zincirlerden biriydi. Yerel blockchain geliştirmeleri için Cosmos SDK, Tendermint BFT ve IBC protokolü için WASM'de akıllı sözleşmeler oluşturmaya yönelik bir çerçeve olan CosmWASM'yi uyguluyorlar.

Puantiye

Polkadot'un WASM kullanımı, WebAssembly'de yorumlanan veya derlenen diğer dillere izin veren bir meta protokol olmasına dayanır. WASM'nin kullanılması, çatalsız altyapıya ve alt katmanlara, diğer uygulamaların çok az koordinasyonla veya hiç koordinasyon olmadan bağlı zincirlerde ayarlamalar yapmasına olanak tanıdı.

Protokole Yakın

Near protokolü, WebAssembly kullanarak merkezi olmayan uygulamalar oluşturmak için oluşturulmuş halka açık bir blok zinciridir. Near, WebAssembly'ı gelişmiş performans ve taşınabilirlik için web teknolojisinden yararlanmanın iyi bir yolu olarak kullanıyor. Daha taşınabilir bir seçenek olduğunu ve aynı zamanda web geliştiricilerine kolay erişim sağladığını gördükleri için AssemblyScript'i kendi dilleri için uyguladılar.

Web Montajı ve JavaScript

JavaScript, onlarca yıldır web geliştirmeyi destekleyen, üst düzey, yorumlanmış bir programlama dilidir. Web sayfalarına etkileşim eklemek için geliştirilmiştir ve web tarayıcıları tarafından istemci tarafında görüntülenir. Yıllar geçtikçe, kullanımının kolay olması ve yaygın olarak benimsenmesi nedeniyle dilin popülaritesi arttı.

World Wide Web'in başlangıcından bu yana her zaman JavaScript vardı. Son zamanlarda WASM (WebAssembly) ortaya çıktı ve birçok kişi bu ikisinin yakından bağlantılı olduğuna inansa da WASM, JavaScript de dahil olmak üzere başka birçok şeyden oluşuyor. WASM, başlangıçta JavaScript'in web tarayıcılarında daha etkili çalışmasına yardımcı olmak için geliştirildi.

Her ne kadar hala aynı amaca hizmet etse de, WASM artık web tarayıcısının ötesine geçerek, JavaScript'in eksik olduğu bilinen iki alan olan uç ve sunucu uygulamalarına da yöneldi. Bunun nedeni, CPU seviyesinde WASM'nin ikili formatta çalışması ve aynı zamanda JavaScript gibi bir programlama dili olmamasıdır. WASM, JavaScript, Python, Rust ve çok daha fazlası gibi bir dizi farklı dili barındıran ekstra işlevsellik sağlar. WASM'nin JavaScript üzerindeki üstünlüğü, JavaScript ile sınırlı olmamakla birlikte dille bütünleşme yeteneğini korur. Entegrasyon, halihazırda yorumlanmış dili ve çalışma zamanını WASM modüllerinde derleyerek JavaScript'in performansında büyük bir artış sağlar.

WebAssembly vs Rust

WebAssembly ve Rust birbirinden çok farklı iki teknolojidir ancak aynı zamanda sıklıkla birbirleriyle ilişkilendirilir. Rust, hızı, güvenliği ve yüksek performansıyla bilinen popüler bir programlama dilidir. WebAssembly ise kodları çalıştırılabilir makinelere dönüştüren bir derleyicidir. Tanımlarının yanı sıra, iki teknoloji aşağıdaki yönlerden farklıdır.

Web Geliştirme

WASM öncelikle web geliştirmede kullanılır ve JavaScript de dahil olmak üzere web tarayıcılarında kod yürütülmesini sağlar. Aynı zamanda Rust, sistem programlama, oyun geliştirme ve çok daha fazlasını içeren çeşitli uygulamalara sahip çok amaçlı bir dildir.

Sözdizimi ve Dil Özellikleri

WASM bir programlama dili değil, ikili bir talimat formatıdır ve C, C++ ve Rust gibi diller tarafından hedeflenebilir. Rust ise söz dizimi ve ödünç alma, sahiplenme ve daha birçok özelliğiyle bir dildir.

Bellek yönetimi

WASM, program tarafından kolayca erişilebilen doğrusal adres alanı sağlayan doğrusal bir bellek modeli kullanır. Bellek yönetimi geliştirici tarafından manuel olarak gerçekleştirilir ve açık tutulur. Rust ise hafıza güvenliğine önem veriyor. Bellek güvenliğini etkilediği bilinen çeşitli hataları ortadan kaldıran, derleme sırasında katı bir kural uygulayan bir ödünç alma denetleyicisi ve sahiplik sisteminden yararlanır.

Eşzamanlılık

Rust, sahiplik sistemi aracılığıyla eşzamanlılık programlaması için kendi desteğiyle donatılmıştır; bu, geliştiricilerin veri yarışları riski olmadan güvenli ve eşzamanlılık kodu yazmasına olanak tanır. Rust'tan farklı olarak WASM'nin bu gibi özellikleri yoktur; ancak ana bilgisayar ortamının eşzamanlılık özelliklerinden yararlanabilir.

WebAssembly'a Başlamak için En İyi Kaynaklar

WASM'nin nasıl kullanılacağını öğrenirken, çeşitli dillerde WASM projeleri oluşturmak isteyen yeni başlayanlar için belirli kurslar en iyi bilgiyi sağlar. Bu kurslardan bazıları şunlardır:

Udemy

Bu kurs, WebAssembly JavaScript API'sini ve Emscripten araç setini öğrenmeye yönelik eksiksiz bir kılavuz sağlar. Kurs satın alındıktan sonra kullanıcılara 2 saatten fazla isteğe bağlı video derslere ve 17 indirilebilir eğitim kaynağına erişim sağlar.

Kurs, yeni başlayanlara WebAssembly'ın ne olduğu ve web geliştirmeyi nasıl etkilediği hakkında bilgi verir. Ayrıca yerel Java Script tarayıcı API'lerini kullanarak WebAssembly modüllerini nasıl yükleyip çalıştıracağınızı da öğreneceksiniz.

Çoğul görüş

Bu kurs WebAssembly'ın temellerini ve neden önemli olduğunu kapsar. Kurs size WebAssembly kullanarak nasıl uygulama oluşturulacağını ve C/C++ gibi diğer dilleri kullanarak nasıl web uygulamaları oluşturulacağını gösterecektir.

Serbest Kod Kampı

WebAssembly'deki bu ücretsiz kurs, yeni başlayanlara WASM'nin neyle ilgili olduğu hakkında ayrıntılı bilgi verir. Kodun nasıl yazılacağını, derleneceğini, dahil edileceğini ve başlatılacağını öğretir. C++ kodunun WASM'de nasıl derleneceğine dair adım adım bir kılavuz sağlar.

Çözüm

WebAssembly şu anda web geliştirmede ön saflarda yer almaktadır ve hızı, güvenliği ve uyarlanabilirliği, geliştiricilerin Merkezi Olmayan Uygulamalar için yeni bir dünyaya öncülük edeceğine inandıkları başlıca özelliklerdir. Daha fazla ürün WASM'den yararlanmaya başladıkça, akıllı sözleşmelerin kolayca geliştirildiği ve geliştiricinin bildiği dillerle güvence altına alındığı bir geleceğin kapıları artık ulaşılabilir durumda.

learn.articles.author Tamilore
learn.articles.translator Cedar
learn.articles.reviewer Matheus、Wayne、Ashley He
learn.articles.copyrightNoticeOne
learn.articles.copyrightNoticeTwo
learn.articles.start.now
learn.articles.start.now.voucher
learn.articles.create.account