Güçlü / zayıf yazma ve statik / dinamik yazma dikeydir.
Güçlü / zayıf , işlevsel olarak konuşarak, bir değerin türünün önemli olup olmadığıyla ilgilidir. Zayıf yazılan bir dilde, rakamlarla dolu iki dizeyi alabilir ve bunlara tamsayı ekleyebilir; kuvvetle yazılan bir dilde bu bir hatadır (önce değerleri doğru türlere çevirmez veya dönüştürmezseniz). Güçlü / zayıf yazım siyah beyaz bir şey değildir; çoğu dil ne% 100 katı ne de% 100 zayıftır.
Statik / dinamik yazma, türlerin değerlere veya tanımlayıcılara bağlanıp bağlanmadığıyla ilgilidir. Dinamik olarak yazılan bir dilde, türden bağımsız olarak herhangi bir değişkene herhangi bir değer atayabilirsiniz; statik yazma her tanımlayıcı için bir tür tanımlar ve farklı bir türden atama ya bir hatadır ya da örtük bir yayınla sonuçlanır. Bazı diller, statik olarak bildirilen türlerin yanı sıra türlenmemiş tanımlayıcılara ('varyant') izin veren karma bir yaklaşım benimser. Ayrıca, derleyicinin türleri bulmasını sağlayarak, her şeyin türünü açıkça bildirmeden statik yazmanın mümkün olduğu bir mekanizma olan bir tür çıkarım da vardır (Haskell bunu kapsamlı bir şekilde kullanır, C # bunu var
anahtar kelime yoluyla ortaya koyar ).
Zayıf dinamik programlama pragmatik bir yaklaşıma izin verir; dil çoğu zaman yolunuza çıkmaz, ancak kendinizi ayağınıza çektiğinizde de içeri girmez. Güçlü statik yazım, aksine, programcıyı derleyicinin veya yorumlayıcının bir hata sınıfını algılamasına izin verecek şekilde koddaki değerler hakkında belirli beklentileri açıkça belirtmeye iter. İyi bir tip sistemi ile, bir programcı bir değere neyin yapılabileceğini ve neyin yapılamayacağını tam olarak tanımlayabilir ve eğer birileri yanlışlıkla birisini istenmeyen bir şekilde denerse, tip sistemi genellikle bunu önleyebilir ve şeylerin tam olarak nerede ve neden yanlış gittiğini gösterebilir.