Julia: Tipler – Bölüm 6

Herkese selamlar ve sağlıklı günler. 🙂

Serimize 6. bölüm ile birlikte hız kesmeden, kaldığımız yerden devam ediyoruz. Bölüm 3 itibariyle kısa bir tanıtım yaptığımız ve bu bölüm itibariyle değineceğimizi söylediğimiz Veri Tiplerine bu yazıda detaylı bir inceleme sunacağız.

Öyleyse, başlayalım! 🙂

Bölümler

Bölüm İçeriği

Aşağıda Julia dersleri Bölüm 6 kapsamındaki başlıklar listelenmiştir.

  • Tipler
  • Değer Tipleri

1. Tipler

Tipler, program yürütmeyi daha hızlı ve daha okunabilir hale getirmek için kullanılan veri öğeleri grubu olarak tanımlanabilirler. Hataların keşfi ve kodun netliği açısından önem arz ederler. Bölüm 3’te de belirttiğimiz gibi Julia, değişken değerlerini oluşturmak için dinamik tip sistemini (dynamic type) kullanır, ancak diğer yandan belirli değerlerin belirli türlerde olduğunu gösterme avantajını da geliştiriciye sunmak için statik tip (static type) olarak yazılmış tanımları da kabul eder. Yine daha önce belirttiğimiz üzere, Julia geliştirici tarafından veri tipi sunulmadığı takdirde otomatik olarak kendi kuralları çerçevesince girilen değerin türünü tanımlama yolunu izler.

Soyut tipler (abstract types), ilkel tipler (primitive types) ve bileşik tipler (composite types) paylaştıkları ortak özellikler nedeniyle DataType adlı tek bir sınıfına dahillerdir. DataType, özelliklerine bağlı olarak soyut veya somut türde olabilir. Her somut değer bir DataType örneğidir.

Veri türlerimizin hangi ana sınıfta yer aldığını typeof() yerleşik fonksiyonuyla daha iyi gözlemleyebiliriz.

typeof() fonksiyonuna gönderdiğimiz parametre ile değerlerimizin hangi sınıflarda olduğuna bir bakalım:

Örnek Kullanım:

Şimdi de veri türlerimizin hangi tipte olduğuna bir bakalım:

Görüldüğü üzere DataType sınıfında oldukları ekrana bastırılmıştır.

Farklı bir kullanım olarak isa fonksiyonu da değerlerimizin tipini bizlere döndürür. Bu tür tipler, “singleton types” olarak geçmektedir. Her tür için, T, “singleton type” Type {T}, tek örneği T nesnesi olan soyut bir türdür. Tanım biraz karmaşık gibi görünse de, örneklerle kullanımını görelim:

Örnek Kullanım:

Parametrik metodlar ve dönüşümler için önem taşımaktadırlar.

Type Union

Type Union, özel Union anahtar sözcüğü kullanılarak nesne olarak oluşturulan bağımsız değişken türlerinden herhangi birinin tüm örneklerini içeren özel bir soyut türü ifade eder.

Derleyicilerin kendi “type union” yapıları bulunmaktadır. Bu yapılar değerin türüne karar vermek için kullanılırlar. Ancak Julia’da programcıların kendi “union” argüman türlerini yapmalarına izin verilir. Bu izin, Julia’nın daha hızlı yürütme hızı ile verimli kodlar üretmesine yardımcı olur, çünkü “union” yardımıyla programcı tarafından bildirilen az sayıda tür sadece kontrole tabi olmaktadır.

Örnek Kullanım:

Parametrik Tipler

Programlama dillerinde ve tip teorisinde parametrik polimorfizm, bir dili daha ifade edici hale getirmenin ve yine de tam statik tip güvenliğini sağlamanın bir yoludur. Julia’nın tür sisteminin önemli ve güçlü bir özelliği olarak karşımıza parametrik tip yapısı çıkmaktadır. Parametrik tip yapısında, türler parametre alabilirler. Yani, her bir parametre değeri kombinasyonu için tamamen yeni bir tür aralığı üretilir. Bu yapıyı destekleyen başka programlama dilleride (Örn: Haskell, Scala ve ML) bulunmaktadır. DataType sınıfına dahil olan tüm deklare türler parametrelendirilebilir.

Üç tür parametrik tip bulunmaktadır:

  • Parametrik Soyut Tipler
  • Parametrik İlkel Tipler
  • Parametrik Bileşik Tipler

1. Parametrik Soyut Tipler

