Ist es eine gute Idee für mich Python vor C oder eine anderen Compiler Sprache zu lernen? [geschlossen]

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

Frage

Im Moment werde ich durch MIT Opencourseware die Einführung in die Informatik Kurs über. Als Teil dieses Kurses lerne ich die Sprache Python.

habe ich lernen C. eine Menge Dinge, über die Vorteile lesen Bevor ich tiefer in Python Ich frage mich, graben, wenn ich zuerst durch das Lernen Python behindert oder unterstützt werden.

Glauben Sie, dass ich irgendwelche schlechten Gewohnheiten oder so etwas von Python entwickeln?

EDIT:. Changed auf Community Wiki, weil subjektiver Natur der Frage

Ich schätze all die großen Antworten auf meine erste Frage SO. Ich bin eigentlich ziemlich geblasen von der Aufrichtigkeit der Antworten / Kommentare entfernt. Danke, viel jeder!

War es hilfreich?

Lösung

Beim Reden von 37 Jahren in Gott arbeitet, weiß, wie viele Sprachen, ich kann Ihnen sagen, dass in Python arbeiten können Sie fast ausschließlich darauf konzentrieren, immer der Algorithmus richtig und keine Sorgen über Details . Ich habe wahrscheinlich 300-400,000 Zeilen C in meinem Leben geschrieben und der einzige Weg, um es erträglich war, war im Grunde meine eigene OO Umgebung zu schaffen.

C hat seinen Nutzen, aber in diesen Tagen neigen sie dazu, eine zu sein, entweder) können Sie näher an ein Stück Hardware, oder b) sie behandeln eine wirklich enge Schleife. Wenn Sie eine Notwendigkeit für sie finden, sehen Sie ein Tool wie SWIG oder SIP Ihre C in Ihre Python zu integrieren.

Andere Tipps

Aus historischen Gründen war C die ersten viele Programmierer Sprachen, diese der vorherigen Generation insbesondere gelernt. Doch viele von ihnen (in dieser älteren Generation einschließlich), lernte zunächst eine oder mehrere andere Sprachen, in der Regel diejenigen mit einer höheren Abstraktionsebene (Basic, Lisp, Pascal, ein paar zu nennen), bevor C zu lernen.

Ich war der letzteren Art (dh C war nicht meine „native“ Sprache, obwohl ich Montage sehr früh gemeistert), und ich bin ganz überzeugt von den viele Vorteile mit einem ernsten assoziiert " Tour“in der Sprache C , obwohl, als eine Frage der Praktikabilität, werden viele von uns nie viel von jeder Folge programmieren in dieser Sprache. Dieser sagte, Ich habe keinen zwingenden Grund sehen zu C Ihre zu machen seine erste Sprache oder irgendeine Ahnung davon, dass irgendwie Python Mastering (oder Prolog oder ...) würde irgendwie Programmierfähigkeiten beeinträchtigen jemandes für das nächste Jahrzehnt ...

Also mein Rat: Python genießen, nehmen Sie es in
! Wenn Sie ein Gefühl für die Programmierung zu bekommen, macht einen Punkt C zu einem bestimmten Zeitpunkt zu lernen. Es ist besonders relevant in einem Lehrplan, den Compiler Schreiben und / oder Betriebssysteme, und, wie gesagt, relevant auf vielen anderen Arten umfasst. Sie werden feststellen, dass andere als mögliche „Oberfläche“ / syntaktischer gotchas sehen (das geschieht die ganze Zeit, zumindest für mich, wenn eine neue Sprache lernen oder zu einer alten Sprache von mir zurückschalten, nachdem ein etwas anderes ausgesetzt während), sollten Sie keine Probleme mit C, zumindest keine Probleme im Zusammenhang mit anderen Sprachen zu lernen.

Ich bin kein Experte Programmierer, aber aus meinem Verständnis und die Nutzung ist, dass Python ist eine sehr einfache und leistungsfähige Sprache, die Sie Ihnen etwas tun müssen, ermöglicht.

Mit C Sie mehr Kontrolle über das bekommen, was passiert, und das bedeutet auch, Sie alle diese Details selbst schreiben, während in Python jemand es für Sie getan hat, und Sie haben Optionen, dass die Arbeit für fast alle verschiedenen Fälle.

Da C niedrigere Ebene (näher an, wie die Maschine funktioniert tatsächlich) es in Maschinencode kompiliert wird enger, was die CPUs wollen, während Python, höhere Level-Sprache sind, wird am Ende nicht so schnell zu sein.

Ich denke, die Übergangs Schmerzen von Python zu C wird mehr sein wie „Warum muss ich alles dies zu tun? In Python würde ich in einer einzigen Zeile getan werden!“

Ich kann nur anbieten, dass C Lernen werden Sie machen schätzen Python und andere typisierte Sprachen dynamisch mehr. Ich sage oft das Gleiche für jeden, der mit PHP beherrschen ist. Die Schaffung der beiden zerkratzt einige ernsthafte juckt. Und nein, es ist nicht wie ein „wenn ich in deinem Alter war ich ging 300 Meilen im Schnee zur Schule“ Art der Sache.

