60

./55 Oui pas mal comme exemple.

Moi l'idée de base était: plutôt que ca soit le mec de la préfecture qui dise aux étranger d'aller au bureau 123, aux renouvelleurs de carte grise au bureau 849, c'est que eux savent où aller avec Etranger.allerAuGuichet(); Conducteur.allerAuGuichet();
tout revient à déplacer le code. Intuitivement, on sent que c'est possible (cf ./1) mais ca peut aussi vite devenir le bordel sans avoir de justification au niveau conceptuel du logiciel (cf ./52).
Tout ce qui passe pas par le port 80, c'est de la triche.

61

GoldenCrystal (./59) :
et comment tu codes la fonction sqrt ?

__builtin_sqrt implémenté dans le compilateur. Je signale que c'est déjà plus ou moins le cas avec un GCC récent (sauf TIGCC où ce n'est pas encore implémenté), pour permettre de calculer les racines carrées de nombres constants en temps d'exécution.

Cela dit, je suis bien d'accord avec toi que l'idée d'Onur est absurde.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

62

./57 ./58 non sorry le tri personnalisé je vois pas trop... puisqu'en gros les expression booléennes sont interdites.

En fait, les bidouilles pour lancer des exceptions faudrait les éviter aussi (si y avait que ca comme problème), genre on fournirait de base la classe DifferentNumberPair et SameNumberPair.
Tout ce qui passe pas par le port 80, c'est de la triche.

63

Pour réduire la complexité cyclomatique d'un programme, il y a en effet le polymorphisme, et la programmation par contrat (disons qu'elle force le programmeur a coder proprement et pas mettre des ifs partout).

64

Kevin Kofler (./33) :
Pas besoin de ne pas l'utiliser, il y a aussi #define private public et #define protected public, et g++ a aussi un flag -fno-access-control. biggrin.gif
Pas très réglementaire tout ça.
Me semble qu'il est interdit de #definer des mots clefs, non ?

65

Non pas en C en tout cas (et je pense pas que ça soit le cas en C++)

tu peux tres bien faire un

#define prout define
#prout define char
#prout cacaouet return
#prout return =

define main()
{
define a;
a return 'a';
cacaouet a;
}

conseille, regarde l'IOCCC c'est interessant grin
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.

66

Attention, il y a une différence entre "qui marche" et "qui est conforme aux standards" hein ^^

67

C'est conforme au standard, vu que c'est CPP qui passe avant sur le code ^^
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.

68

Je vois pas le rapport. Le préprocesseur fait partie du standard hein. C'est pas parce que GCC a choisi de faire un binaire distinct qu'il ne fait pas partie de la compilation.

69

si tu prefere c'est valide, c'est tout.. D'ailleurs _si j'ai bonne mémoire_, l'IOCCC n'accepte que du code qui est valide et qui ne joue pas avec dse spécificitée de compilo (bug ou non)
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.

70

Il me semble bien que faire un #define sur un mot-clé ne soit pas garanti marcher, ce n'est clairement pas très propre en tout cas. hehe
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

71

Godzil> Bah y'a quand même un truc qui m'embète :
1 An identifier is an arbitrarily long sequence of letters and digits. Each universal-character-name in an identifier shall
designate a character whose encoding in ISO 10646 falls into one of the ranges specified in Annex E. Upper- and
lower-case letters are different. All characters are significant.19)

2 In addition, some identifiers are reserved for use by C++ implementations and standard libraries (17.4.3.1.2) and shall
not be used otherwise; no diagnostic is required.

2.11 Keywords [lex.key]

1 The identifiers shown in Table 3 are reserved for use as keywords (that is, they are unconditionally treated as keywords
in phase 7): [list des mots clefs du C++]
Puis, dans la section sur le fonctionnement du preprocesseur,
# define identifier replacement-list new-line
# define identifier lparen identifier-listopt ) replacement-list new-line
# define identifier lparen ... ) replacement-list new-line
# define identifier lparen identifier-list, ... ) replacement-list new-line [...]
A priori, cette grammaire ne définissant pas identifier, il s'agit de celui défini plus haut dans le document.

72

La phase de préprocessing n'est pas la phase 7.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

73

Certes, mais ça n'a aucun rapport avec ce qui est écrit ^^
Il n'est pas écrit que ces mots sont réservés *en phase 7*. Il est écrit qu'ils sont réservés *parce que* la phase 7 en fait un usage spécifique.

74

Il est écrit que la phase 7 réserve ces identifiants inconditionnellement, il n'est dit nulle part que les identifiants sont réservés dans les autres phases (mais pas le contraire non plus, pas très clair comme spécification sad).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

75

Je trouve pourtant la formulation claire :

=> Ces mots sont réservés.
=> La spécification précise ensuite à quel usage (pour utilisation en tant que mots clé).

L'information principale c'est que ces mots sont réservés. La réservation est indépendante de la phase, elle est définie dans le paragraphe précédent, comme des identifiants qui "shall not be used otherwise".

76

C'est la vraie spécification du C ce que tu cites spectras ? un identifiant est n'importe quelle séquence de lettres et de chiffres, donc un nombre est un identifiant what
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

77

C'est celle du C++, la dernière version draft parce que la version définitive c'est toujours très chiant de mettre la main dessus. Et oui, un nombre est un identifiant. Il me semble qu'ils définissent plus tard comme un genre spécial d'identifiant. Je remets le nez sur le document lundi ^^

