Je veux apprendre à programmer de manière «évolutive», si vous le souhaitez. Bien que Windows domine le marché des systèmes d'exploitation de bureau (pour l'instant), il est évident qu'il y a beaucoup de valeur à apprendre ses langages / cadres / API, etc. - cela pourrait être sujet à changement à mesure que de nouveaux appareils émergent ou que Windows se tire dans le pied (sur les aperçus conviviaux de Windows 8 ne semblent pas trop attrayants ...).
Aurais-je raison de penser qu'avoir une solide connaissance de C / C ++ pour la logique dorsale / la programmation de bas niveau et similaires, combinée à un langage extrêmement portable comme Java pour les interfaces graphiques et ainsi de suite, serait une bonne base pour le développement de logiciels qui se révélera utile sur la plupart des systèmes? - Je parle de PC de bureau, de tablettes, de téléphones.
la source
Réponses:
Si vous voulez être à l'épreuve du temps, le meilleur conseil que je puisse vous donner n'est pas de vous enfermer dans une technologie.
Alors, n'apprenez pas les API à l'aveuglette. Apprenez comment ils sont conçus. Quelles sont les philosophies derrière la scène? Quels sont leurs avantages et leurs défauts? Pensez aux logiciels en général, pas à une technologie spécifique.
Vous pouvez également travailler sur une bonne conception de programme, aller à OOP et AOP est un bon choix OMI. Mais ne vous contentez pas de comprendre le mécanisme, travaillez vraiment sur la philosophie derrière le mécanisme.
Ne négligez pas l'informatique générale, comme les structures de données et les algorithmes, car ce sont des connaissances trans-technologiques qui sont toujours utiles.
Optez également pour les bonnes pratiques. Vous avez souvent une douzaine de façons de faire quelque chose, mais la plupart d'entre elles sont de la merde: sujettes aux bogues, difficiles à maintenir, difficiles à comprendre plus tard ou par un autre programmeur, etc. . . Habituellement, le code est plus difficile à lire qu'à écrire. Apprenez donc à consacrer un peu plus d'efforts à l'écriture pour faciliter la lecture (car vous lirez plus de code que vous n'écrivez).
Apprenez des techniques efficaces de débogage (utilisation intelligente du journal et du débogueur) et de test (comment écrire du code qui peut être testé facilement et comment automatiser ces tests).
Ensuite, vous aurez besoin d'une formation technologique générale. Je parle de connaissances très larges, comme le fonctionnement d'un processeur (le cache cache ou la prédiction de branche sont un bon début), sur les systèmes UNIX, sur les protocoles réseau comme IP, TCP et Ethernet, etc. . .
En fin de compte, apprenez à apprendre. Si vous savez apprendre, vous pouvez vous adapter.
Vous aurez besoin de solides connaissances dans des technologies spécifiques pour trouver un emploi, mais celles-ci sont obsolètes très rapidement (pensez à COBOL par exemple, ou à la programmation Web au moment de la guerre IE / Netscape). Ne comptez donc pas sur eux pour être à l'épreuve du temps. Ils seront essentiels pour être embauchés, mais certainement pas ce qui fait un excellent programmeur et ce qui rendra vos compétences durables au fil du temps.
EDIT: Si vous débutez, vous devriez définitivement faire quelque chose. Rien? Vraiment. Un jeu comme Tetris ou serpent est un bon début et amusant. Si vous ne faites pas avancer les choses, vous passerez beaucoup de temps à apprendre et n'obtiendrez vraiment pas l'expérience nécessaire pour bien comprendre ce que vous apprenez.
Prenons un exemple avec des modèles de conception. Les modèles de conception sont excellents et vous devez les utiliser définitivement. Mais s'ils sont surutilisés, ils rendront votre code compliqué et difficile à comprendre. Vous devrez faire face au problème qu'un modèle de conception résout et perdre du temps à essayer de le résoudre ou à ses effets secondaires pour bien comprendre en quoi consiste le modèle de conception. Les modèles de conception doivent être utilisés comme de petits refactorings au fil du temps lorsque le code se développe. Et vous saurez quand un modèle de conception est nécessaire lorsque l'avantage en est supérieur à la complexité du code induite par son utilisation. Cela nécessite de l'expérience.
Alors définitivement, faites avancer les choses, apprenez-les de vos erreurs. Je ne peux pas insister davantage: FAITES LES CHOSES !
la source
Ce qui sépare les bons programmeurs des mauvais, c'est leur capacité à programmer dans N'IMPORTE QUEL langage. Comme d'autres affiches l'ont noté, la connaissance de tout langage significatif orienté objet vous donnera les outils nécessaires pour créer d'excellents programmes et être en demande.
Aussi, si vous êtes encore à l'école, assurez-vous de prendre des cours d'écriture. Les meilleurs ingénieurs et programmeurs sont également ceux qui communiquent bien leurs idées.
Une fois que vous commencez à travailler, la meilleure chose à faire pour éviter d'être obsolète est de suivre les tendances actuelles. N'ayez pas peur de quitter un emploi pour un autre s'ils n'utilisent pas la technologie actuelle ou ont des processus terribles, etc.
la source
La réponse de @deadalnix est bonne. J'y ajouterais trois choses:
la source
Puisque vous êtes au début, je dirais juste apprendre une langue, peu importe laquelle. La difficulté n'est pas dans le langage (syntaxe) lui-même, mais dans la compréhension des concepts; et ces concepts de programmation généraux s'appliquent à tous les langages de programmation, donc l'apprentissage de votre deuxième et troisième et quatrième (...) langage sera beaucoup plus facile.
Donc, au début, ne pensez pas trop à être «à l'épreuve du temps». Cependant, à mesure que vous progressez, essayez de maîtriser des langues très différentes les unes des autres. Fondamentalement, (comme vous l'avez dit), vous devriez être à portée de main avec un langage de bas niveau (-ish) comme C / C ++, un langage de programmation de niveau supérieur tel que Java et également un langage de script (Python, Ruby, etc.). Si vous voulez entrer dans les trucs vraiment avancés, vous devez également connaître Assembly.
Mais ne vous en faites pas trop pour l'instant. Apprendre à programmer prend des années. Pour le moment, choisissez simplement un langage comme Java ou C # ou autre et allez-y. :)
la source
If you want to go into the really advanced stuff you must also know Assembly
- Vous pouvez le faire à n'importe quel niveau, les défis sont juste différents.Non. Rien de tout cela ne vous aidera.
Une solide connaissance des structures de données et des algorithmes - indépendamment de tout langage de programmation spécifique - est plus précieuse que la "programmation de bas niveau et similaires".
Un «langage extrêmement portable comme Java» est tout aussi portable que C et n'aide pas. La prochaine grande chose sera si différente de ces langages que votre Java super portable sera un handicap, pas un atout.
Mac OS (ordinateur de bureau, tablette et téléphone) est entièrement réalisé dans l'objectif C. Cela pourrait être un point de départ.
Windows (bureau, table et téléphone) se fait en C #. Ce pourrait être un point de départ.
la source