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

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

Java, C#
Java так как уже много написано библиотек и простой.
С# так как весьма удачно сочетает простоту и богатство возможностей.

grim ★★★☆ ()
Ответ на: комментарий от grim

С# так как весьма удачно сочетает простоту и богатство возможностей.

Всегда представлял, что MS - это такой большой офис, где сидят дяди с докторскими степенями и пилят закрытый софт. А потом MS выложило исходники ASP.NET MVC на Github. И узрел народ, что пилится всё это индусскими пионерами, которые только из стен индийской школы вышли.

RussCox ()

Фреймворков нет. Зато в стандартной библиотеке есть полезные вещи.

Хотя, для полноценной разработки их недостаточно.

Есть и не один. И мне он очень нравится на самом деле. Приятный синтаксис с высокой производительностью. Для Rust тоже есть библиотеки, но мне он понравился меньше. Hack не пробовал, но PHP не люблю. Короче я собираюсь использовать Go.

nikita-b ()

Настоящее за Go, будущее тоже за Go. Это если говорить о типизированных.

umren ★★★★★ ()
Ответ на: комментарий от nikita-b

+1 за Go. И есть фреймворки, тот же revel или что там сейчас модно?

vladimir-vg ★★ ()
Ответ на: комментарий от nikita-b

Есть и не один. И мне он очень нравится на самом деле.

Какой из них. Тот, который непонятно как пилится непонятными китайцами, тот который уже никак не пилится или куча нефреймворков, предоставляющих только middleware?

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

Просто удивила подборка. Так-то я далёк от веба и погуглил обнаружил, что на хаскеле в этом плане и правда что-то делают.

DarkEld3r ★★★★★ ()

Для Веб? Точно не за Rust, и, пожалуй, не за Go. Да и вообще, зачем для ширпотребного говновеба статическая типизация? Похапешникам она будет только мешать.

tailgunner ★★★★★ ()

Статическая типизация в вебе не нужна. Разве что golang подойдет для REST API сервисов. В остальном веб весь динамичен по данным, и статическая типизация тут не к месту. Так что Ruby, Python, PHP пока идеально подходят. Из экзотики Clojure, ибо тоже динамическая типизация.

abc ()

Вебов много разных, ты про какой?

Debasher ★★★★★ ()

Haskell + Happstack. ИМХО, для веб-разработки — идеальная вещь.

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

Сложно для немытых PHP-масс

Не согласен. Таки, наоборот, очень простой язык. Кроме того, по моим наблюдениям, пыхапистов как раз очень много. Что меня и пугает наряду с небольшим возрастом аудитории (замечу, я не про тех, кто пилит golang говорю, а про проекты на Github'е / а может это я такой везучий).

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

6v1 - мёртв, 6v2 - высер wannabe-рубиста

Не слышал про 6v1 и 6v2. Есть шестой перл, вполне допиленный на уровне спецификаций и почти допиленный компилятор (работает, но еще медленно и не все тесты проходит).

7й ещё даже близко к реальным задачам не подошёл

Очень даже подошел. Если ты не догадался, это Scala.

outtaspace ★★★ ()
Ответ на: комментарий от outtaspace

Как там, кстати, Scala поживает? Предпринимается что-то по части скорости компиляции и экономии памяти? Хочу попробовать, но отзывы неосиляторов (ли?) изо всех щелей.

RussCox ()

Из перечисленного нравится Go.

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

Светлое будущее за гуглом.

Учитывая, как активно и часто Гугл сливает проекты, будущее уже не обязательно будет таким светлым.

KRoN73 ★★★★★ ()
Последнее исправление: KRoN73 (всего исправлений: 1)
Ответ на: комментарий от abc

Статическая типизация в вебе не нужна

Только на уровне хелловорлдов и неофитов. Я испытал сильную потребность в статической типизации году на пятом Web-программирования :)

Хотя подход именно к Go пока не выработал. В тех оценках, что делал, сильно не хватает боксинга.

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

Да хотя бы позволили использовать уточнения для простых типов. Всяко б легче стало.

ritsufag ★★★★★ ()

Я за Haskell. Yesod отличный фреймворк для тех, кто только начинает свой путь в вебе.

Deleted ()
Ответ на: комментарий от RussCox

Предпринимается что-то по части скорости компиляции

