Statik olarak yazılmış Web komut dosyası dilleri var mı? [kapalı]


12

Bir web sunucusu arka ucu kurmak için iki ana yol var gibi görünüyor. Sunucu tarafı kodu PHP veya Python (veya Ruby ile JavaScript, P ile başlamıyor) gibi bir şeyle birlikte bir LAMP yığını kullanabilirsiniz. Bu komut dosyası dilleri, tüm dezavantajları ile dinamik olarak yazılır performans, doğruluk ve dinamik olarak yazılan dillerin getirdiği kolaylık, ancak tüm sayfa oluşturma mantığı harici komut dosyalarında saklandığından sunucuyu güncellemek kolaydır.

Geniş kullanımdaki diğer önemli mimari tarzı, sayfa oluşturma mantığının derlenmiş kodda yazıldığı ASP.NET'tir. Bu, statik olarak yazılan dilleri kullanma eğilimindedir, bu nedenle bir derleyicinin avantajına sahip olan kodu alırsınız, ancak tüm sayfa oluşturma mantığı sunucuya derlenir, yani bir şeyi değiştirmeniz gerekirse sunucuyu kaldırmanız ve yeni bir yapı ile değiştirin.

Bu beni meraklandırıyor. Her iki dünyanın en iyileri için statik yazmayı kullanan sunucu tarafı komut dosyası yazma dilleri var mı?


2
Go kullanmayı düşündünüz mü ?
pswg


4
"Dinamik olarak yazılan dillerin getirdiği performans, doğruluk ve bakımdaki tüm dezavantajlar". Bu iddialar en iyi ihtimalle tartışmalı ve en kötü ihtimalle yanlıştır (günümüzde en hızlı JIT'ler dinamik olarak yazılan diller içindir).
Javier

2
"sayfa oluşturma mantığı sunucuda derlenir, yani bir şeyi değiştirmeniz gerekirse sunucuyu kaldırmanız ve yeni bir derleme ile değiştirmeniz gerekir." Hizmet kesintisi olmadan yeni bir ikili dosyaya geçiş yapabilen birkaç sunucu ortamı vardır. yani. uWSGI zarif yeniden yükleme
Javier

1
JVM için anında yeniden derlemenizi ve çalışırken değiştirmenizi sağlayan birkaç çerçeve var.
back2dos

Yanıtlar:


8

GÜNCELLEME: Daha güncel çözümler AtScript'i içerir

Google Dart'ı denemelisiniz .

İsteğe bağlı yazım özelliği vardır, yani çalışma zamanında 'işaretli' aka geliştirici modunda kontrol edilecek tür ek açıklamaları ekleyebilirsiniz, ancak bunlar gerekli değildir ve dil python gibi diğer dinamik dillerin avantajlarını sağlar. Ancak editör, hataları önceden bulmanıza yardımcı olmak için tür çıkarımı yapar. Dart VM hızlıdır ve başlatma süresini 10 kata kadar hızlandırabilen anlık görüntüler üretebilir. Ayrıca javascript derlemek ve hızlı .

Buradaki ana dezavantaj, biraz yeni bir teknolojidir, bu yüzden bunun için çok fazla kütüphane yoktur ve dürüst olmak gerekirse, javascript ile birlikte çalışabilirlik olması gerektiği kadar basit değildir. Ayrıca, dil hala geliştirilmektedir, bu nedenle zaman zaman kırılma değişiklikleri vardır.


TypeScript'i öneriyorum. Dart gibi, ancak JavaScript ile uyumludur.
Knerd

4

Sorunuz çeşitli yanlış varsayımlara dayanmaktadır.

Python, Ruby, yürütmeden önce bayt koduna derlenir. İşlem otomatiktir, ancak uygulama değişiklikleri tam yeniden başlatma gerektirir. Düğüm.JS aynı şekilde davranır, ancak makine kodunu derler.

ASP.NET kodu önceden derlenebilir ve sunucuya kopyalanabilir veya isteğe bağlı olarak sunucudaki kaynak koddan dinamik olarak derlenebilir. IIS, her iki güncelleştirme biçimini de sıfır kesinti süresi olmadan işler (güncellemeden sonraki ilk istekler yavaş olacaktır.) Python ve Ruby ile sıfır kesinti güncellemeleri mümkündür, ancak bu kadar çok dağıtım seçeneğiyle verilecek bir şey yoktur.

Buna dayanarak, herhangi bir .NET dilinden memnun olacağını düşünürdüm.


3
Komut dosyası dili, bir dosyaya bazı bitlerini yazıp çalıştırabileceğiniz dildir. Statik olarak yazılmaması için hiçbir neden yok.
Florian Margaine

@FlorianMargaine Yani C bir betik dili mi?

@delnan c ++ da.
mikerobi

@mikerobi Aslında "benim" de C ++ (ve CINT'in halefi AFAIK), o parçayı berbat ettim.

2
@mikerobi picoc'u keşfederseniz, ilk başta yazılan noktanın bir komut dosyası dili olduğunu fark edeceksiniz. Sadece c için bir tercüman değil, daha büyük uygulamalara ve cihazlara gömülecek kadar küçük bir tercümandır ve kullanıcılarına c'de küçük komut dosyaları yazma yeteneği verir. Bazı diller komut dosyalarında diğerlerinden daha iyi olabilir, ancak bir dil komut dosyası kullanımında kötü değildir (henüz). Günün sonunda, bir dil sadece sözdizimi ve anlambilimdir, uygulamalar çılgınca değişebilir.
yannis

0

Derlenmiş bir dilin güçlü bir şekilde yazılması veya güncellenmesi zor bir neden yoktur.

Kovboy, Webmachine ve azot gibi bazı erlang web kurulumlarına bakmak isteyebilirsiniz. Dialyzer ile doğruluk için çok güzel bir tür kontrol alabilirsiniz ve erlang mevcut kullanıcıları kesintiye uğratmadan yazılımı yerinde yükseltmek için tasarlandığından modülleri çalışma zamanında yeniden yükleyebilirsiniz.

Ayrıca webmachine (en çok kullandığım) oldukça hızlı olabilir. Webmachine'ın bir amazon EC2 küçük düğümünde 10 ms'den daha az API uç noktalarında ortalama yanıtları olduğunu gördüm!

Statik yazım istiyorsanız , Haskell dili için olan Yesod çerçevesini deneyin . Haskell çok zengin bir tip sistemle güçlü bir şekilde yazılmıştır.

Ben şahsen kullanmadım, ama kimi kullandığını biliyorum.


3
Güçlü ve statik yazmayı karıştırmayın. Haskell güçlü statik tiplere, Python güçlü dinamik tiplere sahiptir.
mikerobi

0

IMHO, statik olarak yazılan en iyi Web komut dosyası dili D'dir .

Yorumlanmış komut dosyası dilleri gibi, komut dosyalarını anında ve yıldırım hızlarında derleyebilir.

Dilin kendisi, örneğin Go'dan çok daha güçlü, güçlü bir şekilde yazılmış süper güçlü bir JavaScript gibi hissediyor.

PHP'de olduğu gibi tüm eşzamanlılık öğeleri gizlenir ve şablonlar yerel kodda derlenir.

Bundan daha iyi bulmak zor ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.