Wpis z mikrobloga

@Hauleth: Jak najbardziej następca C, nikt o zdowych zmysłach nie wybrałby w 2021 C do świeżego projektu, chyba że koniecznie musi kompilować pod jakąś egzotyczną architekturę
Rozumiem wymyślać język programowania który adresuje jakieś realne potrzeby jak Rust. Idea szlachetna. Może jak zyska na popularności to sam się poduczę. Obecnie odpycha mnie dziwność składni. Np.: po co wymyślać koło od nowa i zmieniać sposób deklaracji funkcji? Co jest nie tak z (Wzięte z wikipedii)

TYP_ZWRACANY rot13(TYP_ARGUMENTU str)
że trzeba to zmieniać na:

fn rot13(string: TYP_ARGUMENTU) -> TYP_ZWRACANY
Albo deklaracja jakiejś zmiennej let mut bytes: Vec = string.into();
Co jest
@BeginEnd: Taka składnia lepiej współgra z inferencją typów, bo często typ można całkowicie pominąć. Poza tym uważam ją za czytelniejszą, ale to tylko moja opinia.

Podobną składnię ma m.in. Kotlin, Swift, TypeScript, Python, więc nie jest to jakiś wymysł Rusta. Już w Pascalu typ zmiennej lądował po jej nazwie.
Taka składnia lepiej współgra z inferencją typów, bo często typ można całkowicie pominąć.

@DK13: No, ale to kompilatory ma ułatwiać, życie programiście, a nie programista naginać się do kompilatora.

Poza tym uważam ją za czytelniejszą, ale to tylko moja opinia.

Pewnie ilu programistów tyle opinii. Ja akurat uważam to za większą lub mniejszą bzdurę.

Podobną składnię ma m.in. Kotlin, Swift, TypeScript, Python, więc nie jest to jakiś wymysł Rusta. Już w
Trochę offtop, ale mam takie moje prywatne marznie co by kiedyś wymyślili wspólne ABI do języków i robiąc jeden projekt czy nawet w ramach jednej jednostki translacji mógłbym pisać jednocześnie w kilku językach. To byłaby petarda jakbym miał jedną funkcję w C, drugą w C++ a trzecią np w Pythonie albo LUA i mogły one wołać się beż żadnych dodatkowych boilerplaitów.


@BeginEnd: jest przecież GrallVM. Na poziomie ABI takim lingua franca
No, ale to kompilatory ma ułatwiać, życie programiście, a nie programista naginać się do kompilatora.


@BeginEnd: trochę tak, trochę nie. Jak coś jest ciężkiego do przeparsowania przez kompilator to jest duża szansa, że tak samo będzie dla człowieka. Jak widzę a*b to nie wiem, czy to b pointer do typu a czy a razy b. Albo czy int a() to pusta zmienna typu a czy funkcja bez nazwy zwracająca inta
Innym podejściem jest używanie wspólnego bajtkodu np

...

Np. firefox kompiluje się tak, że kod z C++ i Rusta jest kompilowany razem w trybie LTO


@Saly To jest już coś jakiś początek, ale dalej trochę daleka droga. Chodzi o to, że dalej kupę effortu należy włożyć żeby całość poskładać, aby działało. Tutaj najbliżej tego o co mi chodzi ma LUA. Wystarczy podać deklarację funkcji, pobrać jej handler i można już z LUA
@qtax: Albo potrzebuje stabilnego ABI, albo wspierać dobrze platformy nie wspierane dobrze przez Rusta, albo potrzebuje zaimplementować FFI, albo API biblioteki niekoniecznie dobrze gra z założeniami Rusta (np. Wayland), albo potrzebuje wstawek ASM, etc. Jest całe mnóstwo powodów by wybrać C w dzisiejszych czasach. To C++ musi umrzeć, bo to on nie ma sensu w nowych projektach przy Ruscie.
Albo deklaracja jakiejś zmiennej let mut bytes: Vec = string.into();

Co jest nie tak w składni Vec bytes = string.into()


@BeginEnd: W Vec bytes = ... nie ma informacji, że ta zmienna może zmieniać wartość w czasie swojego życia. Const by default to wspaniałą idea, a pomysł, że trzeba dopisać kilka znaczków, żeby się consta pozbyć, jest genialny w swojej prostocie - dzięki temu programiści mniej chętnie używają "mutowalnych" zmiennych i