Quel langage utiliser pour la finale ? (besoin de conseils)

Bonjour,

Je viens de recevoir ma convocation pour la finale. J'ai utilisé le PHP (le seul langage que je "connais" pour l'instant, si l'on exclut le XHTML et des bases en Javascript) pour la demi-finale mais j'ai cru comprendre que le PHP était pas vraiment approprié pour les problème d'algorithmie et donc je me suis dit que ce serait l'occasion d'apprendre un nouveau langage. Je pense au C et au C++ mais je voudrais savoir ce que vous me conseillez. Et est-ce que vous avez des sites intéressants pour apprendre également ?

J'ai attaqué la lecture du Framabook "Le C en 20h".

Merci d'avance,

Princeps.

Le C++ pour l'IA c'est top. Bas niveau pour avoir beaucoup de contrôle, la libstdc++ pour les structures utiles, les classes pour faire de beaux raviolis soigneusement rangés, etc.

Oh et les templates, qui dans ce cas précis serviront surtout à compliquer tes messages d'erreurs pour avoir la classe dans la vidéo : « Hey vous voyez le pâté qui s'affiche, c'est que je fais des choses compliquées moi ! »

Si tu parles des erreurs affichées dans la vidéo 2011, je connais la personne concernée (si je ne me trompe pas), c'est juste qu'elle a (mal) codé pendent 1 heure avant de compiler. :\

Sinon pour la finale, il y a un objectif cette année, c'est une finale NO PHP. Donc, oui si tu pouvais participer à cet effort collectif, ça serait bien.
En 1 mois là, comme ça, à ta place je regarderais python, tu peux apprendre les bases très rapidement, le C est assez dur à utiliser sans expérience (que tu ne pourras acquérir en un mois) et le C++ ça te prendra encore plus de temps. Je pense qu'en un mois sans trop te prendre la tête tu pourras apprendre à utiliser python bien mieux que PHP, donc lance toi ! :)

Surtout, si tu codes en PHP tu risques de ne pas te faire aider, réaction ordinaire d'un orga : « beurk mais c'est du PHP ?! Depuis quand on peut coder en PHP à Prologin ? ».

Vous voulez pas me proposer C# et Java tant qu'on y est ? Comme ça on aura fait le tour des langages autorisés \^\^ !

Je vais essayer d'aller voir un peu le python. J'avais aperçu des exemples de code et ça m'avais semblé pas mal. Surtout que si je me trompe pas, c'est pas compilé ce qui présente l'avantage de pouvoir coder comme un pied et regarder les erreurs après :D ! (Enfin bon, ça m'a servi pour la demi-finale en temps limité mais là en 36h, ça à plus beaucoup d'importance le temps de compilation.)

Merci pour les sites, je vais regarder.

Si vous pouviez argumenter, sinon tant pis, je me débrouillerai !

Est-ce qu'il y a des coefficients de temps en fonction des langages ?

Merci,

Princeps.

Pareil je te conseille Python. Bien que je sois pus a l'aise en C++, j'ai pris python l'an dernier et je referais le même choix cet année.
Avec python tu ne t'embête pas avec les allocations / liberations de mémoire. Tu as les avantages d'un language impératif, organisé avec des classes, avec un peu de fonctionnel (Par exemple il y a map, filter, comprehension de liste).
A mon avis le C et C++ sont biens pour un projet un moyen/long terme, mais pour quelque chose de 36h, le python est ce qu'il y de mieux.

De toute manière si tu apprends le C tu seras à l'aise avec plus ou moins n'importe (je me mouille un peu) quel langage impératif, mais pour une échéance d'un mois, tu ne t'en sortiras jamais. Regarde Python, tu as moyen d'être bien au point pour la finale.

>"Le C en 20h"
... Ils sont drôles ...

Bref, le python reste un des langage qui semble le plus rapide à matrîser (relativement) au vue du temps qu'il te reste ...

Cependant est-ce une bonne idée de changer en temps limité de langage ?
Si on part du fais que tu fais du PHP, oui ... si on par du fait que tu as un bac à préparer, non ...

Nota: Je dis ça ... mais je participe en C donc bon ...
Promis l'année prochaine je change de langage ...

Bon, c'est pas trop pour la ramener, mais une chose est sûr : quelque soit le langage utilisé et quelque soient les circonstances dans lequel tu l'utilise, le langage le plus adapté pour résoudre un problème donné sera toujours... celui qu'on maîtrise le mieux !

En effet apprendre un langage est long et difficile, et même lorsque la connaissance est acquise cela ne signifie par nécessairement qu'on maîtrise vraiment le langage : il faut qu'il devienne une extension de sa pensée pour cela !

Impossible de concevoir un algorithme si on en vient à se demander comment l'implémenter dans un langage ( passer du PSEUDO-CODE au langage donc ).

