Nominal tip sistem - Nominal type system

Olarak bilgisayar biliminin , bir tipi sistem a, nominal bir ya da yalın tür sistemi (ya da adı bazlı tipi sistem uyumluluğu ve eşdeğerlik ise) veri türleri beyanları ve / veya türleri adı ile belirlenir. Tiplerin eşdeğer olup olmadığını ve bir türün başka birinin alt türü olup olmadığını belirlemek için nominal sistemler kullanılır. Nominal tip sistemler , karşılaştırmaların söz konusu tiplerin yapısına dayandığı ve açık beyanlar gerektirmediği yapısal sistemlerle zıttır .

Nominal yazım

Nominal tipleme, iki değişkenin ancak ve ancak bildirimleri aynı türü adlandırıyorsa tür uyumlu olduğu anlamına gelir. Örneğin, C'de struct aynı çeviri biriminde farklı adlara sahip iki tür, aynı alan bildirimlerine sahip olsalar bile hiçbir zaman uyumlu kabul edilmez.

Bununla birlikte, C typedef , mevcut bir tür için bir takma ad tanıtan bir bildirime de izin verir . Bunlar yalnızca sözdizimseldir ve tür denetimi amacıyla türü diğer adından ayırmaz. Birçok dilde mevcut olan bu özellik, (örneğin) aynı ilkel tamsayı türü anlamsal olarak farklı iki şekilde kullanıldığında tür güvenliği kaybına neden olabilir. Haskell , type bildirim biçiminde C-tarzı sözdizimsel takma adın yanı sıra, mevcut bir türe newtype yeni, farklı bir tür izomorfik getiren bildirimi sağlar .

Nominal alt tipleme

Benzer bir şekilde, nominal alt tipleme , bir türün diğerinin bir alt türü olduğu anlamına gelir, ancak ve ancak tanımında açıkça böyle olduğu bildirilirse. Nominal olarak yazılmış diller tipik olarak, bildirilen alt türlerin yapısal olarak uyumlu olması gerekliliğini uygular (ancak Eiffel , uyumlu olmayan alt türlerin beyan edilmesine izin verir). Bununla birlikte, yapısal olarak "tesadüfen" uyumlu olan ancak alt türler olarak beyan edilmeyen alt türler, alt türler olarak kabul edilmez.

C ++ , C # , Java , Objective-C , Delphi , Swift , Julia ve Rust'un tümü birincil olarak hem nominal yazmayı hem de nominal alt tiplemeyi kullanır.

Java ve C # gibi bazı nominal olarak alt türlere sahip diller, sınıfların nihai olarak beyan edilmesine (veya C # terminolojisinde mühürlenmesine ) izin vererek, daha fazla alt tiplemeye izin verilmediğini gösterir.

Karşılaştırma

Nominal tipleme, kazara tip eşdeğerliğini önlemede yararlıdır, bu da yapısal tiplemeden daha iyi tip güvenliği sağlar. Örneğin, nominal tipleme, mevcut alt tiplerde değişiklik yapılmadan yeni süper tiplerin oluşturulmasına izin vermediğinden, maliyet azaltılmış bir esnekliktir.

Ayrıca bakınız

Referanslar

Kaynaklar

Dış bağlantılar