Parametrik soyut tipler (parametric abstract types), soyut türlerin bildirimiyle aynı şekilde bildirilir. Bu türde, parametreler, süslü parantez içine alınmış türün adından hemen sonra yazılır. Buradaki parametre, T’nin herhangi bir tip olabileceği genel bir {T} tipinde karşımıza çıkar.

Söz dizim formatı:

Aşağıdaki bildirim parametrik soyut tipler için genel bir bildirim formatıdır.

Burada T, Int64, Float64, AbstractString vb.gibi herhangi bir dahili veri türüyle değiştirilebilmektedir.

Söz dizim formatı:

Örnek Kullanım :

Yukarıdaki örnek kullanımda deklare edilen her parametrik tür, DSE’nin alt türüdür.

Bu alt türlerin hepsi birbirinden farklıdır ve birbirlerinin bir alt türü değildirler.

2. Parametrik İlkel Tipler

Kullanımı ve bildirimi “primitive” ön eki ile gerçekleştirilir. Parametrik soyut tip bildiriminde olduğu gibi, parametreler, süslü parantez içine alınmış tipin adından hemen sonra yazılır. Buradaki parametre yine, T’nin herhangi bir tip olabileceği genel bir {T} tipindedir.

Söz dizim formatı:

Aşağıdaki bildirim parametrik ilkel tipler için genel bir bildirim formatıdır.

Ve yine burada T, Int64, Float64, AbstractString vb.gibi herhangi bir dahili veri türüyle değiştirilebilmektedir.

Kullanımları da genel parametrik bildirim çerçevesi gereğince parametrik soyut tip bildirimiyle aynıdır.

3. Parametrik Bileşik Tipler

Parametrik bileşik tipte de yine aynı şekilde, parametreler, süslü parantez içine alınmış tipin adından hemen sonra yazılır. Ve T’nin herhangi bir tip olabileceği genel bir {T} tipindedir.

Bileşik türler, struct anahtar sözcüğü ve ardından gelen tamamlayıcı bir alan adları bloğuyla tanıtılır; isteğe bağlı olarak :: operatörü kullanılarak türlerle açıklama eklenebilir.

Oluşturulan türlerin her biri, oluşturduğunuz türün bir alt türü olmalıdır.

Tip Metodları

Metodİşlev
@isdefined()Belirtilen değişkenlerin geçerli kapsamda tanımlanıp tanımlanmadığını test etmek için kullanılır.
getfield()Bileşik tipin belirtilen değerinden adlandırılmış bir alanı ayıklamak için kullanılır.
isefined()Belirtilen global değişkenin veya nesne alanının tanımlanıp tanımlanmadığını test etmek için kullanılır.
oftype()Belirli bir y tipini, x tipini dönüştürmek için kullanılır.
setfield()Bileşik tip değerindeki adlandırılmış bir alana x değeri atamak için kullanılır.
typemax()Belirtilen sayısal DataType tarafından temsil edilen en yüksek değeri döndürmek için kullanılır.
typemin()Belirtilen sayısal DataType tarafından temsil edilebilen en düşük değeri döndürmek için kullanılır.
typeof()Belirtilen elemanların tipini döndürmek için kullanılır.

Demet Tipleri

Demet türleri, fonksiyonun kendisi olmadan bir fonksiyonun argümanlarının bir soyutlamasıdır. Bir fonksiyonun argümanlarının göze çarpan yönleri sıraları ve türleridir. Bu nedenle, bir demet (tuple) tipi, her parametrenin bir alanın tipi olduğu parametreli bir statik türe benzerlik gösterir.

Örnek Kullanım:

2. Değer Tipleri

Bu yapıları ile değerleri parametre olarak alan kendi özel türlerinizi oluşturabilir ve bunları özel türlerin gönderilmesini denetlemek için kullanabilirsiniz. Diğer yandan kod performansınızı doğrudan şekillendirebilirsiniz.

Söz dizim formatı:

Val’in uygulanmasında bundan daha fazla karmaşık olan başka bir kullanım yoktur. Julia’nın çekirdeği bazı işlevler Val örneklerini bağımsız değişken olarak kabul eder ve bunu kendi işlevlerinizi yazmak için de kullanabilirsiniz.

Örnek Kullanım:

Val’ın performans amaçlı kullanımıyla ilgili buradan daha detaylı bilgi edinebilirsiniz.

Bir sonraki bölümde görüşmek dileğiyle. 🙂

One thought on

Julia: Tipler – Bölüm 6

Bir cevap yazın