Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 205 vues
- 130 followers
Anonyme
Pov Gabou
Citation :
La mode actuelle : Java et C# sans hésiter. Je suis bien placé pour en parler, j'étais sur le marché de l'emploi il y a quelques mois et c'est vraiment ce qui ressort
Ca depend vraiment des domaines, faut pas generaliser comme ca. Surtout, les boites interessantes ne seront pas interesses par un seul langage, mais par ton aptitude a en apprendre de nouveaux pour differents domaines. Je trouve justement que les liens que j'ai donnes un peu plus haut rendent bien cet aspect la. Alors bien sur, apres, il y a des trucs fondamentaux a connaitre, mais comme Bara a deja fait de l'embarque, il doit deja bien connaitre le C et meme l'assembleur, donc pas de probleme a ce niveau la, et je pense que tout ce qui est structure de donnees est maitrise aussi (arbre, list, graphes, queues, etc...)
> Dr Pouet: pour apprendre l'object, retrospectivement, j'aurais vraiment prefere avec un langage haut niveau (J'ai fait un peu de java (beurk), et apres pas mal de C++ (re beurk), et ce sont pas de super langages pour apprendre). Meme si des langages comme python/ruby/CLOS sont pas tres demandes en soi, ils permettent vraiment d'apprendre plus facilement les concepts. En particulier, bien comprendre quand utiliser heritage vs composition, les pattern de base, c'est vraiment beaucoup plus facile en python/etc... Ca permet de te focaliser sur les points importants, et pas sur les details.
Surtout, le probleme avec java et pire C++, c'est le melange type/classes (en fait, en C++, c'est pas melange: stroustrup ne voit fondamentalement la classe que comme un type, toute l'histoire du C++ renvoit a ca), et la focalisation sur l'heritage. Avec un langage dynamique, tu fais beaucoup moins ce type d'erreur, parce que les concepts sont totalement independants. D'ailleurs, lorsqu'Alan kay a bosse sur smalltalk, il n'a incorpore que tard l'heritage (fait avant sur simula par exemple).
Je sais pas vous, mais perso, les exemples objets voitures has motor mais is vehicule, j'ai jamais compris: c'est bidon comme exemple, et ca aide vraiment en rien pour programmer. C'est beaucoup plus puissant de penser en terme de protocole, d'API, de message passing, etc... Meme le bouquin des design pattern, je ne le trouve pas tres bon en soi. C'est une reference, pas de doute, mais pour apprendre et comprendre les principes, je suis pas si convaincu.
Pov Gabou
Par exemple, en python, le concept derriere yield n'a rien de fantastique: tu peux ecrire la meme chose sans, et dans tout langage turing complet evidemment. Mais ca permet d'abstraire des trucs qui sont en fait tres courants, et se retrouvent dans presque toute application: a ce moment la, ce n'est plus un "trick", mais une caracteristique extremement utile. Ca permet aussi une compacite du langage, caracteristique tres importante je pense (Bruce Eckel, le gars qui a ecrit les thinking in C++ et ... in java, a un tres bon exemple: en java, il ne se souvient jamais comme lire un fichier ligne par ligne: il faut plusieurs classes, etc... En python, c'est
for line in open(filename).readlines():
print line
et tu ne peux pas l'oublier.
https://www.artima.com/intv/aboutmeP.html)
Dr Pouet
Citation : Dr Pouet: pour apprendre l'object, retrospectivement, j'aurais vraiment prefere avec un langage haut niveau (J'ai fait un peu de java (beurk), et apres pas mal de C++ (re beurk), et ce sont pas de super langages pour apprendre). Meme si des langages comme python/ruby/CLOS sont pas tres demandes en soi, ils permettent vraiment d'apprendre plus facilement les concepts. En particulier, bien comprendre quand utiliser heritage vs composition, les pattern de base, c'est vraiment beaucoup plus facile en python/etc... Ca permet de te focaliser sur les points importants, et pas sur les details.
En fait je voulais juste dire qu'apprendre l'objet est utile, voire nécessaire. Après c'est bien de pouvoir le faire avec un langage qui en plus peut constituer une compétence recherchée.
Perso je n'ai pas trop de vue d'ensemble sur les langages les plus utilisés.
Et il me semble que même si java et C++ sont sûrement plus répandus, Python est assez courant aussi. Donc effectivement, apprendre l'objet avec Python, pourquoi pas.
De toute façon le mieux est certainement que Bara regarde les entreprises ou les domaines qui l'intéresse, et en déduise les compétences actuellement recherchées.
Citation : Je sais pas vous, mais perso, les exemples objets voitures has motor mais is vehicule, j'ai jamais compris: c'est bidon comme exemple, et ca aide vraiment en rien pour programmer.
Complètement, mais alors complètement d'accord avec toi.
Ne parlons pas non plus du distributeur automatique de billets qui est une sombre connerie.
En objet, les interfaces graphiques me semblent être un bon exemple : les ensembles de classes / widget (dessinables, redimensionnables...) C'est concret, on voit bien l'intérêt de la généricité. Rien qu'en manipulant l'éditeur de dessin de Word ou powerpoint ( ), en faisant passer au premier plan, groupant, redimensionnant... on voit l'intérêt des objets pour programmer ça.
zieQ
Citation : Ca depend vraiment des domaines, faut pas generaliser comme ca. Surtout, les boites interessantes ne seront pas interesses par un seul langage, mais par ton aptitude a en apprendre de nouveaux pour differents domaines. Je trouve justement que les liens que j'ai donnes un peu plus haut rendent bien cet aspect la. Alors bien sur, apres, il y a des trucs fondamentaux a connaitre, mais comme Bara a deja fait de l'embarque, il doit deja bien connaitre le C et meme l'assembleur, donc pas de probleme a ce niveau la, et je pense que tout ce qui est structure de donnees est maitrise aussi (arbre, list, graphes, queues, etc...)
> Dr Pouet: pour apprendre l'object, retrospectivement, j'aurais vraiment prefere avec un langage haut niveau (J'ai fait un peu de java (beurk), et apres pas mal de C++ (re beurk), et ce sont pas de super langages pour apprendre). Meme si des langages comme python/ruby/CLOS sont pas tres demandes en soi, ils permettent vraiment d'apprendre plus facilement les concepts. En particulier, bien comprendre quand utiliser heritage vs composition, les pattern de base, c'est vraiment beaucoup plus facile en python/etc... Ca permet de te focaliser sur les points importants, et pas sur les details.
Tu regardes les annonces, dans 80-90% des cas c'est JAVA/J2EE ou C#, et le taff est dans le domaine des systèmes d'informations. Tu le dis toi-même python/ruby/CLOS ne sont pas très utilisés. Alors bon, même si je peux à la limite admettre que ces langages soient plus intéressants à apprendre ou même meilleurs (débats dans lesquels je ne rentrerai pas, faute de connaissances), je trouve ta remarque carrément hors sujet par rapport à la question de bara ;)
Mais bon, moi, ce que j'en pense de l'auto-formation, c'est que c'est pas reconnu par les employeurs. A mon avis, il vaudrait mieux utiliser les congés de formation ou droit individuel à la formation.
aris
Citation :
Je sais pas vous, mais perso, les exemples objets voitures has motor mais is vehicule, j'ai jamais compris: c'est bidon comme exemple, et ca aide vraiment en rien pour programmer. C'est beaucoup plus puissant de penser en terme de protocole, d'API, de message passing, etc... Meme le bouquin des design pattern, je ne le trouve pas tres bon en soi. C'est une reference, pas de doute, mais pour apprendre et comprendre les principes, je suis pas si convaincu.
Ben ce sont des exemples usuels que tout le monde est capable de comprendre. Ca peut être sur une voiture qui est un véhicule, un choux qui est un légume, ...
Le tout étant de savoir dans quel contexte on se trouve.
On avait eu un exercice en cours : faire une hiérarchie objet des objets de cuisine. On bosse 5 minutes puis le prof nous dit qu'il nous manquait une information essentielle que personne n'a demandée : selon quels critères on fait la hiérarchie.
pratiquement tout le monde avait placé l'héritage en fonction de l'utilité, par ex couteau à steak hérite de couteau qui hérite de couvert. Mais il y avait d'autres possibilités comme hiérarchiser les instruments en fonction de leur matériaux ou de leur constructeur, et donc selon le contexte on était tous faux.
Citation : > aris: L'auteur connait le LISP, qui permet le meme type de choses. En fait, je comprends pas tres bien ton argument: ce que l'auteur cherche a montrer, c'est que de soit disant "tricks" (il prenait l'exemple d'une closure) sont en fait tres puissant lorsque ils sont suffisament generaux. Des langages comme smalltalk ou LISP sont tellement plus puissants et expressifs que le java que sa discussion ne s'applique pas a eux.
Oui d'accord. La fonctionnalité qui me manque vraiment fort en java c'est la possibilité de donner du code en paramètre à une fonction/méthode sans devoir recourir au tricks des annonymous inner class (ou alors que ce soit masqué).
Pov Gabou
Citation :
Tu regardes les annonces, dans 80-90% des cas c'est JAVA/J2EE ou C#, et le taff est dans le domaine des systèmes d'informations.
Franchement, c'est faux, ca depend des domaines. Il y a des pans entiers qui n'utilisent pas du tout ces langages. Je reconnais volontiers que ma vue soit biaisee "anglo saxonne", mais quand meme. En particulier, perl est encore vachement demande (plus que python + ruby reunis, je pense, et de loin), sans compter le C evidemment, ou javascript.
Le java et le C# sont tres demandes, c'est indiscutable, mais le sont dans certaines domaines plus que d'autres. Ca depend des domaines.
Citation :
Mais bon, moi, ce que j'en pense de l'auto-formation, c'est que c'est pas reconnu par les employeurs. A mon avis, il vaudrait mieux utiliser les congés de formation ou droit individuel à la formation.
Ou peut quitter le marche francais, aussi, mais c'est un choix qui n'est pas donne a tout le monde
bara
Citation : ce que j'en pense de l'auto-formation, c'est que c'est pas reconnu par les employeurs.
Mouais, je sais pas: ya un tas de gens qui aprennent des langages tout seuls et qui s'en sortent. Mon ancien bassiste a une formation de microbiologie (un truc balèze en bac+5 au moins), il s'est formé seul au web (PHP et autres SQL ou flash) et aujourd'hui il est webmaster d'une grosse boite de softs 3D + il a monté sa boite à côté, question boulot il débande pas...
Pov Gabou
Citation :
En fait je voulais juste dire qu'apprendre l'objet est utile, voire nécessaire. Après c'est bien de pouvoir le faire avec un langage qui en plus peut constituer une compétence recherchée.
Oui, bien sur, je me suis peut etre mal exprime: je pense que pour apprendre l'objet, il vaut mieux commencer par python/etc... et APRES, bien sur, apprendre java/C#, qui sont clairement les deux langages objets les plus demandes. Je sais que perso, je suis nettement meilleur en C++ et meme en C depuis que j'ai appris un langage plus expressif, par exemple (java/C# m'interessant absolument pas pour ce que je veux faire).
@ Bara, je pense que ce qu'il voulait dire, c'est qu'en France, on est plus regardant sur l'experience/les diplomes qu'ailleurs, ce qui est assez vrai selon mon experience et les retours que j'ai aussi.
zieQ
Citation : Mouais, je sais pas: ya un tas de gens qui aprennent des langages tout seuls et qui s'en sortent. Mon ancien bassiste a une formation de microbiologie (un truc balèze en bac+5 au moins), il s'est formé seul au web (PHP et autres SQL ou flash) et aujourd'hui il est webmaster d'une grosse boite de softs 3D + il a monté sa boite à côté, question boulot il débande pas...
En fait, ce que je voulais dire, c'est que tu as tout intérêt à demander un congé de formation, ou utiliser ton droit à la formation pour effectuer une formation à ces langages dans une boite de formation qualifiée plutôt que d'apprendre par toi-même. Tu n'apprendras p-e pas autant de chose, mais du point de vue de tes futurs employeurs, ta qualification sera reconnue. Je ne doute pas qu'on puisse y arriver sans, mais c'est quand même plus difficile d'ouvrir des portes quand on s'est formé tout seul ;)
Dr Pouet
Citation : Mais bon, moi, ce que j'en pense de l'auto-formation, c'est que c'est pas reconnu par les employeurs. A mon avis, il vaudrait mieux utiliser les congés de formation ou droit individuel à la formation.
L'idéal, si possible : faire de l'auto-formation, parce-que ça fait de la pratique, et que c'est le seul moyen d'être vraiment compétent ; et suivre une formation pour avoir le bout de papier qui dit "compétent en XX"...
Citation : Meme le bouquin des design pattern, je ne le trouve pas tres bon en soi. C'est une reference, pas de doute, mais pour apprendre et comprendre les principes, je suis pas si convaincu.
Exact. Si on se démerde déjà en objet, ça ouvre des perspectives, ça ajoute des idées que l'on a pas déjà eues, ou ça permet de mieux le manipuler... Par contre c'est loin d'être le top pour découvrir l'objet. Mais je ne sais pas s'il y a un bon bouquin là-dessus. A mon avis la bonne piste est de trouver un bon tutoriel sur des widgets graphiques. Ca fournira une formation par la mise en pratique (en plus d'acquérir une compétence sur lesdits widgets).
Citation : Ben ce sont des exemples usuels que tout le monde est capable de comprendre. Ca peut être sur une voiture qui est un véhicule, un choux qui est un légume, ...
Le tout étant de savoir dans quel contexte on se trouve.
On avait eu un exercice en cours : faire une hiérarchie objet des objets de cuisine. On bosse 5 minutes puis le prof nous dit qu'il nous manquait une information essentielle que personne n'a demandée : selon quels critères on fait la hiérarchie.
Citation : C'est beaucoup plus puissant de penser en terme de protocole, d'API, de message passing
Ben il me semble que vous êtes d'accord : l'héritage se définit par des API communes. "Les critères" = "les services dont on va avoir besoin" = l'API.
Si on considère les éléments d'un dessin vectoriel, ils vont tous avoir une méthode "dessiner()". On va les ranger dans une liste, et les dessiner en partant du fond vers l'avant. Le point n'aura pas de méthode "redimensionner(..)" alors que la plupart des autres objets l'auront. Les surfaces auront "définir_couleur_remplissage(..)" alors que les traits et le texte non. etc...
Dès que tu as déjà un peu programmé, tout ça est très concret. Alors que le fait qu'un éléphant soit un mammifère, en C++ on voit pas très bien ce que ça donne !
Citation : > Tu regardes les annonces, dans 80-90% des cas c'est JAVA/J2EE ou C#, et le taff est dans le domaine des systèmes d'informations.
Franchement, c'est faux, ca depend des domaines. Il y a des pans entiers qui n'utilisent pas du tout ces langages.
Probablement 80% des offres d'emploi sont sur des SI. Mais si tu fais du calcul scientifique (2% du marché ?) c'est C / Fortran. Si tu fais de l'embarqué (encore 2% du marche ?) c'est C, Ada, SDL... Si tu fais du bancaire / gestion, va y avoir du Cobol, si c'est du web : php, SQL, javascript, flash... etc
Là aussi vous avez probablement pas mal raison tous les deux !
- < Liste des sujets
- Charte