Was ist der beste Weg, um langfristig zu gehen: C, Objective C oder C ++? [geschlossen]

7

Eine Sache, auf die ich wirklich zurückkommen möchte, ist C ++ - Programmierung, aber ich bin mir nicht sicher, ob ich zurück zu C ++ (mit einigen grundlegenden Kenntnissen in der Konsolenprogrammierung) oder in C oder Objective C gehen sollte. Ich bin auf der Suche nach langfristigen und einfachen Codierungen wie guten Editoren, Compilern usw., die am schnellsten zu installieren sind.

Um damit zu gehen, welche Software würden Sie vorschlagen, mit einer vorgeschlagenen Sprache zu arbeiten?

[BEARBEITEN]

Einige Leute haben erwähnt, dass es schwierig ist, etwas vorzuschlagen, wenn nicht bekannt ist, was ich tue. Ich habe im Moment kein spezifisches Programm im Kopf, ich betrachte nur eine der drei Sprachen für langfristige Investitionen und Arbeit oder als Ausgangspunkt für etwas anderes.

    
dragonmantank 21.09.2008, 01:28
quelle

14 Antworten

6

Ich kann wirklich nur von C und C ++ sprechen. Lernen würde nicht schaden, wenn aus dem einzigen Grund, dass so viel Legacy-Code in C und C ++ ist.

Pure C ist oft die einzige Option für Betriebssysteme, Treiberentwicklung oder eingebettete Entwicklungsumgebungen. Andere Verwendungen sind Zeiten, in denen die Leistung sehr kritisch ist - wo Sie so nah wie möglich an den Interna der Maschine sein wollen. Es tut nie wirklich weh, C zu kennen, denn diese Anwendungen scheinen nicht so schnell zu verschwinden. C ist auch die "lingua franca" für viele * nix-Anwendungen. Wenn Sie also zu vielen Open-Source-Projekten beitragen möchten (Apache / Svn / Cvs / etc), wäre das Wissen um C eine Voraussetzung.

C ++ wird meiner Erfahrung nach verwendet, wenn Sie "nah an der Maschine" sein möchten, wie beim Codieren von C, aber Sie möchten die Möglichkeit haben, höhere Abstraktionsstufen über eine OOP einzuschließen. Die größte Stärke von C ++ (und größte Schwäche) ist das Multi-Paradigma. Es gibt Ihnen fast alles, was Sie in C tun können, plus viele objektorientierte Funktionen. Zum Beispiel könnten Sie viel superoptimierten C-Code nach Bedarf wiederverwenden, während Sie Klassen erstellen und Vererbung / Polymorphie machen - so viel "objektorientierte" wie Sie wollen. Es gibt sogar Möglichkeiten, einige funktionale Programme in den Mix zu integrieren ...

C ++ wird oft als Versuch kritisiert, zu vielen Dingen zu viel zu sein. Als Versuch, alles zu machen, sagen Kritiker, ist es in keiner Sache sehr gut. C ++ war früher die "Lingua Franca" für Desktop-Anwendungen, aber Java und .Net haben wirklich viele Enterprise-Benutzer weggebracht. Dennoch entscheiden sich viele Anwendungen, die sowohl um die Leistung als auch um die enorme Menge an zusätzlichen nützlichen Funktionen, die für gewöhnlich nur gut genug für Ihre Zwecke geeignet sind, in C ++ verwenden, für C ++.

    
Doug T. 21.09.2008, 01:54
quelle
8

Wenn Sie hauptsächlich unter Windows arbeiten, würde ich C ++ vorschlagen. Microsoft steckt viel Arbeit hinter die neue C ++ / CLI und den nativen C ++ - Compiler. Mit den neuen Ergänzungen TR1 und C ++ 0X werden viele der Probleme behandelt, die in der Vergangenheit bestanden haben.

    
Eclipse 21.09.2008 01:31
quelle
8

Ich würde sagen - wähle jede Sprache, die du magst und bleib eine Weile dabei. In der Zwischenzeit konzentrieren Sie sich auf Algorithmen. Dies sind die Bausteine ​​von Programmen. Die Sprache ist nur eine Sprache.

