aynı isimde "swift" başlığı da var
22 entry daha
  • verdiği en doğru kararlar:

    - noktalı virgül ve for/if/while parantezi gibi gereksiz unsurları atması (scala, ruby, go)
    - let, var keyword'lerinin seçimi (var: c#, let: ml*).
    - class/struct/protocol (interface)/generics, inline initializer yapıları (c#)
    - type inference (ml)
    - pattern matching'e yakın switch statement (syntax: c#, value binding: ml)
    - switch fall through, case break gibi gürültüyü elemesi (rust)
    - discriminated union'ı implement etme şekli (ml)
    - constructor adının sabit olması (class ismi değiştirince constructor ismi değişitirmekle uğraşmama, okurken constructor'ı kolayca tespit edebilme) (python)
    - struct'ların default immutable olması (ml vs)
    - optional chaining (c# 6.0)
    - named initializers ile aynı imzaya sahip birden fazla constructor sahibi olabilme (bu başka dilde var mı bilmiyorum)

    eksikleri / kötü yanları:

    - exception olmaması. bu konuda en azından go'daki tuple'lar (edit: onlar tuple değilmiş, sırf hata kodları için uydurulmuş tuple'ımsı bişeymiş) yerine discriminated union kullanmaları biraz durumu affettiriyor. öte yandan artık daha az çakılan fakat daha çok sapıtan program göreceğiz anlamına geliyor. mobil için doğru olabilir, mission critical uygulamalar için hayır.
    - paralel programlamayı (multi-threaded ya da asenkron) kolaylaştırıcı dile dahil hiçbir yapı yok görünüyor (c#'taki lock, async ya da go'daki kanallar vs). bu mobilde gereksiz görüldü ve runtime le çözülüyor muhtemelen ama genel amaçlı yaygınlaşması önünde engel.
    - string'lerin hafızadaki tutulma şekli yüzünden uzunluklarının tüm karakterleri saymadan bilinemiyor olması. bu c'dekine benzer bir sorun ama aynı ama aynı zamanda "+" operatörüyle string birleştirme gibi yığınla aksesuar geldiğinden bu işlerde sürtünmeye yol açabileceği anlamına geliyor.
    - closure syntax'i dandik (c#'ınki daha temiz mesela)
    - struct'lar default immutable ama class'lar için scala tarzı immutable constructor'lar yok
    - automatic reference counting,garbage collection'a göre daha deterministik ve daha hafiza dostu olduğundan küçük cihazlarda ideal ama daha yavaş. haliyle sunucu ya da masaüstünde bekleneni vermeyebilir. tabi bu implementasyonda değiştirilebilecek bir şey.
    - object creation icin new keyword'ünü elemişler ama bu intellisense'in kullanışlılığına zarar verebilir. okunaklık konusunda da sıkıntı yaratabilir.
    - string interpolation sözdizimi. "\(" yazması zor bir kombinasyon.
215 entry daha
hesabın var mı? giriş yap