Это вот из 2.11 release notes

  • Compiler Performance
    • Incremental compilation has been improved significantly. To try it out, upgrade to sbt 0.13.2 and add incOptions := incOptions.value.withNameHashing(true) to your build! Other build tools are also supported. More info at this sbt issue – that’s where most of the work happened. More features are planned, e.g. class-based tracking.
    • We’ve been optimizing the batch compiler’s performance as well, and will continue to work on this during the 2.11.x cycle.
    • Improve performance of reflection SI-6638

И если мы о вебе, то play2 стал быстрее намного и экономнее работать с шаблонами, там эпический был просер с кучей StringBuilder'ов вместо одного, в итоге в 4 раза быстрее стало.

и экономии памяти

а с этим особых проблем и не было никогда, но тоже чего-то там стараются.

По остальному мои 5 копеек: go - хрень какая-то, обрубок похуже жабы, зато всякие strconv.Atoi очень хакерски выглядит. Java - сойдет, но зачем она, коли есть C#(мы же о вебе, возможности примерно равны). C# - это public static readonly new муть, где нельзя аварийно и безопасно завершить асинхронный таск, где нельзя для property сделать public get, private set. Да и зачем оно, если есть scala.

RedPossum ★★★★★ ()
Ответ на: комментарий от RedPossum

А haskell - это для тех кто долго запрягает. До настоящей езды мало кто дошел.

RedPossum ★★★★★ ()

3 биллиона девайсов не могут ошибаться!

Ford_Focus ★★★★★ ()

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

Есть. Но не нужны.

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

Не слышал про 6v1 и 6v2

И чего тогда вылез, раз не в теме? 6v1 -> rakudo, 6v2 -> см недавний анонс в p/p.

Scala

Да ты наркоман. Вот ЭТО в продакшн ставить? 11 лет языку, а они до сих пор не утрясли стандартную либу:

http://typelevel.org/blog/2014/09/02/typelevel-scala.html https://twitter.com/extempore2/status/507977170342268928 http://www.slideshare.net/extempore/keynote-pnw-scala-2013

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

Роб Пайк и Кен Томпсон это «несколько сотрудников Google» ?

А они таки в Microsoft работают? Ну ладно, пофикшу. Side project нескольких сотрудников MS.

Да ладно, я на лор новость даже писал: Gin — кристально чистый веб-фреймворк на Go.

Да это как раз таки понятно, что в Golang туева хуча «фреймворков», которые делают одно и то же (ничего: роутинг + middleware). Так же понятно, что проектов в продакшене на них нет. А стало быть, авторы разрабатывают фреймворки не для того, чтобы их использовать. На кой такое нужно. Мне бы ехать, а не шашечки.

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

Ну тогда давай, покажи хотя бы с десяток проектов на Gin или другом подобном «микрофреймворке». Если фреймворков больше, чем проектов, что-то тут определенно не так.

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

И чего тогда вылез, раз не в теме? 6v1 -> rakudo, 6v2 -> см недавний анонс в p/p.

Если применить такой подход к оценке, то надо вспомнить все версии. Их около десятка, были даже JVM back-end и хаскельный компилятор.

Шестерка будет первым релизом по имеющейся спецификации. Спецификациями всех предыдущих перлов были исходники компилятора. Поэтому я предположил что 6v1 и 6v2 это снапшоты документации.

outtaspace ★★★ ()
Ответ на: комментарий от RedPossum

ТЫ ЧЁЁЁЁЁ????

Play2???? 4 раза быстрее сборка проекта???? Окстись!!! Разницы м-ду 2.1 2.2 и 2.3 с его сраным активатором нету нихера. Те же мератонны автосгенерированного кода для шаблонов и роутов. Нахера брали скалу 2.11 с ее макросами и квазицитатами спрашивается, чтобы как 100 лет назад генерить исходники и героически их компилить?

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

Дык эта...

В продакшне Play шевелицца мама не горюй. Все негодование относиться к скорости сборки.

anonymous ()
Ответ на: Дык эта... от anonymous

Re: Дык эта...

Ну так я и не говорил про сборку. Я сказал что play2.3 стал лучше с темплейтами работать

RedPossum ★★★★★ ()
Ответ на: Re: Дык эта... от RedPossum

Re: Дык эта...

Предпринимается что-то по части скорости компиляции

И если мы о вебе, то play2 стал быстрее намного и экономнее работать с шаблонами, там эпический был просер с кучей StringBuilder'ов вместо одного, в итоге в 4 раза быстрее стало.

Тогда выражайся попонятнее что-ли

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