France IOI : qui êtes vous et où en êtes vous ?

Aucun langage n'a exactement les mêmes buts. Mais tout ceux de Java sont couverts d'une meilleure manière par d'autres à l'exception de celui de faire rentrer de l'argent à Sun/Oracle. Par exemple C#, je ne suis pas un grand fan, mais au moins ils s'amusent pas à lancer un keyword “generic” pourri et les développeurs ne montrent pas leur incompétence constamment (non mais sérieusement vous avez lu l'histoire des flux final en Java ?). Ce n'est pas facile de design un bon langage et c'est compréhensible que la plus part échoues, mais alors pourquoi supporter leur développement ?

Quant à l'utilisation dans les « grosses entreprises », ça me fait penser à une citation de Paul Graham pas seulement sur Java mais sur l'OOP en général :
Object-oriented programming is popular in big companies, because it suits the way they write software. At big companies, software tends to be written by large (and frequently changing) teams of mediocre programmers. Object-oriented programming imposes a discipline on these programmers that prevents any one of them from doing too much damage. The price is that the resulting code is bloated with protocols and full of duplication. This is not too high a price for big companies, because their software is probably going to be bloated and full of duplication anyway.

> Dans le même domaine, C++ permet de faire de la metaprogrammation,
> pas Java (pas de la même manière pour être précis). À ce sujet, je conseille
> aux programmeurs C++ de regarder : Metaparse: Compile-time parsing with
> template metaprogramming qui permet de construire et d'utiliser un parseur
> au compile time avec des string literals et définir ainsi des DSL simplement…
> au compile time. Simplement WTF.

=> Boost.Proto ? (Je n'ai pas encore lu l'article, donc peut-être que je dis une grosse bêtise.)

Oui, sauf que là c'est des string litterals qu'il parse (des mpl::string en fait) et en plus sa lib est en fait faite de combinaisons de parsers et de monads... Mais oui, c'est la même idée que Boost.Proto, avec une syntaxe bien meilleure.

Un string literal (un seul t), ça ne veut pas aussi dire l'absence de coloration syntaxique ? (Oui, on pourrait arguer de la difficulté inhérente à tout DSEL, mais il reste facile d'ajouter un keyword pour if_ ou autre. (Oui, des fois je pense pré-c++11, et même en c++11 une boost.lambda resterait parfois plus simple / rapide à écrire qu'une lambda classique.))

BTW, je viens de découvrir mpl::string (non, je n'ai pas encore fait le tour de boost, rien que la page qui liste les biblios me fait encore peur de temps en temps), et je me demandais ... Que sont ces 'hello' ?

=> Trouvé. Enfin, il faut avouer qu'un DSEL qui demande de s'interrompre tous les 4 caractères pour taper ', ' n'est pas si super. Si ?

=> Ah, j'ai compris. Il prend les "abc"_X et les transforme en mpl::string avant de les parser. C'est bien ça ?

Boost.Phoenix est plus puissant que les lambdas C++11, surtout à cause du fait qu'il est impossible de créer des “template lambdas” (i.e. le auto en paramètre qui avait été considéré un temps par le WG21, mais ça aurait pris trop de temps de l'ajouter au standard).
Je comprends ta douleur, personne n'a jamais fait le tour de Boost, en tout cas, personne qui soit resté sain mentalement. Mais pourquoi regarder la doc de Boost 1.40 ? Il faut se mettre à jour. :D Sinon, tu as des slides (la vidéo devrait sortir dans un peu plus d'un mois) de C++Now qui font le tour de Boost.
Sinon, relis le paper, il parle de la gestion des strings. :) Il n'est pas super à jour par contre.

> Mais pourquoi regarder la doc de Boost 1.40 ? Il faut se mettre à jour. :D

Parce que j'ai pris le premier lien sur google sur les mpl::string, et que j'ai c/c le lien. Et aussi parce que j'ai essayé de remplacer le 40 par un 49, et que je suis tombé sur la même page, et n'ai donc pas pensé à remplacer le lien sur le forum.

