Có ngôn ngữ kịch bản Web gõ tĩnh nào không? [đóng cửa]


12

Dường như có hai cách chính để thiết lập phụ trợ máy chủ web. Bạn có thể sử dụng ngăn xếp LAMP, với mã phía máy chủ trong một cái gì đó như PHP hoặc Python (hoặc Ruby hoặc JavaScript, không bắt đầu bằng P.) Các ngôn ngữ kịch bản này có xu hướng được nhập động, với tất cả các nhược điểm trong hiệu suất, tính chính xác và khả năng duy trì mà các ngôn ngữ được nhập động mang lại, nhưng thật dễ dàng để cập nhật máy chủ vì tất cả logic tạo trang được lưu trữ trong các tập lệnh bên ngoài.

Kiểu kiến ​​trúc chính khác được sử dụng rộng rãi là ASP.NET, trong đó logic tạo trang được viết bằng mã được biên dịch. Điều này có xu hướng sử dụng các ngôn ngữ được nhập tĩnh, vì vậy bạn nhận được mã có lợi ích của trình biên dịch, nhưng tất cả logic tạo trang được biên dịch vào máy chủ, có nghĩa là nếu bạn cần thay đổi thứ gì đó, bạn phải gỡ máy chủ xuống và thay thế nó bằng một bản dựng mới.

Điều đó khiến tôi tự hỏi. Có ngôn ngữ kịch bản phía máy chủ nào sử dụng kiểu gõ tĩnh, tốt nhất cho cả hai thế giới không?


2
Bạn đã nghĩ về việc sử dụng Go ?
pswg


4
"Tất cả các nhược điểm về hiệu suất, tính chính xác và tính bảo trì mà các ngôn ngữ được gõ động mang lại". Những khẳng định này gây tranh cãi ở mức tốt nhất và sai ở mức tồi tệ nhất (các JIT nhanh nhất hiện nay là dành cho các ngôn ngữ được gõ động).
Javier

2
"logic tạo trang được biên dịch vào máy chủ, điều đó có nghĩa là nếu bạn cần thay đổi thứ gì đó, bạn phải gỡ máy chủ xuống và thay thế nó bằng bản dựng mới." Có một số môi trường máy chủ có thể chuyển giao sang nhị phân mới mà không bị gián đoạn dịch vụ. I E. uWSGI tải lại duyên dáng
Javier

1
Đối với JVM, có một vài khung công tác cho phép bạn biên dịch lại và trao đổi nóng khi đang di chuyển.
back2dos

Câu trả lời:


8

CẬP NHẬT: Các giải pháp hiện tại bao gồm AtScript

Bạn nên dùng thử Google Dart .

Nó có kiểu gõ tùy chọn, có nghĩa là bạn có thể thêm chú thích loại sẽ được kiểm tra trong chế độ nhà phát triển 'được kiểm tra' hay còn gọi là chế độ nhà phát triển, nhưng chúng không bắt buộc và ngôn ngữ cung cấp nhiều lợi thế của các ngôn ngữ động khác như python. Tuy nhiên, trình chỉnh sửa sẽ thực hiện kiểu suy luận để cố gắng giúp bạn tìm ra lỗi trước thời hạn. VM phi tiêu rất nhanh và có thể tạo ra các ảnh chụp nhanh, có thể tăng tốc thời gian khởi động lên đến 10 lần. Nó cũng biên dịch thành javascript và nó rất nhanh .

Nhược điểm chính ở đây là một công nghệ hơi mới, vì vậy không có nhiều thư viện cho nó, và thành thật mà nói, khả năng tương tác với javascript không đơn giản như mong muốn. Ngoài ra, ngôn ngữ vẫn đang được phát triển, do đó, có những thay đổi đột phá theo thời gian.


Tôi muốn giới thiệu TypeScript. Giống như phi tiêu, nhưng nó tương thích với JavaScript.
Knerd

4

Câu hỏi của bạn dựa trên một số giả định không chính xác.

