Bonjour, je découvre ZIG et j'aimerais vous faire partager mon expérience. (je suis à la retraite alors, j'ai du temps)
d'abords ce n'est pas un tutoriel au sens de développer.net, je ne sais pas si avec mon grand âge , je ne saurais pas capable de le faire en plus d'apprendre un nouveau langage.
Je ne me substitue pas au site de Zig qui évolue beaucoup en ce moment
En premier lieu, j'ai dû comprendre l'environnement de ZIG et comment il travaille.
Ouvrir un folder mkdir toto
cela va vous ouvrir juste de quoi tester (hello) un folder src et un build de basecd toto
init-exe
avec mon expérience, c'est vraiment trop court, mais à chacun de voir. (c'est le fameux hello)
Regarder comment je comprends l'architecture.
ZIG en compilant va vous ouvrir un folder zig-cache zig-out( bin et lib )
vous devez dès le début ne pas, vous contentez de la ligne de production d'un binaire tel que l'on fait en C/C++
Engagez-vous à comprendre le builld, il deviendra très utile rapidement. (en regardant l'exemple cela paraitra évident)
il faut le voir comme CARGO de RUST d'ailleurs ZIG s'inspire de RUST et C++ tout en faisant autre chose.
Pourquoi j'ai dénommé buildTcursed.zig et le source Tcursed.zig c'est que je travaille avec VSCODE
les paramètres combinés avec <compile.sh> me permet d'exécuter des ordres simples et de donner à manger à BUILD qui prend en charge la manière de compiler.
Je vous fournis l'environnement de base, testez-le, il est simple, mais efficace.
Bien-sûr, je donnerai mon ressenti sur le langage ZIG-LANG lorsque j'aurai fini le projet. (Je vais noter au fur et à mesure sur un word les problèmes et solutions et compréhension)
Pour le moment, les pages en français arrivent sur le site de ZIG. La version 1.0 est en validation dernier test.
Quelques idées :
Lorsque l'on fouille un peu dans les liens fournis par la communauté, on s'aperçoit que l'on peut aller très en profondeur ou utiliser des logiciels validés et sur exemple wxwidget gtk sqlite postgresql etc. Juste en déclarant leur entête et les lier avec les lib correspondantes.
Personnellement, j'ai besoin pour ressentir le langage de m'investir, d'où le projet sur un terminal, je ne peux malheureusement pas vous en dire plus, mais par contre que c'est une philosophie et elle implique de repenser mes habitudes et me force à être plus responsable du code si connu C/C++, la notion @import ont comportement comment en tiret partit, voir à concevoir un module uniquement pour les déclarations de variable commune un peu comme un répertoire et des tables, vue SQL. Je sais qu'il y a une barrière à sauter l'utilisation de <vector> mais je n'en suis pas encore là.
Ce n'est pas mon premier projet sur thème terminal donc je peux me concentrer sur le langage plus facilement.
Outre la grammaire assez simple , lorsqu'on étudie une langue, c'est le passage obligatoire, on a un compilateur qui non seulement détecte les erreurs (mdrrr) mais aussi fait la chasse avec une référence croisée, je peux vous dire que ça évite des erreurs.
Quelques explications :
Le folder deps est l'endroit où vous allez mettre vos dépôts, par ex: curse dépôt interne, mais vous pourriez avoir des modules qui viennent de l'extérieur sqlite( comprendrait les modules de gestion de sqlite) mise à disposition.
Pourquoi j'ai gardé le makefile alors que zig c'est très bien compiler le c/c++ réponse, je n'ai pas eu le temps de m'y pencher et ce n'est pas le but pour le moment.
src_c et zrc_zig permet de ne pas tout mélanger et le build sait très bien gérer.
Pour plus de commodité, j'ai replacé les binaires dans le folder principal, c'est plus facile pour apprendre.
En souhaitant ne pas avoir été trop ennuyant, mais vous avoir ouvert une porte, je vous dis @bientôt.
----------------------------------------------------------------------------------------------------------------------------
Installer ZIG sur votre système avec le manager de logiciel
installer le serveur LSP de ZIG facilite le développement implicite lors de gros développement
https://github.com/zigtools/zls
ouvre un folder zls et installe le binaireLSP pour zig-langmkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/rele...4-linux.tar.xz | tar -xJ --strip-components=1 -C .
extension dans VSCODE:
installer l’extension de coloration intelligent pour zig
vscode-zig
https://open-vsx.org/extension/tiehuis/zig
https://marketplace.visualstudio.com...ame.zls-vscode
Zig Langage Server
vous devez impérativement mettre dans :
zls:Zig_exe-path le chemin complet avec le binaire de zls
il va inclure le zls (binaire) et mettre en route le serveur zig
vscode-task-manager
https://open-vsx.org/extension/cnshe...e-task-manager
pour paramétrer des commandes bash ou shell
-------------------------------------------------------------------------------------
Architecture de projet Zig
pour simplifier la vie:
folder ZIG-Projet ---> exemple:
folder->Zterm // folder projet
buildTcursed.zig // le cargo de zig
folder-> deps
-----------floder->curse:
...........................module-->curse.zig // traitement de base du terminal
...........................module-->dds.zig // pot commun de définition pour différent module ou fonction
...........................module-->forms.zig // label textfield menu grid button panel etc.
folder->src_c
folder->src_zig
..............Tcursed.zig // test cursed
folder->src-out ( folder-> bin folder-> lib )
folder->zig-cache // celui-ci peut ce trouver dans aussi dans le folder curse lorsque vous faite des tests ou compiles
file->makefile // pour compiler les fichiers c/c++ ex: un terminal avec libvte
Différentes fonctions dans .vscode
clearcache.sh --> pour zig
clearVscCodium.sh
compile.sh // ZIG compile de différente façon et déplace le binaire dans le folder-Projet
compileCPP.sh // compile source C/C++
compilelib.sh // ZIG complie lib
task.json // commande pour les *.sh ex:
zig_DEBUG // debug
zig_FAST // optimisé et sécurisé
zig_PROD // optimisé maximum ( option smal zig ) quand tout est testé
ZIG_TEST // permet d'utiliser l'option test de zig
z-terminal // ouvre un terminal dans votre projet
a-GTKVTE // appel le programme Term avec comme argument un programme ex:./Term ./Tcursed
j'ai laissé les outils glade et grep cela peut être utile pour vous.
Un exemple :https://github.com/AS400JPLPC/zig_TermCurs
Le projet consiste à gérer un terminal curse, fournir une bibliothèque forms et un designer qui générera du code prêt à l'emploi
Partager