Ist das Erlernen von C # als erste Sprache ein Fehler? [geschlossen]

26

Ich weiß, dass es hier ähnliche Fragen gibt, die ich gelesen habe, aber ich habe kürzlich diesen Beitrag von Joel Spolsky gelesen:

Wie kann ich einer intelligenten Person ohne Programmiererfahrung beibringen, wie man programmiert?

Und es brachte mich dazu, über meine Art zu lernen nachzudenken und ob es auf lange Sicht tatsächlich schädlich sein könnte.

Ich habe mit verschiedenen Sprachen experimentiert, aber C # ist meine erste ernsthafte, ich habe "Head First C #" gelesen und ein paar Projekte erstellt. Aber nachdem ich den obigen Beitrag gelesen habe, fand ich es ein bisschen entmutigend, dass ich alles falsch mache, offensichtlich respektiere ich Joels Meinung, was mich ein bisschen geworfen hat.

Ich habe angefangen, "Code" zu lesen, wie in der Leseliste empfohlen, und finde es ziemlich schwierig, obwohl es Spaß macht. Ich habe das Gefühl, es hat mein "noobisches Herumhacken" in Visual Studio zum Erliegen gebracht.

Jetzt bin ich mir nicht sicher, welchen Weg ich einschlagen soll? Sollte ich einen Schritt zurücktreten und Joels Rat befolgen und anfangen zu lesen?

Ich denke, mein Hauptziel ist es, ein guter Programmierer zu werden, wie alle anderen auch, aber ich möchte nicht durch das Erlernen einer .NET-Sprache in eine schlechte Praxis geraten, wenn jemand, den ich respektiere, der Meinung ist, dass dies schädlich ist.

Gedanken?

JuniorDeveloper1208
quelle
4
CS kann auf die harte Tour erlernt werden, aber nur, wenn Sie einen guten Lehrer haben.
Job
5
C # war nicht meine Muttersprache bei VB.net und ich kann Ihnen sagen, dass es nicht darauf ankommt, wie Sie anfangen. Ich denke, C # wird eine großartige Ausgangssprache sein. Denken Sie daran, sich immer zu fragen, warum die Dinge so gemacht werden, wie sie sind.
Daniel Little
23
Nein. Jede Sprache als Muttersprache ist gut, um die Theorie der Informatik zu erlernen. Zugegeben, um Karriere zu machen, sind einige Sprachen besser als andere, aber zu Lernzwecken ist alles gut. Einige der besten Programmierer, die ich kenne, haben mit BASIC auf einem C64, Apple II oder TI-99 / 4A begonnen. Es hat ihnen nicht den Verstand verdorben, sondern sie zur nächsten Sprache und dann zur nächsten gedrängt.
Jesse C. Slicer
5
Es hängt auch davon ab, was Sie mit diesem Wissen vorhaben. C # löst Geschäftsprobleme Tag für Tag dort, wo ich arbeite. Ich habe C in den letzten zwei Jahrzehnten noch nicht gesehen und fühle mich schlecht, wenn ich muss.
Jesse C. Slicer
19
Etwas zu lernen ist niemals ein Fehler. Es ist immer viel besser als nicht zu lernen .
SK-logic

Antworten:

80

Ich habe mit verschiedenen Sprachen getupft, aber C # ist meine erste ernsthafte, ich habe "Head First C #" gelesen und ein paar Projekte erstellt. Aber nachdem ich den obigen Beitrag gelesen habe, fand ich es ein bisschen entmutigend, dass ich alles falsch mache, offensichtlich respektiere ich Joels Meinung, was mich ein bisschen geworfen hat.

Ich respektiere auch Joels Meinungen, aber sie sind genau das: Meinungen . Es ist absolut nichts Falsches daran, C # als Startsprache zu verwenden.

Der größte Rat kann ich Sie, oder jemand tut jede Programmierung (auch wenn sie in Vanille-C fängt!) Ist nicht stagniert, und nicht religiös sein . Es ist mir egal, mit welcher Programmiersprache Sie anfangen oder wie rein oder gerecht diese Sprache ist - heutzutage können Sie es sich nicht leisten, nur in der Welt der Programmierung zu sitzen.

Zum Beispiel habe ich als Teenager angefangen, mit PHP3 zu programmieren. Ich habe ein paar kleine Web-Apps und ein paar Websites damit erstellt. Ich dachte, dass ich ein genialer Programmierer bin und mit PHP3 alles machen kann, und runzelte die Stirn, wenn es um ASP oder BASIC ging. Junge, habe ich mich geirrt?

Als Entwickler begann ich erst richtig zu blühen, als ich begann, meinen Horizont zu erweitern und andere Programmiersprachen und Konzepte zu studieren. Während der High School habe ich RealBASIC und später Visual Basic gelernt. Nach der Business School, als ich ein professioneller Entwickler wurde, begann ich ernsthaft C # und Javascript zu lernen.

Verstehen Sie mich hier nicht falsch - ich befürworte nicht, dass Sie versuchen, ein Alleskönner zu sein. Im Herzen und im Handel bin ich immer noch ein PHP-Programmierer. PHP ist mein Brot und Butter, und ich kenne es in- und auswendig. Meine PHP-Kenntnisse haben sich jedoch nicht zu dem entwickelt, was sie gerade mit PHP gemacht haben. Hier sind einige sehr wichtige Konzepte, die ich trotz professioneller Arbeit mit PHP nicht verstanden habe.

  • Javascript: Verschlüsse
  • jQuery (ja, getrennt): DOM und Ajax
  • Visual Basic: Objektorientierte Programmierung
  • C #: Generika und Verschlüsse
  • Ruby (on Rails): Die Kraft des MVC-Designs

Ich könnte tagelang so weitermachen wie viele andere auf dieser Seite. Obwohl ich PHP-Programmierer bin, konnte ich all diese anderen wundervollen Konzepte in meine tägliche Arbeit einfließen lassen.

