Wydaje się, że istnieją dwa główne sposoby skonfigurowania zaplecza serwera WWW. Możesz użyć stosu LAMP z kodem po stronie serwera w czymś takim jak PHP lub Python (lub Ruby lub JavaScript, które nie zaczynają się na P.) Te języki skryptowe są zazwyczaj dynamicznie pisane, ze wszystkimi wadami w wydajność, poprawność i łatwość obsługi, które zapewniają dynamicznie pisane języki, ale serwer można łatwo zaktualizować, ponieważ cała logika generowania strony jest przechowywana w zewnętrznych skryptach.
Innym szeroko stosowanym stylem architektury jest ASP.NET, w którym logika generowania stron jest zapisana w skompilowanym kodzie. Zwykle używa się języków o typie statycznym, więc otrzymujesz kod korzystający z kompilatora, ale cała logika generowania strony jest wkompilowana w serwer, co oznacza, że jeśli musisz coś zmienić, musisz zdjąć serwer i zastąp go nową wersją.
To mnie zastanawia. Czy istnieją jakieś języki skryptowe po stronie serwera, które używają pisania statycznego, dla najlepszego z obu światów?
źródło
Odpowiedzi:
AKTUALIZACJA: Bardziej aktualne rozwiązania obejmują AtScript
Powinieneś wypróbować Google Dart .
Ma opcjonalne pisanie, co oznacza, że możesz dodawać adnotacje typu, które będą sprawdzane w trybie sprawdzania, czyli w trybie deweloperskim, w czasie wykonywania, ale nie są one wymagane, a język zapewnia wiele zalet innych dynamicznych języków, takich jak python. Jednak edytor wnioskuje o typie, aby pomóc Ci znaleźć błędy z wyprzedzeniem. Wirtualna rzutka jest szybka i może tworzyć migawki, które mogą przyspieszyć uruchomienie nawet 10-krotnie. Kompiluje się również w javascript i jest szybki .
Główną wadą jest to, że jest to nieco nowa technologia, więc nie ma tylu bibliotek, a szczerze mówiąc, interoperacyjność z javascript nie jest tak prosta, jak powinna. Ponadto język jest wciąż rozwijany, więc od czasu do czasu zmieniają się zmiany.
źródło
Twoje pytanie opiera się na kilku błędnych założeniach.
Python, Ruby są kompilowane do kodu bajtowego przed wykonaniem. Proces jest automatyczny, ale zmiany aplikacji wymagają pełnego ponownego uruchomienia. Node.JS zachowuje się w ten sam sposób, ale kompiluje się do kodu maszynowego.
Kod ASP.NET można wstępnie skompilować i skopiować na serwer lub dynamicznie skompilować na żądanie z kodu źródłowego na serwerze. Usługi IIS obsługują obie formy aktualizacji bez zerowego czasu przestoju (pierwsze żądania po aktualizacji będą wolne). Zerowe aktualizacje przestojów są możliwe w Pythonie i Ruby, ale przy tak wielu opcjach wdrażania nie należy brać za pewnik.
Na tej podstawie sądzę, że byłbyś zadowolony z dowolnego języka .NET.
źródło
Nie ma powodu, aby skompilowany język był silnie pisany lub trudny do aktualizacji.
Możesz przyjrzeć się niektórym ustawieniom sieci erlang, takim jak Cowboy, Webmachine i azot. Dzięki Dialyzer możesz uzyskać bardzo ładne sprawdzanie poprawności typu i możesz ponownie ładować moduły w czasie rzeczywistym, ponieważ Erlang został zaprojektowany tak, aby móc aktualizować oprogramowanie bez przerywania pracy istniejących użytkowników.
Ponadto webmachine (ten, z którego najczęściej korzystałem) może być dość szybki. Widziałem, że webmachine ma średnie odpowiedzi na punkty końcowe API mniejsze niż 10 ms w małym węźle Amazon EC2!
Jeśli chcesz pisać statycznie, wypróbuj framewor Yesod dla języka Haskell. Haskell jest silnie napisany za pomocą bardzo bogatego systemu pisma.
Nie używałem go osobiście, ale ludzie, którzy go używają, uwielbiają to.
źródło
IMHO, najlepszym statycznie wpisane jest językiem skryptowym Web D .
Podobnie jak interpretowane języki skryptowe, potrafi kompilować skrypty w locie i błyskawicznie.
Sam język przypomina silnie napisany JavaScript o dużej mocy, o wiele potężniejszy niż Go.
Wszystkie elementy współbieżności są ukryte, podobnie jak w PHP, a szablony są kompilowane w natywnym kodzie.
Trudno znaleźć coś lepszego ...
źródło