Yazan : Şadi Evren ŞEKER
Özellikle bilgisayar programlama dillerinde kullanılan bir terimdir. Buna göre dillerde bulunan özelliklerin birbirine dik olması, yani birbirinden bağımsız olması kast edilir. Kelime olarak, yöneylerin (vectors) dikliğinden esinlenilmiştir. Vektörlerin birbirine dik olması, aralarında ilişki bulunmaması (birbirine iz düşümünün sıfır olması) anlamına gelmektedir. Şayet bir dilde bulunan özellikler arasında da ilişki bulunmuyorsa, dilin özelliklerinin genişlemiş olduğu düşünülebilir.
Örneğin değişken tipleri olarak tamsayı (integer) ve küsurlu sayının (float) bulunduğu bir dil ve işlem(operator) olarak dizi (array) ve işaretçi (pointer) bulunduğu bir dili ele alalım. Bu dildeki 2 değişken tipi ve iki işlem şekli, şayet kaime arz ediyorsa, bu durumda bir işaretçi, tamsayı veya küsurlu sayıyı gösterebilmektedir. Benzer şekilde dizinin elemanları işaretçi olabilmekte ve işaretçi de diziye işaret edebilmektedir.
Şayet dilde, kaime bulunmasaydı, örneğin dizi işlemi, sadece küsurlu sayılar üzerinde çalışıyor olsaydı, bu durumda dildeki esneklik büyük ölçüde kaybedilmiş olacak ve örneğin tam sayı dizisi bulunmayacağı gibi, tam sayı dizisine işaret eden bir işaretçi veya her elemanı işaretçi olan bir tamsayı dizisi de kullanılamayacaktı.
C dilinde toplama işlemi (+) bulunmakta ve lisan-ı kaime gereği mümkün olduğunca değişken yapısından bağımsız tutulmaktadır.
Örneğin,
a+b şeklindeki bir işlemde, C dili, a ve b değişken değerlerini alıp hafızaya yükledikten sonra toplama işlemini yine hafızada tutmaktadır.
Yukarıdaki bu örnekte, a ve b değerleri, herhangi bir değişken tipinde olabilir. Örneğin tam sayı (int) veya karakter (char) yapısında olmasının bir mahsuru yoktur.
Ayrıca yukarıdaki a ve b değerleri birer işaretçi (pointer) da olabilir.
Örneğin;
int *a ; int x[10]; a = x; int b = 4; a = a + b;
şeklindeki kodun anlamı, a işaretçisinin gösterdiği mevcut yerin 4 sonraki adresini göstermesidir. Buna göre, x dizisinin 4. elemanına işaret etmektedir. Yukarıdaki bu özellik, C dilinde bulunan ve işaretçi ile dizi ve değişken tipleri arasında bulunan diklik özelliğine istinat edilebilir.
Bir dilde diklik özelliğinin fazla olması, dildeki kodlamayı kolaylaştırır ve dilin öğrenilmesini basit hale getirir. Örneğin işaretçi kullanmayı öğrenen birisi yukarıdaki bu işlemleri ilave bir kural öğrenmeksizin kodlayabilir. Şayet diklik özelliği az olsaydı, bu durumda dili öğrenen veya kodlayan kişilerin istisna kurallarını da öğrenmesi gerekecekti. Örneğin ingilizce öğrenen birisi, fiillerin sonuna –ed eki getirerek geçmiş zaman yapılacağını öğrenir, ancak bunun istisnası olan kelimeleri de öğrenmek zorundadır. Şayet istisnası hiç olmasaydı, dili öğrenmek ve kullanmak çok daha kolay olacaktı.
Bir dildeki diklik özelliğinin çok fazla olması da sakıncalıdır. Aşırı derecede diklik içerilmesi halinde, dili çalıştıracak bir derleyicinin (compiler) geliştirilmesi imkansızlaştığı gibi kodu kullanan kişilerinde hata yapma ihtimali artar.
Örneğin C dilinde iki tip veri birliktelik ilişkisi bulunmaktadır (data associativity). Bunlar diziler (array) ve kayıtlardır (records, C dilinde özel olarak yapı (struct) ismi ile geçer). C dilinde bulunan fonksiyonlar, iki tipte de parametre alırken, sadece kayıt tipinde veri döndürebilmektedir. Dizi tipinde döndürmesi mümkün değildir. Bu durum dilin diklik özelliğine uymadığı gibi, dilde bulunan bu özelliklere de diklik eklenmesi halinde, hafıza yönetimi (Dizi boyutunun kestirilmesi) ve hafızanın ihalili gibi pek çok problemi, kodu yazan kişinin kontrol etmesi gerekecekti. Çözüm olarak, C dilinin tasarımı sırasında, bu özelliklere diklik getirilmemiştir.