Was ist mein Punkt? Lernen Sie C #. Werden Sie ein Meister von C # - Sie werden eine lange, erfolgreiche Karriere haben und wahrscheinlich einige erstaunliche Dinge vollbringen. Aber steck dich nicht in die Schublade. Reisen Sie und probieren Sie andere Sprachen und Umgebungen und Konzepte.

Jarrod Nettles
quelle
+1: Mit @toleero - C # oder Java kann man wunderbar anfangen zu lernen. Joel und Paul Graham Beating the Averages versuchten, den Punkt zu überwinden , an dem Entwickler mit ihren gewählten Sprachen stagnierten, da dies nur allzu häufig vorkommt.
Justin Shield
Objective-C lehrt übrigens auch MVC, ist aber weniger konventionell.
Moshe
4
+1. Meiner Meinung nach kann man nicht wirklich ein großartiger Entwickler und ein Meister Ihrer Hauptsprache sein, ohne andere Sprachen gelernt und damit herumgespielt zu haben. Dies ist der beste Weg, um Ihr Wissen zu erweitern und die Stärken Ihrer Hauptsprache wirklich zu schätzen.
Niklas H
3
+1. Der Schlüssel zum Erfolg sind die Worte, die er gewählt hat. Es ist zu einfach, etwas wie Java und C # oder sogar C zu lernen und 10 Jahre Ihres Lebens damit zu verbringen, Code so zu schreiben, wie Sie es immer getan haben. Schieben Sie sich, lernen Sie jedes Jahr eine neue Sprache. Hinterfragen Sie die Dinge, die Sie tun, und versuchen Sie, einen besseren Weg zu finden. Und das Wichtigste: Bleiben Sie mit Programmierern und StackOverflow in Verbindung.
Andrew T Finnell
Sie können all diese Beispiele in C # ausführen. Dom / Ajax: C # xml- und Ajax-Bibliotheken. Objektorientierter? Prüfen. MVC? Asp.net MVC-Framework.
Carra
21

wenn jemand der meinung ist respektiere ich das es schädlich ist.

Das erinnert mich an eine Geschichte mit Richard Feynman. Ein Student von Caltech fragte den angesehenen Kosmologen Michael Turner, was seine "Voreingenommenheit" darin bestehe, einen Partikeltyp als Kandidaten für die Dunkle Materie zu bevorzugen, und Feynman schnappte und sagte: "Warum willst du seine Voreingenommenheit wissen ? Bilde deine eigene! ... Achten Sie nicht auf die Behörden, denken Sie selbst. "

Programmierer kommen aus allen Lebensbereichen. Java wird heute an vielen Gymnasien und Hochschulen unterrichtet, aber es war noch nicht einmal erfunden worden, als Joel Spolsky in der Schule war. Es gibt keinen "einen wahren Weg", um ein guter Programmierer zu werden. Es gibt sicherlich einige Klassiker wie SICP, über die die meisten Programmierer irgendwann stolpern, aber es gibt keinen festen Standard. Die Hauptsache ist, irgendwo anzufangen und sich auf Gebäudekonzepte zu konzentrieren. Ein großer Programmierer sagte einmal etwas wie:

Schlechte Programmierer konzentrieren sich auf Code, gute auf Algorithmen.

Ich denke, C # ist eine gute Sprache für den Anfang, aber ich warne Sie, Visual Studio gegenüber vorsichtig zu sein. Es ist eine enorme IDE, aber wenn Sie ein ziehen DropDownListund ein GridViewan ein binden ObjectDataSourceund ein ButtonSteuerelement verwenden, um eine DropDownListbasierte Suche durchzuführen, wird der größte Teil der Arbeit von der IDE erledigt und Sie programmieren nicht wirklich. Nutzen Sie die IDEs-Tools, aber versuchen Sie immer, Konzepte zu erstellen und Wissen zu entwickeln.

BlackJack
quelle
Eine großartige Antwort.
Yasir
3
Zuerst sagst du "Gute Programmierer konzentrieren sich auf Algorithmen", dann sagst du "die Arbeit wird von der IDE erledigt und du programmierst nicht wirklich". Welches ist es? Ich kann ein Programm schreiben, den Workflow richtig ausführen und kümmere mich nicht um "Implementierungsdetails" wie GridView und DropDown (vorausgesetzt, ich weiß genug, um die richtigen auszuwählen und wie ich sie richtig implementieren kann). +1 für den Rest der Frage, aber die Verwendung einer IDE schließt Sie nicht aus, ein guter Programmierer zu sein.
WernerCD
@WernerCD - Als ich sagte "die Arbeit wird von der IDE erledigt", bezog ich mich auf das spezifische Beispiel, das ich gegeben habe. Wenn Sie ein Kind nehmen, das noch nie programmiert hat, und es Schritt für Schritt Anweisungen in einer IDE befolgen lässt, erstellt es eine Arbeitsseite, programmiert aber nicht. Ich denke, IDEs sind unglaublich nützlich für die Programmierung, aber als Anfänger sollten Sie besser lernen, was Rekursion ist, anstatt Steuerelemente zu verschieben.
Blackjack
2
@ Abraham - Entschuldigung, aber ich bin anderer Meinung. Er versucht nicht, IT oder Softwareentwicklung zu lernen - er versucht, Programmierung zu lernen. Meiner Ansicht nach sollten IDE-Tools erst später verwendet werden, wenn Sie tatsächlich ein kompetenter Programmierer sind.
Blackjack
16
Der Schlüssel ist, dass ein guter Entwickler nicht an Magie glaubt . Die Arbeit, die von der IDE (oder einem anderen Tool) geleistet wird, ist eine Annehmlichkeit, eine Abkürzung, aber kein Ersatz für das Verständnis .
Bevan
7

Ich bin nur ein Junior, aber mit aller Demut und Respekt für die unendlich Erfahrenen muss ich zugeben, dass ich diese Einstellung auch nicht verstehe.

