150

GoldenCrystal (./148) :
Toute liberté que tu fourniras au développeur sera nécessairement mal utilisée par x ou y, mais je ne pense pas que ça suffise à invalider l'utilité de cette liberté tongue.gif

Voilà, et c'est souvent ce genre de chose qui est repprochée dans la faq anti-cpp, ou dans le quote de squalyl plus haut.

151

squalyl (./128) :
apparemment cmake est mieux parce ça génère des makefiles pas récursifs, donc ça va plus vite pour savoir ce qui est rebuildé.

cmake est surtout pas lié a make, tu peux generer des "build file" pour pas mal de cibles dont VisualStudio, XCode, QTDevelop/KDEDevelop etc...
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.

152

oui, c'est utile si tu veux que ton soft puisse gérer plusieurs chaînes d'outils différentes.
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

153

ça génère aussi des projets codeblocks ^^

154

a propos de const-correctness: pourquoi ne pourrait on pas passer un machin modifiable à une fonction qui déclare ne pas modifier ses arguments? Apparemment ça oblige à écrire tout le code en double, ou à faire des copies grin

155

flanker (./143) :
Par contre, je me demande s'il est possible de faire un langage aussi puissant que le C++ (et surtout aussi performant) tout en étant moins difficile à appréhender. J'attends de voir ce que donnera Rust de Mozilla, il me semble que c'est exactement son but.
Même sur certains points Rust vise la simplicité par rapport à C++ ce n'est pas leur objectif principal. Rust vise avant tout la sécurité tout en essayant de conserver des performance bonnes.

Il y a certains points dans Rust qui me paraissent plus complexes a appréhender car le compilateur doit savoir plus de choses sur la façon dont la mémoire est manipulée pour pouvoir garantir qu'il n'y aura pas certains types de problèmes techniques (memory leak, accès concurrent non contrôle à la mémoire...).
Des quelques essais que j'ai fait avec le langage, j'ai parfois eu un peu de mal à faire compiler certains programmes, par contre je n'ai pour le moment pas eu le moindre plantage surprise a l’exécution.
avatar

156

Zeph (./140) :
./135 et suite : c'est pas une histoire de connu ou pas, ce que je trouve complètement con c'est de lister des éléments qui font partie des fondamentaux du langage dans quelque chose qui est censé mettre en avant des erreurs de conception. Bien sûr qu'il n'y a pas de garbage collector en C++, le langage est *fait* pour te permettre de gérer toi-même ta mémoire

Ben ouais mais le c++ a beau te permettre de gérer la mémoire comme tu veux, il ne permet pas d'avoir un garage collector. Python peut en avoir un, ou s'en passer (je crois, jamais fait joujou à vrai dire).
Du coup le désavantage du c++ est de ne pas pouvoir être garbage collecté, alors que le désavantage du JavaScript est qu'il ne te permet pas d'avoir des performances optimales en t'en passant.
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

157