Python, Ruby đều được biên dịch thành mã byte trước khi thực hiện. Quá trình này là tự động, nhưng thay đổi ứng dụng yêu cầu khởi động lại đầy đủ. Node.JS hoạt động theo cùng một cách nhưng biên dịch thành mã máy.

Mã ASP.NET có thể được biên dịch trước và sao chép vào máy chủ hoặc được biên dịch động theo yêu cầu từ mã nguồn trên máy chủ. IIS xử lý cả hai hình thức cập nhật mà không có thời gian ngừng hoạt động (các yêu cầu đầu tiên sau khi cập nhật sẽ chậm.) Có thể cập nhật thời gian chết bằng 0 với Python và Ruby, nhưng với rất nhiều tùy chọn triển khai, không phải là điều được chấp nhận.

Dựa vào đó, tôi sẽ nghĩ rằng bạn sẽ hài lòng với bất kỳ ngôn ngữ .NET nào.


3
Một ngôn ngữ kịch bản là khi bạn có thể viết một số bit của nó trong một tệp và chạy nó. Không có lý do gì nó không nên được gõ tĩnh.
Florian Margaine

@FlorianMargaine Vậy C là ngôn ngữ kịch bản?

@del Nam c ++ cũng vậy.
mikerobi

@mikerobi Thật ra "của tôi" cũng là C ++ (và AFAIK là người kế thừa của CINT), tôi chỉ làm hỏng việc đó thôi.

2
@mikerobi Nếu bạn khám phá picoc, bạn sẽ nhận thấy toàn bộ điểm nó được viết ở vị trí đầu tiên là ngôn ngữ kịch bản. Nó không chỉ là một trình thông dịch cho c, nó là một trình thông dịch đủ nhỏ để được nhúng vào các ứng dụng và thiết bị lớn hơn và cung cấp cho người dùng của họ khả năng viết các tập lệnh nhỏ trong c. Một số ngôn ngữ có thể tốt hơn trong việc viết kịch bản so với các ngôn ngữ khác, nhưng một ngôn ngữ không tệ trong việc viết kịch bản chỉ vì nó chưa được sử dụng cho nó (chưa). Vào cuối ngày, một ngôn ngữ chỉ là cú pháp và ngữ nghĩa, việc triển khai có thể thay đổi một cách dữ dội.
yannis

0

Không có lý do gì mà một ngôn ngữ được biên dịch phải được gõ mạnh hoặc khó cập nhật.

Bạn có thể muốn xem xét một số thiết lập web erlang như Cowboy, Webmachine và nitơ. Với Dialyzer, bạn có thể kiểm tra tính chính xác của loại rất đẹp và bạn có thể tải lại các mô-đun ngay khi đang chạy vì erlang được thiết kế để có thể nâng cấp phần mềm tại chỗ mà không làm gián đoạn người dùng hiện tại.

Ngoài ra webmachine (cái tôi đã sử dụng nhiều nhất) có thể khá nhanh. Tôi đã thấy webmachine có phản hồi trung bình trên các điểm cuối API dưới 10ms trên nút nhỏ amazon EC2!

Nếu bạn muốn gõ tĩnh, hãy thử khung Yesod dành cho ngôn ngữ Haskell. Haskell được đánh máy mạnh mẽ với một hệ thống loại rất phong phú.

Tôi đã không sử dụng nó cá nhân, nhưng những người tôi biết những người sử dụng nó yêu thích nó.


3
Đừng nhầm lẫn kiểu gõ mạnh và tĩnh. Haskell có các loại tĩnh mạnh, Python có các loại động mạnh.
mikerobi

0

IMHO, là tốt nhất tĩnh-gõ ngôn ngữ Web scripting là D .

Giống như các ngôn ngữ kịch bản được giải thích, nó có thể biên dịch các tập lệnh một cách nhanh chóng và với tốc độ cực nhanh.

Bản thân ngôn ngữ này giống như một JavaScript siêu mạnh được gõ mạnh, mạnh hơn nhiều so với Go chẳng hạn.

Tất cả các công cụ đồng thời bị ẩn, như trong PHP và các mẫu được biên dịch theo mã gốc.

Khó tìm thấy tốt hơn thế ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.