LINUX.ORG.RU

Zen C — очередной улучшенный Си

 , zen c, , ,


0

3

https://www.zenc-lang.org
https://github.com/z-libs/Zen-C
https://github.com/z-libs/Zen-C/blob/main/translations/README_RU.md:

Современная эргономика. Никаких накладных расходов. Чистый Си.
Пишите как на высокоуровневом языке, запускайте как Си.
Zen C — это современный язык системного программирования, который компилируется в человекочитаемом GNU C/C11. Он предоставляет богатый набор возможностей, включая вывод типов, сопоставление с паттернами, генерику, трейты, async/await и ручное управление памятью с возможностями RAII, при этом поддерживая 100% совместимость с ABI Си.

Портативная сборка (APE)
Zen C можно скомпилировать как Actually Portable Executable (APE) с помощью Cosmopolitan Libc. Это создаёт один исполняемый файл (.com), работающий нативно на Linux, macOS, Windows, FreeBSD, OpenBSD и NetBSD на архитектурах x86_64 и aarch64.

https://github.com/z-libs/Zen-C/blob/main/examples/features/comptime_fib.zc:

fn main() {
    comptime {
        let N = 20;
        let fib: long[20];
        fib[0] = (long)0;
        fib[1] = (long)1;
        for let i=2; i<N; i+=1 {
            fib[i] = fib[i-1] + fib[i-2];
        }

        printf("// Generated Fibonacci Sequence\n");
        printf("let fibs: int[%d] = [", N);
        for let i=0; i<N; i+=1 {
            printf("%ld", fib[i]);
            if (i < N-1) printf(", ");
        }
        printf("];\n");
    }

    print "Compile-time generated Fibonacci sequence:\n";
    for i in 0..20 {
        print f"fib[{i}] = {fibs[i]}\n";
    }
}
★★★★★

Везде используется let вместо типов - уже неправильный «высокоуровневый С». Просто сказали бы, что язык транслируется в C как одна из фич, да убрали бы C из названия.

Bfgeshka ★★★★★
()

Си нужно заменить. Но если бы это было возможно, это уже давно было бы сделано. К сожалению, это невозможно.

kaldeon
()

Cosmopolitan Libc makes C/C++ a build-once run-anywhere language, … runs natively on Linux + Mac + Windows + FreeBSD + OpenBSD 7.3 + NetBSD + BIOS

Интересно, у каких проектов есть такая кросплатформенность.

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

тех кто мог создать гипотезу, доказать теорему и на практике это всё подтвердить, в рамках PLM - Programming Language Model, уже очень мало и им уже не так интересно это.

etwrq ★★★★★
()
https://itssamuelrowe.github.io/samuel-rowe-resume.pdf

Вот резюме этого мальчика, который завалил своим поделием пол интернета. Работу он ищет, свалить он хочет из миллиардной Индии в какой-нибудь Майкрософт, вот и пиарит на всех площадках свой дипломный проект.

Будем обсуждать дипломы каждого ПТУшника?

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

свалить он хочет из миллиардной Индии

Как будто это что-то плохое. Ты-то откуда пишешь?

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

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

а чорт да это и есть раст. это буквально раст без борова, вместо борова у них поросёнок бегает

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

В том, что он хочет уехать нет ничего плохого. Плохо то, как он это делает. Заводить аккаунты на всех возможных платформах, мусорить во всех возможных проектах. Сейчас этим ИИ занимается… ещё его на хватало.

VIT ★★
()

Где ты Си там увидел?

firkax ★★★★★
()

printf()

print

Кто-нибудь, объясните мне, зачем нужны две реализации одного и того же функционала в новом ЯП?

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

Наверное, чтобы продемонстрировать богатство возможностей – Си или Питон стиль. :)

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

Так print без скобок пишется

Ну а в ОП как?

print "Compile-time generated Fibonacci sequence:\n";
for i in 0..20 {
     print f"fib[{i}] = {fibs[i]}\n";
}
dataman ★★★★★
() автор топика

Прекратите выкапывать стюардессу.

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

Ну и ладно, я не разбираюсь в серпентологии.

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

https://github.com/z-libs/Zen-C/blob/main/README.md#2-primitive-types:

TypeC EquivalentDescription
int, uintint32_t, uint32_t32-bit signed/unsigned integer
c_char, c_ucharchar, unsigned charC char / unsigned char (Interop)
c_short, c_ushortshort, unsigned shortC short / unsigned short (Interop)
c_int, c_uintint, unsigned intC int / unsigned int (Interop)
c_long, c_ulonglong, unsigned longC long / unsigned long (Interop)
c_long_long, c_ulong_longlong long, unsigned long longC long long / unsigned long long (Interop)
I8 .. I128 or i8 .. i128int8_t .. __int128_tSigned fixed-width integers
U8 .. U128 or u8 .. u128uint8_t .. __uint128_tUnsigned fixed-width integers
isize, usizeptrdiff_t, size_tPointer-sized integers
byteuint8_tAlias for U8
F32, F64 or f32, f64float, doubleFloating point numbers
boolbooltrue or false
charcharSingle character
stringchar*C-string (null-terminated)
U0, u0, voidvoidEmpty type
iN (for example, i256)_BitInt(N)Arbitrary bit-width signed integer (C23)
uN (for example, u42)unsigned _BitInt(N)Arbitrary bit-width unsigned integer (C23)
dataman ★★★★★
() автор топика

А чой-то он ещё хуже сей читается. Он точно улучшенный?

ya-betmen ★★★★★
()
Последнее исправление: ya-betmen (всего исправлений: 1)

Zen C – генератор сишки. Надо было назвать Gen C Ну вон Vala/ChikenSheme есть и ещё много что в Си трапсплитируется, пусть ещё будет один. Как минимум хорошо что не ещё один LLVM монстр и то ладно.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от kaldeon

Это просто никому не нужно. Си теснят сверху, оставляя ему нишу низкого уровня.

Простыми словами, модернизировать нужно не Си. А сферу его применения. В сторону сужения. И этот процесс идёт естественно. Дополнительных напряжений не требуется.

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

Там уже zig застрял и ни туда, ни сюда.

Как это? Вроде на Codeberg же убежали от «ИИ». :)

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

Там уже zig застрял и ни туда, ни сюда.

Зато их PR читать - захватывающее чтиво. То Kelley со своими странными решениями сломает что-то, то люди собирают ядро через zig cc.

error_
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.