История изменений
Исправление Vudod, (текущая версия) :
А доказать этот факт можно? Удобная система вкладываемых структур, нативная многопоточность, прекрасная система зависимостей со встроенным пакетным менеджером, куча синтаксического сахара, высокая производительность, очень лёгкий стартап. Что из перечисленного — «убогость это факт»? :)
Хорошо, давайте по порядку. Я буду на примере D излагать, потому что Rust и Vala мне плохо знакомы.
Итак, давайте посмотрим, что имеет D из крупных вещей и не имеет Go (если я не прав, вы меня поправите):
- ООП: наследование, интерфейсы, множественное наследование интерфейсов.
- Шаблоны.
- Лямбды и всякие там мапы (функциональщина).
Стандартная библиотека D богаче, например, есть такие вещи, как std.algorithm, std.parallel, std.mathspecial, std.numeric, std.regexp, которыми в Go и не пахнет.
Стандартные типы: float, double, real в D с возможностью работы с 80-битною (а на некоторых архитектурах вскоре и 128-битною за счёт эмуляции средствами AVX) арифметикою против float32 и float64 в Go, UTF8, UTF16, UTF32 в D и только один вариант в Go.
Скорость кода, сгенерированного референсным компилятором (dmd vs goc) выше в полтора-два раза. Если говорить о gcc, то здесь разница меньше, но всё равно в пользу gdc против go-gcc.
Теперь по синтаксису. Есть и там и там:
- Автоматические типы.
- Кортежи.
- foreach (который в Go просто for).
- ещё что-то наверняка забыл.
Есть в D и нет в Go:
- D может делать операции над срезами массивов вида:
Go не может.
A[$/4 .. $/2] = 0.5*B[$/2 .. $] + C[0 .. $/2]*D;
- D может передавать произвольный тип в функцию (фактически это вариант шаблонов):
auto f(T, S)(T x1, S[] x2) {return x1*std.reduce!"a+b"(x2)}
Можно писать дальше, но зачем?
Исходная версия Vudod, :
А доказать этот факт можно? Удобная система вкладываемых структур, нативная многопоточность, прекрасная система зависимостей со встроенным пакетным менеджером, куча синтаксического сахара, высокая производительность, очень лёгкий стартап. Что из перечисленного — «убогость это факт»? :)
Хорошо, давайте по порядку. Я буду на примере D излагать, потому что Rust и Vala мне плохо знакомы.
Итак, давайте посмотрим, что имеет D из крупных вещей и не имеет Go (если я не прав, вы меня поправите):
- ООП: наследование, интерфейсы, множественное наследование интерфейсов.
- Шаблоны.
- Лямбды и всякие там мапы (функциональщина).
Стандартная библиотека D богаче, например, есть такие вещи, как std.algorithm, std.parallel, std.mathspecial, std.numeric, std.regexp, которыми в Go и не пахнет.
Стандартные типы: float, double, real в D с возможностью работы с 80-битною (а на некоторых архитектурах вскоре и 128-битною за счёт эмуляции средствами AVX) арифметикою против float32 и float64 в Go, UTF8, UTF16, UTF32 в D и только один вариант в Go.
Скорость кода, сгенерированного референсным компилятором (dmd vs goc) выше в полтора-два раза. Если говорить о gcc, то здесь разница меньше, но всё равно в пользу gdc против go-gcc.
Теперь по синтаксису. Есть и там и там:
- Автоматические типы.
- Кортежи.
- foreach (который в Go просто for).
- ещё что-то наверняка забыл.
- D может делать операции над срезами массивов вида:
Go не может.
A[$/4 .. $/2] = 0.5*B[$/2 .. $] + C[0 .. $/2]*D;
- D может передавать произвольный тип в функцию (фактически это вариант шаблонов):
auto f(T, S)(T x1, S[] x2) {return x1*std.reduce!"a+b"(x2)}
Можно писать дальше, но зачем?