Die Möglichkeit, einen Wert zu einer Variablen zuzuweisen und die Variable haben nur ‚passt sich‘ zu speichern, was Sie füttern es eine ist erstaunlich Leistung für jeden, der beträchtliche Zeit die Arbeit mit C auf mehreren verbracht hat Architekturen.

Zusätzlich einen Multi-Threaded-Service von einer Art in C schreiben werden Sie wirklich zu schätzen, wie portable Python wirklich ist.

Es gibt noch andere gute Gründe, die Leistung, immer ‚näher an das Metall‘, das Verständnis der Speicherverwaltung und das Lernen über Compiler und Optimierung. Allerdings vermute ich, die erste Sache, die Sie getroffen ist, wie cushy höhere Sprachen wirklich sind.

Disclaimer:. Ich meistens C verwenden

Sie haben irgendwo zu beginnen, und Python ist eine gute Wahl für einen Start Programmierer: Sie brauchen nicht einen Compiler zu verwenden (-> einfach zu bedienen), eine umfangreiche Bibliothek hat (-> können Sie erreichen viel), und ist objektorientiert (Hauptstrom in diesen Tagen). So vermeidbare Frustration ist in dieser Hinsicht ein Minimum reduziert. Aber immer daran denken, dass es viele andere Sprachen gibt, und dass Sie sollten sie lernen, auch. Wenn Sie Programmierer werden wollen und Geld verdienen, müssen Sie (mindestens) holen C ++, Java oder C # nach Python.

Gute Frage! Denken Sie immer daran, dass Ihre Programmierkenntnisse nie abhängig Sprache sein sollen. Zwar ist C eine ideale Sprache zu lernen, wenn es um Informatik geht. Sie haben 4 Ebenen, wenn es um die Programmierung kommt und in der Regel jede Universität Nichtgraduiertentwurf bieten natürlich diese Themen:

  1. prozeduralen Programmierung
  2. Objektorientierte Programmierung
  3. Programmieren mit Datenstrukturen
  4. Design Patterns **

Sie haben Schritt für step.Do Master gehen all diese 4 Ebenen. Dann am Ende des Tages müssen Sie entscheiden, was Sie wirklich wollen, und dann werden Sie genug Wissen haben, was in Funktionen, welche Sprache Sie haben für das, was Problem zu verwenden. C ist die Sprache vieler Betriebssysteme, einschließlich Unix, Linux und Windows. C Macht von Zeigern kann durch keine Sprache so weit angepasst werden. Python ist eine gute Sprache und hat seine eigenen Vorteile. Ein wichtiger Rat, den ich zu diesem Zeitpunkt geben kann, ist, dass die „Syntax“. Zunächst sollten Sie C-Sprache beherrschen und ein wenig praktisches Wissen über Python gewinnen, wie well.Once Sie mit C vertraut sind, dann wird es für Sie programmieren in C ganz einfacher ++, C #, Java und PHP. Aber wenn Sie von Python beginnen sofort dann könnten Sie sich nicht wohl fühlen mit c_syntax basiert languages.Same für Anfänger geht, die für die Programmierung von Leidenschaft und von Visual Basic starten. Halten Sie auch ein Auge auf den Branchentrends und Entwicklungen in der Programmierung. Aber mit dem, was die Kurse under Sie lehren.

Ich bin ein Student under von CS als auch und arbeitet als Programmierer in der gleichen Zeit, so dass ich weiß, was Sie durchmachen. Hoffe, dass mein Rat wird Ihnen helfen.

Das primäre Problem mit Python zu lernen ist zunächst, dass jede andere Sprache, die Sie versuchen, danach zu lernen, wird wahrscheinlich von dem unvermeidlichen Vergleich leiden. Es gibt jedoch Zeiten, in denen Sie müssen ein anderes Werkzeug verwenden, da Sie keine andere Wahl haben. Beispiele für diese Situationen könnten gehören:

  • sehr schnelle Ausführung (SWIG, Cython, psyco, PyPy, unladen schluck usw.)
  • Plattformen, auf denen es keine Python-Laufzeit (aber diese sind selten)
  • Nachfrage nach High Multi-Core-Concurrency (verschiedener Python VMs kann in der Regel damit umgehen)

Es ist wahrscheinlich am besten, jedes Werkzeug aus einer Position der Notwendigkeit zu nähern, anstatt einer Vorsichts; nur in anderen Worten, lernt C, wenn es erforderlich ist, dies zu tun, weil die spezifischen situative Anforderungen.

Python hat eine Unmittelbarkeit, die es einfacher zu lernen macht. Python für die Leichtigkeit, C (und verwandte Sprachen) für die Macht.

Da die Frage angegeben wird: Nein Do lernt C nicht zuerst. Lernen Sie Python.

Schließlich werden Sie C lernen, wenn Sie eingebettete Systeme hacken müssen, bootsequences, Linux-Kernel-Code usw. Sie brauchen, um über Zeiger zu lernen und dass Ihr System Crasch und verbrennen, wenn Sie sie nicht gleich beim ersten Zeit. Sie müssen selbst gebrauchte Speicher zurückzukehren. Dies ist in der Regel ein Alptraum, und tragen nicht wirklich zur Freude der Programmierung wie diese Dinge nur in die Quere kommen und macht Sie unendlich viel Zeit im Debugger verbringen.

