Apakah ada bahasa skrip Web yang diketik secara statis? [Tutup]


12

Tampaknya ada dua cara utama untuk membuat backend server web. Anda dapat menggunakan tumpukan LAMP, dengan kode sisi server dalam sesuatu seperti PHP atau Python (atau Ruby atau JavaScript, yang tidak dimulai dengan P.) Bahasa skrip ini cenderung diketik secara dinamis, dengan semua kelemahan di kinerja, kebenaran, dan pemeliharaan yang dibawa bahasa yang diketik secara dinamis, tetapi mudah untuk memperbarui server karena semua logika pembuatan halaman disimpan dalam skrip eksternal.

Gaya arsitektur utama lainnya yang digunakan secara luas adalah ASP.NET, di mana logika pembuatan halaman ditulis dalam kode yang dikompilasi. Ini cenderung menggunakan bahasa yang diketik secara statis, sehingga Anda mendapatkan kode yang memiliki manfaat dari kompiler, tetapi semua logika pembuatan halaman dikompilasi ke dalam server, yang berarti jika Anda perlu mengubah sesuatu, Anda harus menurunkan server dan ganti dengan bangunan baru.

Jadi itu membuat saya bertanya-tanya. Apakah ada bahasa skrip sisi server yang menggunakan pengetikan statis, untuk yang terbaik dari kedua dunia?


2
Pernahkah Anda berpikir untuk menggunakan Go ?
pswg


4
"Semua kelemahan dalam kinerja, kebenaran, dan pemeliharaan yang dibawa oleh bahasa yang diketik secara dinamis". Pernyataan ini masih bisa diperdebatkan di terbaik, dan salah di terburuk (JIT tercepat saat ini adalah untuk bahasa yang diketik secara dinamis).
Javier

2
"Logika pembuatan halaman dikompilasi ke dalam server, yang berarti jika Anda perlu mengubah sesuatu, Anda harus menurunkan server dan menggantinya dengan build baru." Ada beberapa lingkungan server yang dapat berpindah ke biner baru tanpa gangguan layanan. yaitu. uWSGI anggun memuat ulang
Javier

1
Untuk JVM ada beberapa kerangka kerja yang memungkinkan Anda untuk mengkompilasi ulang dan hot swap dengan cepat.
back2dos

Jawaban:


8

PEMBARUAN: Solusi terkini lainnya mencakup AtScript

Anda harus mencoba Google Dart .

Ini memiliki pengetikan opsional, yang berarti bahwa Anda dapat menambahkan anotasi jenis yang akan diperiksa di 'diperiksa' alias mode pengembang saat runtime, tetapi mereka tidak diperlukan dan bahasa menyediakan banyak keuntungan dari bahasa dinamis lain seperti python. Namun, editor akan melakukan inferensi ketik untuk mencoba membantu Anda menemukan kesalahan sebelumnya. VM panah cepat dan dapat menghasilkan foto, yang dapat mempercepat waktu startup hingga 10x. Ini juga mengkompilasi ke javascript dan cepat .

Kelemahan utama di sini adalah bahwa itu adalah teknologi yang agak baru, jadi tidak ada banyak perpustakaan untuk itu, dan jujur, interoperabilitas dengan javascript tidak sesederhana seharusnya. Juga, bahasanya masih dalam pengembangan, sehingga ada perubahan yang pecah dari waktu ke waktu.


Saya lebih suka merekomendasikan TypeScript. Seperti anak panah, tetapi ini kompatibel dengan JavaScript.
Knerd

4

Pertanyaan Anda didasarkan pada beberapa asumsi yang salah.

Python, Ruby dikompilasi ke bytecode sebelum dieksekusi. Prosesnya otomatis, tetapi perubahan aplikasi memerlukan restart penuh. Node.JS berperilaku dengan cara yang sama tetapi mengkompilasi ke kode mesin.

Kode ASP.NET dapat dikompilasi dan disalin ke server atau dikompilasi secara dinamis berdasarkan permintaan dari kode sumber di server. IIS menangani kedua bentuk pembaruan tanpa waktu henti nol (permintaan pertama setelah pembaruan akan lambat.) Pembaruan tanpa waktu nol dimungkinkan dengan Python dan Ruby, tetapi dengan begitu banyak opsi penempatan, bukan sesuatu yang harus diterima begitu saja.

Berdasarkan itu, saya akan berpikir bahwa Anda akan senang dengan bahasa .NET.


3
Bahasa scripting adalah ketika Anda dapat menulis beberapa bit dalam file dan menjalankannya. Tidak ada alasan untuk tidak mengetik secara statis.
Florian Margaine

@FlorianMargaine Jadi C adalah bahasa scripting?

@delnan c ++ juga.
mikerobi

@mikerobi Sebenarnya "milikku" adalah C ++ juga (dan AFAIK penerus CINT), aku baru saja mengacaukannya.

2
@mikerobi Jika Anda menjelajahi picoc, Anda akan melihat seluruh poin yang ditulis di tempat pertama adalah menjadi bahasa scripting. Ini bukan hanya sebuah interpreter untuk c, itu adalah interpreter yang cukup kecil untuk disematkan dalam aplikasi dan perangkat yang lebih besar dan memberikan para penggunanya kemampuan untuk menulis skrip kecil dalam c. Beberapa bahasa mungkin lebih baik dalam scripting daripada yang lain, tetapi bahasa tidak buruk dalam scripting hanya karena belum digunakan untuk itu (belum). Pada akhirnya, sebuah bahasa hanyalah sintaks dan semantik, implementasi dapat sangat bervariasi.
yannis

0

Tidak ada alasan bahwa bahasa yang dikompilasi harus sangat diketik atau sulit diperbarui.

Anda mungkin ingin melihat beberapa pengaturan web erlang seperti Koboi, Webmachine, dan nitrogen. Dengan Dialyzer Anda bisa mendapatkan beberapa tipe yang sangat bagus untuk memeriksa kebenaran dan Anda dapat memuat kembali modul dengan cepat saat run time karena erlang dirancang untuk dapat meningkatkan perangkat lunak di tempat tanpa mengganggu pengguna yang ada.

Selain itu webmachine (yang paling sering saya gunakan) bisa sangat cepat. Saya telah melihat webmachine memiliki respons rata-rata pada titik akhir API kurang dari 10 ms pada simpul kecil amazon EC2!

Jika Anda ingin mengetik statis, coba kerangka Yesod yang untuk bahasa Haskell. Haskell sangat diketik dengan sistem tipe yang sangat kaya.

Saya belum menggunakannya secara pribadi, tetapi orang-orang yang saya kenal yang menggunakannya menyukainya.


3
Jangan bingung mengetik kuat dan statis. Haskell memiliki tipe statis yang kuat, Python memiliki tipe dinamis yang kuat.
mikerobi

0

IMHO, bahasa Web scripting terbaik statis-mengetik adalah D .

Seperti bahasa scripting yang ditafsirkan, ia dapat mengkompilasi skrip dengan cepat dan dengan kecepatan kilat.

Bahasa itu sendiri terasa seperti JavaScript berdaya super kuat, jauh lebih kuat daripada Go misalnya.

Semua hal konkurensi disembunyikan, seperti di PHP, dan templat dikompilasi dalam kode asli.

Sulit ditemukan lebih baik dari itu ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.