2010-11-21 18 views
5

Neden betik dillerinin çoğu gevşek bir şekilde yazılmıştır? vbNeden çoğu komut dosyası dili gevşek yazılmıştır?

javascript, piton, örnek için?

+0

Bu bir topluluk vikisiyse daha iyi cevaplar alacağınızı düşünüyorum (ama şimdi bunu gönderebildiğinizi sanmıyorum, çünkü> 100 ile birlikte olabilirsiniz). Bunun gerçekten doğru bir cevabı yok. –

cevap

1

Oldukça sorunuzu anlamıyorum. PHP, VBScript, COMMAND.COM ve Unix kabuk (lar) ından ayrı olarak, hiç yazılmayan betik dillerini gerçekten düşünemiyorum.

Python, Ruby, Mondrian, JavaFXScript, PowerShell, Haskell, Scala, ELISP, Scheme, AutoLisp, Io, Ioke, Seph, Groovy, Fantom, Boo, Kobra, Guile, yazı tipi dilleri gevşek bir şekilde yazılmayan bazı örneklerdir. , Slate, Smalltalk, Perl ve hellip; Her şeyden

+0

Python ve Perlo gevşek yazılmadı mı? – nbrogi

12

Önce, terminoloji ile bazı sorunlar vardır. gevşek olarak yazılmış dili gibi bir şey yoktur ve komut dosyası dili da belirsizdir, çoğunlukla dinamik programlama dili olarak adlandırılır.

farklı türleri arasında ayrım ne kadar sıkı bir şekilde yaklaşık genel dayanıklı basım yazarak zayıf vardır (yani eğer 1 + "2" verimleri 3 ya da bir hata).

Ve statik, yazarak dinamik vs ile ilgili türü bilgileri tespit edildiğinde - ederken veya çalıştırmadan önce.

Yani şimdi, bir dinamik dil nedir? Yorumlanan bir dil derlendi mi? Kesinlikle, bir dilin çalıştığı yol, dilin doğal bir özelliği değil, salt bir uygulama ayrıntısı olduğundan, kesinlikle değil. Aslında, birebir aynı dil için tercümanlar ve derleyiciler olabilir. Haskell için GHC ve GHCi var, hatta C'nin Ch tercümanı var.

Ama sonra, dinamik languges nelerdir? Onlarla nasıl çalıştığını tanımlamak isterim.

Dinamik bir dilde, programınızı hızlı bir şekilde prototiplemek ve bir şekilde işe almak istersiniz. Ne yapmak istemiyorsunuz resmi olarak'u belirterek programlarınızın davranışını belirtiyorsunuz, sadece istediğiniz gibi davranmasını istiyorsunuz.

Böylece bir kodlama dilinde yılında

foo = greatFunction(42) 
foo.run() 

yazarsanız, sadece mısın run can bazı nesnesi döndüren bir dizi alıyor bazı greatFunction olduğunu varsayıyoruz. Bunu herhangi bir şekilde derleyici için kanıtlamazsınız - önceden belirlenmiş türler yok, IRunnable .... Bu otomatik olarak dinamik yazarak etki alanına ulaşır.

Ama tür kesmesi de var. Sonuç türü, statik olarak yazılan dilinde, derleyicinin sizin için türleri otomatik olarak belirlediği anlamına gelir. Ortaya çıkan kod son derece kısa ancak yine de statik olarak yazılabilir.Haskell'de örneğin

'a başvurun. Haskell, burada yer alan tüm türleri önceden öğreniyor. Sayıların bir listesi olan list, map bazı fonksiyonların bir listenin herhangi bir elemanına uyguladığı bir fonksiyona ve başka bir sayı listesinden bir sayı listesi üreten square'a sahibiz. operasyonlar şey resmen belirtilmiş olan destekler -

Bununla birlikte, derleyici her şey önceden dışarı çalıştığını ispat edemez. Bu nedenle, Haskell'i hiçbir zaman benzer seviyelerde ifade düzeyine ulaşabilmesine rağmen bir betik dili olarak adlandırmam (daha fazla değilse!). O betik dili kullanılır ne katılan her çalışma var varsayarak, belirtmeden, çalışan bir sistem prototip verir, ancak çünkühepsi Yani


tüm

, betik dili dinamik daktilo için.

İlgili konular