Olarak bilgisayar programlama , bir veri türü , ya da sadece bir tip , bir çok yüksek değerler doğasını tanımlayan verileri sunar , hem de operatör buna uygulanabilir.
Çoğu üst düzey programlama dili, doğrudan işlenebilen verilere karşılık gelen temel türleri sunar - yani: önceden dönüştürme veya biçimlendirme olmadan - işlemci tarafından. Bu temel türler genellikle şunlardır:
Sistem belleğine doğrudan erişime izin veren diller ayrıca işaretçi türü ve bir bayt türü sunar.
Birçoğu dizelerstring için önceden tanımlanmış bir tür de sunar . Üst düzey diller, diğer veri yapılarına karşılık gelen türleri de yerel olarak destekleyebilir .
Örneğin, C dilinde işaretçilerin veya dizilerin bildirimi, işlenen veriler için temel olarak kullanılması gereken türün belirtilmesini gerektirir. Genel programlama kullanıcının kendi parametreli türleri oluşturmak için izin vermek için bu uygulamayı uzanır.
Bazı diller, geliştiricinin uygulamasına özgü türleri tanımlamasına izin verir. Bir sayılan tip bir değişken için olası değerler listesi gösterir. Aşağıdaki kod, yeni bir renk türünün tanımını ve ardından bu türden bir değişkenin bildirimini gösterir:
type couleur : {rouge, bleu, vert}; var c : couleur; // La variable c, du type couleur, peut prendre les valeurs // rouge, bleu ou vert uniquement.(Bileşik türleri structde C , recordiçinde Pascal ) (daha sonra “alt-değişkenlerin” içerir) aynı değişken içerisinde farklı türleri grup çeşitli alanlara mümkün kılar.
Olarak nesne yönelimli programlama , bir sınıf olarak adlandırılan bu tip değişkenlerin manipülasyonuna spesifik - sınıfı yöntemi tanımı - özel kod ile bağlantılı bir bileşik türü.
Nesne yönelimli programlama hiyerarşik bir alt sınıfının bir değişken tanımlanan hiyerarşide daha yüksek bir seviyede herhangi bir sınıfın yerine saydam kullanılabilir, öyle ki sınıfları düzenlemenin önceki paradigma uzanır.
Opak tip, eksik tanımlanmış ve / veya doğası gizli olan bir türdür. Geliştirici, içeriğini inceleyemez veya değiştiremez ve yalnızca depolamalı ve iletmelidir. Bu amaçla, gerçekte sadece opak bir türün boyutu bilinmektedir.
Opak veriler, örneğin, tutamaçlar ( Windows terminolojisi ), dosya tanımlayıcıları ( Unix terminolojisi ), anahtarlar , gizli yapılara işaretçiler (örneğin FILE*, standart C kitaplığından ) vb. Tek önemli fikir, opak bir değişkenin adanmış bir oluşturma işlevi ( yapıcı türünde ) aracılığıyla sağlanması, kullanıcı işlevlerine olduğu gibi iletilmesi (genellikle referans yoluyla bir geçiş yoluyla ) ve sonunda bir serbest bırakma işlevi aracılığıyla yok edilmesidir . ( Yıkıcı tür ) .
Opak tiplere sahip olma olasılığı - ya da olmama - tamamen kullanılan programlama diline bağlıdır.
Tür kontrolünün çoğu derleme zamanında yapıldığında statik yazmadan bahsediyoruz .
Aksine, bu kontroller yürütme sırasında yapıldığında dinamik yazmadan bahsediyoruz .
Açık bir yazımla, örneğin değişkenleri veya işlevleri bildirirken, kullandığı türleri belirtmek kullanıcının kendisine kalmıştır.
Örneğin, C dilinde yazım açıktır:
int i = 0; // cette déclaration indique explicitement que // la variable i est de type entierAksine, örtük bir yazım sistemi ile geliştirici , örneğin çıkarım yoluyla kullanılan veri türlerini kendi başına belirlemesi için onu derleyiciye veya çalışma zamanına bırakır .
Örneğin, Objective Caml'da yazım örtüktür :
let i = 0 ;; (* le compilateur détermine automatiquement que la variable i est de type entier *)Yazarak güvenlik yani, tip hatalarını engellemek için tasarlanmıştır: biçim uyumlu bir değişkenin kullanımı. Tipik bir dilin tanımı oldukça belirsizdir: