Précédent   Forum du club des développeurs et IT Pro > Général Développement > Langages de programmation > Débuter
Débuter Forum d'entraide : Comment débuter en programmation ?
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/05/2012, 22h09   #1
Bigsebowsky
Invité de passage
 
Homme Sébastien
Inscription : janvier 2012
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Secteur : Transports

Informations forums :
Inscription : janvier 2012
Messages : 1
Points : 0
Points : 0
Par défaut Comment se situé pour apprendre à programmer

Bonjour à tous,

Issu d'un parcours scientifique, je n'ai pas un profil informaticien, mais j'ai toujours tenté différentes approches du milieu... Travaillant sur des systèmes de sécurité embarqués sur du matériel ferroviaire, j'ai décidé de me mettre concrettement à la programmation (compréhension pour le job, codage pour l'épanouissement personnel)... Mais voilà, bien loin du basic GFA ou du Pascal des classes prépas, après une petite formation en ADA, je me rend compte que je ne sais pas par ou commencer. Un langage d'accord, après avoir lu quelques posts et balayé quelques tutoriels, ce sera sans doute du C++ ou de l'ADA, peut être du python, mais j'ai l'impression que pour réellement s'y mettre, ce n'est pas suffisant... Alors côté algorithme, côté génie logiciel (j'ai découvert en formation qu'il y avait des étapes après le compîlateur), comment démarrer, comment se situer, comment sortir le tête de l'eau?
Merci d'avance pour vos lumières...

Bigsebowsky
Bigsebowsky est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2012, 11h22   #2
el_slapper
Expert Confirmé Sénior
 
Inscription : décembre 2007
Messages : 2 541
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : décembre 2007
Messages : 2 541
Points : 6 144
Points : 6 144
Je serais, personellement, purement utilitariste dans un premier temps. Qu'est-ce qu'ils utilisent à ton job? Eh bien voilà un langage/environnement qu'il est excellent à apprendre - en tous cas pour toi.

Parceque tu auras une VRAIE motivation, et de VRAIS exemples UTILES sous les yeux. Un langage plus pédagogique(genre SCHEME, ou PASCAL), c'est bien gentil, mais si tu n'as rien à en faire, pas de projet qui te tienne à coeur, tu seras vite démotivé.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
el_slapper est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2012, 17h06   #3
DonQuiche
Expert Confirmé
 
Avatar de DonQuiche
 
Inscription : septembre 2010
Messages : 1 366
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 366
Points : 2 589
Points : 2 589
Effectivement, maîtriser un langage en soi ne saurait suffire. A cela il faut ajouter, en vrac :
  • Algorithmique : impérativement maîtriser (savoir utiliser) toutes les structures de contrôle de ton langage (if, switch, while, for, etc), la récursivité et comprendre la complexité algorithmique. Ce sont les bases.
  • Algorithmes : connaître et comprendre quelques algorithmes célèbres, au moins ceux que l'on utilise tous les jours (QuickSort, BubbleSort, Hoffman, etc). Plus en on connaîtra, plus on élargira sa palette et on est parfois surpris de pouvoir exploiter des connaissances d'un domaine dans un autre qui n'avait a priori pas grand chose à voir. Ne jamais hésiter à faire des recherches sur les problèmes qui semblent très complexes a priori : souvent les solutions sont plus simples qu'on ne l'imaginait. C'est plaisant, utile et valorisant.
  • Structures de données : élargir sa palette, des listes aux piles, en passant par les red-black trees, les binary space partitions, les hash-based dictionnaries, etc. La plupart des problèmes de perfs sont résolus par le choix d'une structure de données adaptée.
  • Conception : connaître ses principes de conceptions (SOLID, DRY, etc) et ses motifs de conception (design patterns). Comprendre les mots "mutable", "pur", etc.
  • Connaître ses outils : tout langage vient avec un certain bagage, soit en standard, soit via des biblios réputées et largement utilisées. Il faut bien les connaître et comprendre comment ils fonctionnent. Connaître son IDE et tous les softs utilisés.
  • Style : savoir rédiger efficacement un code, le rendre lisible, utiliser les commentaires de façon pertinente (moins de doc systématique, plus de doc sur les points flous, ambigus, complexes), etc. "Coder proprement" est un ouvrage de référence à cet égard. Veiller à nommer intelligemment membres et types. Savoir jouer entre guard clauses et branchements imbriqués.
  • Déboguage : savoir utiliser son débogueur, savoir quand lire les événements systèmes, savoir obtenir un plans de requête SQL, faire un usage judicieux des logs, savoir utiliser un profiler, etc.
  • Assurance qualité : comprendre les différents tests existants (unitaires, fonctionnels, etc), les métriques de code, utiliser des assertions en mode debug, ses éventuels outils de qualité de code.
  • Internationalisation : comprendre ce qu'est Unicode, savoir que dans certains langages deux glyphes concaténés sont remplacés par un seul nouveau glyphe, garder en tête que certains lisent de gauche à droite, que le formatage des nombres et des dates est culturel, que tous n'utilisent pas les mêmes unités, etc.
  • UI : chercher à faire une interface standard et qui fonctionne plutôt qu'un truc révolutionnaire et impossible à comprendre, ou kikoo mais pas fonctionnel. Penser "simple" et "standard". Ne pas hésiter à copier ce qui existe et fonctionne. Lire et respecter les guidelines de l'OS. Respecter les choix utilisateurs en matière de fontes, de tailles et de couleurs. Connaître les problématiques d'accessibilité (10% de handicapés avec le vieillissement de la population, de l’arthrite qui rend malaisé le double clic aux mal voyants, aveugles, sourds et tétraplégiques).
  • Connaître ses standards : XML, XSLT, XPath, JSON, SQL, etc.
  • Métal : comprendre le processeur et le code généré par ton langage. Comprendre HTTP, TCP/IP, les DNS, etc.
  • Parallélisme : comprendre la différence entre un processus et un thread, comprendre un thread, connaître ses primitive de synchronisation, les opérations atomiques, savoir si le double-checked lock est fiable sur la plateforme visée, avoir une ou deux structures de données lock-free sous la main, etc. Avoir une bonne biblio sous la main.

Voilà, il y en a pour plus de dix ans de boulot, bon courage.
Dernier conseil : s'impliquer dans un projet conduit par des développeurs doués, matures et accessibles. Lire le code et discuter avec eux sera instructif. Si ce n'est pas possible au boulot, il y a des projets open source qui peuvent t'intéresser.
DonQuiche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h33.


 
 
 
 
Partenaires

Hébergement Web