Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: oss 10. 11. 2022, 07:55:10
-
Je podla vas Zig jazyk buducnosti?
Co si o nom myslite?
Vyskusali ste ho?
za mna solidny nastupca C-ecka, ktory sa snazi riesit jeho problemy bez velkej magie, takze ma programator naozaj kontrolu nad tym co robi.
-
v rychlosti na to koukam, zajimave mi pripada:
- aby pointer nebyl null, tak je pouzit optional se zajimavou syntaxi ?*u8
- navratovy union error{Oops}!void je taky zajimava syntaxe
- syntaxe dereference ptr.*, taky zajimave misto ceckoveho *ptr
takze jiste zajimave, ale uz jsem si navykl na go, ktere prinasi vice novinek nez zig oproti c.
-
Zig se drží při zemi, nabízí skvělý tooling pro integraci do stávajících C projektů. Má pracovitou komunitu a nebojí se Ioxototha vládnoucího ukazateli. Myslím, že dobrý! Jinak budocunost možná v doméně low-level. Ale budoucnost programování jako, že by přinášel nové paradigma, otvíral oči, převracel mysl, to ne! To jsem léta neviděl a pokud ano, bylo to z psychedelických 70. let, jen se na to zapomnělo.
-
Pokud bych měl na výběr mezi Zigem a C, šel bych do Zigu. Pokud bych mohl použít Rust nebo jiný vyšší jazyk, použil bych ho namísto Zigu. Zig je, jak se zdá, dost dobrý kroskompilátor, v tomto ohledu budoucnost má. Jinak je to otázka, z vyšších jazyků IMO moc programátorů ujídat nebude a uživatelé C jsou velká neznámá. Rád bych věřil, že přejdou.
-
Pokud bych měl na výběr mezi Zigem a C, šel bych do Zigu. Pokud bych mohl použít Rust nebo jiný vyšší jazyk, použil bych ho namísto Zigu. Zig je, jak se zdá, dost dobrý kroskompilátor, v tomto ohledu budoucnost má. Jinak je to otázka, z vyšších jazyků IMO moc programátorů ujídat nebude a uživatelé C jsou velká neznámá. Rád bych věřil, že přejdou.
Pokud plati (a v oficialni dokumentaci se to blbe hleda), ze podporovane platformy jsou x86-64, ARM, MIPS, IA-32, WebAssembly, RISC-V a SPARC, tak to spousta ceckaru, co delaji na DSP, mikroradicich (ne Cortex M0/M1) asi nebude moci prejit. Cecko ma spoustu nesvaru, ale je rozlezly vsude, to je jedna z vyhod (ani Rust se nechyta, kupodivu, maji tam z mikroradicu jen MSP-430, jinak je minimum 32bitove zelezo).
-
cecko mmnoho nesvaru, nebo to jsou jen nesvary lidi co to pouzivaji?
a rust ty nesvary ohlida, ale zaroven, nezblbnou ti lidi o to vic, ze uz to nemusi kontrolovat?
-
a rust ty nesvary ohlida, ale zaroven, nezblbnou ti lidi o to vic, ze uz to nemusi kontrolovat?
Potřebujeme najít skvělé programátory, kteří dělají málo chyb a jsou drazí. Chybovost kódu 20%.
nebo
Ten jazyk umí použít i průměrný a levnější programátor, chyby odchytí kompilátor. Chybovost kódu 0.2%
Vyber si.
-
cecko mmnoho nesvaru, nebo to jsou jen nesvary lidi co to pouzivaji?
a rust ty nesvary ohlida, ale zaroven, nezblbnou ti lidi o to vic, ze uz to nemusi kontrolovat?
Vzhledem k tomu, že spousta nepříjemných chyb se nachází v software, který nepíšou podprůměrní programátoři (kernel, OpenSSL atd.), bral bych lidská selhání jako nevyhnutelnost. Rust (ale podle mě i Zig) obsahuje určitou bariéru (nenaučí se ho úplně každý za pár dní), který naopak ty nejhorší kusy odfiltruje.
-
c
c++
zig ... c+=0.5
golang ... c*= 10
rust ... (c++)*=20
-
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
-
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
Jestliže Ti nevadí C#, nevidím důvod pokukovat po Zigu. Ten přece míří úplně jinam.
-
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
Rust urcite neni Go killer a Go neni Rust killer. Ty niky obou jazyku se dost lisi, stejne jako pozadavky kladene na vyvojare a na kvalitu vysledneho kodu (a to je mnoho metrik, ne jedna). Asi jeste dlouho budou koexistovat vedle sebe. Asi nema moc vyznamu se na ne divat jako na protivniky.
-
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
Jestliže Ti nevadí C#, nevidím důvod pokukovat po Zigu. Ten přece míří úplně jinam.
Kvoli mikrokontrolerom (tam ma aj Rust dost problemy a je to ohybak na rovnak) a nativnym DLL, tie obcas tiez musism robit.
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
Rust urcite neni Go killer a Go neni Rust killer. Ty niky obou jazyku se dost lisi, stejne jako pozadavky kladene na vyvojare a na kvalitu vysledneho kodu (a to je mnoho metrik, ne jedna). Asi jeste dlouho budou koexistovat vedle sebe. Asi nema moc vyznamu se na ne divat jako na protivniky.
Chapem, ale skor som to myslel tak, ze pre mna mal byt Rust Go killer. Na Go mi vadi jazyk, runtime a (nechcem nikoho utrazit) ale jeho pribrzdenost/zaostalost. A viac menej som mal pocit, ze Rust vsteky problemy co som mal s Go ma dobre vyriesne od zaciatku. No na Ruste mi zacali vadit ine veci. myslel som si, ze to bude to prave na tvorbu high-perfomace servicov, no vyzera, ze pre mna nie.
-
Rust urcite neni Go killer a Go neni Rust killer. Ty niky obou jazyku se dost lisi, stejne jako pozadavky kladene na vyvojare a na kvalitu vysledneho kodu (a to je mnoho metrik, ne jedna). Asi jeste dlouho budou koexistovat vedle sebe. Asi nema moc vyznamu se na ne divat jako na protivniky.
Chapem, ale skor som to myslel tak, ze pre mna mal byt Rust Go killer. Na Go mi vadi jazyk, runtime a (nechcem nikoho utrazit) ale jeho pribrzdenost/zaostalost. A viac menej som mal pocit, ze Rust vsteky problemy co som mal s Go ma dobre vyriesne od zaciatku. No na Ruste mi zacali vadit ine veci. myslel som si, ze to bude to prave na tvorbu high-perfomace servicov, no vyzera, ze pre mna nie.
Jj urcite pro jednotlivce to samozrejme plati (a taky si to myslim). Akorat treba Go u nas proslo, protoze je relativne snadny na to sehnat lidi, co jsou to ochotni se naucit tak, aby dokazali vyprodukovat produkcni (ehm ehm ) kod :)
Zajimavy je, ze vsechny veci, ktere jsou na Go spatne (a to mnohdy zbytecne), tak ma Rust spravne...
-
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.
Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).
C#/F# combo sú momentálne moje top jazyky. (C# v posledných rokoch drasticky vylepšil svoju syntax, F# bolo
famózne od začiatku.) Napriek tomu, že syntaxou a svojimi možnosťami ďaleko prekračujú Go, Go je v niektorých
prípadoch pre mňa vhodnejší jazyk.
Go je ideálny jazyk pre command linu a pre tých, čo programujú network. C# doteraz nemá cmd parser, chystá sa
System.CommandLine, zatiaľ to do 7.0 nestihli dať. Go má flags a výborný package Cobra. Go je taký hackerský jazyk.
Trebárs pre porovnanie chcete si pingovať s ICMP. C# má Ping classu s určitími limitujúcimi možnosťami, Go má
celú sadu funkcií pre ICMP: https://pkg.go.dev/golang.org/x/net/icmp.
Go umožňuje ísť oveľa viac do hĺbky a pohrať sa s úplnými detailami. V tomto nemá konkurenciu.
Je úplne v pohode naprogramovať si cmd tool v C#, avšak ak ten tool plánujem pre tisícky ľudí, tak je Go vhodnejšie
pretože výsledná binárka je zlomkom veľkosti .NET binárky.
Go má svoje pevné miesto medzi programovacími jazykmi. A syntaktické možnosti jazyka nie sú všetko. Zásadne sú
tiež knižnice a tooling.
-
Go umožňuje ísť oveľa viac do hĺbky a pohrať sa s úplnými detailami. V tomto nemá konkurenciu.
Je úplne v pohode naprogramovať si cmd tool v C#, avšak ak ten tool plánujem pre tisícky ľudí, tak je Go vhodnejšie
pretože výsledná binárka je zlomkom veľkosti .NET binárky.
Go má svoje pevné miesto medzi programovacími jazykmi. A syntaktické možnosti jazyka nie sú všetko. Zásadne sú
tiež knižnice a tooling.
j, jako příklad vývoje dozadu... jediný jazyk který řešit problémy které byly vyřešeny před +30 lety a ještě blbe..
jediný důvod proc Go existuje je Google. A to ze bylo rychlejší než python a ruby. To ze ho původně google pozoroval proti C byla největší ptákovina dějin
-
Rust urcite neni Go killer a Go neni Rust killer. Ty niky obou jazyku se dost lisi [...]. Asi jeste dlouho budou koexistovat vedle sebe. Asi nema moc vyznamu se na ne divat jako na protivniky.
Přesně, moc si do zelí nelezou.
-
jediný důvod proc Go existuje je Google. A to ze bylo rychlejší než python a ruby.
Spíš to, že v něm jdou dělat standalone binárky, který nemají stovky MB nebo hromadu požadavků na věci, co musí mít uživatel nainstalovaný. To je věc, která do té doby víceméně neexistovala (mimo staticky slinkovaný C/C++), a přitom je to čas od času potřeba na různý tooly. Jinak teda Go mi jako jazyk přijde příšerný a nepoužívám ho, ale tohle byla díra na trhu, kterou úspěšně zaplnili.
-
jediný důvod proc Go existuje je Google. A to ze bylo rychlejší než python a ruby.
Spíš to, že v něm jdou dělat standalone binárky, který nemají stovky MB nebo hromadu požadavků na věci, co musí mít uživatel nainstalovaný.
A taky snadná kroskompilace.
-
Za mě jednoznačně ano. Ne jako BLANK-killer (to je IMO absurdní koncept patřící spíš někam do marketingu než do odborné diskuse), ale jako elegantní a nenásilný doplněk do toolkitu systémového nebo embedded vývojáře. Zig umí přímo importovat Cčkové knihovny (bez wrapperů), pracuje se s nimi snadněji než v C, stejně tak umí C-API knihovny vytvářet, včetně automatického vygenerování headeru. Jeho build system umí triviálně tyto hybridní projekty (nebo i čistě C projekty) cross-kompilovat z libovolné platformy na libovolnou jinou, a to všechno pěkně rychle. Už jen ta elegance, se kterou pomocí tagged enums & packed structs (zero-cost) abstrahuje hardwarové registry, je poesie.
Má LLVM a nově i vlastní backend, takže umí kompilovat pro všechen hardware, na který LLVM cílí. Pokud máte na stole nějakou exotiku, tak umí generovat C kód, a ten potom můžete zkompilovat proprietárním kompilátorem (vyzkoušeno na jednom otřesnějším 8051 klonu). Binárky jsou maličké. WASM binárky jsou maličké a rychlé, je to jeden z důvodů proč je na demoscéně a wasm Zig najednou tak populární.
Podpora v IDE je už teď slušná (přes LSP), vývoj je finančně stabilní díky Zig Foundation a full-time vývojářům, komunita je přátelská. Je to malý jazyk, dá se naučit za víkend tak, že v něm je člověk už produktivní.
-
(teď si to po sobě čtu, zní to jako sales pitch :D)
Má samozřejmě i (dočasně) nevýhody: je to mladé, rychle se to hýbe, a při nějaké náročnější práci se rychle seznámíte s jejich Github Issues, protože na bugy kompilátoru nebo standardní knihovny definitivně narazíte. Real-world projekty které jedou na Zigu cílí na starší, stabilní verze, a při upgradu je čeká někdy trošku portování.
Jazyk je "opinionated", někdy je to IMO na škodu, např. prohlášení že odsazovat se bude čtyřmi mezerami a všechno ostatní je hard syntax error. Nebo že nepoužitá proměnná je hard error.
-
jediný důvod proc Go existuje je Google. A to ze bylo rychlejší než python a ruby.
Spíš to, že v něm jdou dělat standalone binárky, který nemají stovky MB nebo hromadu požadavků na věci, co musí mít uživatel nainstalovaný. To je věc, která do té doby víceméně neexistovala (mimo staticky slinkovaný C/C++), a přitom je to čas od času potřeba na různý tooly. Jinak teda Go mi jako jazyk přijde příšerný a nepoužívám ho, ale tohle byla díra na trhu, kterou úspěšně zaplnili.
to je ve co umí každý jazyk, jen Go nedokaze nic jiného ... ono dynamické linkování vzniklo proto aby se nemusely stale stejně věci načítat zvláštní do paměti dokola ale aby program je dokázal znovu použití...
statické vinařky mají své použití ale samy o sobe jsou ukázka neschopnosti pro softwarovém inženýrství ..
-
statické vinařky mají své použití
No to bezpochyby ;D
-
to je ve co umí každý jazyk
Dřív to asi platilo, ale z těch "rozšířených" to dneska neumí skoro žádnej: Java ne (potřebuje JVM), C# asi ne (moc ho neznám, ale taky asi potřebuje nějakou VM), Python, JS, Ruby, PHP ne (všechno skriptovaný bazmeky)... vlastně mě žádnej garbage-collected jazyk kromě Go nenapadá.
-
Dřív to asi platilo, ale z těch "rozšířených" to dneska neumí skoro žádnej: Java ne (potřebuje JVM), C# asi ne (moc ho neznám, ale taky asi potřebuje nějakou VM), Python, JS, Ruby, PHP ne (všechno skriptovaný bazmeky)... vlastně mě žádnej garbage-collected jazyk kromě Go nenapadá.
C# je opajcnutá Java, v 90-tych rokoch boli okolo toho aj súdy, vtedy M$ robili dokonca aj J#, ale to bol príliš okatý opajc, tak J# nakoniec zarezali.
Samozrejme vývoj ide ďalej oboma smermi a dnes sa jazyky už tak nepodobajú, ale stále má C# kompiláciu do byte-kódu ako Java a aj jeho interpretáciu (ako Java).
-
Dřív to asi platilo, ale z těch "rozšířených" to dneska neumí skoro žádnej: Java ne (potřebuje JVM), C# asi ne (moc ho neznám, ale taky asi potřebuje nějakou VM), Python, JS, Ruby, PHP ne (všechno skriptovaný bazmeky)... vlastně mě žádnej garbage-collected jazyk kromě Go nenapadá.
C# je opajcnutá Java, v 90-tych rokoch boli okolo toho aj súdy, vtedy M$ robili dokonca aj J#, ale to bol príliš okatý opajc, tak J# nakoniec zarezali.
Samozrejme vývoj ide ďalej oboma smermi a dnes sa jazyky už tak nepodobajú, ale stále má C# kompiláciu do byte-kódu ako Java a aj jeho interpretáciu (ako Java).
Interně je .NET a JVM dost jine - https://stackoverflow.com/a/1625090/406691 - Teď už to nemohu najít, ale mám pocit, že alespoň z části .NET navazoval na výzkum z ETH Curych, kde ještě před Javou řešili efektivitu přenositelných aplikací. C# se pak Javě podobá (i když mně osobně to nepřijde), ale je to jazyk z 90 let, kdy všechno muselo mít objekty a všechno muselo mít garbage collector. Jinak koncept interpretace byte code, a jeho interpretace je ze 70 let - to není vynález ani Sunu a ani Microsoftu (a Microsoft měl relativně rychlou a efektivní implementaci ve Visual Basicu). .NET původně cílil na mswin desktop a síťování se řešilo víc skrze RO. Java se víc motala kolem internetu. Microsoft u .NET skoro vůbec neřešili nezávislost na platformě. .NET byl původně čistě MS záležitost. Naopak Java byla od začátku multiplatformní.
-
je to jazyk z 90 let, kdy všechno muselo mít objekty a všechno muselo mít garbage collector.
Jo to byly časy :) Dokonce vzniknul “object-oriented Prolog”. Když se šéfa (francouzské pobočky) IBM ptali, proč, odpověděl: “Our customers wanted an object-oriented Prolog, so we made an object-oriented Prolog.” Prostě protože proto :)