Wenn Sie eines gelernt haben, ist es nur eine Frage von einigen Wochen, um zu etwas anderem zu wechseln, besonders wenn Sie in der gleichen Familie von Sprachen bleiben (zB C, C ++, Objective C, Java, C # etc ..)

    
Nils Pipenbrinck 21.09.2008 01:32
quelle
4

Wenn Sie glauben, dass Apple eines Tages die Welt regieren wird, Objective C.

Momentan denke ich, iPhone Cocoa Entwicklung ist wo es ist. Also, Obj-C, persönlich.

    
bpapa 21.09.2008 01:29
quelle
4

Sie können jede Antwort ignorieren, die nicht zuerst gefragt hat, was Sie tatsächlich tun werden. Ohne diese Informationen ist die Antwort entweder falsch, irreführend oder einfach irrelevant.

    
Loren Segal 21.09.2008 01:38
quelle
4

Mein Take:

Von den drei Auswahlmöglichkeiten, die Sie angezeigt haben, ist Ihre beste Anfangs-Wette wahrscheinlich C. Sobald Sie C kennen, sich mit seinen Macken auseinandersetzen und es beherrschen, wird das Lernen von C ++ oder Objective-C wahrscheinlich ziemlich trivial sein. (Ihre schwierigsten Punkte werden in der Objektorientierungsseite der Welt sein.)

Gegenwärtig wird Objective-C auf Macs am häufigsten verwendet , aber einige vergessen, dass GNU-Tools für Objective-C existieren und auch in GNUStep unterstützt werden. (Das aktuelle Mac OS X basiert stark auf dem alten NextSTEP, von dem GNUStep mehr oder weniger ein Klon ist.) Das Problem von Objective-C ist jedoch, dass es außerhalb dieser beiden Umgebungen nicht weit verbreitet ist - was es zu etwas macht eine enge Umgebung. (Und mit Obj-C, wie fast jede andere moderne OO-Sprache, verbringen Sie viel mehr Zeit mit dem Erlernen der Framework-Klassen als die eigentliche zugrunde liegende Syntax / lexikalische Regeln.)

Ich bin hauptsächlich ein C # -Entwickler. Das zahlt meine Rechnungen und tut es gut. C # war nicht auf deiner Liste, und ich vermute, ich weiß warum: Es klingt, als würdest du näher am Metall sein, weniger abstrahiert. Ich verstehe das - und ich denke, es ist die richtige Wahl für ein langfristiges Karrierewachstum. Ich begann mit zig Abstraktionen zwischen meinem Code und der Box (zuerst professionell mit Java, dann VB6, dann .NET), und als Ergebnis arbeite ich jetzt hart in meiner Freizeit, um mit dem Rest des Spiels "aufzuholen" Welt - Ich gehe gerade durch das K & amp; R Buch . Zugegebenermaßen habe ich keine professionelle Notwendigkeit, dem Metall so nahe zu kommen - aber ich verspüre ein persönliches Bedürfnis, die Maschine so gut wie möglich zu verstehen.

(Ironischerweise schaue ich auch über Objective-C zurück in die Cocoa-Entwicklung. Ich habe vor Jahren damit herumgespielt und denke, dass ich besser in der Lage bin, es jetzt zu "bekommen" ... Ich persönlich bin der Ansicht, dass das Vorwissen von C den Übergang zu Objective-C viel einfacher und reibungsloser machen wird und es mir weniger wahrscheinlich macht, in meinem Code katastrophale speicherbezogene Bugs einzuführen!)

Am Ende des Tages denke ich, dass das vorhandene Wissen über C (obwohl es für mich offensichtlich nicht notwendig war) eine sehr gute Sache ist und wahrscheinlich im Laufe der Zeit in andere Sprachen übergeht ( was Sie tun tun werden, wenn Sie OS, Treiber oder eingebettete Arbeit nicht einfacher und reibungsloser machen. Ich sage nicht, dass du ohne es nicht auskommen kannst. Ich sage das basierend auf der Art, wie deine Frage formuliert wurde ... Ich denke, es ist die richtige Antwort für dieses Szenario.

    
John Rudy 21.09.2008 10:01
quelle
3

Ich sehe Ihre Frage etwas anders an und würde Ihnen schlussendlich vorschlagen, dass Sie Objective-C lernen. Ich habe dafür ein paar Gründe.

Eins, Obj-C hat eine ganz andere Sichtweise auf das OO-Modell, wie es allgemein in Sprachen wie C ++ implementiert ist. Obj-C basiert auf Smalltalk und als solche werden alle "Methodenaufrufe" als Nachrichten implementiert, die an das entsprechende Objekt gesendet werden. Aufgrund dessen konnten die Programmierer dies in einige sehr interessante und ziemlich mächtige Techniken ausweiten. Ein Teil des Grundes, eine neue Sprache zu lernen, sollte immer darin bestehen, die Sicht auf die Dinge zu erweitern - Obj-C hat in dieser Hinsicht viel mehr Potential als entweder C oder C ++.

Two, Obj-C, zumindest auf dem Mac, hat einen extrem leistungsfähigen Rahmen mit einer exzellenten Toolchain. C und C ++ haben auf keiner Plattform das gleiche kohäsive Framework, obwohl Microsoft bei ihrer Implementierung wahrscheinlich nah dran ist. Die Arbeit mit Cocoa war genug, um mich davon zu überzeugen, dass Obj-C eine großartige Sprache ist. Die Bibliothek ist wirklich gut durchdacht und macht mich eifersüchtig auf diejenigen, die täglich damit arbeiten.

Drei, Obj-C ist eine Obermenge von C. Wenn Sie es also lernen, werden Sie bereits mit der Syntax von C vertraut sein. Auch die C-Standardbibliothek ist ziemlich anämisch und kann relativ schnell erlernt werden. C ++ ist etwas besser, wenn Boost verfügbar ist, aber Boost ist nicht annähernd so zusammenhängend wie Cocoa.

Letztendlich müssen Sie entscheiden, was Ihre Prioritäten sind. Wenn Sie nur etwas Neues lernen möchten, gehen Sie mit Obj-C.

    
Mark Kegel 21.09.2008 14:21
quelle
1

Hängt davon ab, was du tust. Wenn ich einen auswählen müsste, würde ich C ++ sagen. Es ist plattformübergreifender als Obj-C und weniger schmerzhaft als C. Aber wenn Sie Mac programmieren, sollten Sie Objective-C kennen. Wenn Sie Embedded-Programmierung oder Kernel-Hacking durchführen, möchten Sie wahrscheinlich C verwenden.

    
Jason Baker 21.09.2008 01:35
quelle
1

Gibt es einen Grund, warum Sie nicht mit C ++ gehen und stattdessen C oder Objective C verwenden? C ++ hat heutzutage die mit Abstand größte Community, die größte vorhandene Codebasis und ist von allen dreien am besten vertreten. Wenn Sie das nicht für wahr halten, erklären Sie bitte (ernsthaft, ich bin wirklich interessiert).

Außerdem ist C ++ das einzige, das von MS in Bezug auf .NET unterstützt wird (wenn Sie natürlich eines Tages zu .NET migrieren möchten).

    
petr k. 21.09.2008 01:39
quelle
1

Intel investiert viel in C ++ - Bibliotheken, um gegen ihre Prozessoren zu laufen. Da Intel in letzter Zeit die PC-Prozessorwelt zu dominieren scheint, scheint es eine gute Wahl zu sein.

    
Josh McAdams 21.09.2008 02:57
quelle
0

Beginnen Sie mit C und erweitern Sie dann möglicherweise Ihr Wissen auf C ++, wenn Sie eine Objektorientierung benötigen. Objective C ist eine obskure Sache wie Apple Script, von der nur Apple-Entwickler jemals gehört haben (wenn überhaupt), Sie werden mit dieser Sprache nicht weit kommen (keine Beleidigung für Fans dieser Sprache).

C ist ziemlich einfach zu lernen (im Vergleich zu C ++) und Sie haben ein gutes Basiswissen für jede andere Sprache, die Sie später lernen möchten (besonders C ++).

Was die Antwort von Loren Segal betrifft, ist es egal, was Sie tun wollen, wenn Sie zwischen C und C ++ wählen wollen. Es ist nur eine Frage der Präferenz. Beide haben die Bibliotheken für alles (da C ++ - Bibliotheken oft nur objektorientierte Wrapper um C-Bibliotheken sind), beide haben eine riesige Community, stabile IDEs und Compiler.

    
jkramer 21.09.2008 01:40
quelle
0

Pure C ist ein gutes Grundwissen, egal auf welche andere Programmiersprache Sie sich dann konzentrieren. Insbesondere Objective-C ist nur ein einfacher C-Code mit Smalltalk-Ideen. Obwohl C ++ weit von C entfernt ist, ist es für mich immer noch klar, dass C die nützlichste Sprache ist, die man kennen sollte. In Objective-C fallen Sie oft auf C. In Ruby, Python, Erlang und unzähligen anderen Sprachen gehen Sie auch oft in den C-Modus. Es ist auch eine Sprache, auf die Sie immer zählen können, wenn Sie sie auf jedem Computer verwenden können, den Sie berühren.

Es ist also meine persönliche Ansicht, dass jeder Programmierer C wirklich wissen sollte. Zumindest ein bisschen.

    
Jon Gretar 21.09.2008 11:05
quelle
0

Ich habe kürzlich objective-C gelernt (nachdem ich angefangen habe, mit Cocoa herumzuspielen), nachdem ich etwa 10 Jahre C ++ - Entwickler gewesen bin.

Ich fand die Erfahrung des Lernens von objective-C neben C ++ äußerst lehrreich, auch wenn ich objective-c wahrscheinlich nicht für irgendein reales Projekt verwenden werde.

Sowohl objective-C als auch C ++ fügen eine Schicht objektorientierter Programmierung auf C hinzu. Aber sie tun es auf fast völlig entgegengesetzte Weise. Es scheint, dass jedes Mal, wenn C ++ eine Designentscheidung traf, objektive C die gegenteilige Entscheidung traf. Zum Beispiel verwendet C ++ statische Typisierung, während Ziel-C dynamische Typisierung verwendet. Oder (neuere) Ziel-C verwendet die Garbage-Collection, die C ++ nicht hat.

Das hat mich wirklich dazu gebracht, die Konzepte der objektorientierten Programmierung und die damit verbundenen Designentscheidungen viel besser zu verstehen.

    
Cayle Spandon 23.09.2008 23:37
quelle
-3

Wenn Sie sich nur auf Windows-Betriebssysteme konzentrieren möchten, sollten Sie direkt mit C # (.Net Framework) beginnen

    
Gautam Jain 21.09.2008 01:33
quelle

Tags und Links