Ana içeriğe geç
Programlama

Copper programlama dilinde birleşim türleri yerini seçenek türlerine bıraktı

Öne çıkanlar

  • Copper dilinde genel birleşim türleri yerine yalnızca T? biçimindeki seçenek türleri benimsendi.
  • nil gösterimi için ek etiket eklemek yerine türe özel sentinel değerler ayrıldı.
  • Otomatik denetleyici derleme süresini yüzde 5 uzattığı ve karmaşık analiz gerektirdiği için terk edildi.
  • Değer kontrolü için 'as' operatörü ve erken dönüş sağlayan 'or else' kalıbı getirildi.

Sistem düzeyinde geliştirilen Copper programlama dilinin tasarımcısı, dilde daha önce denenen genel birleşim türlerini (union types) derleyici karmaşıklığı nedeniyle basitleştirerek yalnızca seçenek türlerine (option types) odaklanma kararı aldı. Geliştirici, genel T1|T2 yapılarının etiket yönetimi ve optimizasyon zorlukları getirdiğini, buna karşın pratik kullanımın çoğunlukla T|Nothing ve T|Error kalıplarıyla sınırlı kaldığını açıkladı.

Seçenek türü T? biçiminde tanımlandı ve değerler için ayrı bir etiket taşımak yerine tür içinden tek bir değer nil olarak ayrıldı. Bu yaklaşım C kütüphaneleriyle uyumu kolaylaştırırken bellek fazlalığını ortadan kaldırdı; işaretçiler için sıfır adresi, tamsayılar için ise -1 gibi sentinel değerler kullanıldı. Güvenli erişim amacıyla as operatörü ve erken dönüş sağlayan or else yapısı sisteme eklendi.

TypeScript benzeri otomatik akış analiziyle çalışan denetim mekanizması da denendi ancak iki geçişli döngü analizi, genel türlerle (generics) uyumsuzluk ve derleyici performansındaki yüzde 5 kayıp nedeniyle terk edildi. Kendi kendine derlenen derleyici ve metin editörü projelerini yeni yapıya aktaran geliştirici, seçenek türlerinin "milyar dolarlık hata" olarak bilinen tanımsız işaretçi sorunlarını engellemede belgelerden ve birim testlerden daha etkili olduğunu bildirdi.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.