Apprendre le C # comme première langue est-il une erreur? [fermé]


26

Je sais qu'il y a des questions similaires ici, que j'ai lues, mais j'ai récemment lu ce post de Joel Spolsky:

Comment puis-je enseigner à une personne brillante, sans expérience en programmation, comment programmer?

Et cela m'a fait réfléchir à ma façon d'apprendre et à savoir si cela pourrait être nocif à long terme.

J'ai essayé divers langages mais C # est mon premier sérieux, j'ai lu "Head First C #" et créé quelques projets. Mais après avoir lu le post ci-dessus, j'ai trouvé un peu décourageant de me tromper, je respecte évidemment l'opinion de Joel, ce qui m'a un peu égaré.

J'ai commencé à lire "Code" comme recommandé dans la liste de lecture et je trouve cela assez difficile, bien que agréable. J'ai l'impression que cela a fait briller mon "piratage de noobish about" dans Visual Studio.

Alors maintenant, je ne sais pas quel chemin prendre? Dois-je prendre du recul et suivre les conseils de Joel et commencer à lire?

Je suppose que mon objectif principal est simplement de devenir un bon programmeur, comme tout le monde, mais je ne veux pas me lancer dans de mauvaises pratiques en apprenant un langage .NET lorsque quelqu'un que je respecte estime que c'est nuisible.

Pensées?


4
L'apprentissage de la CS à la dure peut être fait, mais seulement si vous avez un bon professeur.
Job

5
C # n'était pas ma première langue, VB.net l'était et je peux vous dire que ce n'est pas ainsi que vous commencez qui compte. Je pense que C # sera un excellent langage de départ, n'oubliez pas de toujours vous demander pourquoi les choses sont faites comme elles sont.
Daniel Little

23
Non. Toute langue en tant que première langue est bonne pour apprendre la théorie de l'informatique. Certes, pour en faire une carrière, certaines langues sont meilleures que d'autres, mais à des fins d'apprentissage, tout est bon. Certains des meilleurs programmeurs que je connaisse ont commencé avec BASIC sur un C64, Apple II ou TI-99 / 4A. Cela ne leur a pas pourri le cerveau, mais les a exhortés à passer à la langue suivante, puis à la suivante.
Jesse C. Slicer

5
En outre, cela dépend de ce que vous prévoyez de faire avec ces connaissances. C # résout les problèmes commerciaux jour après jour où je travaille. Je n'ai pas regardé C à la limite de 2 décennies et je me sens dégueu quand je le dois.
Jesse C. Slicer

19
Apprendre quelque chose n'est jamais une erreur. C'est toujours bien mieux que de ne pas apprendre .
SK-logic

Réponses:


80

J'ai tamponné avec différents langages mais C # est mon premier sérieux, j'ai lu "Head First C #" et créé quelques projets. Mais après avoir lu le post ci-dessus, j'ai trouvé un peu décourageant de me tromper, je respecte évidemment l'opinion de Joel, ce qui m'a un peu égaré.

Je respecte également les opinions de Joel, mais ce ne sont que des opinions . Il n'y a absolument rien de mal à utiliser C # comme langage de départ.

