Artikelformat

Welche Programmiersprache soll ich wählen?

Diese Fragen haben sich schon hunderttausende vor mir gestellt und ich werde sicherlich nicht der Letzte gewesen sein, der sich Gedanken darüber macht, auch im zart vorgeschrittenen Alter von 37, noch eine Programmiersprache zu lernen – die Frage ist nur, welche?

Und nein, ich mache das nicht, weil ich meine damit in irgendeinem App-Store Geld verdienen und die Welt erobern möchte, sondern, weil ich wissen möchte, wie man ein Programm entwickelt und programmiert. Dabei geht es mir nicht, wie im oberen Bild um HTML oder PHP, sondern ich möchte eine native Programmiersprache lernen, nur weiß eben noch nicht welche.

Auf eine kurze Frage bei Facebook habe ich von drei unterschiedlichen Personen – wie sollte es anders sein – drei unterschiedliche Antworten erhalten. Noch habe ich mich nicht entschieden und muss auch wohl dazu sagen, dass ich bisher wirklich Null-Ahnung habe. Ich habe in den 80ern zwar ein wenig Basic auf meinem Schneider CPC gehackt, nur weiß ich davon heute auch nix mehr und helfen würde es mir mit ziemlicher Sicherheit auch nicht.

Ich möchte in Zukunft im Grunde 2-3 kleinere Projekte starten und daraus eben auf dem Mac kleine Apps (keine Spiele) schreiben, nativ. Was mich jetzt interessieren würde – falls hier einige Programmierer mitlesen – in welcher Sprache ihr aktuell nativ programmiert, wie ihr zu dieser Sprache gekommen seid und eure Meinung, mit welcher Sprache man als Anfänger heute anfangen sollte?

Kein HTML, kein PHP, kein Adobe-Air, sondern native Apps für den Mac. Spieglein Spieglein an der Wand, welche ist die beste/einfachste Programmiersprache im Land? C, C++, ObjectiveC, Python, Ruby … so viele Sprachen, so wenig Ahnung …

Autor: Stefan

Der aus Mönchengladbach mit der Raute im Herzen! Kann mit Computern grundsätzlich umgehen, ist aktuell jedoch mehr sportlich motiviert mit seiner Kamera in den Stadien von NRW unterwegs.