Schließlich auf Embedded-Systemen finden Sie einige Assembler-Sprache, lernen und dann werden Sie feststellen, dass C ist nur ein Wrapper um die meisten Montage / CPU Möglichkeiten in der Chip-Architektur. Zeiger ist ein Adressierungsmodus, der von den Transistoren tief unten unterstützt wird.

Alle modernen Sprachen macht Sie zu einem besseren und schnelleren Programmierer, und sie haben mit diesen Dingen getan weg. Sie lernen nicht wirklich, wie eine Schreibmaschine in diesen Tagen zu verwenden, es sei denn, Ihr ohne Strom an einen Ort gehen, nicht wahr? C ist einfach für ganz spezielle Anwendungen.

Ich glaube nicht, dass Sie irgendwie im Grunde Python fehlerhaft sein werden zuerst durch das Lernen. Es gibt eine Menge Vorteile für mehrere Programmiersprachen zu lernen und Python selbst ist eine interessante Art und Weise zu erkunden. Zum Beispiel, wenn Sie einige Performance-Probleme mit Python haben, können Sie einige Teile des Codes in C (oder Pyrex / cython oder Fortran etc ...) und Verpackungs es dann nach oben und macht es verwendbar in Ihrem Python-Code erkunden zu schreiben.

Ich persönlich mag mit der Hand eine Menge Code schreiben, wenn ich Dinge lerne. Ich denke, es ist eine gute Praxis und Schreiben Algorithmen (auf Papier) in Python eine Menge Zeit bequemer ist, als sie in C oder C ++ zu schreiben (nicht immer). Das ist so ziemlich aus den Gründen, Peter zu sagen war, gibt es weniger Aufwand auf Details ausgegeben werden und so Sie dann, dass auf anderen konzeptionellen Dinge ausgeben können.

Ich bin immer noch sehr viel ein Bastler, aber eine Sache, die ich in dem Griff komme, ist, dass eine Programmiersprache ist ein Werkzeug, aber es ist oft ein einzigartiges Werkzeug. Es gibt Programmierung Fähigkeiten, die von einer Sprache in eine andere genommen sollen werden, und diese sind groß. Aber in der Lage zu ‚grok‘ Sprache ist auch sehr wichtig, in einem praktischen Sinne. Aus diesem Grund glaube ich, dass welcher Sprache auch immer Sie zuerst lernen entscheiden nicht so wichtig, weil es wichtig ist, die Fähigkeit der Bewegung auf und das Lernen zu entwickeln, um effektiv selbst in einer anderen Sprache auszudrücken sowieso.

In der Welt gerade jetzt gibt es ein gewisses Maß an Python „fanboysm“. Immer mehr Programmierer (einige von ihnen sehr respektables) glauben, dass Python die Antwort auf alle ihre Beschwerden ist. Nachdem er, wie „cool“ Python ist, beginnen sie, die Sprache zu evangelisieren, in einem psychotischen Grad, die offensichtliche Wahrheit zu leugnen: Python nicht für alles / jeden gemeint ist

.

Wenn Sie den Python-Pfad folgen, werden Sie wahrscheinlich einen zusätzlichen Reflex entwickeln: „Sehen wir uns in die Bibliotheken zu sehen, ob es nicht bereits getan hat“, und nach einer Weile, wenn die Zeit kommt, und Sie müssen lernen C, werden Sie dringend sagen: „ich kann nicht glauben, ich meine eigene dict mit einigen void * Zeiger zum halten meine Daten schreiben müssen Was ist mit dieser C-Sprache ist sowieso!?!“

Nachdem im Jahr 1996 über Borlands TurboC ++ 1.0 (blauer Bildschirm und gelben Text) C / C ++ als meine erste Programmiersprache gelernt, kann ich ernsthaft empfehlen, etwas zu lernen (in diesem Fall Python) als C. Das heißt C / C ++ wird dazu beitragen, Sie, wenn Sie jemals wollen mehr über Hardware-Interaktion wissen (Embedded-Entwicklung, Treiber schreiben, etc.)

Nach dem Hansel Podcast der VB.NET-Compiler in C geschrieben sind, so dass es nach wie vor sein Gebrauch hat.

sind die meisten Programmierkonzepte unabhängig von Sprache; Sie sind weit besser ausgehend mit einer Sprache bedient, die einfach zu erlernen und anzuwenden, so dass Sie auf den Grundlagen konzentrieren können. Diese Sprache würde C. nicht

C macht eine schrecklich Unterrichtssprache; es wurde nie als solche verwendet werden soll. Es wurde für erfahrene Programmierer, die mehr Flexibilität und Kontrolle als andere Sprachen der Zeit (Anfang der 70er Jahre) versehen wollte. Sie verbringen etwa C Marotten mehr Zeit für das Erlernen, als Sie über aktuelle Programmierung zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top