78

Tout ce qui passe pas par le port 80, c'est de la triche.

79

J'ai raté ce topic à l'époque ; oui les conditions et les boucles c'est pas du "joli OO". Comme beaucoup d'autres choses, on les utilise encore parce que même si c'est pas aussi strict que de faire du polymorphisme et des fonctions récursives partout, c'est à la fois plus concis à écrire et plus facile à optimiser pour un compilateur. Il y a pas mal de langages qui essaient d'imposer un modèle orienté objet aussi pur que possible, quitte à supprimer des choses simples pour les remplacer par des constructions horriblement compliquées et pas plus efficaces (souvent le contraire d'ailleurs). En poussant à l'extrême, on peut arriver à exprimer un langage avec un nombre ridiculement faible de primitives (dont les conditions et les boucles ne feraient bien sûr pas partie) et dans lequel tout peut se recréer en les combinant les une aux autres. Mais dans quel but, uniquement artistique ? J'ai beau être assez sensible à cet objectif en général, il faut quand même se rendre compte du moment où ça devient absurde et contre-productif. À mon sens c'est le cas ici.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

80

Ouais c'est pas que artistique je pense y a un réel interet. Les gens citent erlang par exemple, qui a une sorte de if qui n'en est pas vraiment un. Ca conduit à d'autres pratiques de programmation comme l'actor-model. Je suis encore assez loin de ce monde et assez intrigué à vrai dire.
Tout ce qui passe pas par le port 80, c'est de la triche.

81

Oh, on peut pousser le concept encore plus loin : http://en.wikipedia.org/wiki/One_instruction_set_computer

Mais l'intégrisme en programmation, ça donne rarement de bons résultats, et il y a pas mal d'exemples avec l'OO justement grin


avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

82

./79> Tu continues à y être sensible donc ? Perso ce serait plutôt le contraire alors. C'est non sans nostalgie que ces théories me replongent dans le temps où j'étais à l'école, mais depuis je bosse dans une équipe où on est une vingtaine de dévs et la réflexion a passablement changé. grin
En particulier l'OO à tout prix c'est fini. Désormais j'ai tendance à dire que la complexité du code (~lignes de code + nombre de classes) devrait être proportionnelle à l'importance "business" du morceau de code. S'il s'agit du coeur du système ou que d'une façon générale on ne peut que trop insister sur l'importance de maîtriser la partie en question avant d'y apporter toute modification, alors on peut y aller franchement sur les classes, la maintenabilité et tout. Si par contre il s'agit d'une petite partie qui sera peu revisitée, qui ne devrait pas l'être ou qui n'est pas mature, alors mieux vaut parfois écrire un code naïf. C'est (peut-être) moins beau (car la beauté d'un code c'est aussi la fierté qu'on peut en tirer wink), moins maintenable mais au moins n'importe qui peut le comprendre, saisir les effets de bord voire le réécrire en partie s'il ne convient plus au besoin changé.
C'est marrant parce qu'académiquement je dois donc être devenu un moins bon programmeur, pourtant je trouve le résultat bien meilleur. Mais en tous cas c'est pour cette raison que je ne choisirais pas ton langage Onur grin
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

83

C'est comme dans tout : il y a ceux qui font de la théorie, et ceux qui font de la pratique. La théorie est utile, mais en attendant, c'est bien ceux qui font de la pratique qui écrivent les softs qui sortent ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

84

Brunni (./82) :
./79 > Tu continues à y être sensible donc ?

Oui, même si davantage pour du code perso que pour le boulot. En revanche dans les principaux critères qui me font considérer un code "beau" il y a la concision, du coup je ne suis pas un grand fan des extrémismes POO ou autres comme celui visé par onur. Et puis bon c'est un peu sans fin comme objectif, on peut toujours ajouter une couche supplémentaire qui généralise encore un peu plus un bout de code, sentir quel est le bon endroit pour s'arrêter fait partie pour moi de l'essentiel de l'expérience qu'on acquiert progressivement.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

85

Ok. Oui pareil, la concision est un grand objectif, qu'un code éclaté sur 50 classes, même petites, est déjà assez mal parti pour remplir ^^
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

86

Zeph (./84) :
Et puis bon c'est un peu sans fin comme objectif, on peut toujours ajouter une couche supplémentaire qui généralise encore un peu plus un bout de code, sentir quel est le bon endroit pour s'arrêter fait partie pour moi de l'essentiel de l'expérience qu'on acquiert progressivement.

C'est pour ça que je suis nul en POO d'ailleurs, j'ai tendance à multiplier les couches grin

87

(normal pour quelqu'un qui a eu de nombreux enfants en bas âge cheeky)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

88

(ttk grin)

89

./87 > #pointvince#

./84 > au taf, ces derniers temps, je repasse sur le code d'un extrêmiste POO, y'a des factorys pour juste appliquer une équation de calcul d'impot... mais en contrepartie, il n'a fait aucune différence dans son code entre "réductions" et "déductions" ce qui fait que son code est ptet théoriquement propre, dans les faits ça reste de la merde bonne à être réécrite...
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

90

vince (./89) :
il n'a fait aucune différence dans son code entre "réductions" et "déductions"

oooouch grin