Le plus grand conseil que je puisse vous donner, ou à quiconque fait de la programmation (même s'ils commencent en vanille C!) Est de ne pas stagner et de ne pas être religieux . Je ne me soucie pas de ce langage de programmation que vous commencez avec, ou comment pur ou juste que la langue est - à ce jour et l' âge , vous ne pouvez pas se permettre de rester dans seulement monde de la programmation.

Par exemple, j'ai commencé à programmer avec PHP3 à l'adolescence. J'ai construit quelques petites applications Web et quelques sites Web avec elle; Je pensais que j'étais un programmeur génial et que je pouvais faire n'importe quoi avec PHP3, et fronçais les sourcils aux gens qui étaient tous sur ASP ou BASIC. Garçon, avais-je tort.

Je n'ai pas vraiment commencé à m'épanouir en tant que développeur avant de commencer à élargir mes horizons et à étudier d'autres langages et concepts de programmation. Au lycée, j'ai appris quelques RealBASIC, puis Visual Basic. Après l'école de commerce, quand je suis devenu développeur professionnel, j'ai commencé à apprendre sérieusement le C # et le Javascript.

Maintenant, ne vous méprenez pas ici - je ne préconise pas que vous essayez d'être un Jack of All Trades. Dans l'âme et dans le commerce, je suis toujours programmeur PHP. PHP est mon pain et mon beurre, et je le connais à l'intérieur comme à l'extérieur. Cependant, mes compétences PHP ne sont pas devenues ce qu'elles faisaient juste PHP. Voici quelques concepts très importants que je n'ai pas compris de PHP, malgré le fait de travailler professionnellement.

  • Javascript: fermetures
  • jQuery (oui, séparé): le DOM et Ajax
  • Visual Basic: programmation orientée objet
  • C #: génériques et fermetures
  • Ruby (on Rails): la puissance de la conception MVC

Je pourrais continuer ainsi que beaucoup d'autres sur ce site pendant des jours. Même si je suis un programmeur PHP, j'ai pu ramener tous ces autres concepts merveilleux avec moi dans le travail que je fais tous les jours.

Quel est mon point? Apprenez C #. Devenez un maître de C # - vous aurez une longue carrière réussie et vous accomplirez probablement des choses incroyables. Mais ne vous pigeonnez pas vous-même. Voyagez et goûtez à d'autres langues, environnements et concepts.


+1: @toleero - C # ou Java est parfaitement adapté pour commencer à apprendre. Joel et Paul Graham Beating the Averages essayaient de passer outre le fait que les développeurs stagnent avec les langues qu'ils ont choisies, car cela est trop courant.
Justin Shield

Soit dit en passant, Objective-C enseigne également le MVC, mais il est moins conventionnel.
Moshe

4
+1. À mon avis, vous ne pouvez pas vraiment être un grand développeur et un maître de votre langue principale, sans avoir appris et joué avec d'autres langues. C'est la meilleure façon d'élargir vos connaissances et d'apprécier vraiment les points forts de votre langue principale.
Niklas H

3
+1. Les mots clés à retenir sont les mots qu'il a choisi de mettre en gras. Il est trop facile d'apprendre quelque chose comme Java et C #, ou même C et de passer 10 ans de votre vie à écrire du code comme vous l'avez toujours fait. Poussez-vous, apprenez une nouvelle langue chaque année. Remettez en question ce que vous faites, essayez de trouver un meilleur moyen. Et le plus important, restez impliqué sur les programmeurs et StackOverflow.
Andrew T Finnell

Vous pouvez faire tous ces exemples en C #. Dom / ajax: bibliothèques C # xml et ajax. Orienté objet? Vérifier. MVC? Framework mpc Asp.net.
Carra

21

quand quelqu'un que je respecte respecte pense que c'est nocif.

Cela me rappelle une histoire impliquant Richard Feynman. Un étudiant de Caltech a demandé à l'éminent cosmologiste Michael Turner quel était son "parti pris" en faveur d'un type de particule comme candidat pour comprendre la matière noire, et Feynman a répondu "Pourquoi voulez-vous connaître son parti pris? Formez le vôtre!" ... Ne faites pas attention aux autorités, pensez par vous-même. "

Les programmeurs viennent de tous les horizons. Le Java est enseigné dans de nombreux lycées et collèges aujourd'hui, mais il n'avait même pas été inventé lorsque Joel Spolsky était à l'école. Il n'y a pas de "voie unique" pour devenir un bon programmeur. Il y a certainement des classiques comme SICP que la plupart des programmeurs rencontrent à un moment donné, mais il n'y a pas de norme stricte et rapide. L'essentiel est de commencer quelque part et de se concentrer sur la construction de concepts. Un grand programmeur a dit quelque chose comme:

Les mauvais programmeurs se concentrent sur le code, les bons programmeurs se concentrent sur les algorithmes.

Je pense que C # est un bon langage pour commencer, mais je vous préviens de vous méfier de Visual Studio. C'est un formidable IDE, mais si vous faites glisser un DropDownListet le liez GridViewà un ObjectDataSourceet utilisez un Buttoncontrôle pour effectuer une DropDownListrecherche basée, alors la plupart du travail est effectué par l'IDE et vous n'êtes pas vraiment en train de programmer. Profitez des outils IDE, mais essayez toujours de construire des concepts et de développer des connaissances.


Une réponse impressionnante.
Yasir

3
Vous dites d'abord "Les bons programmeurs se concentrent sur les algorithmes" puis vous dites "le travail est fait par l'IDE et vous ne programmez pas vraiment". Lequel est-ce? Je peux écrire un programme, faire le bon travail et ne pas me soucier des "détails d'implémentation" comme GridView et DropDown (en supposant que j'en sais assez pour choisir les bons et comment les implémenter correctement). +1 pour le reste de la question, mais l'utilisation d'un IDE ne vous empêche pas d'être un bon programmeur.
WernerCD

@WernerCD - Quand j'ai dit "le travail est fait par l'IDE", je faisais référence à l'exemple spécifique que j'ai donné. Si vous prenez un enfant qui n'a jamais fait de codage et lui demandez de suivre les instructions étape par étape dans un IDE, il créera une page de travail, mais il ne programme pas. Je pense que les IDE sont incroyablement utiles pour le travail de programmation, mais en tant que débutant complet, vous feriez mieux d'apprendre ce qu'est la récursivité au lieu de faire glisser les contrôles.
BlackJack

2
@Graham - Désolé, mais je ne suis pas d'accord. Il n'essaie pas d'apprendre l'informatique ou le développement de logiciels - il essaie d'apprendre la programmation. À mon avis, il vaut mieux laisser les outils IDE pour plus tard après que vous soyez réellement un programmeur compétent.
BlackJack

16
La clé est qu'un bon développeur ne croit pas à la magie . Le travail effectué par l'IDE (ou tout autre outil) est une commodité, un raccourci, mais pas un remplacement pour la compréhension .
Bevan

7

