Bu soru anlambilimle ilgili
Bu verileri size verirsem: 12
türü nedir? Kesin olarak bilmenin hiçbir yolu yok. Bir tamsayı olabilir - bir kayan nokta olabilir - bir dize olabilir. Bu anlamda çok "türetilmemiş" verilerdir.
Size bu veride "toplama", "çıkarma" ve "birleştirme" gibi işleçleri kullanmanıza izin veren hayali bir dil ve başka bir rastgele veri parçası verirsem "tür" biraz önemsizdir (hayali dilimle) (örnek : belki add(12, a)
verimler 109
olan 12
artı aSCII değeri a
).
Bir saniye için C ile konuşalım. C hemen hemen herhangi bir keyfi veri parçası ile istediğiniz her şeyi yapmanızı sağlar. İki uint
s alan bir işlev kullanıyorsanız - istediğiniz her şeyi atabilir ve iletebilirsiniz - ve değerler yalnızca uint
s olarak yorumlanır . Bu anlamda C "türsüzdür" (eğer böyle davranırsanız).
Ancak - ve Brendan'ın noktasına gelmek - size "Yaşım" olduğunu söylersem 12
- o 12
zaman bir türü var - en azından bunun sayısal olduğunu biliyoruz. Bağlamla birlikte , dilden bağımsız olarak her şeyin bir türü vardır.
Bu yüzden başlangıçta söyledim - sorunuz anlambilimden biri. "Unsyped" nin anlamı nedir? Bence Brendan "statik tip yok" dediğinde kafasına çiviyi vurdu - çünkü bu muhtemelen anlamına gelebilir. İnsanlar doğal olarak şeyleri türlere ayırırlar. Sezgisel olarak biliyoruz ki, bu ayrımları yapmayı öğretmeden bir araba ile maymun arasında temelde farklı bir şey var.
Başlangıçta örneğime geri dönersek - "türlerle ilgilenmeyen" bir dil (per-se), bir sözdizimi hatası oluşturmadan "bir" yaş "ve" ad "eklemenize izin verebilir ... mantıklı bir işlem olduğu anlamına gelmez.
Javascript, her türlü çılgın şeyi "hataları" dikkate almadan yapmanıza izin verebilir. Bu yaptığınız şeyin mantıklı bir ses olduğu anlamına gelmez. Bu geliştirici çalışması için.
Derleme / derleme / yorumlama zamanında tür güvenliğini zorlamayan bir sistem / dil "türetilmemiş" veya "dinamik olarak yazılmış" mı?
Semantik.
DÜZENLE
Buraya bir şeyler eklemek istedim çünkü bazı insanlar "evet, ama Javascript'in bazı" türleri "var.
Başkasının cevabı hakkındaki yorumumda dedim ki:
Javascript'te "Maymun" olarak oluşturduğum nesnelere ve "İnsanlar" olarak inşa ettiğim nesnelere sahip olabilirim ve bazı işlevler yalnızca "İnsanlar" üzerinde, diğerleri yalnızca "Maymunlar" üzerinde çalışacak şekilde tasarlanabilir ve ama diğerleri sadece "Silahlı Şeyler". Dilin hiç söylenip söylenmediği, "silahlı şeyler" gibi bir nesne kategorisi olup, Javascript ("dinamik") kadar montajla ("türsüz") alakasızdır. Her şey mantıklı bir bütünlük meselesidir - ve tek hata, bu yöntemle kolları olmayan bir şey kullanmak olacaktır.
Yani, Javascript'in bazı "türler kavramına" ve dolayısıyla "dinamik türlere" sahip olduğunu düşünüyorsanız ve bunun "türetilmemiş bir sistemden" bir şekilde farklı olduğunu düşünürseniz - yukarıdaki örnekten herhangi bir " türleri vardır "içsel olarak gerçekten alakasız.
Örneğin, C # ile aynı işlemi gerçekleştirmek için bir arayüze ICreatureWithArms
ya da benzer bir şeye İHTİYACIM VAR . Javascript'te öyle değil - C veya ASM'de böyle değil.
Açıkçası, Javascript'in herhangi bir "tip" anlayışı olup olmadığı önemsizdir.