De même, lorsqu'on apprend à écrire, impossible de faire des textes construits et fluides comme à l'orale : on est trop concentré sur l'écriture en elle même pour s'encombrer l'esprit d'effets de style.*

*Par "écriture" j’entends pouvoir former les lettres mais aussi respecter les bases élémentaires de grammaire, conjugaison, orthographe ou autre.

Par contre lorsqu'on peut écrire sans même y penser rien qu'en se faisant dicter, alors là on sait écrire.

C'est pareil pour les langages.

Après d'un point de vue purement subjectif, si je devais conseiller un langage :

1) Puissant
2) Souple
3) Simple
4) Rapide à apprendre
5) Adapté à la résolution de problèmes algorithmiques

Eh bien alors je dirais sans aucun parti pris, Python...*

*La preuve : mon langage préféré est le C++**

**Mais faut compter plusieurs mois pour le comprendre, et plusieurs années pour le maîtriser.***

***Sans vanité ni me la péter outre mesure bien sûr.****

****Vous remarquerez que mon ardeur à surcharger mes messages de notation semi-comiques aussi inutiles qu'encombrantes est fort semblable à celle qui pullule sur les sujets de finale Prologin.

@epsilon012: Tout depend de comment tu l'utilise, mais en c++, les new et delete sont quand même courrants. Apres on peut argumenter que le c influence ma maniere de programmer en c++ (mais j'eesaye de faire des efforts).

Je pensais que l'API C++ de stechec renoyait des pointeur de vector à liberer, plus ou moins comme l'API c, mais je viens de verifier et elle retourne des copies de vector. Donc effectivement, dans le cas de prologin, tu n'as pas tellement de memoire à gerer. Au temps pour moi.

Même hors de Prologin, la plus part des gros projets écrits en C++ utilisent des smart pointers qui permettent une gestion de la mémoire basée sur le SBRM. Bien sûr contrairement à d'autres langages, C++ donne le choix et pour les projets les plus bas niveau le (très très) petit overhead d'un smart pointer est de trop, dans quel cas il faut souvent passer par delete. Pour te donner une idée, j'ai tenu à ne jamais utiliser delete dans mes projets en C++ à la fac (\~ 5000 lignes pour la plus part), dernièrement j'ai du en supprimer un qui était dans une phrase en commentaire pour avoir un grep -R delete . bien clean ne retournant rien. :D En ce moment je travaille sur un gros projet (plus de 500K lignes), je n'ai pas encore croisé de delete (même s'il y en a certainement, ce n'est pas quelque chose de commun).
Donc non, les delete et la gestion de la mémoire en C++ c'est un mensonge, il y a juste un détail supplémentaire à prendre en compte par rapport à un GC, mais c'est à la fois plus flexible et plus rapide.
Et en plus ça ne se limite pas à la mémoire, et ça, ça rend C++ bien supérieur à certains langages (notamment un commençant par un J et finissant par ava.)

Non, je ne peux pas ne pas troller.

Dans le C en 20h, ils ne prétendent pas faire de toi un pro du C mais simplement poser les bases et de permettre de faire déjà un certain nombre de trucs.

@che, qu'est-ce qui te fait croire que j'ai le BAC à la fin de l'année ?

Le temps ne semble pas être un problème. Je vais lire quelques tutos, m'entraîner un peu et à mon avis, ça devrait suffire pour Prologin. Enfin, je sais pas trop mais je dirai que ce qui compte beaucoup ce sont les idées et l'algorithme en lui-même. Après l'implémentation demande peu de compétences dans le langage puisqu'il n'y a pas de grandes structures à construire, pas de BDD, pas d'affichage...

Après, peut-être que je me trompe.

De ce que j'ai vu pour l'instant, le C à l'air assez chiant...

Je regarde Python dès que j'ai le temps.

Merci pour les conseils.

Princeps.

epsilon012 : T'as pas un cours sur les smart pointers sous la main que j'essaie enfin de comprendre l'utilité ? *naab spotted*

Je ne connais pas les tutoriels qu'a donnés alex3er, mais pourquoi ne pas regarder à la source ?

  • Le chapitre sur les smart pointers dans MC++D d'Alexandrescu . Ce livre n'est pas seulement intéressant pour les smart pointers, c'est vraiment un des (le?) livres fondateurs du Modern C++, il n'y a que le chapitre sur les smart pointers en ligne, mais le livre en entier est vraiment une référence. Par contre l'interface n'est pas du tout la même qu'en C++11, il utilise des politiques ce qui est vraiment plus flexible.
  • Documentation de la bibliothèque Boost.smart_ptr . Avec une interface à la C++11 (ou plutôt c'est C++11 qui a une interface à la Boost.)

Encore heureux qu'ils ne prétendent pas faire de toi un pro ... En 20h, tu ne peux tout simplement pas assimiler les bases du langage C ... même en python j'ai des sérieux doutes ...

Pour le Bac, ce n'est qu'une supposition :p

Répondre au sujet

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