Rust ve GO Dillerine Teknoloji Transferleri
Önsöz
Selam Aleykum,
Son zamanlarda büyük teknoloji firmalarının C, C#, Java, Python gibi dillerde yazılmış olan mevcut projelerini GO programlama diline transfer ettiği yönünde haberlerle karşılaşıyorum.Ayrıca GO kadar çok olmasa dahi, bir grup teknoloji firmasının da Rust diline proje transferlerinde bulunduğu ile ilgili makelelerle karşılaşıyorum.
Teknoloji Transflerine İten Sebepler
Teknoloji Transferlerine iten belirli sebepler mevcuttur. Sebepleri maddeler halinde paylaşalım :
Hız ve Performans kaygıları : Python2, Java, PHP, C Sharp, C gibi dillerde yazılmış projeler günümüz yapılarındaki hız beklentisini karşılamakta yetersiz kalmaktadır.Tabi ki bunlar arasında iyi bir proje yapısıyla kurulmuş olanlar istisnadır.
Ölçeklenebilirlik : Gelişen teknolojilerle birlikte büyüyen projeler ölçeklenebilirlik desteği içeren dillere yönelmektedir.
Artan Maliyetler: Birden çok teknoloji ile geliştirme yapmanın artan maliyetlerinden dolayı, hepsini birden karşılayan hızlı programlama teknolojileri arayışı GO ve Rust gibi dillere yönelimi arttırmaktadır.
Düşük Geliştirme Süresi : Python2 gibi dillerde binlerce satır alan back-end yapıları GO ve Rust gibi dillerle yarıya inebilmektedir.Daha da küçük mikro yapılara çevrilebildiği için, geliştirme süresinde de fayda sağlanmaktadır. Özellikle, LSP Support, Autocorrection, refactoring kolaylığı, kolay dökümantasyon sağlanması gibi yapılar bu dilleri daha da ön plana çıkarmaktadır.
Hızlı Dökümantasyon : Projelere ait dökümantasyonlar Hugo ve Mdbook gibi static website generator'lar yardımıyla hızlıca oluşturulabilemekte ve projelere ait bilgiler kolaylıkla paylaşılabilmektedir.
Hızlı Öğrenim : Kodlama standartları sayesinde öğrenim kolaylığı sağlanmaktadır.
Rewrite in Rust
Bilinen projelerin GO ve Rust dillerine transferi fikriyle ilk karşılaştığım yer Rusça bir developer forumuydu.Forumu gezerken evvela bir slogan ve bir proje afişiyle bu fikir karşıma çıktı. Projenin görselini aşağıda sizlerle paylaşıyorum:
Projenin amacı daha önce farklı dillerde yazılmış kitaplık (library) ve projelerin Rust dilinde yeniden yazılmasıydı. Bu amaçla forumda geliştiriciler arasında teknoloji tartışmaları yer alıyordu.
Aynı projeyi GO dili için de gerçekleştiren Github toplulukları da mevcuttur.
Teknoloji Firmalarindaki Transferler
İnternet araştırmalarım esnasında muhtelif startup şirketleri ve büyük ölçekli teknoloji firmalarının yeni projelerinde GO ve Rust dillerini test ettiğini ve mevcut projelerini kademeli olarak GO ve Rust dillerine transfer etmeye başladıklarını fark ettim. Bilhassa, PHP, Java gibi dillerdeki mevcut projelerini Rust ve GO dillerine transfer eden bir çok firmasına rastladım.
Ayrıca reddit forumlarında "company migration to
Company migration to Go
byu/kekekepepepe ingolang
Ayrıca Medium üzerinde de bir çok teknoloji transferi makalesi ile karşılaşabilirsiniz. Aşağıda bir örnek makaleyi sizlerle paylaşıyorum:
https://medium.com/beyn-technology/our-journey-moving-from-php-to-go-4b4513f92e75
Ayrıca ycombinator sitesi üzerinden de birçok konuyla ilgili makale bulabilirsiniz.
https://www.zdnet.com/article/programming-languages-from-python-to-500000-lines-of-go-how-one-organization-is-making-a-big-switch/
KhanAcademy isimli web sitesi Python2 üzerinde yer alan backend kodlarını tamamiyle GO diline transfer sürecini anlatıyor.
GO Case Studies - Vaka Çalışmaları
GO programlama dilinin resmi web sitesi üzerinden süreçlerini paylaşan web sitelerine ait makalelere ulaşabilirsiniz:
https://go.dev/solutions/case-studies
Bunlar haricinde çeşitli ölçekli yüzlerce firma her geçen gün belirli projelerinde GO ve Rust dillerini denemeye devam ediyorlar. Fakat şirket içi bilgi gizlilikleri gereğince şirketin resmi olarak paylaşımda bulunmadığı bilgileri burada veremiyorum. Fakat, Linkedin, Twitter, Reddit vb. sosyal platformların aktif kullanıcıları iseniz bu tarz bilgileri de edinebilirsiniz.
Proje Transfer Asamalari
Transfer aşamalarında genellikle mevcut ekiplerin yanında paralel çalışmalarda bulunan yardımcı ekipler kurularak transfer gerçekleştiğini göreceksiniz. Demir yolu rayı gibi düşünürseniz, treni raydan çıkarmamak ya da tren seferlerini durdurmamak adına ray hattını değiştirmek için yan tarafa tali bir makas bağlantısıyla ikinci bir hat inşa edilip tamamlandıktan sonra birinci hatta bağlantı yaparak bypass işlemi ile ilk hat devreden çıkartılır. Bir çok firma maliyet açısından bu yolu tercih etmeyi daha olumlu buluyor. Güncel projelerini bu sayede yeni bir teknolojiye transfer ediyorlar.
İkinci bir transfer metodu ise ise, tedavülden kaldırmayı düşündükleri ve eksiklikleri olan özellikleri barındıran projeleri devreden çıkartarak, GO ve Rust dilleri ile yeniden yazıp devreye alıyorlar. Özellikle Load Balance ve Scalability gerektiren bu alt projeleri bakıma alarak yeniden GO ve Rust versiyonlarını paylaşıyorlar.
Günden Güne Zenginleşen Kütüphaneler
Henüz Python ve JS gibi yaygın dillerde olduğu kadar zengin internet kütüphaneleri içermese de her geçen gün bu kütüphaneler de GO ve Rust dillerine transfer edilerek projelere dahil ediliyorlar. Misal, Python dilinde yazılmış bir Web Scraper ya da Machine Learning kütüphanesinin GO ve Rust versiyonlarını da artık bulabiliyorsunuz. Bunları aşağıdaki web sitelerinden temin edebilirsiniz:
- GO: pkg.go.dev
- Rust: crates.io
Artı ve Eksiler
Twitter, Twitch,Reddit ve Youtube gibi sosyal ağlarda ve Discord Server'ları üzerinde aktif tartışma ve paylaşım platformları artmaktadır.
Yetersiz Türkçe Yerel Platform: Türkiye'de henüz yeterli miktarda Türkçe topluluk ve tartışma platformu mevcut değildir. Japonya, Rusya, Almanya, Hindistan, Brezilya, İspanya, BAE gibi teknoloji üretimi yapan ülkelerde İngilizce yanında yerel dillerde yazılmış, blog ve topluluk siteleri 2012 yılı sonrasında kurulmuştur. Şuan aktif platformları mevcuttur.
Python, JS, React gibi dillerdeki kadar yüksek topluluk desteği henüz mevcut değil fakat günden güne artmaktadır.Özellikle GopherCON gibi etkinliklerle tanıtım faaliyetleri ve geliştirici buluşmaları gerçekleşmektedir.
Türkçe Yetersiz E-Kitap : İngilizce dilinde basılmış 50 üzeri güncel kitap mevcut iken henüz Türkçe dilinde e-kitap ve basılı yayınlar mevcut değildir.
Sonsöz ve Değerlendirme
Bu yazımda, sizlere kısaca GO ve Rust programlama dilleriyle ilgili teknoloji transferlerine dair genel bir kanaat oluşturmaya ve farkındalık yaratmaya çalıştım. Tabi ki bu görüşüm kişiseldir ve tartışmaya açıktır. Farklı diller ve teknolojilerle gelişim süreci devam ederken önümüzdeki günlerde başka programlama dillerini de karşımızda görebiliriz.
Yazımı sonuna değin okuma nezaketinde bulunduğunuz için teşekkür ederim. Yeni yazılarımızda buluşmak üzere, Allah'a emanet olun.
Selamın Aleykum,