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
cd toto
init-exe
cela va vous ouvrir juste de quoi tester (hello) un folder src et un build de base

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

mkdir $HOME/zls && cd $HOME/zls && curl -L https://github.com/zigtools/zls/rele...4-linux.tar.xz | tar -xJ --strip-components=1 -C .
ouvre un folder zls et installe le binaireLSP pour zig-lang


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