Telefon : +90 212 275 71 06  
Statik yazılan dillere karşı dinamik yazılan diller

Statik yazılan dillere karşı dinamik yazılan diller



Dinamik programlama dilleri çıktığından beri, hangi dil paradigması hakkında sürekli bir tartışma dönüyor; statik olarak yazılan mı yoksa dinamik olarak yazılan mı geliştirici üretkenliği açısından daha iyi.


Geliştiricilere konu hakkındaki fikirleri sorulduğunda, muhtemelen birbiriyle çatışan çok çeşitli yanıtlar alırsınız; bu yanıtların her biri geliştiricinin deneyimine (ve diğerini anlama konusundaki eksikliğine) bağlı olarak iki yönden birine kayacaktır.


Kariyerimde birkaç kez statik ve dinamik yazılmış diller arasında gidip gelmiş biri olarak bu 'artılar ve eksiler' listesini yapacak düzeyde olduğumu umuyorum:


Statik olarak yazılan dillerin avantajları:


Kod tamamlama.


Kodu yazarken IDE içindeki ipuçlarını ve dokümanları alabilirsiniz. Bu, spesifik işlevlerin/yöntemlerin davranışı hakkında yanlış varsayımlarda bulunma ihtimalinizi azaltır.


Bazı şeyleri bulmak daha kolaydır. Herhangi bir değişken ya da işlev için IDE'den ayrılmadan ve projenin dizin yapısı hakkında herhangi bir şey bilmeden ilgili sınıf tanımlamasına kolayca atlayabilirsiniz. Diğer taraftan, herhangi bir sınıf ya da işlev tanımı için, sınıfın ya da işlevin kodunuz içinde nerede kullanıldığını kolayca ve açık bir biçimde görebilir ve IDE'den ayrılmadan buraya gidebilirsiniz. (Statik olarak yazılan diller IDE'lerin bunu yapmasını kolaylaştırır).


Statik yazma, yine statik yazıma dayanan ilişkisel veritabanları ve diğer sistemlerle çalışmayı kolaylaştırır — Yanlış tip eşleşmelerini derleme sırasında daha erken aşamada yakalamanıza yardımcı olur.


Bu tür hataların oluşması olasılığını azaltır. Örneğin, dinamik olarak yazılan dillerde kullanıcı girişini temizleme onusunda dikkatli davranmazsanız, 18. satıra girmek için “8” satırında bir 10 sayısı eklemeye çalışıp “108” satırına gitmek gibi garip şeylerle (örnek olarak) uğraşmaz durumunda kalabilirsiniz.


Dinamik olarak yazılan dillerin avantajları:


Daha kısa ve öz/daha sade.


Ayrı bir derleme adımının olmaması (dinamik olarak yazılan dillerde bu yaygın bir durumdur), kodunuzda yaptığınız değişiklileri test etmek için derleyicinin işlemi tamamlamasını beklemeniz gerekmediği anlamına gelmektedir. Bu, hata ayıklama döngüsünü daha kısa ve daha zor hale getirir. Derleme adımı ile birlikte gelen gecikme rahatsız edici olabilir ve düşünce dizgenizi bozabilir. 10 saniyelik bir derleme adımı bile zaman içinde birikecektir. Hemen her statik yazılan dil “anlık”, “kısmi” ya da “artımlı” derlemeden şikayet edecektir, ama pratikte makul boyutlu herhangi bir projede, bir derleme işleminin ortalama bir makinede 10 saniyeden uzun sürdüğünü çok göremezsiniz.


Söz dizimi ve anlam hatalarını ayıklama için daha az zaman harcarsınız — Bunun yerine tüm hata ayıklama sürecinizin neredeyse tamamını (daha ilginç olan) mantıksal hatalara harcarsınız. Bir anlam hatası basit olabilir, örneğin ClassA türünde bir myVariable değişkeniniz olabilir ve bunu bir ClassB türüne atamaya çalışabilirsiniz (tür uyuşmazlığı)— Bu tür hatalar genellikle kolayca giderilir ama bir araya geldiğinde hala bir hayli zaman harcatacaktır. Anlam hataları açık, aptalca hatalardır ve derleyicinin katı gereksinimlerine uymadığınız için kendinizi suçlamanıza neden olur.


Değişime daha toleranslı olan kod refaktörleri daha yerel olma eğilimindedir (bunlar küçük bir alanı etkiler). Örneğin, statik yazılmış dillerde, bir sınıfı yeniden adlandırırken kodunuz içindeki daha fazla farklı yerde bulunan referansları da yeniden adlandırmanız gerekir (geri bir çok IDE bunu bir dereceye kadar otomatik yapabilir)… Daha iyi bir örnek olarak; iki ya da daha fazla farklı sınıfınız varsa ve bunları tek bir arayüzü paylaşması gerektiğine karar verirseniz bunları o arayüze referans gösterin; çünkü sınıf ve arayüz ek açıklamaları genelde birçok dosya arasına yayılmıştır ve bunların güncellenmesi zaman alır.


Bu listeye göre geliştiricilerin bu konuda neden bu kadar ayrı düştüğü kolayca anlaşılabilir. Nihayetinde, olay kişisel tercihe ve kullanmaktan hoşlandığınız araçlara dayanmaktadır.


Kişisel olarak benim tercihim dinamik yazılan dillerden yana, çünkü hata ayıklarken derleyiciyi beklemeyi sevmiyorum. Belki bu benim özel hata ayıklama stiliminden kaynaklanıyordur; her durumda bu nokta, üretkenliğimi en çok etkileyen nokta. Kod üzerindeki farklı kısımlara tıklayarak atlama yapmayı özlüyorum ama bunu kodumu daha mantıksal dizinlerle düzenleyerek ve sınıflarımı/nesnelerimi/değişkenlerimi uygun şekilde adlandırarak telafi ediyorum — Daha sonra bunları metin arama (komut satırında sift kullanıyorum) ile bulabiliyorum.


Yazının orijinaliiçin tıklayınız.