54 Kommentare

  1. Python. Wenn du ne GUI habn willst wirst du um Objective-C aufm Mac nicht herum kommen. Sonst: Python.

      • Wenn sich die PC-Kentnisse darauf beschränken, den Mauszeiger herumzuschubsen, dann ist C nicht einfach, nein. Und der Geschwindigkeitsvorteil von C gegenüber anderen gängigen Sprachen ist unbestreitbar.

  2. Ich schreibe gerade in Obj-C…
    Bin aber auch von C,C++,C#,Java zu Obj-C bekommen.

    Wenn du Mac Apps schreiben willst, ist es schon am sinnvollsten dies in Obj-C zu tun. Allerdings glaube ich, dass es für Anfänger nicht einfach ist sich dort einzuarbeiten, da alles (die Sprache, die Frameworks etc) neu ist..

    Mein Tipp:
    Ich würde zum probieren erst einmal eine kleines Konsolenprogramm in C schreiben, damit man sich mit printfs, was sind charakter, ints etc sich vertraut macht. Erst denn würde ich den Sprung zu Obj-C machen..

    Viele Grüße
    Michael

  3. Zum lernen und dennoch einigermaßen ernsthaft programmieren würde ich ebenfalls Python empfehlen. Extrem einfache Syntax, so dass man sich auf z.B. auf das Erlernen von Programmierkonzepten konzentrieren kann, ohne lästige Tippfehler suchen zu müssen. Zudem kann man es überall anwenden. Ob nun aufm Rechner, aufm Server oder in Verbindung mit C. Python macht einfach spaß ;)

    Ansonsten lernen wir in der Uni Java. Kann ich auch empfehlen, da einem im Gegensatz zu C/C++ sehr, sehr viel Arbeit abgenommen wird. Aber so richtig Nativ ist das natürlich nicht.

    Ich denke wenn im Endeffekt, wenn du tatsächlich nur aufm Mac nativ programmieren willst ist Objective-C schon das was du suchst. Ist jedoch gerade zum Anfang nicht ganz ohne…!

  4. Wenn Deine Projekte irgendwas mit der Verarbeitung von Strings zu tun haben, laß die Finger von C. Den Streß will man sich glaube ich heute nicht mehr antun (und ich habe viele Jahre C programmiert, und das auch gerne).

    Ob man jetzt Python, Ruby, Perl oder PHP nimmt, ist eigentlich egal … alles sind im Grunde ihres Herzens Skriptsprachen.

    Warum willst Du unbedingt “nativ” programmieren? Das ist heute eigentlich nicht mehr nötig und auch nur bedingt sinnvoll. Und mit Speichermanagement von Hand, NULL-Pointern und nullterminierten Strings herumzufriemeln ist echt nicht mehr Stand der Technik auf einer Maschine, die auch Sprachen mit Stringobjekten und Garbage Collection verarbeiten. Also wie gesagt Hände weg von purem C!

    Die für MacOS angemessenste, weil kulturkompatible, Sprache wäre ObjectiveC. Das kenne ich selber allerdings so wenig, daß ich dafür keine Empfehlung aussprechen will (aber auch nicht das Gegenteil).

  5. C > C++ > ObjectiveC/Cocoa

    Wenn du native Applikationen für Mac OS X programmieren willst, dann gibt es nichts anderes als ObjectiveC mit Cocoa. Aber um überhaupt mal in ObjectiveC rein zu kommen, sollte man sich den Grundkurs C++ antun. Um hier wiederum ein besseres Verständnis zu haben, sollte man sich den Grundkurs C antun.

    Gang grob umrissen:
    C ist die Grundsprache. C++ ist C mit OOP (und noch ein paar Kleinigkeiten zusätzlich) und ObjectiveC ist C++ mit anderer Syntax – statt true/false => yes/no (und nochmal ein paar Dingen dazu).

    Alternativ kann man natürlich auch noch auf Java zurückgreifen. Aber das will man in der Regel nicht. Ist jedoch eine Möglichkeit.

  6. Würde Dir auch zu Objective-C raten, wobei es immer darauf ankommt, was man machen will. Jede Sprache hat ihre Vor- und Nachteile.
    Mir hat am Anfang die syntax von Objective-C nicht behagt, da ich aus der C++ Ecke komme.
    Meine Empfehlung wäre: Objective-C.

  7. @Christian K.

    Man kann auch sagen…. C ist die Grundsprache und C++ bzw. ObjectiveC sind die Dialekte … aber ansonsten würde ich dir hier in allen Punkten voll zustimmen.

  8. “C++ is to C like Lungcancer to Lung”

    Was ich sagen will erstmal mit C anfangen, dann aber weiter zu Objective-C.

  9. Jürgen Peters

    15.04.11, 13:52, #17

    Wenn die Applikationen NUR auf einem Mac laufen sollen, definitiv Objective-C. Für Cross Plattform Entwicklung würde ich eher C++ in Verbindung mit so was wie WxWidgets benutzen. Sprachen wie Ruby, Python oder Perl sind zwar super, werden aber in Punkto Ressourcenverbrauch nativ compilierten Sprachen wie C, C++ oder Objective-C immer hinterher hinken. Bei PHP und Java überwiegen m.E. trotz ihrer Beliebtheit die Nachteile.

  10. Also mit dem programmieren glaub ich, muss man eher Lösungen lernen. Die Anwendung in den Sprachen ist dann identisch.
    Ich habe Ruby ganz schön empfunden zu lernen. Python kann nochmal bisschen mehr. Wird auch häufig für den Einstieg empfohlen. Bin damit aber selber nie warm geworden. Leider. Dabei gibt’s für Audio so richtig geilen Kack für Python.
    Ansonsten natürlich Objective-C. Das ist aber doch schon gehoben.
    Am besten für Anfänger sind wohl Skriptsprachen. Ruby, Python, Bash, AppleScript.

  11. Mit Deiner Prämisse Mac-Programme zu schreiben, kann ich Dir auch nur zu Objective-C raten. Natürlich ist die Syntax nicht ganz so elegant wie MacRuby, aber am Ende des Tages willst Du Deine Mac-Projekte über eine MacOS-mäßige GUI bedienen … und das geht am Besten mit Objective-C und den von Apple angebotenen Frameworks. My2cents.

  12. Ich habe mit C# begonnen und bin aktuell immer noch damit oder dann mit Java und für Scripts und Konsolenanwendungen auch mal wieder Python unterwegs.

  13. Ich würde mich auch Zettt’s Meinung anschließen. Das wichtigste bei der Programmierung sind die Konzepte. An der Objekt Orientierung kommt heute keiner mehr vorbei.

    Skriptsprachen (wie Perl, PHP, Python, Ruby) lassen sich leichter erlernen. Bei Python und Ruby ist der Objektorientierte Ansatz durchgängig. Von daher würde ich Dir eine der beiden empfehlen. Danach kannst Du immer noch Objective-C lernen.

    Übrigens:
    Das im Bild ist nicht HTML oder PHP, sondern CSS und somit eine Beschreibungssprache, die in die Beschreibungssprache HTML eingebettet werden kann. :-)

  14. Ich glaub ich würde Objective C nehmen, aus dem Grund auch fürs iPhone was schreiben zu wollen.

    Bei mir tut sich die iPhone Frage auf:
    Nativ (Objective C) oder Titanium oder PhoneGAP?

    Hat da jemand eine Idee was sinnvoller ist?

  15. Ruby/Python und (da es glaube ich noch keine Erwähnung fand): JavaScript.

    Im vollen Ernst. Mittlerweile jede Plattform (sei es Browser auf allen möglichen Betriebssystemen, Mobile Geräte, ChromeOS) und auch serverseitig (dank node.js) unterstützen JavaScript und das, ohne dass man sich groß um Compiler und Plattformunabhängigkeit Gedanken machen muss. Was es damit zu einer Sprach mit Zukunft macht, imho.

    Seit ECMAscript5 eine reife Sprache und wenn man sich reinfitzt und an ein paar grundlegende Sachen hält auch durchaus schön zu programmieren.

  16. Hey,
    hab mir vor kurzem die gleiche Frage gestellt, jedoch unter der Prämisse, dass ich sowohl auf meinem Macbook als auch auf meinem Desktop mit Win arbeiten kann ohne mir gedanken über Kompatibelitäten bezüglich der verschiedenen Plattformen machen zu müssen. Daher habe ich mich für Java entschieden. Wie schon von einem meiner Vorredner erwähnt ist es mit Java auch möglich Anwendungen für nahe zu jedes beliebige System zu erstellen, was unter Umständen später sehr hilfreich sein kann. Zwar hinkt Java bezüglich der Geschwindigkeit hinter c(++) her, das sollte jedoch zumindest bei kleineren Projekten nicht all zu stark ins Gewicht fallen.

  17. Objective-C, keine Frage.

    Da du eh neu anfängst, nimm gleich DIE native Sprache für Mac.. alle andere Sprachen wären eh nur Wrapper um Objective-C drumrum, damit sie Cocoa (Mac GUI Framework) ansprechen können..

    So lernst du früher oder später auch C/C++, da es auf C aufbaut und man C & C++ nahtlos mit Objective-C kombinieren kann.

    lg

  18. Würde auch Objective-C empfehlen. Da es auch sehr viele gute Bücher und Informationen gibt. Was wohl zum lernen sehr intressanz ist.

    Ich kann auch Objective-J mit Cappuccino empfehlen. Ist Als Obj-C Entwickler super easy, da es fast 1:1 ist und das gute es läuft im Browser.


  19. Bernd:

    Wenn sich die PC-Kentnisse darauf beschränken, den Mauszeiger herumzuschubsen, dann ist C nicht einfach, nein.

    Auch nicht einfach: sich heutzutage noch Gründe aus den Fingers zu saugen, um zum Programmieren auf einem modernen Betriebssystem etwas zu empfehlen, das einem Makroassembler näher steht als einer Hochsprache, geschweige denn einer annähernd zeitgenössischen.

    Und der Geschwindigkeitsvorteil von C gegenüber anderen gängigen Sprachen ist unbestreitbar.

    Stimmt. So schnell ist nix anderes in einen nicht initialisierten Pointer gelaufen.

  20. Da du von mehreren Projekten sprichst. Such dir die passende Programmiersprache zum jeweiligen Projekt. Programmiersprachen sind dazu da als Werkzeug zu dienen um etwas aufzubauen und es ist nicht sinnvoll mit einer Pinzette nen Nagel in die Wand zu hauen! Es geht zwar irgendwie, aber mit nem Hammer wäre es einfacher gewesen. Ansonsten C++! Maschinenunabhängig, schnell und hat ne riesige Community.

  21. Also ich bin ja Java-Fan, aber wenns um Mac geht, würde ich wohl Objective-C wählen. Afaik ist das auch die einzige Möglichkeit (neben Webapps), um iPhone Apps zu schreiben. Korrigiert mich, falls ich falsch liege :)

  22. Frage an die Cracks von Einem, der sich für Cross-Plattform-Programmierung interessiert: Worin sind denn Chrome und Firefox geschrieben? Zumindest das glaube ich verstanden zu haben: Durch die XUL-API können Entwickler von Firefox-Extensions weitgehend ohne Rücksicht auf das Host-OS programmieren. Aber wie sieht’s denn darunter aus? Ist der Firefox für Mac in derselben Sprache geschrieben wie Firefox für Windows? Und wenn ja, wieso kommt er dann so nativ rüber, obwohl’s nicht Objective-C/Cocoa ist?

    • Also ich bin kein C(++)-Kenner und habe mich nicht mit der Programmierung von Firefox/Chrome beschäftigt, aber die werden dort sicherlich eine Abstraktionsschicht eingezogen haben, sodass nur bestimmte Teile auf das Betriebssystem angepasst werden müssen.

      Ansonsten denke ich mal, dass sich sehr an ANSI-C gehalten wird, sodass viele Code-Teile für verschiedene Betriebssysteme kompiliert werden können.

  23. Ich bin von Berufs wegen (High Performance Computing) geknechtet C oder Fortran zu programmieren, da es hier einfach um jede Millisekunde geht.

    Am liebsten schreibe ich aber noch immer in Python, da es einfach eine Sprache ist die sich fast von selber schreibt, und sich einem fast nie in den Weg stellt.

    Da du nicht vorbelastet bist, sollte dir Python noch viel einfacher fallen, da du dich nicht immer ärgerst wenn z.B. for Schleifen komplett anders behandelt als C. :D

  24. Wer hier C, C++, Java oder Obj-C antwortet, hat die Frage ignoriert. Wer ansatzweise verstehen will, was er/sie schreibt, und schnelle Ergebnisse sehen will, nimmt besser Ruby. Darüber hatte ich auch schon gebloggt: http://www.wendtswelt.de/2010/06/programmieren-anfaenger/ — in den Kommentaren wurde auch Python wärmstens empfohlen, aber dazu hatte ich bisher keine Gelegenheit.

    Ich war eine Weile im Smalltalk-Umfeld tätig, aber deren Bruch mit der gewohnten Umgebung ist schwer zu vermitteln. Ruby genießt unter denen, die Anfängern Programmieren beibringen, sehr hohe Akzeptanz. In dem verlinkten Beitrag verweise ich noch auf Websites, auf denen du Ruby quasi „live“ ausprobieren kannst.

    Viel Spaß!

  25. Also, ich bin Verfechter von C++ in Verbindung mit drm QT-Framework von Nokia bzw. ehemals Trolltech.

    Die Einstiegshürde liegt imho recht niedrig, der QT-Creator ist schick, funktional und übersichtlich, außerdem lassen sich die Source bei Bedarf auch unter Linux oder Windows übersetzen.

    Weiterer Vorteil: QT ist LGPL.

    Gruß
    Stefan

  26. Perl, Ruby oder Python sind klasse Allround-Sprachen, wenn nicht gerade eine ausgefeilte GUI im Vordergrund steht. Damit bekommst du sehr viele Alltagsproblemchen im Handumdrehen gelöst und Dinge, die manuell einfach nerven, sehr schnell automatisiert. :)

  27. Nach deinen Anforderungen bleibt eigentlich nur Objective-C. Alles andere ist nur komische Bastelei am Mac/iOS.

  28. Ich kann Objective-C und Ruby.

    Ruby ist sicher einfacher zu erlenen. Kenne MacRuby aber nicht.

    Ich würde dir Objective-C für native Mac Apps empfehlen.

    Sowohl für Ruby und Obj-C musst du sicher zuerst das Konzept der Objektorientierung verstehen.

  29. Auch wenn C und damit auch Objective-C nicht einfach zu erlernen ist, lassen sich viele schnelle Erfolge erzielen. Es gibt gute Bücher, Podcast und viele Online-Ressourcen. Ich wünsche dir viel Erfolg beim Lernen und finde gut, dass du damit in deinem gehobenen Alter anfängst ;) Nee war natürlich ein Witz. Dafür ist es niemals zu spät.

    Egal was du auswählst, ich hoffe du hältst uns mit deiner Entscheidung und deinen ersten Erfolgserlebnissen auf dem Laufendem.

  30. Einsteigen würde ich mit einer Skriptsprache wie Python oder Ruby, um die Grundkonzepte der Objektorientierung zu verstehen. Da hast du nicht viel (zunächst) unnötiges Zeug, was dich ablenkt, und kannst dich ganz darauf konzentrieren, die Sprache zu lernen statt die Probleme der Sprache zu umgehen. Persönlich finde ich ja, dass C# zu den elegantesten Sprachen gehört und leicht erlernbar ist. Mit MonoMac kann man offenbar auch Cocoa benutzen, hab ich aber nie getestet, da kein Mac. Welche Sprache man dann aber schließlich für sein Projekt nimmt, hängt natürlich von den Anforderungen ab.

  31. An sich kommt man beim wohl kaum an ObjectiveC vorbei.

    Wenn es Geld kosten darf, dann schau Dir mal RealStudio bzw. RealBasic an. Fürs Hobby kommt man damit sehr schnell zu Ergebnissen.

    Phyton bin ich nicht warm geworden. Wichtig ist halt, ob nur Mac oder später vielleicht doch auch mal Windows oder Linux. Das macht bei der Auswahl durchaus einen Unterschied.

  32. Also zum lernen der konzepte ist java das nonplusultra, nicht weil es der heilige gral ist sondern weil die sprache das verständnis schärft und kaum fehler zulässt

  33. Ich bin vom Feedback überwältigt und möchte mich bei allen bedanken, die mir hier einen Kommentar zu dieser Frage hinterlassen haben.

    Nachdem ich jetzt alle Antworten gelesen habe, habe ich auch meine Entscheidung im Grunde schon getroffen. Dabei hatte ich mich ja im Vorfeld schon informiert und eine Vorentscheidung getroffen und einige Kommentare hier haben mich darin eigentlich nur bestärkt.

    Bei Python und Ruby ist der Objektorientierte Ansatz durchgängig. Von daher würde ich Dir eine der beiden empfehlen. Danach kannst Du immer noch Objective-C lernen.

    Das denke ich auch. Wenn ich die Sachen mit dem “Objektorientiert-Fu” gelernt habe, kann man dann später immer noch auf eine andere Sprache umsteigen, wenn man den Ansatz mal verstanden hat.

    Also dann doch Ruby … kennt einer Apps, die in Ruby programmiert wurden?

  34. C++ mit QT.

    Mächtig, relativ einfach zu lernen und vor allem platformunabhängig.

    Beispiel? Photivo… wir basteln grade an den letzten Details für die Mac-Version, Linux und Win laufen schon länger… so haben wirklich alle was davon…

    Viele Grüße mike

  35. Also:
    1. ist die Sprache nur die halbe Miete – entscheidend ist das Framework, welches Du verwenden kannst (z.B. reines C++ ist ziemlich beschränkt ohne Libs, bei Objective-C liegt der Reiz eher in Cocoa als in der Sprache selbst) und dann auch die Tools, die es zum Entwickeln gibt
    2. ist es ziemlich egal, wie die Sprache heisst – wer einmal richtig programmieren kann, der versteht jede neue Sprache relativ schnell (solange man nicht soetwas wie Haskell nimmt)
    3. hatte ich kürzlich ne Menge Freude mit Xcode und Objective-C – nach längerer Zeit mit C++/CLR und C# eine sehr positive Erfahrung. Objective-C wirkt zwar teilweise etwas altbacken, was aber durch das Toolset und das Framework locker aufgewogen wird

  36. Stefan, mal was ganz anderes: Wir spielen wohl oder übel bald der selben Altersklasse. Auf jeden Fall habe ich als Jugendlicher mit JavaScript und C rumgespielt. Nunmehr bin ich in einem gänzlich anderem Umfeld tätig. Ich habe ständig Ideen für Software und verfolge viele Entwicklungen. Allein, für das Programmieren reicht es nicht mehr aus. Für das, was ich machen will, reichen meine Fähigkeiten nicht. Zeit diese mir anzueignen, hab ich eigentlich nicht (Beruf + Weiterbildung, Familie, andere Hobbies). Ich finde mich trotzdem regelmäßig in Situationen wieder, wo ich mir denke: „Jetzt geht es los.“ Tutorials, Bücher, Podcasts, all das liegt bereit. Nur merke ich dann immer nach einigen Wochen, dass es ein fernes Ziel ist, auf einem Niveau zu arbeiten, mit dem ich zufrieden sein kann. Von dem, was man in Tutorials lernt, bis zu den Lösungen, die man bräuchte, ist es ein weiter Weg. Die jugendliche Neugier fehlt letztlich ebenso ein wenig, wie die Bereitschaft, bis nach Mitternacht in Code zu versinken (schön wars …) Gleichzeitig hieße es Abstriche zu machen, bei Interessen, die ich als dringendes Gegengewicht zum Beruf brauche. Ebenso hieße es, meine Zeit nicht für Weiterbildung zu investieren, Kenntnisse zu erwerben, an denen ich gemessen werde.

    Ich möchte dich nicht entmutigen, aber ich für meinen Teil habe bei diesem Thema gelernt, dass man manchmal einfach Abstriche machen muss. Wenn man es so sehr wöllte, wie man es vielleicht manchmal vorgibt, könnte man es bereits.

    lg,

    Timmey

  37. Ich schlage mich beruflich mit C und C++ rum. C ist prima für kleine Sachen, wenn man nur begrenzte Ressourcen hat (embedded/Mikrocontroller). Man ist sehr nah an der Maschine, das ist aber nicht gerade komfortabel. C++ bietet neben den C-Funktionen noch Objektorientierung und eine Template-Bibliothek. Damit kann man so ziemlich alles machen was man möchte -auch sehr große Projekte, aber man hat eine krasse Lernkurve. Ich programmiere seit 15 Jahre, seit 6 Jahren beruflich Vollzeit im embedded Bereich, und würde sagen dass ich noch nicht alles im Bereich C/C++ kenne.

    Ich habe viel gutes über Pyhton gehört in letzter Zeit, wenn auch noch nicht selbst damit gearbeitet. Ich denke aber, dass eine interpretierte “Skript” Sprache mit anständiger Bibiliothek an fertigen Modulen für den Anfang und auf PC/MAC-Hardware sinnvoller ist als C/C++. Ob das jetzt Python, Perl, Ruby, PHP ist, ist egal. Python ist grade “in” – vielleicht also das.