Je suis juste un junior, mais avec toute l'humilité et le respect pour ceux qui sont infiniment plus expérimentés, je dois avouer que je n'ai pas cette attitude non plus.

Un programmeur a commenté ci-dessous la réponse de Joel: " comme quelqu'un qui a dû se cogner la tête sur le bureau au-dessus de" programmeurs "qui étaient fortement recommandés pour leurs capacités C #, mais ne pouvaient pas faire des choses simples comme implémenter une classe de base très bien documentée, trouver fuites de mémoire dans les programmes c et c ++ " ...

Mais pourquoi la recherche de fuites de mémoire dans les applications C ++ doit-elle être simple pour quelqu'un qui n'a jamais prétendu connaître le C ++? :) Je ne comprends pas. C'est comme critiquer un psychologue pour son manque de compétences dentistes. Je ne suis sûrement pas un bon programmeur, mais je pense que ce n'est pas parce que je ne sais pas C ++ - il est parce que je ne sais pas assez bien le cadre et les langues que je suis utilise.

"ne pouvait pas faire des choses simples comme implémenter une classe de base très bien documentée (...) ou simplement trouver un problème par lui-même ou apprendre une nouvelle idée même à un rythme modéré"

D'accord, mais - corrélation ne signifie pas causalité, et qu'est-ce qui nous fait supposer que leur manque de compétences générales en programmation - dont je ne doute pas - est le résultat de leur choix de langue?

Ou un effet de C # étant leur première langue de choix, d'ailleurs?

Je peux voir d'autres explications plausibles (peut-être que C # est juste à la mode, et donc il attire beaucoup de novices ... la plupart des gens pour qui C # est la première langue n'ont pas programmé très longtemps du tout , et c'est plus un handicap dans son propre droit que de ne jamais programmer dans une autre langue ... etc., etc.).


C'est plus comme critiquer un charpentier qui ne peut utiliser que des outils électriques. Même dans les langages récupérés, savoir combien de temps vos variables doivent rester est une compétence fondamentale. Si vous ne pouvez pas reconnaître la durée de vie prévue d'une variable alors qu'un flagrant freevous regarde droit dans les yeux, comment allez-vous la reconnaître dans un programme écrit dans un langage qui ne fournit pas de tels indices?
Karl Bielefeldt

