Кто знает киллер-фичи дотнета?
От: Разраб  
Дата: 13.07.23 01:41
Оценка:
Немного изучаю зиг. Вот для примера:
const std = @import("std");

pub fn main() void {
    var arr: [1000_000]i32 = undefined;
    for (arr) |*item, i| {
        item.* = @intCast(i32, i);
    }
    var sort = isSort(&arr);
    std.debug.print("{!}\n", .{sort});
}

fn isSort(arr: []i32) bool {
    var i: usize = 1;
    while (i < arr.len) : (i += 1) {
        if (arr[i - 1] > arr[i]) return false;
    }
    return true;
}

Аналог на D2(кстати в планах разрабов — д3 с аст, чтобы это не значило):
import std.stdio;

void main()
{
    auto arr = new int[1000_000];
    foreach (i, _; arr)
    {
        arr[i] = i;
    }

    writeln(arr[10]);

    writeln("Array is ", isSort(arr) ? " sorted." : " not sorted.");
}

bool isSort(T)(T[] arr)
{
    for (auto i = 1; i < arr.length; i++)
    {
        if (arr[i - 1] > arr[i])
            return false;
    }
    return true;
}


Очевидно, код на ди в разы проще для восприятия. И вот интересная штука. C# конечно чуточку сложнее синтаксически.
Это удивительно, ведь авторы ди это сишник(Брайт) и плюсовик(Александреску).

Теперь к сути.
Дотнет философия — это компонентный подход к разработке. Но почему-то в крупном проекте продуктовом столкнулся с монолитным репозитарием где в транке все что нужно для жизни.
А ведь гораздо удобнее было бы использовать стабильные версии компонентов в виде dll.

С другой стороны взять ди — только сборщик мусора и исходники — малый размер бинаря(можно импортнуть из модуля только используемые функции).
Зиг и Раст это уже абсолютная категория.
Но стоит ли отказываться от сборщика мусора большой вопрос.

Экономия ресурсов сейчас даже актуальней чем в нулевых. Кол-во вычислений растет. А ди2 как раз проектировался на многопроцессорные вычисления.
По теме: чем все-таки DOTNET убивает(или убьет в ближайшем будущем) такие крутые штуки как java|go|zig|rust|c++?
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.