İçeriğe geç
Muhammet Şafak
en
Diller 2 dk okuma

TypeScript'in yeni derleyicisi ve build hızının önemi

TypeScript derleyicisinin Go ile yeniden yazılması ve hızlı geri bildirim döngüsünün bir geliştirici için neden bu kadar değerli olduğu.


TypeScript ekibi derleyiciyi sıfırdan, Go ile yeniden yazdı. İlk duyduğumda önce şaşırdım, sonra bunun ne kadar yerinde bir karar olduğunu görmenin rahatlığını hissettim. Bir dilin aracının bambaşka bir dille yazılması — polyglot çalışan biri için bu kulağa tuhaf değil, son derece tanıdık geliyor.

Neden Go?

Eski derleyici TypeScript’in kendisiyle yazılmıştı. Kendi kendini derleyen bir dil zariftir; ama JavaScript çalışma zamanının bir tavanı var: tek iş parçacığı ve yorumlanan kodun getirdiği yük. Derleyici gibi bir araç — binlerce dosyayı gezen, ayrıştıran, tip denetimi yapan bir program — bu tavandan en çok zarar gören iş türüdür.

Go ise yerel makine koduna derleniyor, gerçek çoklu iş parçacığına sahip ve tam da bu tür sistem araçları için tasarlanmış. TypeScript ekibi en zarif olanı değil, işe en uygun olanı seçti. Duyurulan hedef yaklaşık on kat hızdı; kendi orta ölçekli projemde de geçiş, “derleniyor” beklemesini bir alışkanlık olmaktan çıkardı.

Build hızı neden bu kadar önemli

“On kat hızlı” kulağa hoş gelen bir rakam; ama asıl mesele rakam değil, geri bildirim döngüsü.

Bir tip hatası yaptığınızı düşünün. Derleyici bunu iki saniyede söylerse, hâlâ o kodu düşünüyorsunuzdur; düzeltirsiniz, devam edersiniz. On beş saniyede söylerse, o arada başka bir sekmeye geçer, dikkatiniz dağılır ve geri döndüğünüzde “neredeydim?” diye düşünürsünüz. Yavaş bir derleyicinin gerçek maliyeti, beklediğiniz saniyeler değil; kopan odaklanmadır.

Bu döngü editörde de yaşıyor. Otomatik tamamlama, tanıma gitme, yeniden adlandırma — hepsi aynı tip motorundan besleniyor. Motor hızlanınca editör de hızlanıyor; kod yazmak akışkan bir şey hâline geliyor.

Dil değişmedi, yalnızca derleyici

Bu geçişle ilgili en çok yanlış anlaşılan nokta şu: değişen şey TypeScript dili değil, onu derleyen program. Yazdığınız tipler, sözdizimi ve tip kuralları birebir aynı. Yani bu, öğrenilecek yeni bir şey değil; aynı işin çok daha hızlı yapılması.

Bu, geçişi alışılmadık biçimde düşük riskli kılıyor. Çoğu araç değişiminde yeni bir zihinsel model öğrenmeniz, ekibi eğitmeniz, ince ayarları yeniden yapmanız gerekir. Burada öğrenilecek hiçbir şey yok — kod tabanınız aynı kalıyor, yalnızca tip denetimi daha çabuk dönüyor. Kendi projemde geçiş, yapılandırmada birkaç satırlık bir değişiklikten ibaretti.

Bir aracın bu kadar büyük bir kazanımı bu kadar küçük bir maliyetle sunması nadirdir. Çoğu “büyük” iyileştirme, beraberinde bir öğrenme eğrisi ve bir geçiş acısı getirir. Buradaki kazanç ise bedavaya yakın — ve bu nadirlik, kararın ne kadar iyi düşünülmüş olduğunu gösteriyor.

Polyglot bir ders

Bu olaydan benim çıkardığım ders, TypeScript’ten bağımsız. Bir ekip, yıllardır kullandığı dilin aracını, daha uygun olduğu için başka bir dile taşıdı. Dile değil probleme bağlı kaldılar.

Bu, yıllardır savunduğum bir yaklaşımın büyük ölçekli bir örneği: uygulama mantığını bir dille yazmak, o uygulamanın aracını başka bir dille yazmak gayet makul. Diller birer kimlik değil, birer araçtır. Doğru aracı seçmek için önce birden çok araca aşina olmak gerekiyor — ve bu aşinalığın karşılığını, tam da böyle kararların doğru verildiği anlarda alıyorsunuz.

Etiketler: #TypeScript
Paylaş:

Yorumlar

Yorum yapmak için GitHub hesabınızla giriş yapmanız yeterli. Yorumlar GitHub Discussions üzerinde saklanır.

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi