30

Godzil (./28) :
C'est un equivalent de #ifdef X / #else / #endif et je ne suis pas vraiment sur de comment faire autrement, mais si tu as des idees je prends. Je ne suis pas fan de la compilation conditionelle, mais il y a des cas ou ca reste utile.
Je pense qu'une syntaxe de type attribut ferait le boulot. Quelque chose du genre : conditional(DEBUG_MODE) void log_message(string msg)
Godzil (./28) :
int8 tableau[42] ? Ou l'acces a la variable tableau[x] = 0
Je n'ai pas de soucis avec la syntaxe d'indexation, je parlais de la déclaration. La fait d'etre un tableau est une propriété du type pas de la variable elle même.
La plupart des langage qui ont repris la syntaxe du C++ ont quand même corrigé ce point.

- En Java ou C#, on à : byte[] tableau = new byte[42];
- En Rust où on a des tableaux statiques on a : let tableau : [u8; 42];

Godzil (./28) :
A quoi penses tu? Si tu pense a la syntax de GCC, c'est GCC qui est tordu. Avoir une visibilite sur les variables et autre fonction est deja pas mal je pense.
Je suis pas un expert de l'ASM et encore moins de son intégration avec d'autre langage. Mais si GCC s'est embeté avec un syntaxe si lourde, c'est pas par plaisir. Les compilateur avancés ont besoin d'avoir des informations sur les effets de bord. J'ai suivi de loin l'introduction de la fonctionnalité en Rust et ça a été compliqué. Peut être que ton langage est suffisamment simple pour que ça ne pose pas de soucis, mais i tu veux utiliser LLVM, je pense que tu vas avoir besoin de ce genre d'info.

Godzil (./28) :A vrai dire c'est plus un moins un erreur sur le commentaire.
Break est implicite, mais ca reste une bonne chose que de l’écrire.
Tout l’intérêt du break dans le switch et d'éviter le passage d'une case à l'autre. Si ça n'est pas possible, c'est juste trompeur. Si tu tiens a avoir une démarcation claire du début et de la fin d'un case, des crochets me paraissent plus adaptés que ":" et "break" qui sont un héritage du goto.

Godzil (./28) :
Quand aux (), c'est un des points de python que je n'aime pas, et encore une fois c'est inspiré du C, et c'est la logique de l'utiliser en C, ca ne *me* pose pas de probleme, c'est une question de gout comme souvent j'imagine, mais perso ca permet de marquer explicitement la valeur a tester
Je remontais juste ça, car je sais qu'en Rust il les avaient laissé au début quand ils ont rendu les blocs obligatoires, avant de se rendre compte qu'il ne servaient plus a rien et de les enlever sans regret.
Mais si tu préfère comme ça, pas de soucis. Il y a beaucoup d'autre chose que je verrais différemment par préférence personnelle et que je n'ai pas remonté car je sais que c'est juste des problèmes de ressenti.
avatar

31

quel est le soucis avec le préprocesseur ? c'est tellement utile et permet de la propreté

même pas des defines ?

et des defines locaux genre les templates du cpp ?

> Tout l’intérêt du break dans le switch et d'éviter le passage d'une case à l'autre.
effectivement, un case peut très bien continuer dans celui derrière :- ) c'est ultra pawa le C
et la le mec il le pécho par le bras et il lui dit '

32

robinHood (./31) :
quel est le soucis avec le préprocesseur ? c'est tellement utile et permet de la propreté
C'est utile à défaut de mieux, mais c'est du bricolage.pas loin du remplacement de texte brut, ce qui le rend complexe a bien utiliser. C'est quand même mieux de pouvoir s'appuyer autant que possible sur des fonctionnalités du langage dédiées (constantes, inlining, génériques,...).
Ceci dit c'est vrai que ça peut toujours rester utile surtout que C-Zero n'a pas l'air de vouloir gérer de types génériques.
Même Rust (qui a pourtant des types génériques) a un système de macro, cependant il est plus avancé que celui du C, avec une gestion plus fine des elements et un système d'hygiène, ce qui évite la plupart des problèmes du préprocesseur C. Par contre ça implique un système qui me semble un peu trop complexe au vu des objectif du langage de Godzil.

robinHood (./31) :
effectivement, un case peut très bien continuer dans celui derrière :- ) c'est ultra pawa le C
Si ta définition de pawa, c'est sujet aux erreurs de programmation évitables, alors oui le C est très pawa.
Avec du pattern matching, on peut avoir les même fonctionnalités que C, voire plus, avec un code beaucoup plus clair et sans risque d'erreur.
avatar

33

quel risque d'erreur ? tu as déjà oublié un break et t'en serais rendu compte trois mois plus tard ?

c'est comme ça que ça fonctionne c'est tout, il faut arrêter de voir tout voir comme un problème éventuel lol

ça frôle l'obsession, à te lire personne ne sais marcher et tout le monde doit donc utiliser un youpala
et la le mec il le pécho par le bras et il lui dit '

34

robinHood (./33) :
quel risque d'erreur ? tu as déjà oublié un break et t'en serais rendu compte trois mois plus tard ?
En effet, ça m'est arrivé de l'oublier et je m'en suis toujours rendu compte assez vite. Mais j'ai déjà du reprendre du code de quelqu'un à qui ça avait échappé car c'était dans un cas particulier rare.
Après, tout n'est pas forcément grave, mais quand on a une méthode qui permet d'éviter l'erreur et de faire plus clair, autant la prendre.
avatar

35

on peut pourquoi pas ajouter dans la boucle des outils d'analyse de code avec des warnings levés en cas de suspicion du style, ou utiliser l'ia pour analyser le code (et les débordement mémoire ça devrait être efficace dessus) mais bannir le C c'est un peu vener grin
et la le mec il le pécho par le bras et il lui dit '

36

Pour la énième fois on ne parle pas de bannir le C, mais de ne pas reproduire bêtement ses défauts quand on fait un nouveau langage.
avatar

37

disons que quant tu as déjà dit deux fois qu'il n'est pas urgent de tout réécrire je comprend qu'il faut donc à terme tout réécrire, soit fuck off le C grin

ensuite effectivement éviter des erreurs classiques à la con en faisant un nouveau langage, oui clairement, mais la franchement concernant le C si tu me demande ben je n'en vois pas véritablement :/ et j'ai touché mes premières lignes de C il y a plus de 25 ans ...

(après une adresse ne me fait pas peur, de l'alignement c'est la base, inverser les bitfields ça pète les couilles, des defines locaux ça serait vraiment top etc etc rien de ouf ou non classique, et rien ne justifiant de changer de langage)
et la le mec il le pécho par le bras et il lui dit '

38

J''ai pris le cas extrême comme exemple, mais bien sûr qu'il n'y a pas un complot anti C comme on en a l'impression quand on te lis. Et si je je me suis amusé à la répéter mot pour mot c’était juste pour noter que tu n'en avais absolument pas tenu compte. Si tu lis vraiment de mes messages, c’est plutôt clair que je ne dit pas que tout le C doit être remplacé.
Certes, je penses qu’un autre langage que le C serait souhaitable dans la plupart des situations, mais le gain ne vaut souvent pas le coût d’une réécriture. Et surtout, chacun reste libre d’utiliser le langage qu’il veut.

Vu son omniprésence le C n’est pas près de disparaître, le COBOL est encore bien présent dans ses domaine historique alors que ça fait plus de 30 qu’il est passé de mode. Ne t’inquiète pas tu pourras faire toute ta carrière avec si tu le veux, et il en restera certainement après ta mort.
avatar

39

on va dire que l'on répond tous de manière variable grin mais dès la première fois j'ai lus "il n'est pas urgent de tout réécrire donc je comprend qu'il faut donc à terme tout réécrire"

c'est aussi qu'un code mainte fois éprouvé dois rentrer dans ta whitelist ?

mais sérieusement Rust produit un truc genre vraiment éprouvable sans te poser de questions ? c'est assez louche pour s'en poser non ?

désolé godzil d’accaparer ton sujet, après d'un coté remettre en question lui ou un autre c'est déjà l'éprouver justement
et la le mec il le pécho par le bras et il lui dit '

40

Uther a souhaité poursuivre une discussion dérivée dans un nouveau sujet. La discussion initiale a eu lieu dans le sujet topics/196681-c-zero-le-c-a-godzil/2#post-39 tandis que la discussion dérivée continue dans le sujet topics/196742-le-c-poste-il-probleme où les messages en rapport ont été copiés.
avatar

41

Alors, ça sort quand ? smile
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

42

Uther (./32) :
robinHood (./31) :
quel est le soucis avec le préprocesseur ? c'est tellement utile et permet de la propreté
C'est utile à défaut de mieux, mais c'est du bricolage.pas loin du remplacement de texte brut, ce qui le rend complexe a bien utiliser. C'est quand même mieux de pouvoir s'appuyer autant que possible sur des fonctionnalités du langage dédiées (constantes, inlining, génériques,...).
Ceci dit c'est vrai que ça peut toujours rester utile surtout que C-Zero n'a pas l'air de vouloir gérer de types génériques.
Même Rust (qui a pourtant des types génériques) a un système de macro, cependant il est plus avancé que celui du C, avec une gestion plus fine des elements et un système d'hygiène, ce qui évite la plupart des problèmes du préprocesseur C. Par contre ça implique un système qui me semble un peu trop complexe au vu des objectif du langage de Godzil.

A vrai dire une forme de macro est quelque chose qui manque pour l'instant. C'est en reflexion.

Et il y a une difference enorme entre des macros qui sont gere par le compilateur et des macro gere par un generateur externe. Le compilateur peut tres rapidement faire des verifications que cpp ne peux pas.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

43

En effet, par contre ca va te faire définir une meta syntaxe supplémentaire.
Pour un projet solo, je suppose sur ton temps libre, je te conseille de partir sur un scope réduit de fonctionalités, et de te garder ce genre de choses en bonus pour plus tard.
avatar

44

Oh c’est pas pour tout de suite, mais j’en aurais besoin pour certains projets, donc c’est sur la roadmap, mais c’est la méthode pour le faire qui est pas encore claire.

Un des points important est d’éviter la complexité (inutile) du c++ sur ce genre de choses.
C’est aussi pour ça que ce n’est pas un language objet, mais supporte le sucre syntaxique de Lua pour attacher une méthode à une structure.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.