LINUX.ORG.RU

ЯП со статической типизацией для web'а

 , , , ,


1

4
  • Hack aka PHP с типами (Facebook)
    <?hh
    class MyClass {
      const int MyConst = 0;
      private string $x = '';
      public function increment(int $x): int {
        $y = $x + 1;
        return $y;
      }
    }
    
    // Generics
    class Box<T> {
      protected T $data;
    
      public function __construct(T $data) {
        $this->data = $data;
      }
    
      public function getData(): T {
        return $this->data;
      }
    }
    
    Фреймворков нет, нужно ставить HHVM.
  • Golang (изначально - side project нескольких сотрудников Google)
    package name
    
    import (
    	"fmt"
    )
    
    func Hello(name string) string {
    	return fmt.Sprintf("Hello, %s", name)
    }
    
    Фреймворков нет. Зато в стандартной библиотеке есть полезные вещи. Хотя, для полноценной разработки их недостаточно.
  • Rust (Mozilla)
    fn main() {
        let program = "+ + * - /";
        let mut accumulator = 0i;
    
        for token in program.chars() {
            match token {
                '+' => accumulator += 1,
                '-' => accumulator -= 1,
                '*' => accumulator *= 2,
                '/' => accumulator /= 2,
                _ => { /* ignore everything else */ }
            }
        }
    
        println!("The program \"{}\" calculates the value {}",
                  program, accumulator);
    }
    
    Едва ли это подходит для веба. Тем более, что фреймворков нет.
  • Java (Oracle)
    // Мы все с вами знаем, как выглядит Java код.
    
    Получше с готовыми компонентами. Но, Java же для посредственностей (см. авторитетное мнение ЛОРовца Paul Graham'а, который не использовал, но осуждает, потому что «хорошую книгу можно узнать по обложке»). Ну и вы сами всё знаете.
  • Scala
  • Haskell

За чем светлое будущее, товарищи?

hack ... Фреймворков нет

Любой hhvm-совместимый PHP-фреймворк и в нём свой hack-код. Hack позволяет делать require для .php

golang ... Фреймворков нет

Ну, Семён Семёныч! Ну, Revel же! Рулит и педалит.

Rust

Тут надо ещё долго ждать.

Java
Scala

Можно прекрасно совместить в Play! Framework.

Haskell

Это если хочется экзотики. Светлое будущее не наступит.

KRoN73
()
Ответ на: комментарий от tailgunner

Да и вообще, зачем для ширпотребного говновеба статическая типизация?

Потому что кроме шрипотребного говновеба бывают обширные качественные проекты с длительной поддержкой.

Похапешникам она будет только мешать.

Мне, вот, лет 10 уже, как нужна.

KRoN73
()
Ответ на: комментарий от abc

веб весь динамичен по данным

Только при кривом проектировании.

KRoN73
()

Мля, опять некротема. Хоть бы запоминание позиции на ЛОРе сделали, несложно же совсем...

KRoN73
()

Scala во все поля. Там еще Scala.js пилят, и вот как-то так получается, что за пару лет несколько программистов в свободное время довели Scala.js до лучшего и более зрелого состояния, чем то, в котором находится Dart, над которым работала четыре года большая команда в гугле.

trycatch
()

Как то писал для веба на сях.
Доставляет.

Cactus64k
()
Ответ на: комментарий от trycatch

Автор Scala.js Sébastien Doeraene всю дорогу работал над ним фул-тайм, если я не ошибаюсь. Да и чего ему ещё делать, он же аспирант в EPFL.

migesok
()

За чем светлое будущее, товарищи?

Rebol, а так же советую обратить внимание на перспективные для веба ABCL/c+ и особенно Visual Prolog.

anonymous
()
Ответ на: комментарий от O02eg

«Ждать» — я не о Rust-фреймворках писал. А о Rust вообще :) Там ещё, во-первых, много ломать будут. Во-вторых, чтобы убедиться, что завтра он тупо не загнётся.

Вообще:
https://twitter.com/balancer73/status/589359958820577280

Как видно, Rust'у ещё пахать и пахать, чтобы хотя бы с Haskell сравниться. Java и PHP не добавлял, чтобы остальные совсем у нулевой отметки не оказались :)

Кстати, Golang уже «обречён» на долгую жизнь, хотя бы нишевую. Сейчас повсеместно (и уже, похоже, необратимо) переходят на Docker. А Docker-инфраструктура очень повязана на Go.

https://twitter.com/balancer73/status/589361897595654145

KRoN73
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.