Rust, birçok programcı için tercih edilen yeni dildir ve birçok proje Rust’ta sıfırdan yazılır. Ve bunun için iyi nedenler var: dil hafızada güvenli, yüksek performanslı, modern ve etkileyici. Ama her zaman sıfırdan başlamaz. Mimar ve yazılım geliştiricisi Stefan Baumgartner ile ne zaman JavaScript ve TypeScript arasında geçiş yapmaya değer olduğu ve nelere dikkat edilmesi gerektiği hakkında konuştuk.
Duyuru
Rust’a geçtiklerinde JavaScript programcıları için en büyük değişiklik nedir ve neden?
Dinamik olarak yazılan bir dil olan JavaScript, nesneleri çok kolay bir şekilde oluşturmanıza ve değiştirmenize olanak tanır. Boş bir nesne oluşturmak ve sürekli olarak yeni alanlar eklemek veya yapıyı koşullarınıza uyacak şekilde değiştirmek alışılmadık bir durum değildir. Bu harika bir esnekliğe sahiptir ve iki kitaplığı birbiriyle uyumlu hale getirmeniz gerektiğinde her türlü baş ağrısını ortadan kaldırır. TypeScript ve yapısal yazı sisteminde bile bu esneklik devam eder.
Rust’ta sabit türler vardır ve bunlar adlandırılmıştır, yani türe tam olarak veri atamanız gerekir. Tam olarak hangi verileri nereye koyduğunuzu bilmeniz gerekiyor ve zorluk seviyesi arttıkça hafıza hareketlerini de düzenli olarak düşünüyorsunuz. Ve bu, normalde JavaScript’te gerçekleşmeyen derleme işlemi sırasında! Bu kuşkusuz en büyük değişiklik. Öte yandan geliştiriciler, programın oluşturma sürecinden sonra da çalışacağından ve hata işleme ile ticaretin püf noktalarını bilirlerse kararlı ve hatasız olacağından emin olabilirler. Bu da bir değişiklik!
Çöp toplayıcılar (GC) performansı nasıl etkiler ve bu konuda ne yapabilirsiniz?
Bu büyük ölçüde değişir ve programlama diline bağlıdır. Temel olarak, yürütme hızı üzerindeki etkinin minimum olabileceği, ancak etkileyen faktörler olduğu belirtilmelidir. Canlı uygulamaları çalıştırmaktan sık sık duyduğum bir hikaye, Java GC’nin yalnızca yığın boyutu en az 8 GB olarak ayarlandığında düzgün çalışabileceğidir. Bu şekilde yeterli sayıda nesne depolanabilir ve GC, ana işlemcide fazla bir şey olmadığı zamanlarda çalışır. Bu, bir Java GC için geçerlidir, mutlaka herkes için geçerli değildir. Bu ayrıca size Java’da iyi performans sağlar, ancak her yerde 8 GB RAM’iniz yoktur. Özel olarak GC’yi etkinleştirmek için kullanılabilecek teknikler de vardır, ancak bu bile ayrıntılı bilgi gerektirir.
Öte yandan Go, genellikle GC’si ile etrafta yatan her şeyi nanosaniyeler içinde sildiği için övünür. Ancak Go, kasıtlı olarak az sayıda ifade olasılığı ve yalnızca bir eşzamanlılık modeli olan bir dildir. Yani orada da sınırlar var. Hepsinde olduğu gibi, çöp toplayıcı da, tıpkı Rust’ın kendi-ve-borç verme modelinde yaptığı gibi, birkaç değiş tokuşla gelen başka bir araçtır. Ayrıca Rust’ta, gerçek bellek modeliyle iyi çalışan Referans Sayaçları adlı bir çöp toplayıcının temel bir sürümü vardır. Büyük fark: Doğru aracı seçmek geliştiricilere kalmıştır. Ve açık olmalıdır, yani koddaki herkes neler olup bittiğini görebilir.
Genel olarak, Rust şu anda birçok proje için tercih edilen dildir, ancak JavaScript nerede daha iyi olabilir?
Duyuru
Rust’ın özellikle kararlılığı ve ifade gücü göz önüne alındığında, tercih edilen dil olmasını gerçekten isterdim. Ne yazık ki, henüz durum böyle değil – bu arada, meraklı insanlar oda.dev’e nasıl geçileceğini benden öğrenebilirler. Aslında soruya dikkat etmem gerekiyor, 3 yıl sonra bile hala Rust ile balayı aşamasındayım ve bence her şeyin dili harika.
Bununla birlikte, JavaScript yerel olarak orada çalıştığı için onunla bir tarayıcı uygulaması yazmazdım. Ayrıca, JavaScript’te kabuk programlarını veya veri dönüştürme işlevlerini kolayca komut dosyası yazma eşiğinin çok daha düşük olduğunu görüyorum. Dynatrace’te, müşterilerin tarayıcıya isteğe bağlı JavaScript iş yükleri yazıp bunları sunucusuz bir ortamda bir programa göre çalıştırdığı bir proje üzerinde çalışıyorum. Python dışında, bu tür görevlere erişimi bu kadar kolay sağlayacak başka bir dil düşünemezdim. Ancak sunucusuz platform Rust ile yazılmıştır!
Bay Baumgartner, yanıtlarınız için çok teşekkür ederim! Daha fazla ayrıntı, iki dil arasında bir karşılaştırma ve geçiş için birçok pratik ipucu yeni iX’in başlığında bulunabilir. Ayrıca, şu anda çıkan Temmuz sayısı, .NET ve Rust kombinasyonunun yanı sıra gömülü sistemler için Rust’a daha yakından bakıyor.
“Üç soru ve cevap” serisinde iX, ister kullanıcının PC önündeki bakış açısı, ister yöneticinin bakış açısı veya bir yöneticinin günlük hayatı olsun, günümüzün BT zorluklarının özüne inmek istiyor. Günlük uygulamanızdan veya kullanıcılarınızdan önerileriniz var mı? Özetle hangi konuda hangi önerileri okumak istersiniz? O zaman bize yazın veya forumda bir yorum bırakın.
(fo)
Haberin Sonu
Duyuru
Rust’a geçtiklerinde JavaScript programcıları için en büyük değişiklik nedir ve neden?
Dinamik olarak yazılan bir dil olan JavaScript, nesneleri çok kolay bir şekilde oluşturmanıza ve değiştirmenize olanak tanır. Boş bir nesne oluşturmak ve sürekli olarak yeni alanlar eklemek veya yapıyı koşullarınıza uyacak şekilde değiştirmek alışılmadık bir durum değildir. Bu harika bir esnekliğe sahiptir ve iki kitaplığı birbiriyle uyumlu hale getirmeniz gerektiğinde her türlü baş ağrısını ortadan kaldırır. TypeScript ve yapısal yazı sisteminde bile bu esneklik devam eder.
Rust’ta sabit türler vardır ve bunlar adlandırılmıştır, yani türe tam olarak veri atamanız gerekir. Tam olarak hangi verileri nereye koyduğunuzu bilmeniz gerekiyor ve zorluk seviyesi arttıkça hafıza hareketlerini de düzenli olarak düşünüyorsunuz. Ve bu, normalde JavaScript’te gerçekleşmeyen derleme işlemi sırasında! Bu kuşkusuz en büyük değişiklik. Öte yandan geliştiriciler, programın oluşturma sürecinden sonra da çalışacağından ve hata işleme ile ticaretin püf noktalarını bilirlerse kararlı ve hatasız olacağından emin olabilirler. Bu da bir değişiklik!
Çöp toplayıcılar (GC) performansı nasıl etkiler ve bu konuda ne yapabilirsiniz?
Bu büyük ölçüde değişir ve programlama diline bağlıdır. Temel olarak, yürütme hızı üzerindeki etkinin minimum olabileceği, ancak etkileyen faktörler olduğu belirtilmelidir. Canlı uygulamaları çalıştırmaktan sık sık duyduğum bir hikaye, Java GC’nin yalnızca yığın boyutu en az 8 GB olarak ayarlandığında düzgün çalışabileceğidir. Bu şekilde yeterli sayıda nesne depolanabilir ve GC, ana işlemcide fazla bir şey olmadığı zamanlarda çalışır. Bu, bir Java GC için geçerlidir, mutlaka herkes için geçerli değildir. Bu ayrıca size Java’da iyi performans sağlar, ancak her yerde 8 GB RAM’iniz yoktur. Özel olarak GC’yi etkinleştirmek için kullanılabilecek teknikler de vardır, ancak bu bile ayrıntılı bilgi gerektirir.
Öte yandan Go, genellikle GC’si ile etrafta yatan her şeyi nanosaniyeler içinde sildiği için övünür. Ancak Go, kasıtlı olarak az sayıda ifade olasılığı ve yalnızca bir eşzamanlılık modeli olan bir dildir. Yani orada da sınırlar var. Hepsinde olduğu gibi, çöp toplayıcı da, tıpkı Rust’ın kendi-ve-borç verme modelinde yaptığı gibi, birkaç değiş tokuşla gelen başka bir araçtır. Ayrıca Rust’ta, gerçek bellek modeliyle iyi çalışan Referans Sayaçları adlı bir çöp toplayıcının temel bir sürümü vardır. Büyük fark: Doğru aracı seçmek geliştiricilere kalmıştır. Ve açık olmalıdır, yani koddaki herkes neler olup bittiğini görebilir.
Genel olarak, Rust şu anda birçok proje için tercih edilen dildir, ancak JavaScript nerede daha iyi olabilir?
Duyuru
Rust’ın özellikle kararlılığı ve ifade gücü göz önüne alındığında, tercih edilen dil olmasını gerçekten isterdim. Ne yazık ki, henüz durum böyle değil – bu arada, meraklı insanlar oda.dev’e nasıl geçileceğini benden öğrenebilirler. Aslında soruya dikkat etmem gerekiyor, 3 yıl sonra bile hala Rust ile balayı aşamasındayım ve bence her şeyin dili harika.
Bununla birlikte, JavaScript yerel olarak orada çalıştığı için onunla bir tarayıcı uygulaması yazmazdım. Ayrıca, JavaScript’te kabuk programlarını veya veri dönüştürme işlevlerini kolayca komut dosyası yazma eşiğinin çok daha düşük olduğunu görüyorum. Dynatrace’te, müşterilerin tarayıcıya isteğe bağlı JavaScript iş yükleri yazıp bunları sunucusuz bir ortamda bir programa göre çalıştırdığı bir proje üzerinde çalışıyorum. Python dışında, bu tür görevlere erişimi bu kadar kolay sağlayacak başka bir dil düşünemezdim. Ancak sunucusuz platform Rust ile yazılmıştır!
Bay Baumgartner, yanıtlarınız için çok teşekkür ederim! Daha fazla ayrıntı, iki dil arasında bir karşılaştırma ve geçiş için birçok pratik ipucu yeni iX’in başlığında bulunabilir. Ayrıca, şu anda çıkan Temmuz sayısı, .NET ve Rust kombinasyonunun yanı sıra gömülü sistemler için Rust’a daha yakından bakıyor.
“Üç soru ve cevap” serisinde iX, ister kullanıcının PC önündeki bakış açısı, ister yöneticinin bakış açısı veya bir yöneticinin günlük hayatı olsun, günümüzün BT zorluklarının özüne inmek istiyor. Günlük uygulamanızdan veya kullanıcılarınızdan önerileriniz var mı? Özetle hangi konuda hangi önerileri okumak istersiniz? O zaman bize yazın veya forumda bir yorum bırakın.
(fo)
Haberin Sonu