Ein Programmierer kommentierte unter Joels Antwort: " Als jemand, der seinen Kopf über" Programmierer "auf den Tisch schlagen musste, die aufgrund ihrer C # -Fähigkeiten sehr empfohlen wurden, aber einfache Dinge wie das Implementieren einer sehr gut dokumentierten Basisklasse nicht finden konnten." Speicherverluste in C- und C ++ - Programmen " ...

Aber warum muss es für jemanden, der nie behauptet , C ++ zu kennen , einfach sein, Speicherlecks in C ++ - Apps zu finden ? :) Ich verstehe nicht. Es ist, als würde man einen Psychologen wegen mangelnder Zahnarztkenntnisse kritisieren. Ich bin sicher kein guter Programmierer, aber ich fühle mich ist dies nicht , weil ich C ++ nicht wissen - es ist , weil ich nicht weiß , gut genug , um den Rahmen und die Sprachen , die ich bin verwenden.

"Einfache Dinge wie das Implementieren einer sehr gut dokumentierten Basisklasse (...) oder das Herausfinden eines Problems allein oder das Erlernen einer neuen Idee in moderatem Tempo sind nicht möglich."

OK, aber - Korrelation bedeutet nicht Kausalität, und was uns davon ausgehen , dass ihr Mangel an allgemeinen Programmierkenntnisse - was ich nicht daran zweifeln , tue - ist ein Ergebnis ihrer Sprache Wahl?

Oder ein Effekt, bei dem C # die erste Sprache der Wahl ist?