> Sinon, tu as des slides de C++Now qui font le tour de Boost.

Ah bon ? J'irai jeter un coup d'oeil, même si j'ai déjà rapidement regardé la liste des biblios.
Le plus dur, c'est de s'y retrouver entre boost.lambda, boost.phoenix & co, le temps de comprendre que boost.lambda n'est gardée que pour des raisons de rétrocompatibilité. Et, au moment de chercher quel placeholder mettre, je crois que j'avais mis quelques jours avant de comprendre que je mélangeais les placeholders lambda et phoenix (les deux biblios étant pour moi les mêmes à l'époque) ...

> Sinon, relis le paper, il parle de la gestion des strings. :) Il n'est pas super à jour par contre.

OK, merci. :D

Je reviens sur le sujet de départ (désolé d'arriver si tard, je consulte rarement les forums de Prologin)…
http://www.france-ioi.org/user/perso.php?sLogin=frigory
Tu me reconnaîtras sans doute (si tu suis toujours cette discussion) ! D'ailleurs, j'ai l'impression que tu m'as piqué ma manière d'écrire ton commentaire de présentation ?
À l'époque où je me suis inscrit à Prologin, je n'étais pas fichu de me trouver un pseudonyme…

>> j'ai l'impression que tu m'as piqué ma manière d'écrire ton commentaire de présentation

Eh oui, tout à fait, en effet. \^\^

Je me suis dit, puisque lui il étale sa vie dans les commentaires, pourquoi pas moi ? La chose a l'indéniable avantage de me permettre de ma la péter de manière détournée, tout en montrant à quel point j'aime l'algorithmique.

Pour tout te dire j'essayais surtout de me faire remarquer, pour avoir toutes les chances de mon côté lors des sélections pour les stages (j'y tient énormément).

D'ailleurs si un administrateur de France IOI passe par ici (je ne doute pas qu'il y en ai), je me permet de signaler ma présence (HELP !!! Prenez moi pour les stages !).