1
Je vois ce que tu veux dire. Je sais que les bases de la vie de variables ( à peu près autant que je peux avoir besoin en C # sur une base quotidienne: la portée, using, IDisposable, gestionnaires d'événements faisant référence à leurs auditeurs , etc.), mais je ne pouvais même pas tenter sérieusement de diagnostiquer une mémoire fuite dans une application C ++, car je ne connais même pas la syntaxe! Je ne sais pas ce que signifie l'astérisque.
Konrad Morawski

5

Je dirais qu'apprendre une langue et s'y tenir est plus une erreur que de décider avec quelle langue vous devriez commencer. Il y a des langues que vous pouvez apprendre qui sont plus faciles bien sûr, mais il vaut mieux essayer de commencer à en apprendre une que vous utiliserez beaucoup (dans une école, le choix de la langue est déjà fait par l'école). Après avoir correctement appris un langage et l'avez utilisé activement après quelques mois, vous devriez essayer un autre langage de programmation et comparer.

Dans .NET, il vous est facile d'utiliser deux langages de programmation différents (en quelque sorte ), car vous pouvez basculer entre Visual Basic et C #. Vous pouvez donc apprendre Visual Basic et voir quelles sont les différences. À ce niveau, vous devez maîtriser le codage procédural de base avec les trois structures de programmation de base, si vous pouvez être créatif avec elles toutes (et savoir comment utiliser les variables), alors vous êtes sur le point de devenir un excellent programmeur:

  • Séquence - Le code est écrit en séquence d'étapes qui se succèdent de la manière que vous spécifiez (définit un "saut", étape par étape et gotos)
  • Conditionnel - Le code peut avoir des points de décision (définit les instructions if, switch-case)
  • Boucle / répétition - Le code peut se répéter en fonction d'une décision (qui est une extension des deux ci-dessus, définit les boucles for, do while)

Peu importe si votre langage de programmation secondaire sera le plus actif ou non, sachant simplement que les langages de programmation (spécialement s'ils suivent le même paradigme) sont très similaires les uns aux autres et qu'il y a de petites nuances, cela va vraiment loin. pour vous faire comprendre le fonctionnement de la programmation logicielle.

À partir de cela, essayez au moins une fois par an d'apprendre un nouveau langage de programmation qui suit un autre paradigme de programmation . Vous n'avez pas besoin de suivre complètement la nouvelle langue, mais il existe certains avantages à connaître d'autres paradigmes. Il existe plusieurs paradigmes, et certains langages de programmation se mélangent entre plusieurs (notez que C # a en fait des sous-ensembles les trois suivants):

Les choses les plus importantes que vous devez apprendre, c'est que de nombreux langages de programmation suivent leur propre ensemble d'idiomes et une API de base. Donc, lorsque vous apprenez une nouvelle langue, essayez d'apprendre ces idiomes et API et tout ira bien lorsque vous construirez des choses. Une bonne raison est que vous deviendrez meilleur dans la conception et la résolution de problèmes de programmation. Certains idiomes dans une langue peuvent vous donner un aperçu de la façon de résoudre un problème dans votre langue principale.

Sachez également qu'il existe également une autre très bonne raison pour laquelle vous devriez apprendre d'autres langages de programmation, autres que le langage principal que vous utiliserez le plus: Vos chances d'emploi sont bien plus grandes.


5

L'objectif de votre question et de nombreuses réponses ici est sur C #. De Wikipédia :

Le langage C # est destiné à être un langage de programmation simple, moderne, polyvalent et orienté objet.

Sur cette base, il semble prudent de dire que vous pourriez apprendre le C # comme première langue sans causer de dommages à long terme à votre cerveau. Je ne pense pas que Joel condamnait toute la langue quand il a écrit :

Les tentatives de prendre un raccourci et d'aller directement à l'apprentissage de la chose exacte que vous voulez apprendre maintenant (comme commencer avec C # et ASP.NET) sont condamnées.

Le problème n'est pas la langue, il prend des raccourcis. Trop souvent, les gens essaient de prendre un chemin rapide vers leur objectif final en suivant des didacticiels étape par étape ou des livres «tout apprendre en 24 heures». Vous n'avez pas besoin de passer trop de temps sur Stack Overflow avant de commencer à remarquer qu'il y a beaucoup de questions du type: "Je n'ai jamais écrit de ligne de code de ma vie, mais j'entre dans l'iPhone programmation! Quelqu'un peut-il me donner des instructions étape par étape pour faire exactement ce que je veux faire? Merci! " Je ne dis pas que vous adoptez cette approche, mais c'est quelque chose contre lequel vous devez vous prémunir.

Si vous souhaitez développer de solides compétences en programmation, vous devez commencer par acquérir des compétences fondamentales. Si vous essayez de passer directement aux applications OOP et GUI et autres, vous manquerez probablement ces fondamentaux. Les livres que Joel a pointés sont vraiment très bons. Je n'ai effleuré par le C # Yellow Book (PDF), mais ressemble à c'est probablement une meilleure introduction à la programmation que la plupart des livres de C # je vois dans les magasins.


Je voudrais souligner que le phrasé n'est pas "ne pas apprendre le C #", c'est "C # et ASP.NET" (non souligné dans l'original). Je ne suis pas un programmeur C #, mais .NET et le CLR sont une plate-forme idéale pour commencer à apprendre.
forivall

5

Pour moi, ces trucs dans cet autre article semblaient un peu radoteurs élitistes. Oui, je recommande souvent SICP aux développeurs sérieux qui veulent vraiment s'améliorer, mais seulement à ceux qui veulent aller au-delà de la "norme" et apprendre la magie profonde. En effet, pendant des années, SICP était le texte de programmation de première année du MIT; mais, beaucoup de programmeurs qui travaillaient bien n'avaient jamais eu l'occasion d'assister à cette institution fine mais chère et hautement sélective.

Alors, que dois- je recommander, en réponse à votre question? Commencez avec ce que vous avez et apprenez à penser comme un programmeur, plutôt que d'apprendre simplement un langage spécifique.

S'il vous arrive d'avoir une implémentation C # disponible, eh bien, je peux vous dire que c'est un langage parfaitement adapté à un rigoureux comme moi, tout comme Java, JavaScript, Python, Ruby, Scala, Scheme et les nombreux autres langages que j'ai appris au fil des ans. En fin de compte, j'essaie de sélectionner les bonnes langues et les bons outils pour le travail spécifique à accomplir, ce qui signifie changer de langue comme les chapeaux.

Il n'y a rien de mal à utiliser des façons amusantes d'apprendre, comme approcher Ruby via Why's Poignant Guide and Shoes (comme je l'ai recommandé dans un autre post récent ). Il y a des chemins mystérieux et mystérieux, comme se cogner la tête contre Le Petit Schémeur et Le Schémeur chevronné sur le chemin du SICP . De nombreux penseurs modernes voudraient que vous évitiez tous ces vieux trucs universitaires et "d'entreprise" et que vous plongiez directement dans JavaScript, JQuery et HTML5. Il existe de nombreuses façons de commencer, alors ne perdez pas trop de temps. Choisissez-en un et obtenez le codage!

De manière réaliste, je crois que peu de professionnels travaillant de nos jours vous enverraient en arrière pour apprendre Assembleur ou C / C ++ en premier. Franchement, s'ils le faisaient, je ne pense pas qu'ils vous rendraient un grand service.

Donc, pour embellir un peu "commencez avec ce que vous avez", j'ai trois autres conseils:

  • Choisissez un langage de programmation qui vous semble cool et une approche d'apprentissage qui semble logique et donnez-leur tout. Devenez alphabétisé dans la langue de votre choix; lire autant de bon code que vous pouvez gérer!
  • Mettez immédiatement la main sur votre clavier et commencez à coder au fur et à mesure que vous apprenez. Faites tous les exercices élémentaires dans vos livres de programmation par vous-même et pratiquez tous les didacticiels que vous pouvez trouver avec vos doigts en cliquant joyeusement pour les faire vraiment fonctionner. Vous serez surpris par le nombre de compétences que vous gagnerez en corrigeant les erreurs dans les démos qui sont censées fonctionner, mais ne le sont pas!
  • Consacrez la plupart de vos efforts à apprendre comment les bons programmeurs réfléchissent aux problèmes. Apprenez à analyser et décomposer des problèmes et des systèmes complexes, en les décomposant jusqu'à ce que vous les compreniez vraiment. Apprenez ensuite à synthétiser et à concevoir des solutions automatisées, en les construisant afin qu'elles facilitent certaines tâches pour certains êtres humains sur cette planète.

J'ai commencé avec FORTRAN IV et QBASIC et si ceux-ci ne me ruinaient pas, C # ne vous ferait pas de mal non plus! Bonne chance et assurez-vous de vous amuser pendant que vous apprenez!


Vous pouvez trouver les conférences originales d'Abelson & Sussman ici: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

Je pense que le meilleur conseil que j'ai jamais vu en ce qui concerne les gens qui demandent "Quelle langue dois-je apprendre?" est tout simplement: un bon programmeur peut travailler dans n'importe quelle langue.

Il y a des arguments contre cette affirmation, j'en suis sûr, mais le fait est: apprenez à être un bon programmeur, au lieu d'un expert en langage, d'abord. Les constructeurs ne se spécialisent pas dans la construction sur exactement une parcelle de terrain, ils apprennent les compétences de leur métier et les appliquent sur la parcelle de terrain sur laquelle ils sont requis.


Je vais attribuer +1 à cela. C'est similaire à mon analogie habituelle de la construction de motos. Vous pouvez construire une moto décente en travaillant sur la chaîne de montage et en suivant le livre, mais les constructeurs vraiment géniaux sont les hacheurs qui connaissent les tripes de la moto à l'intérieur et à l'extérieur, et en conséquence, vous obtenez des choses incroyables.
Jarrod Nettles

3

Parfois, je soupçonne que les langues de choix ont beaucoup plus à voir avec nos personnalités et leur manière d'être câblées et beaucoup moins à faire avec des considérations pratiques ou académiques que nous aimerions l'admettre.

Cela dit, apprendre de nouvelles choses n'est jamais dangereux. Vous saurez le jour où vous aurez franchi le seuil vers un cerveau évolué ou peut-être brisé (tout cela est une question de perspective, je suppose) lorsque vous commencerez à réaliser que tout a un manuel. Vous pouvez finalement vraiment faire tout ce que vous voulez si vous avez du talent et êtes réellement intéressé par l'action plutôt que par l'aspect être d'un programmeur.

Au moins jouer avec Python et JavaScript. C'est un avantage d'apprentissage certain de pouvoir vraiment écrire du code et le regarder s'exécuter immédiatement dans un environnement de console accessible aux E / S de fichiers comme IDLE ou un environnement sandbox comme un navigateur. Ce que je n'aime pas à propos de C # et de Java, c'est qu'ils veulent que tout soit confiné aux classes même si vous écrivez vraiment une simple fonction avec des wrappers inutiles autour pour garder vos pairs ou un compilateur trop restrictif heureux. L'autre chose que j'aime avec JS et Python, c'est qu'ils vous permettent vraiment de définir votre propre paradigme. Un peu trop flexible par beaucoup de préférences des développeurs. Je ne sais toujours pas quoi penser de la sagesse de surcharger les opérateurs de base, mais je suis presque sûr que j'aime Python pour avoir permis cette option.

Ne tombez pas non plus dans le mensonge cruel de choisir la langue principale avec le plus d'offres d'emploi. Il vaut mieux être un gros poisson dans les eaux moyennes qui fait ce que vous aimez qu'un membre d'une horde de poissons insupportables pour la plupart merdiques qui transforment chaque recherche d'emploi en une loterie plus qu'un processus d'appariement.


En tant que personne qui embauche dans cette horde de poissons insupportables dans mon travail de jour, je dois être d'accord. Il y a beaucoup de commentaires vraiment utiles dans cette discussion; J'espère que @toleero le trouvera utile et ne sera pas découragé. À mon avis, alors que Joel est un génie, nous ne devons jamais accepter tout ce que quelqu'un dit comme évangile. Les livres qu'il recommande sont utiles. Mais il en va de même du codage au jour le jour et de l'acquisition d'une expérience pratique. Faites cela dans une poignée de langages (disons C # et quelque chose de moins similaire à C - un Basic, peut-être, ou Python ou Ruby) et vous deviendrez au moins aussi bon développeur que beaucoup de gens là-bas: o)
Owen Blacker

3

C # n'est pas aussi mauvais que Java par un tronçon considérable. Ils prennent mieux en charge de nombreux concepts tels que la programmation fonctionnelle, la programmation générique, la destruction déterministe et les types de valeur, la surcharge des opérateurs, etc. ce n'est pas du C ++.

Deuxièmement, je pense que vous avez mal lu ce que Joel a dit. Si vous pouvez maîtriser les pointeurs et la récursivité, peu importe la langue que vous utilisez maintenant. La chose la plus importante serait d'utiliser un peu de unsafecode, de se familiariser avec unsafe quicksortquelque chose, puis de revenir au reste du C # normal.

Oh, et lisez :)


2

Le premier langage productif pour moi était C #. Même si j'avais joué avec Foxpro à l'école et un peu de C au Collège. C # est un bon point de départ pour tout le monde. Il suit les principes généraux de la programmation comme le typage fort, l'encapsulation, l'héritage, etc. que je crois qu'il faut toujours apprendre, peu importe s'ils les utilisent ou non. Plus tard, vous pouvez toujours passer à d'autres langages comme Python qui ne suit pas la standardisation de la programmation fondamentale.

L'autre facteur d'ajout que les gens n'ajoutent pas vraiment à l'aspect d'apprentissage de C # est la disponibilité du meilleur IDE pour n'importe quel langage que j'ai vu. Eclipse IDE est également bon, mais une fois que vous aurez utilisé Visual Studio, vous remercierez Microsoft.

C # étant amélioré par rapport à C, vous évite d'avoir à apprendre d'autres langues au préalable. Tous les langages sur une dizaine d'années ont évolué de la nature du C, même le JAVA.

Donc, le verdict est, C # est un excellent point de départ qui vous permet d'apprendre rapidement d'autres langues à l'avenir


Eclipse est beaucoup mieux pour moi que Visual Studio. Mais je suis d'accord avec vous - C # serait un excellent langage, surtout s'il n'était pas détenu par et enfermé dans le sombre seigneur destructeur de Redmond .
Thomas W

2

Apprendre le C # comme première langue n'est pas une erreur tant que vous passez tôt ou tard à l'apprentissage d'une deuxième langue. C'est beaucoup plus important. Encore mieux si cette seconde langue est quelque peu différente de C # (javascript ou ruby ​​serait à cet égard meilleur que java). Chaque langue a ses avantages et ses inconvénients, et ce sont les différences qui feront de vous un meilleur programmeur à long terme.


1

Autant que je vous conseille d'apprendre de nombreuses langues (comme le suggèrent les autres), assurez-vous de connaître une ou plusieurs langues que vous apprenez très bien.

Le risque de connaître de nombreuses langues est que vous pourriez ne jamais apprendre une langue complètement frustrante lorsque vous voulez réellement résoudre un problème.

La connaissance de la construction for-loop dans de nombreuses langues est amusante mais inutile si vous ne savez pas comment gérer les erreurs dans aucune d'entre elles.


1

Ne vous inquiétez pas du fait que vous avez appris le C # en premier. Cela revient à s'inquiéter que votre premier pas ait été fait avec votre pied gauche ou votre pied droit. La seule différence entre l'apprentissage d'une langue gérée en premier est que vous ne faites que retarder lorsque vous devez apprendre des pointeurs et une gestion détaillée de la mémoire. Cela peut réellement fonctionner en votre faveur, car quand il est temps d'apprendre C, la seule nouvelle chose dont vous vous inquiétez est la gestion de la mémoire - vous ne jonglerez pas également avec les techniques de contrôle, le concept de fonctions, etc. pouvoir se concentrer entièrement sur les pointeurs et la gestion de la mémoire.

Le stéréotype existe parce qu'il y a des programmeurs de langage géré qui n'ont jamais fait cette deuxième partie et appris le C et C ++, puis appliqué aux travaux C et C ++.

C'est comme apprendre un instrument de musique - le premier est difficile parce que vous essayez d'apprendre les mécanismes de lecture de la musique écrite ET les mécanismes physiques d'articulation d'un instrument pour faire ce que vous voulez. Pour le deuxième instrument et les suivants, vous apprenez que vous pouvez vous concentrer uniquement sur ce qui rend cet instrument différent de ce que vous savez déjà.


1

C'est dur pour le novice, sans aucun doute. J'ai fait vb, javascript, PL / SQL, T-SQL, Uniface et un peu de C # pour n'en nommer que quelques-uns.

Quelqu'un a mentionné précédemment Visual Basic comme l'endroit où ils ont appris la programmation orientée objet, et pour être honnête, VB.NET a la syntaxe la plus facile à comprendre de tous les langages que j'ai jamais vus. La meilleure caractéristique est que les mots clés correspondent étroitement aux concepts décrits.

Par exemple, la fonction myHandler () gère myButton.click

ou classe Human Extends mammifère implémente intelligentLifeform

Sérieusement, pour plus de lisibilité lorsque vous êtes novice, à quoi voudriez-vous que la syntaxe ressemble?

Lorsque vous recherchez des propriétés et des méthodes (et distinguez les sous-fonctions et les fonctions), il est beaucoup plus facile de lire dans VB.

De même lors de la déclaration de variables

Dim myString As string - évident quel est le type et quelle est l'instance

La sensibilité à la casse C # encourage ce qui est pour moi une très mauvaise habitude - avoir le même nom pour la classe et l'instance avec un en majuscule et un en bas.

par exemple

Humain humain

  • y a-t-il sérieusement si peu de mots dans votre vocabulaire que vous devez réutiliser ceux existants en majuscules?

si vous appelez human.think, il serait facile de confondre une instance avec une classe et de penser que vous appeliez une méthode statique en un coup d'œil. Et regarder est souvent la façon dont nous percevons le code, nous n'avons pas le temps de survoler chaque élément pour laisser l'éditeur nous dire ce qui se passe.

C # pourrait avoir certains avantages, mais il est beaucoup plus difficile de commencer - même s'il enregistre la saisie. C'est pourquoi il devrait définitivement y avoir une place pour les deux langues.


+1 pour Humain humain. Ayant c # comme 2ème langue (pain et beurre = Delphi) via un livre plutôt que d'avoir une expérience approfondie avec le code existant, cela fait toujours mal à mon cerveau de voir cela. Bien qu'il y ait des parties du langage que j'ai vraiment aimé, faire glisser la sensibilité à la casse à partir de C était une grosse erreur à mon humble avis.
Matt Allwood

Bien sûr, parce que Dim myHuman as Humanc'est tellement mieux? : D
scrwtp

0

Le plus gros inconvénient que je peux voir est que Visual Studio et les outils associés sont très, très agréables - des choses comme intellisense et la complétion de code peuvent facilement devenir des béquilles. Je dirais généralement que l'environnement peut être si agréable et si favorable que vous avez tendance à vous sentir un peu perdu lorsque vous devez, par exemple, pirater du code ruby ​​dans un éditeur de texte. Oh, et vous manquerez généralement des trucs comme linq aussi.


0

C # est parfaitement bien pour commencer la programmation.

C'est ce qu'on m'a dit de commencer, sans même avoir la chance de me plonger dans autre chose (à part le Hello World en Java, quelques trucs de base de LOGO et quelques trucs dans Scratch, mais rien de "sérieux").

Dans l'ensemble, cela peut être difficile - il y a beaucoup de choses qui ne semblent pas intuitives, et elles ont leurs limites, mais je pense que cela encourage un bon codage et est génial une fois que vous avez compris. Je veux dire, cela vous donne plus de puissance et est un peu plus professionnel que Python (ce qui est généralement suggéré), et cela ferait toute une différence - essayer C ++ après C # n'était pas trop douloureux, mais si j'avais commencé avec Python, alors ce serait en effet un très gros obstacle, même juste au niveau de la syntaxe.

En outre, il a un bon support multiplateforme sous la forme de Mono (pour ceux d'entre vous qui pensent que Mono n'est pas un gros problème - le moteur de jeu Unity vous permet de coder dans une version de celui-ci). Il est également très utile pour la plupart des choses, qu'il s'agisse de scripts de jeu, de conception Web ou d'applications Windows. Bien sûr, certains langages seront meilleurs pour certaines lignes, donc cela dépendra de la direction générale dans laquelle vous prévoyez d'aller - par exemple, si vous allez dans la direction Web, alors C # (ASP.NET) serait certainement un bonne idée. Si vous prévoyez de vous lancer dans les jeux, vous devriez plutôt penser au C ++.

En fin de compte, cela vaut la peine de l'apprendre, même si vous ne finissez pas par l'utiliser en faveur de la simplicité de Python ou de la nature archaïque de Java (car le cycle de publication de Java est VRAIMENT lent) - vous apprenez un bon codage pratiques, tout en n'étant pas trop compliqué pour un débutant à apprendre.


ce post est assez difficile à lire (mur de texte). Pourriez-vous le modifier sous une meilleure forme?
moucher

1
Comment c'est? Toujours difficile à lire, ou ok maintenant? Merci en passant pour les avertissements.
Sbspider

-1

Pour être programmeur, il faut avoir de la passion. Les programmeurs que je connais sont ceux qui se mettent en quatre pour apprendre et remarquer les changements de l'industrie. J'ai commencé ma programmation avec de base sur un Commodore Vic 20 (oui cet ancien) et j'ai continué à passer à d'autres nouveaux langages. Une partie de mes années de programmation a même inclus COBOL. J'ai également commencé à remarquer que certaines langues fonctionnaient mieux dans certains processus que dans d'autres. Mon conseil est d'apprendre n'importe quel langage et de comprendre les concepts de programmation de base comme les boucles, les méthodes, les comparaisons. La plupart des langues prennent en charge ces trois concepts. Vous ne devez jamais dire "C'est la meilleure façon" mais plutôt "Comment puis-je améliorer cela". La pire chose à propos de cette dernière phrase est que vous pourriez vous rattraper sur l'ingénierie. La programmation est amusante, amusez-vous! Internet a ouvert une toute nouvelle façon de vivre la programmation car le niveau d'accès que nous avons aujourd'hui à l'information est stupéfiant. Pour moi, avant Internet, je devais aller à l'étagère et descendre les livres de programmation IBM GRIS et apprendre. Aujourd'hui, vous pouvez simplement taper une chose dans google et whammo.


2
ce post est assez difficile à lire (mur de texte). Pourriez-vous le modifier sous une meilleure forme?
moucher

-3

Wow beaucoup de réponses. Voici mon point de vue:

C # n'est pas un endroit pour apprendre l'informatique. Je le vois comme une très mauvaise idée. Je vais énumérer certaines de mes préoccupations ci-dessous.

  • C # est un langage Microsoft. Ce n'est pas que je juge la SEP ici, mais qu'en dehors du monde de la SEP, il y a peu d'adoption. Si vous voulez simplement programmer du matériel MS, allez-y, mais je ne vois pas cette approche solide de l'informatique.
  • Je ne suis pas un grand fan de l'apprentissage de la programmation avec des langages gérés. Je crois que leur valeur est d'apprendre à gérer une mémoire de programmes et la construction de structures de données.

Trop fatigué pour continuer si vite, choisissez une autre langue.


Je peux comprendre si vous pensez que vous attacher à la SP serait mauvais pour votre carrière. Mais qu'est-ce que cela a à voir avec l'apprentissage de l'informatique? CS n'a rien à voir avec les plateformes ou les entreprises.
svick

-3

Je recommanderais C # ou n'importe quel langage qui offre ces trois choses à la base:

Entièrement typé compilé et entièrement orienté objet ..

Une première langue qui offre ces trois cœurs en apprendra beaucoup sur le déroulement du programme, la syntaxe et comment résoudre les problèmes de manière plus structurée. Je vis et respire à l'intérieur d'un tas de langues formidables qui n'ont pas ces attributs, mais si j'enseignais une langue à quelqu'un, j'en choisirais une qui aurait ces trois exigences.


-6

Non, cette réponse est terrible. Pourquoi? Eh bien, il prescrit de bons livres que vous devriez lire, mais sans travail en classe et travail en laboratoire (laboratoire informatique), vous serez perdu et frustré. Vous devez être avec un tas d'autres nouveaux programmeurs expérimentant car il y a tellement de choses à apprendre autre que ce qui est dans ces livres. Je ne dis pas que vous devez opter pour un BSCS, mais vous devez également avoir accès à un instructeur compétent quand un tas de choses peuvent mal se passer à tout instant, comme des problèmes de compilation, des environnements de construction ... vous l'appelez. Vous ne serez pas un programmeur travaillant dans le vide. Quels que soient les livres dont vos cours ont besoin, cela suffira tant que vous choisissez une école à moitié décente.

Alors, inscrivez-vous pour certains cours et ce sera BEAUCOUP plus amusant! De plus, si vous prévoyez d'obtenir un emploi de programmeur, vous avez besoin de connexions et vous entendrez tout le buzz sur les entreprises qui recrutent sur le campus, etc.

Enfin, l'éducation formelle est très importante car la programmation nécessite beaucoup de connaissances de base théoriques pour comprendre comment les choses sont censées fonctionner à tous les niveaux (hw / sw) afin que vous puissiez comprendre comment réparer les choses. À peu près tout est une boîte noire, vous devez donc être en mesure de comprendre pourquoi quelque chose se comporte de la sorte afin que vous puissiez prendre le prochain coup logique dans l'obscurité. Sans au moins un diplôme de programmation de 2 ans (peu importe comment vous l'appelez), vous serez désavantagé.

PS Je n'irais pas près de .Net, ou C #, jusqu'à ce que vous ayez expérimenté Java. C # n'est pas agréable à l'œil. C'est un code qui semble désordonné et encombré. L'IDE .Net craint au-delà de toute croyance. C'est dans l'âge sombre des normes IDE. Java: C # ~ Données: Lore


10
Je suis avec toi jusqu'au dernier paragraphe. Il exprime votre opinion sur l'esthétique de C # d'une manière si inflammatoire qu'elle ne semble tout simplement pas appartenir à une bonne réponse par ailleurs.
Adam Lear

9
Même avant le dernier paragraphe, c'est surtout un non-sens. Certaines personnes apprennent bien dans une salle de classe - mais pour d'autres, c'est une perte de temps totale. L'apprentissage du contexte théorique est important, mais cela ne nécessite pas nécessairement une classe ou une éducation formelle non plus - ils aident certaines personnes, mais pas (même près de) tout le monde.
Jerry Coffin

Une opinion n'est que cela; ce n'est pas un énoncé de fait. Alors, ne vous sentez pas offensé.
Tom Jones

Vous avez mal compris la recommandation de scolarisation formelle. Vous avez besoin d'un endroit pour poser des questions et collaborer avec vos pairs dans le laboratoire. La collaboration est le concept clé. Désolé si vous êtes un utilisateur C # et je vous ai offensé même si cela devrait être impossible parmi les techniciens passionnés.
Tom Jones

1
Stackoverflow est devenu ce "laboratoire" pour de nombreuses personnes qui ne peuvent pas aller à l'université mais qui souhaitent un soutien communautaire. Est-ce la même chose qu'une classe? Bien sûr que non. Est-ce assez bon? Tu paries.
BlackJack
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.