(oué enfin bon, les "performances optimales" sans le garbage collector, pour bon nombre de gens c'est de faire comme s'il y avait un trioui — OK j'exagère un peu)

158

Brunni (./156) :
Ben ouais mais le c++ a beau te permettre de gérer la mémoire comme tu veux, il ne permet pas d'avoir un garage collector. Python peut en avoir un, ou s'en passer (je crois, jamais fait joujou à vrai dire).Du coup le désavantage du c++ est de ne pas pouvoir être garbage collecté, alors que le désavantage du JavaScript est qu'il ne te permet pas d'avoir des performances optimales en t'en passant.

"Le désavantage de ma 2 chevaux, c'est que c'est pas une ferrari, si elle avait été conçue comme une ferrari, ç'aurait été une super 2 chevaux"

159

ouais wala, je pense que c'est un peu antinomique sécurité (managé) et performance (natif).

160

squalyl (./159) :
ouais wala, je pense que c'est un peu antinomique sécurité (managé) et performance (natif).
Pour le coup c'est justement le dilemme que le langage Rust essaie de résoudre. Il reste est natif et vise d'avoir des abstractions sans surcout (du moins autant que possible) tout en portant un grand soin à la sécurité/stabilité.

Il prévient les usages dangereux, mais cela est presque intégralement réalisé au moment de la compilation pour ne pas affecter les performance.
avatar

161

squalyl (./154) :
a propos de const-correctness: pourquoi ne pourrait on pas passer un machin modifiable à une fonction qui déclare ne pas modifier ses arguments? Apparemment ça oblige à écrire tout le code en double, ou à faire des copies grin

On peut tout à fait, c'est juste l'inverse qui n'est pas possible. Par ailleurs "const" n'a rien de magique ou d'unique au C++, c'est juste un raccourci d'écriture. Dans d'autres langages, ça se fait en créant une interface "lecture seule" (qui n'expose aucun setter) par dessus une classe modifiable, c'est plus lourd a écrire (et parfois un poil moins efficace à exécuter) mais le concept est identique.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

162

ah oui... mais qu'est ce qu'il raconte alors dans sa FQA ? hum

#include <iostream>

class ALaKon {
	int val;
	char truc[42];
};

class Machin {
public:
	void UtiliseUnConst(const ALaKon obj);
	void UtiliseUnPasConst(ALaKon obj);
	void Chieur(const ALaKon *ptr);
	void UtiliseUnPtrConst(const ALaKon *ptr);
	void UtiliseUnPtrPasConst(ALaKon *ptr);
};

void Machin::Chieur(const ALaKon *ptr) {
	std::cout << "Plop";
}

void Machin::UtiliseUnConst(const ALaKon truc) {
	std::cout << "niqued\n";
	this->Chieur(&truc);
}

void Machin::UtiliseUnPasConst(ALaKon truc) {
	std::cout << "oki\n";
	this->Chieur(&truc);
}

void Machin::UtiliseUnPtrConst(const ALaKon *truc) {
	std::cout << "niqued\n";
	this->Chieur(truc);
}

void Machin::UtiliseUnPtrPasConst(ALaKon *truc) {
	std::cout << "oki\n";
	this->Chieur(truc);
}

int main(int argc, char **argv) {
	ALaKon pwic, *plop;

	Machin bidule;

	bidule.Machin::UtiliseUnPasConst(pwic);
	bidule.Machin::UtiliseUnConst(pwic);

	plop = &pwic;

	bidule.Machin::UtiliseUnPtrPasConst(plop);
	bidule.Machin::UtiliseUnPtrConst(plop);
}

163

Je vois pas quel est le problème dans ce code.
avatar

164

bin y'en a pas, mais il est possible que j'eusse cru qu'il y en eût (turlututu).

165

Lui parle d'un const std::vector<const char*> et d'un std::vector<char*>

166

Trop de Machin Alakon, ça manque de Girl.
avatar
« Nous avons propagé sur Extranet une histoire fabriquée de toutes pièces selon laquelle une certaine disposition d'étoiles, vue depuis la planète d'origine des butariens, formaient le visage d'une déesse galarienne.
Sans chercher à vérifier ces informations, certains ont décrété que c'était la preuve de l'existence de la déesse. Ceux qui notaient le manque de preuves se faisaient attaquer. »

Legion, geth trolleur à portée galactique

167

bon ben ils racontent vraiment de la mayrde dans cette fqa alors

#include <iostream>
#include <vector>

class Machin {
public:
	void UtiliseUnConst(const std::vector<const char*> param);
	void UtiliseUnPasConst(std::vector<const char*> param);
};


void Machin::UtiliseUnConst(const std::vector<const char*> param) {
	std::cout << "pwnt\n";
}

void Machin::UtiliseUnPasConst(std::vector<const char*> param) {
	std::cout << "oki\n";
}

int main(int argc, char **argv) {
	std::vector<const char*> girl;

	Machin bidule;

	bidule.Machin::UtiliseUnPasConst(girl);
	bidule.Machin::UtiliseUnConst(girl);
}

USER@USER-PC1 ~
$ g++ testcase.c

USER@USER-PC1 ~
$ ./a
oki
pwnt



edit: AH NON, PIGé, le problème est lié aux templates !!!one

#include <iostream>
#include <vector>

class Machin {
public:
	void UtiliseUnConst(const std::vector<const char*> param);
	void UtiliseUnPasConst(std::vector<const char*> param);
	void UtiliseUnConstDedans(std::vector<const char*> param);
	void UtiliseUnPasConstDedans(std::vector<char*> param);
};


void Machin::UtiliseUnConst(const std::vector<const char*> param) {
	std::cout << "pwnt\n";
}

void Machin::UtiliseUnPasConst(std::vector<const char*> param) {
	std::cout << "oki\n";
}

void Machin::UtiliseUnConstDedans(std::vector<const char*> param) {
	std::cout << "pwnt\n";
}

void Machin::UtiliseUnPasConstDedans(std::vector<char*> param) {
	std::cout << "oki\n";
}


int main(int argc, char **argv) {
	std::vector<const char*> girl;

	Machin bidule;

	bidule.Machin::UtiliseUnPasConst(girl);
	bidule.Machin::UtiliseUnConst(girl);

	std::vector<char*> boy;

	bidule.Machin::UtiliseUnPasConstDedans(boy);
	bidule.Machin::UtiliseUnConstDedans(boy); //<- ligne 41 devrait marcher mais foire

}


$ g++ testcase.c
testcase.c: In function 'int main(int, char**)':
testcase.c:41: error: no matching function for call to 'Machin::UtiliseUnConstDedans(std::vector<char*, std::allocator<char*> >&)'
testcase.c:21: note: candidates are: void Machin::UtiliseUnConstDedans(std::vector<const char*, std::allocator<const char*> >)


là par contre, un machin déclaré vector<const char*> devrait accepter un vector<char*>

168

(bah oui, voilà, d'où l'histoire de la copie de vector cheeky)

169

From: Philipp Klaus Krause
Subject: [sdcc-devel] Current sdcc on OpenBSD 5.5
List-Id: Development chatter about sdcc <sdcc-devel.lists.sourceforge.net>
Date: Mon, 02 Jun 2014 23:27:46 +0200

(.....)

* The debug flags -g -ggdb need to be removed from the CXXFLAGS (g++
otherwise runs out of memory while compiling sdcc; tried on a system
with 4GB RAM and 4 GB swap).

(.....)
ha ha ha ha ha ...

eh oui, ils utilisent juste boost pour pondre un allocateur de registres quasi-optimal...

170

Et voilà un p'tit nouveau... Bret Victor en a rêvé, Apple l'a fait.
Je n'ai pas encore testé, mais le gros problème de l'Objective-C selon moi (la syntaxe archaïque datant du siècle dernier) étant résolu, ça me semble prometteur. Et puis y'a tellement de potentiel avec le playground d'Xcode love
So much code to write, so little time.

171

A première vue, ce langage semble reprendre énormément des points dont Rust s'est inspiré autant au niveau des fonctionnalités que de la syntaxe.
Il me semble cependant avoir une orientation moins bas niveau et un peu moins poussée sur la sécurité et la concurrence. Mais du coup il a l'air plus simple.

Dommage que ça reste, semble-il, propriétaire et réservé a l'écosystème Apple.
avatar

172

pencil
So much code to write, so little time.

173

J'ai l'impression que grâce à LLVM, il y a beaucoup de choses qui se font sur les langages maintenant happy


Tiens, il y a du pattern matching et de l'inférence de type top
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

174

Ouais il faudrait vraiment qu'ils ouvrent un peu leur langage cette fois. Plusieurs fois j'ai voulu développer des apps en Objective-C (quoi que vous en disiez j'aime bcp moi) mais je me suis retenu pour des raisons de portabilité.
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

175

Pourquoi le feraient-ils ? Je pense pas qu'Apple ait envie de développer des outils de dév pour autre chose que les Macs. Dans le cas contraire, ils auraient sorti des SDKs pour les iTrucs sur autre chose qu'OS X.
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

176

Oh, ils ont quand même tendance à sortir les sources de leurs outils
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

177

La gramaire est "publique" donc bon on sais jamais, en plus meme si c'est pas LLVM en lui meme, ca avantagerais bien ce projet...

Flan: ce n'est pas si vrai..
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.

178

Ouais enfin la grammaire c'est pas vraiment le truc le plus difficile à retrouver, si c'est tout ce qu'ils diffusent je crois pas que ça va aider qui que ce soit grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

179

Godzil (./177) :
Flan: ce n'est pas si vrai..

Ils gardent en fermé tout ce qui concerne Cocoa, et ouvre le reste (globalement)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

180

Ya de grand bloc du kernel qui sont fermé, Apple travaille de moins en moins avec l'open source, en tout cas sur des nouveau projets
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.