Ah. Mon but était aussi de montrer ce qui m'attirait exactement dans l'algorithmique (en l'occurrence plutôt le côté programmation et concours, sauf que je manque de niveau pour ce dernier) ; et puis j'aime bien raconter ma vie…
Remarque, le moment où j'ai décidé de m'écrire un long commentaire a suivi celui où j'ai vu que tu t'étais fait une jolie description de ta vie dans l'informatique (pas que toi d'ailleurs ; d'autres parfois, comme @gle_blanc).
Je ne doute pas que tu iras au stage cet été et j'espère qu'il te sera profitable.

>> Je ne doute pas que tu iras au stage cet été et j'espère qu'il te sera profitable.

Je te retourne la remarque !

J'espère qu'on y sera tout deux, j'ai pris plaisir à discuter avec toi à force.

Ah mais c'est cool des candidats aussi motivés :p
Entrainez-vous bien et envoyez un email à france-ioi pour le stage débutants.
Par contre je ne crois pas que les "admins" passent ici.

Bref, y'a plus de système de parrainage mais si vous voulez que je vous donne des petits exos en plus de temps en temps, envoyez-moi un message/email.

>> "mais si vous voulez que je vous donne des petits exos en plus de temps en temps, envoyez-moi un message/email."

C'est une proposition que j'accepte bien volontiers !

Je te l'ai dit sur le forum d'entraide (un peu vite fait mais t'aurais pu faire gaffe) : je ne peux pas aller à ce stage (parce que mes cours continuent jusqu'à fin juillet et surtout c'est sur ma semaine de retrait des dents de sagesse).
J'ai demandé en avance si le stage pouvait être déplacé : on m'a dit que c'était impossible.
À la place, je m'attends à être pris au stage intermédiaire de la Toussaint.
On pourrait peut-être demander à France-IOI d'organiser plus de stages. Je pense que ça nous serait bien profitable. (À Pâques ? En fait je crains que les entraîneurs soient indisponibles.)

Quelle année scolaire minable ; je n'ai pas eu le droit d'aller à la finale de Prologin, j'ai été écrasé aux concours France-IOI et je ne peux même pas aller à leur stage d'été. Je suis quand même consolé d'avoir découvert France-IOI cette année. Plus que trois problèmes de graphes avant d'atteindre le niveau 4 (dont un sur lequel je suis bloqué depuis plusieurs mois)…

Ben tiens, si t'aimes bien qu'on cause ensemble, il doit bien y avoir un réseau social où je peux te trouver ?

Facebook : naze et bourré de virus. Inintéressant.
Twitter : jamais essayé.

Skype : c'est vraiment pas mal !

C'est bête que tu ne puisse pas participer aux stages...

Pareil : il me reste 2 problèmes de graphe et 3 problèmes de géométrie pour atteindre le niveau 4. Actuellement je fais "Chemin le plus court" et "Bloquer une route".

C'est marrant, ce sont les deux problèmes sur lesquels je bloque. Il y en a un que je n'ai pas essayé.

Bon, OK, tu es le deuxième à me demander un compte Skype. Ça marche. Mince, on est obligé de mettre des chiffres dans son pseudo ou quoi ? Qu'est-ce que je vais choisir comme mot de passe ?
En fait, en tant que geek de Microsoft, je suis resté un des vieux utilisateurs de Windows Live Messenger. Il reste compatible avec Pidgin si tu installes un plug-in. Mais c'est lourd que les dernières versions de WLM soient incompatibles avec Windows XP.
C'est toi, ça (sous Skype) ? C'est quoi, ce pseudo bizarre ?

Vous avez le même problème que moi pour "bloquer une route"? Limites de mémoires dépassée avec une matrice d'adjacence?

>> C'est toi, ça (sous Skype) ? C'est quoi, ce pseudo bizarre ?

Si le pseudo c'est Raistlin quelque chose c'est bien moi. Cependant je n'utilise plus ce compte car j'en ai paumé le mot de passe xD

Pour information Raistlin est un archimage noir dans la série Dragonlance, série de roman inspiré du jeu de rôle Donjon&Dragon.

Mon compte actuel c'est : louis.666.

Et comme je tourne sous XP...

>> Vous avez le même problème que moi pour "bloquer une route"? Limites de mémoires dépassée avec une matrice d'adjacence?

Pour tout te dire je n'ai pas encore testé mon implémentation. J'avais plutôt pensé à une liste d'adjacence.

Je procède comme ça :

Un tableau contenant tout les arcs, une structure Arc avec le nœud d'origine et celui d'arrivé, ainsi qu'un booléen pour savoir si le chemin es indispensable (initialisé à true).

Puis j'ai un tableau de noeuds, une structure Nœud contenant une énumération (pour savoir si le nœud n'a jamais été visité, s'il est en train d'être visité, ou s'il a déjà été visité) et un vector de pointeurs sur le tableau d'arcs.

Au cours de mon exploration j'avais pensé à maintenir à jour un stack de pointeur sur les Arcs qui indique à quel profondeur chacun d'entre eux a été rencontré, stack que je dépile jusqu'à une certaine profondeur dès que nécessaire quand je tombe sur un nœud en cours d’exploration une certaine profondeur (tout mettant à 'False' le booléen des arcs dépilés pour indiquer qu'ils ne sont pas indispensables).

Avec ça j'ai un tableau de 10 000 arcs, un tableau de 1 000 noeuds, ainsi qu'une pile de taille variable et une pile d'appel de la fonction récursive. Compte tenu de la taille de chaque structure de donnée ça commence à faire beaucoup mais je vois rien d'autre à faire.

Dans Bloquer une route, ce sont des arêtes, pas des arcs, si ?
Vous savez ce que c'est, les « composantes (fortement) connexes » ? Je crois qu'il faut aller chercher de ce côté.

Argh ! On a reçu les résultats des concours il y a six heures ! Je suis le maillon faible ! (À trois points de l'avant-dernier.)
C'est marrant, je suis le seul niveau 3 à avoir participé.

Répondre au sujet

Vous devez vous enregistrer ou vous connecter pour poster des messages.