Ich kann andere plausible Erklärungen sehen (vielleicht # C gerade trendy ist, und daher zieht es viele Anfänger ... die meisten Menschen , für die C # ist die erste Sprache nicht gewesen Programmierung sehr lange überhaupt , und das ist eher ein Handicap Selbstständig, als niemals in einer anderen Sprache zu programmieren ... usw. usw.).

Konrad Morawski
quelle
Es ist eher so, als würde man einen Schreiner kritisieren, der nur Elektrowerkzeuge verwenden kann. Sogar in Sprachen, in denen Müll gesammelt wird, ist es eine grundlegende Fähigkeit zu wissen, wie lange Ihre Variablen herumhängen sollten. Wenn Sie die beabsichtigte Lebensdauer einer Variablen nicht mit einem krassen freeBlick erkennen können, wie können Sie sie dann in einem Programm erkennen, das in einer Sprache geschrieben ist, die keine solchen Hinweise liefert?
Karl Bielefeldt
1
Ich weiß, worauf du hinauswillst. Ich weiß , dass die Grundlagen der Variablen Lebensdauer (nur etwa so viel , wie ich auf einer täglichen Basis in C # benötigen: Umfang, using, IDisposable, Referenzierung Event - Handler ihre Zuhörer etc.), aber ich konnte nicht einmal ernsthaft einen Speicher zu diagnostizieren versuchen Leck in einer C ++ - Anwendung, weil ich nicht einmal mit der Syntax vertraut bin! Ich weiß nicht wofür Asterisk steht.
Konrad Morawski
5

Ich würde sagen, eine Sprache zu lernen und dabei zu bleiben, ist eher ein Fehler als zu entscheiden, mit welcher Sprache Sie beginnen sollten. Es gibt einige Sprachen, die Sie lernen können, die natürlich einfacher sind, aber Sie sollten versuchen, eine Sprache zu lernen, die Sie häufig verwenden (in einer Schule wird die Sprachauswahl bereits von der Schule getroffen). Nachdem Sie eine Sprache richtig gelernt und nach einigen Monaten aktiv verwendet haben, sollten Sie sich mit einer anderen Programmiersprache beschäftigen und vergleichen.

In .NET ist es einfach für Sie , mit zwei (gehen sort-of ) verschiedenen Programmiersprachen , da Sie zwischen Visual Basic und C # wechseln. So können Sie Visual Basic lernen und die Unterschiede erkennen. Auf dieser Ebene sollten Sie mit der grundlegenden Prozedurcodierung der drei grundlegenden Programmierstrukturen vertraut sein. Wenn Sie mit allen kreativ sein können (und wissen, wie man Variablen verwendet), sind Sie auf dem Weg, ein großartiger Programmierer zu werden:

  • Sequenz - Der Code wird in einer von Ihnen festgelegten Reihenfolge von aufeinanderfolgenden Schritten geschrieben (definiert einen "Sprung", Schritt für Schritt und GOTOS).
  • Bedingt - Code kann Entscheidungspunkte haben (definiert if-Anweisungen, switch-case-Anweisungen)
  • Looping / Repetition - Code kann sich bei einer bestimmten Entscheidung wiederholen (eine Erweiterung der beiden oben genannten, definiert for-, do-while-Schleifen)

Es spielt keine Rolle, ob Ihre sekundäre Programmiersprache Ihre aktivste ist oder nicht, nur weil Sie wissen, dass sich die Programmiersprachen (insbesondere, wenn sie demselben Paradigma folgen) sehr ähnlich sind und kleine Nuancen tatsächlich einen langen Weg zurücklegen Damit Sie verstehen, wie Softwareprogrammierung funktioniert.

Versuchen Sie mindestens einmal im Jahr, eine neue Programmiersprache zu lernen, die einem anderen Programmierparadigma folgt . Sie müssen nicht unbedingt mit der neuen Sprache Schritt halten, aber es gibt einige Vorteile, andere Paradigmen zu kennen. Es gibt mehrere Paradigmen und einige Programmiersprachen vermischen sich zwischen vielen (beachten Sie, dass C # tatsächlich die folgenden drei Teilmengen enthält):

Das Wichtigste, was Sie lernen sollten, ist, dass viele Programmiersprachen ihren eigenen Redewendungen und einer grundlegenden API folgen. Wenn Sie also eine neue Sprache lernen, versuchen Sie, diese Redewendungen und APIs gut zu lernen, und Sie werden in Ordnung sein, wenn Sie etwas aufbauen. Ein guter Grund ist, dass Sie Programmierprobleme besser entwerfen und lösen können. Einige Redewendungen in einer Sprache geben Ihnen möglicherweise einen Einblick in die Lösung eines Problems in Ihrer Hauptsprache.

Wissen Sie auch, dass es noch einen weiteren sehr guten Grund gibt, warum Sie andere Programmiersprachen als die Hauptsprache lernen sollten, die Sie am häufigsten verwenden: Ihre Beschäftigungschancen sind viel größer.

Spoike
quelle
5

Der Schwerpunkt Ihrer Frage und vieler Antworten liegt hier auf C #. Aus Wikipedia :

C # -Sprache soll eine einfache, moderne, objektorientierte Programmiersprache für allgemeine Zwecke sein.

Allein auf dieser Grundlage kann man mit Sicherheit sagen, dass Sie C # als Muttersprache lernen können, ohne Ihr Gehirn langfristig zu schädigen. Ich glaube jedoch nicht, dass Joel die gesamte Sprache verurteilt hat, als er schrieb :

Versuche, eine Verknüpfung zu erstellen und genau das zu lernen, was Sie gerade lernen möchten (wie das Starten mit C # und ASP.NET), sind zum Scheitern verurteilt.

Das Problem ist nicht die Sprache, sondern Abkürzungen. Zu oft versuchen die Leute, einen schnellen Weg zum Endziel zu finden, indem sie Schritt-für-Schritt-Tutorials befolgen oder Bücher zu "Alles in 24 Stunden lernen" lesen. Sie müssen nicht zu viel Zeit mit Stack Overflow verbringen, bevor Sie bemerken, dass es viele Fragen gibt: "Ich habe in meinem Leben noch nie eine Codezeile geschrieben, aber ich beschäftige mich mit dem iPhone Kann mir bitte jemand Schritt für Schritt Anweisungen geben, wie ich genau das mache, was ich tun möchte? Danke! " Ich sage nicht, dass Sie diesen Ansatz verfolgen, aber Sie müssen sich davor hüten.

Wenn Sie solide Programmierkenntnisse entwickeln möchten, sollten Sie zunächst grundlegende Kenntnisse erwerben. Wenn Sie versuchen, direkt zu OOP- und GUI-Anwendungen zu springen, werden Sie diese Grundlagen wahrscheinlich vermissen. Die Bücher, auf die Joel zeigte, sind in der Tat sehr gut. Ich habe nur das C # Yellow Book (PDF) durchgesehen , aber anscheinend ist es eine bessere Einführung in die Programmierung als die meisten C # -Bücher, die ich in Geschäften sehe.

Caleb
quelle
Ich möchte darauf hinweisen, dass die Formulierung nicht "C # nicht lernen", sondern "C # und ASP.NET" ist (Hervorhebung hinzugefügt). Ich bin kein C # -Programmierer, aber .NET und die CLR sind eine gute Plattform, um mit dem Lernen zu beginnen.
Forivall
5

Für mich war das Zeug in diesem anderen Artikel ein bisschen elitär. Ja, ich empfehle SICP häufig ernsthaften Entwicklern, die wirklich besser werden möchten, aber nur solchen, die über die "Norm" hinausgehen und die tiefe Magie erlernen möchten. In der Tat war SICP jahrelang der Standard-Programmiertext für MIT-Neulinge. Viele solide arbeitende Programmierer hatten jedoch nie die Gelegenheit, diese feine, aber teure und äußerst selektive Institution zu besuchen.

Also , was tun empfehle ich, in Antwort auf Ihre Frage? Beginnen Sie mit dem, was Sie haben, und lernen Sie, wie man als Programmierer denkt, anstatt nur eine bestimmte Sprache zu lernen.

Wenn Sie zufällig eine C # -Implementierung zur Verfügung haben, kann ich Ihnen sagen, dass dies eine sehr gute Sprache für ein Unternehmen wie mich ist - genau wie Java, JavaScript, Python, Ruby, Scala, Scheme und die vielen anderen Sprachen, die ich habe im Laufe der Jahre gelernt. Am Ende versuche ich, die richtigen Sprachen und Werkzeuge für den jeweiligen Job auszuwählen, und das bedeutet, Sprachen wie Hüte zu wechseln.

Es ist nichts Falsches daran, lustige Lernmethoden zu verwenden, wie etwa die Annäherung an Ruby über Why's Poignant Guide und Shoes (wie ich es kürzlich in einem anderen Beitrag empfohlen habe ). Es gibt arkane und mystische Pfade, wie das Kopfschlagen gegen The Little Schemer und The Seasoned Schemer auf dem Weg zu SICP . Viele moderne Denker lassen Sie all diese älteren akademischen und unternehmerischen Dinge überspringen und tauchen stattdessen direkt in JavaScript, JQuery und HTML5 ein. Es gibt viele Möglichkeiten, um loszulegen. Verschwenden Sie also nicht zu viel Zeit. Wähle einfach einen aus und erhalte die Codierung!

In der Realität glaube ich, dass heutzutage nur wenige Berufstätige Sie zurückschicken würden, um zuerst Assembler oder C / C ++ zu lernen. Ehrlich gesagt, wenn sie das tun, glaube ich nicht, dass sie Ihnen viel Gutes tun würden.

Um ein bisschen zu verschönern: "Beginnen Sie mit dem, was Sie haben", ich habe noch drei Ratschläge:

  • Wählen Sie eine Programmiersprache, die Ihnen cool erscheint, und einen Lernansatz, der Sinn macht, und geben Sie ihnen alles. Schreiben Sie in der von Ihnen gewählten Sprache. Lesen Sie so viel guten Code, wie Sie verwalten können!
  • Nehmen Sie sofort Ihre Hände auf die Tastatur und beginnen Sie mit dem Codieren, während Sie lernen. Führen Sie alle grundlegenden Übungen in Ihren Programmierbüchern selbst aus und üben Sie alle Tutorials, die Sie finden, indem Sie mit den Fingern klicken, damit sie wirklich funktionieren. Sie werden überrascht sein, wie viele Fähigkeiten Sie bei der Behebung von Fehlern in Demos erlangen, bei denen es sich um funktionierenden Code handeln soll, bei denen dies jedoch nicht der Fall ist!
  • Wenden Sie den größten Teil Ihrer Mühe auf, um zu lernen, wie gute Programmierer Probleme durchdenken. Erfahren Sie, wie Sie komplexe Probleme und Systeme analysieren und zerlegen, bis Sie sie wirklich verstanden haben. Dann lernen Sie, automatisierte Lösungen zu synthetisieren und zu entwerfen und sie so aufzubauen, dass sie einigen Menschen auf diesem Planeten die Arbeit erleichtern.

Ich habe mit FORTRAN IV und QBASIC angefangen und wenn die mich nicht ruiniert haben, wird C # dir auch nicht schaden! Viel Glück und viel Spaß beim Lernen!

John Tobler
quelle
Die Originalvorträge von Abelson & Sussman finden Sie hier: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack
4

Ich denke, der beste Ratschlag, den ich je gesehen habe, wenn es um die Frage geht: "Welche Sprache soll ich lernen?" ist einfach: Ein guter Programmierer kann in jeder Sprache arbeiten.

Ich bin mir sicher, dass es Argumente gegen diese Aussage gibt, aber der springende Punkt ist: Lernen Sie zuerst, ein guter Programmierer zu sein, anstatt ein Sprachexperte. Bauherren sind nicht darauf spezialisiert, auf genau einem Grundstück zu bauen. Sie lernen die Fähigkeiten ihres Handwerks und wenden sie auf jedem Grundstück an, auf dem sie benötigt werden.

Andy Hunt
quelle
Ich werde das +1. Es ähnelt meiner üblichen Analogie, Motorräder zu bauen. Sie können ein anständiges Motorrad bauen, indem Sie am Fließband arbeiten und dem Buch folgen, aber die wirklich großartigen Erbauer sind die Chopper, die die Eingeweide des Motorrads kennen und als Ergebnis erhalten Sie einige großartige Sachen.
Jarrod Nettles
3

Manchmal habe ich den Verdacht, dass Sprachen der Wahl viel mehr mit unserer Persönlichkeit zu tun haben und dass sie so miteinander verbunden sind, und viel weniger mit praktischen oder akademischen Überlegungen, als wir zugeben möchten.

Das Lernen neuer Dinge ist jedoch niemals schädlich. Sie werden den Tag kennen, an dem Sie die Schwelle zu einem weiterentwickelten oder vielleicht gebrochenen Gehirn überschritten haben (alles eine Frage der Perspektive, nehme ich an), wenn Sie anfangen zu erkennen, dass alles ein Handbuch hat. Sie können letztendlich wirklich alles tun, was Sie wollen, wenn Sie Talent haben und tatsächlich eher am Tun als am Sein eines Programmierers interessiert sind.

Zumindest mit Python und JavaScript rumspielen. Es ist auf jeden Fall ein Lernvorteil, wenn Sie wirklich nur Code schreiben und sofort ansehen können, wie er in einer Konsolenumgebung mit Dateizugriff wie IDLE oder einer Sandbox-Umgebung wie einem Browser ausgeführt wird. Was ich an C # und Java nicht mag, ist, dass sie wollen, dass alles auf Klassen beschränkt ist, auch wenn Sie wirklich nur eine einfache Funktion mit sinnlosen Wrappern schreiben, um Ihre Kollegen oder einen übermäßig restriktiven Compiler zufrieden zu stellen. Das andere, was ich an JS und Python mag, ist, dass Sie damit wirklich Ihr eigenes Paradigma festlegen können. Ein bisschen zu flexibel für viele Entwicklervorlieben. Ich bin mir immer noch nicht sicher, was ich von der Weisheit halten soll, grundlegende Operatoren zu überladen, aber ich bin mir ziemlich sicher, dass ich Python liebe, weil ich die Option zulasse.

Fallen Sie auch nicht auf die grausame Lüge herein, die Hauptsprache mit den meisten Stellenangeboten zu wählen. Es ist besser, ein großer Fisch in mittleren Gewässern zu sein und das zu tun, was Sie möchten, als ein Mitglied einer Horde von meist beschissenen, unerträglichen Fischen, die jede Jobsuche eher zu einer Lotterie als zu einem passenden Prozess machen.

Erik Reppen
quelle
Als jemand, der in meinem Tagesjob von dieser Horde unerträglicher Fische anstellt, muss ich zustimmen. In dieser Diskussion gibt es viele wirklich nützliche Rückmeldungen. Ich hoffe, @toleero findet es nützlich und lässt sich nicht entmutigen. Meiner Meinung nach sollten wir, obwohl Joel ein Genie ist, niemals alles , was jemand sagt, als Evangelium akzeptieren . Die Bücher, die er dort empfiehlt, sind nützlich. Aber so ist es auch, täglich zu programmieren und praktische Erfahrungen zu sammeln. Wenn Sie dies in einer Handvoll Sprachen tun (sagen Sie C # und etwas weniger C-artiges - ein Basic, vielleicht oder Python oder Ruby), werden Sie mindestens so gut wie viele
andere
3

C # ist bei weitem nicht so schlecht wie Java. Sie unterstützen viele Konzepte wie funktionale Programmierung, generische Programmierung, deterministische Zerstörung und Werttypen, Überladung von Operatoren usw. besser. Ihre Unterstützung für diese Funktionen könnte natürlich noch viel Arbeit kosten, ist aber weitaus besser als Java, selbst wenn es ist kein C ++.

Zweitens denke ich, dass Sie falsch lesen, was Joel gesagt hat. Wenn Sie können Zeiger und Rekursion beherrschen, dann spielt es keine Rolle , welche Sprache jetzt sind Sie mit. Das Wichtigste wäre, ein wenig unsafeCode zu verwenden, sich mit unsafe quicksortetwas anderem auseinanderzusetzen und dann zum Rest des normalen C # zurückzukehren.

Oh, und lest weiter :)

DeadMG
quelle
2

Die erste für mich produktive Sprache war C #. Obwohl ich in der Schulzeit mit Foxpro und ein bisschen C im College rumgespielt hatte. C # ist ziemlich gut und sehr guter Ausgangspunkt für jedermann. Es folgt den allgemeinen Grundlagen der Programmierung wie starke Typisierung, Kapselung, Vererbung usw., von denen ich glaube, dass man sie immer lernen sollte, egal ob sie sie verwenden oder nicht. Später können Sie immer zu anderen Sprachen wie Python wechseln, die der Standardisierung der grundlegenden Programmierung nicht folgen.

Der andere zusätzliche Faktor, den die Leute dem Lernaspekt von C # nicht wirklich hinzufügen, ist die Verfügbarkeit der besten IDE für jede Sprache, die ich gesehen habe. Eclipse IDE ist auch gut, aber sobald Sie Visual Studio verwendet haben, werden Sie Microsoft danken.

Durch die Verbesserung von C # gegenüber C wird sichergestellt, dass Sie nicht vorher andere Sprachen lernen müssen. Alle Sprachen über ein Jahrzehnt oder so hat sich aus der Natur von C entwickelt, sogar die JAVA.

Das Fazit lautet also: C # ist ein guter Ausgangspunkt, um in Zukunft schnell andere Sprachen zu lernen

Pankaj Upadhyay
quelle
Eclipse ist für mich viel besser als Visual Studio. Aber ich stimme Ihnen zu - C # wäre eine großartige Sprache, besonders wenn es nicht im Besitz des bösen proprietären Standards wäre und den dunklen Oberherrn von Redmond zerstört .
Thomas W
2

Das Erlernen von C # als erste Sprache ist kein Fehler, solange Sie früher oder später fortfahren und eine zweite Sprache lernen. Das ist viel wichtiger. Noch besser, wenn diese zweite Sprache etwas anders ist als C # (Javascript oder Ruby wären in dieser Hinsicht besser als Java). Jede Sprache hat ihre Vor- und Nachteile, und es sind die Unterschiede, die Sie langfristig zu einem besseren Programmierer machen.

henrik
quelle
1

So sehr ich Ihnen auch rate, viele Sprachen zu lernen (wie es die anderen vorschlagen), sollten Sie auch einige Sprachen beherrschen, die Sie sehr gut lernen .

Das Risiko, viele Sprachen zu beherrschen, besteht darin, dass Sie möglicherweise nie eine Sprache vollständig lernen, was zu Frustrationen führt, wenn Sie tatsächlich ein Problem lösen möchten.

Zu wissen, dass die for-loop-Konstruktion viele Sprachen umfasst, macht Spaß, ist aber nutzlos, wenn Sie nicht wissen, wie Sie mit Fehlern umgehen sollen.

Erno
quelle
1

Mach dir keine Sorgen, dass du zufällig zuerst C # gelernt hast. Es ist so, als ob Sie besorgt wären, dass Ihr erster Schritt mit Ihrem linken oder rechten Fuß gemacht wurde. Der einzige Unterschied zwischen dem ersten Erlernen einer verwalteten Sprache besteht darin, dass Sie nur verzögern, wenn Sie Zeiger und eine detaillierte Speicherverwaltung erlernen müssen. Dies kann sich sogar zu Ihren Gunsten auswirken, da Sie sich beim Erlernen von C nur um die Speicherverwaltung kümmern müssen. Sie werden auch nicht damit jonglieren müssen, Kontrollstrukturen, Funktionskonzepte usw. zu erlernen sich ganz auf Zeiger und Speicherverwaltung konzentrieren können.

Das Stereotyp existiert, weil es verwaltete Sprachprogrammierer gibt, die diesen zweiten Teil nie gemacht und C und C ++ gelernt und dann auf C- und C ++ - Jobs angewendet haben.

Es ist wie das Erlernen eines Musikinstruments - das erste ist schwierig, weil Sie versuchen, die Mechanismen des Lesens von geschriebener Musik UND die physikalischen Mechanismen des Artikulierens eines Instruments zu erlernen, um das zu tun, was Sie wollen. Beim zweiten und den darauffolgenden Instrumenten können Sie sich ausschließlich darauf konzentrieren, was dieses Instrument von dem unterscheidet, was Sie bereits kennen.

anon
quelle
1

Es ist ohne Zweifel hart für den Anfänger. Ich habe vb, Javascript, PL / SQL, T-SQL, Uniface und ein bisschen C # gemacht, um nur einige zu nennen.

Jemand hat Visual Basic bereits erwähnt, als er etwas über objektorientierte Programmierung gelernt hatte, und um ehrlich zu sein, VB.NET verfügt über die am einfachsten zu verstehende Syntax aller Sprachen, die ich je gesehen habe. Das beste Merkmal ist, dass die Schlüsselwörter den beschriebenen Konzepten genau entsprechen.

zB Funktion myHandler () behandelt myButton.click

oder Klasse Mensch Erweitert Säugetier implementiert intelligentLifeform

Im Ernst, für die Lesbarkeit, wenn Sie ein Anfänger sind, wie soll die Syntax sonst aussehen?

Wenn Sie nach Eigenschaften und Methoden suchen (und zwischen Subs und Funktionen unterscheiden), ist es in VB viel einfacher zu lesen.

Ähnliches gilt für die Deklaration von Variablen

Dim myString As string - offensichtlich, welcher Typ und welche Instanz ist

Die Unterscheidung zwischen Groß- und Kleinschreibung ermutigt mich zu einer schwerwiegenden Angewohnheit - den gleichen Namen für Klasse und Instanz zu haben, wobei einer groß und einer klein geschrieben ist.

z.B

Menschlich menschlich

  • gibt es ernsthaft so wenige Wörter in Ihrem Wortschatz, dass Sie vorhandene mit Großbuchstaben wiederverwenden müssen?

Wenn Sie human.think aufrufen, ist es leicht, eine Instanz mit einer Klasse zu verwechseln und zu glauben, Sie hätten eine statische Methode aufgerufen. Und ein Blick zeigt oft, wie wir Code wahrnehmen. Wir haben keine Zeit, mit der Maus über jedes einzelne Element zu fahren, damit der Editor uns mitteilt, was los ist.

C # mag einige Vorteile haben, aber es ist viel schwieriger, damit zu beginnen - auch wenn es das Tippen erspart. Deshalb sollte es auf jeden Fall einen Platz für beide Sprachen geben.

Andy R
quelle
+1 für Mensch Mensch. C # als 2. Sprache (bread and butter = Delphi) über ein Buch zu haben, anstatt tiefgehende Erfahrung mit vorhandenem Code zu haben, macht mein Gehirn immer ein bisschen weh, wenn ich das sehe. Obwohl es Teile der Sprache gibt, die ich wirklich mochte, war es meiner Meinung nach ein großer Fehler, die Groß- und Kleinschreibung von C zu unterscheiden.
Matt Allwood
Klar, weil Dim myHuman as Humanes so viel besser ist? : D
scrwtp
0

Der größte Nachteil, den ich sehen kann, ist, dass Visual Studio und die zugehörigen Tools sehr, sehr nett sind - Dinge wie Intellisense und Code-Vervollständigung können leicht zu Krücken werden. Ich würde allgemein argumentieren, dass die Umgebung so nett und unterstützend sein kann, dass Sie sich ein bisschen verloren fühlen, wenn Sie beispielsweise Ruby-Code in einem Texteditor hacken müssen. Oh, und du wirst normalerweise auch Sachen wie Linq vermissen.

Wyatt Barnett
quelle
0

C # ist vollkommen in Ordnung, um mit dem Programmieren zu beginnen.

Es ist das, womit ich anfangen sollte, ohne überhaupt die Möglichkeit zu haben, sich mit etwas anderem zu beschäftigen (abgesehen von der Hello World in Java, einigen grundlegenden LOGO-Dingen und einigen Dingen in Scratch, aber nichts "Ernsthaftes").

Alles in allem kann es schwierig sein - es gibt viele Dinge, die nicht intuitiv zu sein scheinen, und sie haben ihre Grenzen, aber ich denke, sie fördern eine gute Codierung und sind großartig, wenn Sie erst einmal den Dreh raus haben. Ich meine, es gibt Ihnen mehr Power und ist ein bisschen professioneller als Python (was normalerweise empfohlen wird), und das würde einen großen Unterschied machen - C ++ zu versuchen, nachdem C # nicht zu schmerzhaft war, aber wenn ich mit Python angefangen hätte, dann Es wäre in der Tat eine sehr große Hürde, auch nur auf der Syntaxebene.

Außerdem bietet es eine gute plattformübergreifende Unterstützung in Form von Mono (für diejenigen unter Ihnen, die glauben, dass Mono keine große Sache ist - mit der Unity Game Engine können Sie eine Version davon codieren). Es ist auch für die meisten Dinge sehr nützlich, sei es für Spiele-Skripte, Web-Design oder Windows-Anwendungen. Natürlich sind einige Sprachen für bestimmte Zeilen besser, daher hängt es davon ab, in welche allgemeine Richtung Sie gehen möchten. Wenn Sie beispielsweise in die Webrichtung gehen, ist C # (ASP.NET) auf jeden Fall eine gute Idee. Wenn Sie vorhaben, in Spiele einzusteigen, sollten Sie stattdessen an C ++ denken.

Letztendlich lohnt es sich, es zu lernen, auch wenn Sie es nicht zu Gunsten der Einfachheit von Python oder der archaischen Natur von Java verwenden (da der Release-Zyklus für Java WIRKLICH langsam ist) - Sie lernen gutes Codieren üben, ohne zu kompliziert zu sein, damit ein Neuling es lernt.

Sbspider
quelle
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
gnat
1
Wie ist das? Immer noch schwer zu lesen oder jetzt in Ordnung? Danke übrigens für die Köpfe hoch.
Sbspider
-1

Um Programmierer zu sein, muss man Leidenschaft haben. Die Programmierer, die ich kenne, sind diejenigen, die sich sehr bemühen, Veränderungen in der Branche zu erkennen. Ich begann meine Programmierung mit Basic auf einem Commodore Vic 20 (Ja, so alt) und wechselte weiter zu anderen neuen Sprachen. Ein Teil meiner Programmjahre umfasste sogar COBOL. Ich bemerkte auch, dass einige Sprachen in bestimmten Prozessen besser funktionierten als andere. Mein Rat an Sie ist, jede Sprache zu lernen und grundlegende Programmierkonzepte wie Schleifen, Methoden und Vergleiche zu verstehen. Die meisten Sprachen unterstützen diese drei Konzepte. Sie sollten niemals "Das ist der beste Weg" sagen, sondern "Wie kann ich das verbessern?". Das Schlimmste an diesem letzten Satz ist, dass Sie sich über das Engineering hinwegsetzen können. Programmieren macht Spaß, macht Spaß! Das Internet eröffnete eine völlig neue Möglichkeit, das Programmieren zu erleben, da der heutige Zugang zu Informationen erstaunlich ist. Für mich musste ich vor dem Internet zum Regal gehen und die GRAUEN IBM-Programmierbücher runterziehen und lernen. Heute können Sie einfach etwas in Google und Whammo eingeben.

Kennzeichen
quelle
2
Dieser Beitrag ist ziemlich schwer zu lesen (Textwand). Hätten Sie etwas dagegen bearbeiten sie in eine bessere Form ing?
Mücke
-3

Wow viele Antworten. Hier ist mein Standpunkt:

C # ist kein Ort, um Informatik zu lernen. Ich halte das für eine überaus schlechte Idee. Ich werde im Folgenden einige meiner Bedenken auflisten.

  • C # ist eine Microsoft-Sprache. Nicht, dass ich hier über MS urteile, nur, dass es außerhalb der MS-Welt wenig Akzeptanz gibt. Wenn Sie nur MS-Hardware programmieren möchten, fahren Sie fort, aber ich sehe keinen soliden Ansatz für die Informatik.
  • Ich bin kein großer Fan davon, mit verwalteten Sprachen programmieren zu lernen. Ich glaube, es ist wichtig zu lernen, wie man einen Programmspeicher verwaltet und Datenstrukturen erstellt.

Zu müde, um so schnell eine andere Sprache zu wählen.

Dave
quelle
Ich kann verstehen, wenn Sie denken, dass es für Ihre Karriere schlecht wäre, sich an MS zu binden. Aber was hat das mit dem Erlernen der Informatik zu tun? CS hat nichts mit Plattformen oder Unternehmen zu tun.
SVICK
-3

Ich würde C # oder jede Sprache empfehlen, die diese drei Dinge im Kern bietet:

Vollständig typisiert Kompiliert und vollständig objektorientiert.

Eine erste Sprache, die diese drei Kernbereiche bietet, wird viel über den Programmfluss, die Syntax und das strukturiertere Lösen von Problemen lehren. Ich lebe und atme in einem Haufen großartiger Sprachen, die diese Eigenschaften nicht haben, aber wenn ich jemandem eine Sprache beibringen würde, würde ich eine auswählen, die diese drei Anforderungen erfüllt.

Feech
quelle
-6

Nein, diese Antwort ist schrecklich. Warum? Nun, er schreibt einige gute Bücher vor, die Sie unbedingt lesen sollten, aber ohne Arbeit im Klassenzimmer und ohne Arbeit im Labor (Computerlabor) sind Sie verloren und frustriert. Sie müssen mit ein paar anderen neuen Programmierern experimentieren, denn es gibt so viel zu lernen, außer dem, was in diesen Büchern steht. Ich sage nicht, dass Sie sich für ein BSCS entscheiden müssen, aber Sie benötigen auch Zugang zu einem sachkundigen Ausbilder, wenn eine ganze Reihe von Dingen, wie Compilerprobleme, Build-Umgebungen ..., die Sie nennen, zu jedem Zeitpunkt schief gehen können. Sie werden kein großer Programmierer sein, der in einem Vakuum arbeitet. Welche Bücher auch immer für Ihre Kurse benötigt werden, sie sind gut genug, solange Sie sich für eine halbwegs anständige Schule entscheiden.

Also, melden Sie sich für einige Kurse an und es wird VIEL mehr Spaß machen! Wenn Sie vorhaben, eine Stelle als Programmierer zu bekommen, benötigen Sie außerdem Verbindungen, und Sie hören die ganze Aufregung über Unternehmen, die auf dem Campus Rekrutieren, usw.

Schließlich ist die formale Bildung sehr wichtig, da das Programmieren viel theoretisches Hintergrundwissen erfordert, um zu verstehen, wie die Dinge auf allen Ebenen funktionieren sollen (hw / sw), damit Sie herausfinden können, wie sie behoben werden können. Fast alles ist eine Blackbox, also muss man herausfinden können, warum sich etwas so verhält, wie es ist, damit man den nächsten logischen Stich im Dunkeln machen kann. Ohne ein Programmierstudium von mindestens zwei Jahren (wie auch immer Sie es nennen) sind Sie im Nachteil.

PS: Ich würde nicht in die Nähe von .NET oder C # gehen, bis Sie Java kennen. C # gefällt dem Auge nicht. Es ist chaotisch und klobig aussehender Code. Die .Net-IDE ist unglaublich zum Kotzen. Es ist im dunklen Zeitalter der IDE-Standards. Java: C # ~ Data: Lore

Tom Jones
quelle
10
Ich bin bis zum letzten Absatz bei dir. Ihre Meinung zur Ästhetik von C # ist so aufrührerisch, dass es einfach nicht zu einer ansonsten guten Antwort zu gehören scheint.
Adam Lear
9
Auch vor dem letzten Absatz ist dies meistens Unsinn. Manche Menschen lernen gut in einem Klassenzimmer - für andere ist es reine Zeitverschwendung. Das Erlernen des theoretischen Hintergrunds ist wichtig, erfordert jedoch nicht unbedingt einen Unterricht oder eine formelle Ausbildung - sie helfen einigen Menschen, aber nicht allen (auch nicht in der Nähe).
Jerry Coffin
Eine Meinung ist genau das; Es ist keine Feststellung. Fühle dich also nicht beleidigt.
Tom Jones
Sie haben die Empfehlung für eine formelle Schulbildung missverstanden. Sie benötigen einen Ort, an dem Sie Fragen stellen und mit Kollegen im Labor zusammenarbeiten können. Zusammenarbeit ist das Schlüsselkonzept. Tut mir leid, wenn Sie ein C # -Nutzer sind und ich Sie beleidigt habe, obwohl dies unter leidenschaftslosen Technikern unmöglich sein sollte.
Tom Jones
1
Stackoverflow ist zu einem "Labor" für viele Menschen geworden, die nicht aufs College gehen können, aber Unterstützung durch die Community wollen. Ist es dasselbe wie eine Klasse? Natürlich nicht. Ist es gut genug Wetten Sie?
Blackjack