Data Vinci 16 : Strongly Typed

Tahmini Okuma Süresi: 5 dakika

Strongly Typed insanın kendine yakışanı giymesi değildir. Strongly typed bir değişken tanımlama yönetime verilen ad olabilir. “Strongly typed programming language” kavramı ile de sıkça birlikte anılır. Mesela python dilinde bir değişken “bodosloma” kullanılabilmektedir. Örneğin;

ifadesi python dili için gayet geçerlidir. Oysa aynı tanımlamayı C# gibi bir “staticly typed programming language” içerisinde kullanmak mümkün değildir.2016-11-15_15-37-58

 

 

 

C# programlama dili dynamic gibi anahtar kelimeler ile değişken tipini run-time(çalışma anı)’da belirleme gibi ekstra özellikler getirmiş olsa da birçok kısımda strongly-typed olduğunu söylemek gerekiyor. Meselenin değindiği nokta “Type safe” kavramıdır özünde. C# dili tür dönüşüm operatörleri ve biraz önce bahsettiğim dynamic, var gibi anahtar kelimeler ile değişken tipinin değişimi ile ilgili esneklik sunmaktadır. Fakat tercih edilen sıfatı “strongly typed language” oluyor. Bu konuda çeşitli tartışmalar yaşanmıştır. C# dili 3.0 versiyonundan itibaren ikisine de karşılık verebildiği yaklaşımlar edinmiştir. (var anahtar kelimesinin doğuşu!) C# için staticly typed programming language denilmekte demiştim fakat görüldüğü üzere var ve dynamic anahtar kelimeleri ile birlikte dynamicly typed programming language rolünü de çalmakta.

Weakly typing” kötü, “strongly typing” iyi gibi bir mukayese yapmak mümkün değildir. Zira konu güçlülük, güçsüzlükle pek alakalı değil. Tür dönüşümünün otomatik veyahut elle yapılması konseptiyle ilgilidir. Ortamlarda “strongly typed” tabi abi yeaahhhh! gibi çıkışlar yapmamak gerekir. Bununla ilgili de internette haşin tartışmalar yaşanmakta fakat önemli olan isimlendirmeler değil programcının bakış açısı.

C# diline baktığımızda hem strongly typed hem de weakly typed tanımlar yapmak mümkündür demiştik. Strongly type tanımlamada kısıtlama daha sıkı olduğundan ötürü doğru yönetilmediği takdirde programlarda kırılmalara yol açabilir. (Varoşta patlama da denir.) var ve dynamic gibi anahtar kelimeleri kullanarak  kodumuza dinamik dil öğelerinden bir bukle bıraksak da, var ve dynamic anahtar kelimeleri yine de type-safe (emniyet mandallı) olacaklardır. Aralarındaki fark ise var anahtar kelimesi compile-time (derleme zamanı) karar mekanizmasını kullanırken, dynamic‘de tip belirleme işlemi run-time yani çalışma zamanında yapılmaktadır.

Herşeyi yarıştırmaya meraklı olan bizler, strongly typed yaklaşımın mı kral olduğu, yoksa adı üstünde olmayan weakly type tanımlama yaparsak cpu’da 0.0000000001’lik bir spike azaltması yaşatabileceğimiz üzerine derin düşüncelerle çırpınmamalıyız. Eric Lippert‘in konu ile ilgili olan  şu yazısını okumanızı tavsiye ederim,  dediği gibi “what can i do sometimes”. Karşılaştırılan kriterlere, yapılan tanımlara ve dillerin içerdiği özelliklere göre seçim yapmak daha doğru olacaktır. Yeri geldiğinde dibine kadar verbose (gereksiz ama garantitip tanımları yapılırken, zaman zaman ise  tip dönüşüm olayını uygulamaya bırakmak gerekebilir.

TL;DR

Bu yazıda strongly type terimine değinip, C# dilinde nasıl karşılıkları var bunlara değinmeye çalıştım. Faydalı olması dileğimle…

keep_calm

2 Replies to “Data Vinci 16 : Strongly Typed”

Leave a Reply

Your email address will not be published. Required fields are marked *