Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

31

02.10.2013, 10:57

Ich lerne seit zwei Monaten C++ und ich liebe es!

Dann bleib dran und lern ordentlich C++. Wenn du C++ kannst, lernst du Java im Vorbeigehen, umgekehrt dagegen nicht. Ich würde einem Anfänger sogar wehement von Java abraten. In Java fehlen einige imo wesentliche Konzepte. Nach allem, was ich so gesehen hab, erzieht es die Leute zu keinem besonders erstrebenswerten Programmierstil. Und nachdem mittlerweile sogar Paper über dieses Thema geschrieben werden, bin ich mit dieser Beobachtung offenbar nicht allein...

Ich will damit aber auch irgendwann Geld verdienen!

Ich mein ich hab Java noch nie probiert aber von dem was man hört ist es finanziell viel sinnvoller es zu lernen.

Der Bereich der IT ist wohl einer der wenigen Bereiche, wo man sich noch den Luxus leisten kann, zu tun, was man gerne tut, anstatt zu tun, was am meisten Kohle verspricht. Mag sein, dass ich einfach nur Glück hatte, aber ich bin bisher ganz gut damit gefahren, mich nicht darauf zu konzentrieren, womit man am meisten Geld verdienen kann, sondern darauf, was mich am meisten Interessiert. Insbesondere, wenn du ein guter Programmierer werden willst, solltest du dich auf deine Interessen konzentrieren. Denn der einzige Weg, um ein guter Programmierer zu werden, ist, soviel wie möglich zu Programmieren. Wenn finanzielle Interessen deine einzige Motivation zu Programmieren sind, dann solltest du es imo besser bleiben lassen. Ansonsten solltest du dir im Klaren sein, dass eine Programmiersprache nur ein Werkzeug ist. Du wirst im Laufe deiner Zeit noch viele Sprachen lernen, das passiert einfach.

-Man kann Android apps damit entwickeln und somit selbstständig Geld verdienen

Und man kann iOS Apps mit Objective-C schreiben und Windows Phone Apps mit C# und JavaScript und F# und was sonst noch alles. Ach ja, C++ gibts auf allen drei Plattformen. Sich als App Entwickler durchzufüttern, ist heutzutage, denk ich, wesentlich schwerer als man vielleicht glaubt.

-Bankensysteme werden auf Java optimiert

Soweit ich weiß, verwenden die auch noch COBOL und so Kram...

-Java ist Systemunabhängig

Nope, Java ist ein System.

-Java ist unkomplizierter

Das sieht nur auf den ersten Blick so aus. Die scheinbare Unkompliziertheit erkauft man sich in Java zu einem imo viel zu hohen Preis. Wenn man mal mehr machen will, als ein paar Objekte rumzuschubsen, wird diese "Unkompliziertheit" meiner Erfahrung nach sehr schnell zur Qual.

Für C++ kenne ich nur zwei Pros, unzwar, dass es systemnah und vielseitig ist.

C++ ist kompliziert und schwer zu beherrschen, aber extrem mächtig. C++ deckt das Spektrum von ganz unten bei der Maschine bis zur Metaebene völlig ab, ich kenne keine andere Sprache, die einen vergleichbar vielseitigen und gleichzeitig kontinuierlichen Programmierstil erlaubt. C++ bietet overheadfreie Abstraktion, absolute Kontrolle wo nötig und ist so ziemlich der Standard, wenn es um Performance geht. C++ bietet Möglichkeiten zum Ressourcenmanagement, die ich in praktisch keiner anderen Sprache jemals so gesehen hab, die ich aber in praktisch jeder Sprache früher oder später vermisse. Und C++ ist bei all dem auch noch portabel...

Aber wenn die halbe Welt auf Java umsteigt hilft das doch auch nichts...

Dass "die halbe Welt auf Java umsteigt", war vielleicht in den 90er Jahren so. So Zeug wie JavaScript und so ist im Moment wohl viel eher in Mode als Java, Java is doch schon längst wieder ein alter Hut. Ich persönlich würde mir erwarten, dass C++ in Zukunft ein wesentlich heißeres Thema sein wird, als Java. Aber das hängt natürlich davon ab, was genau man macht. Selbstverständlich wird es noch viele viele Jahre lang alte Java Software zu warten geben. Ich persönlich würde meinen jetzigen Job allerdings für keine mir vorstellbare Summe gegen das Warten alter Bankensoftware eintauschen...

Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von »dot« (02.10.2013, 11:55)


H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

32

02.10.2013, 12:22

Ich kann dir auch nur raten das Programmieren in einer Sprache zu lernen, bis du Programmieren kannst. Wenn man sagt man lernt (Beliebige Sprache) Programmieren fällt meiner Meinung nach immer ganz weit hinten runter, dass man Programmieren lernt… etwas, dass recht Sprachunabhängig ist aber das Eigentliche.

Programmieren lernen ist das wichtige, für mich persönlich ist die Sprache ein Werkzeug. Wenn man gut arbeiten will bedient man sich für gewöhnlich des passenden Werkzeugs für eine Aufgabe. Später bedeutet dies, die passende Sprache für eine Aufgabe zu kennen und dann entsprechend zu benutzen. Die letzte Aussage ist etwas weltfremd, sollte aber nur mal den Blick darauf lenken, dass oft Sprachen für eine gewisse Aufgabe entwickelt wurden und Ein universelles Konzept in nicht wenigen Fällen kontraproduktiv ist, sofern dies nicht speziell die Aufgabe darstellt.

Anhand von C++ sich die Programmierung bei zu bringen ist aufgrund der Sprache an sich nicht ganz so leicht, jedoch mach dies die sehr gute verfügbare Literatur weit mehr als wett wenn man darauf zugreifen kann.

Programmieren lernen ist sprachunabhängig (Meine Meinung)
:love: := Go;

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

33

02.10.2013, 12:42

Klar man lernt bei Java keine systemnahen Eigenschaften, die Frage ist aber, brauch ich das immer?


Ich weiß nicht inwiefern man sowas lernt, wenn man direkt mit Java anfängt (ich hab mit C++ angefangne), aber zum Beispiel für die Wahl der passenden Collection ist es doch schon praktisch zu verstehen, wie sich ein Array von einer Verketteten Liste unterscheidet.

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

34

02.10.2013, 12:45

Ich selbst hab zwar den Weg von Assembler, C, C++ zu Java gemacht, aber das würde ich heute nicht mehr so machen.
Klar man lernt bei Java keine systemnahen Eigenschaften, die Frage ist aber, brauch ich das immer? Wenn man es dann mal braucht kann man es immer noch lernen und das geht dann schneller, als wenn man direkt mit der Zeigerarithmetik und Speicherverwaltung erschlagen wird. Würde man der Argumentation weiter folgen müssten alle mit Assembler anfangen.
Ich kann deine Aussage verstehen. Jedoch hat dies im eigentlich Sinne nichts mit dem Programmieren zu tun, sondern mit den Daten die man verarbeitet. Die Möglichkeit mit welchen Daten man am Ende Arbeiten kann wird durch die Sprache mit vorgegeben.
Programmieren ist ja die Tätigkeit mit Daten (Welchen auch immer) umzugehen. Sie zu verarbeiten, bzw. informatische Konzepte an zu wenden. (grob gesagt)

Ich finde es recht unerheblich sich über Aufgabengebiete und deren Spracheigenschafften Gedanken zu machen wenn das Ziel erst mal nur darin besteht das Programmieren zu lernen.
Man kann auch in C++ programmieren ohne diese Eigenschafften erst mal berühren zu müssen, man kann… muss aber nicht.
:love: := Go;

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

35

02.10.2013, 12:45

Datenstrukturen lernt man auch in Java.


Ok ja ich hab da gerade irgendwie nicht weiter gedacht. Worauf ich eigentlich hinaus wollte: Lern ich dann nur, dass es schneller ist ein Elemente aus der Mitte einer Liste zu entfernen als aus einem Array oder verstehe ich dann auch warum das so ist, aber dann kommt wieder dein Punkt "brauch ich sowas überhaupt"

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

36

02.10.2013, 12:57

Das ist aber von 2008, seit dem hat sich viel getan. (J2ME für Real-Time Anwendungen).

Als ich das letzte Mal geschaut hab, fehlten der Sprache immer noch imo fundamentale Dinge wie z.B. benutzerdefinierte Typen mit Wertsemantik, deterministische Lebensdauer von Objekten, ja selbst einfach nur unsigned Typen, vernünftiges Boxing oder richtige Generics...

Dass man heutzutage nicht ressourcenschonend programmiert, wo es möglich ist, ist auch einfach nur ein Kostenfaktor.

Die Frage ist doch immer ne Kostenfrage und im Buisnessumfeld und Server/Client Anwendungen bietet Java eine schnellere Entwicklung.
Mach ich das in C++ mit doppeltem Zeitaufwand, oder stell ich einfach ne größere Maschine hin? Und die Endscheidung trifft ja auch nicht der Programmierer, sondern das Management.

Natürlich, wenn Entwicklungskosten den Hauptteil der Kosten ausmachen. Das mag bei vielen Firmen der Fall sein und die verwenden dann natürlich Java o.ä., genau dafür wurden solche Sprachen konzipiert. Bei anderen Firmen ist das wiederum nicht der Fall, gerade wenn es z.B. um richtig große Serveranwendungen geht. Für Firmen wie Google und Facebook sind Entwicklungskosten völlig irrelevant. Wie Andrei Alexandrescu gerade letztens in einem Talk selbst gesagt hat: Die Energiekosten, die Facebook durch eine Verbesserung der Performance der Serversoftware um auch nur 1% sparen kann, bezahlen die Gehälter aller deren bester Entwickler für viele Jahre. Darum haben die ein Heer der besten C++ Entwickler, die man finden kann, das nichts Anderes tut, als zu optimieren. Und bei Google oder deinem Lieblings-MMORPG sieht das nicht anders aus. Aus dem selben Grund (Performance per Watt) erwarte ich mir, dass C++ gerade auch auf mobilen Geräten zunehmend an Wichtigkeit erlangen wird. Wenn du auf der selben Hardware doppelte Akkulaufzeit bieten kannst, ist das definitiv ein wesentlicher Vorteil gegenüber der Konkurrenz...

Ich selbst hab zwar den Weg von Assembler, C, C++ zu Java gemacht, aber das würde ich heute nicht mehr so machen.
Klar man lernt bei Java keine systemnahen Eigenschaften, die Frage ist aber, brauch ich das immer? Wenn man es dann mal braucht kann man es immer noch lernen und das geht dann schneller, als wenn man direkt mit der Zeigerarithmetik und Speicherverwaltung erschlagen wird. Würde man der Argumentation weiter folgen müssten alle mit Assembler anfangen.

Ich sage nicht, dass Java keine Berechtigung hat, natürlich hat es die. Ich sage, dass eine Sprache, die dafür konzipiert wurde, dem Entwickler so gut wie möglich das Denken abzunehmen, nicht unbedingt die beste Sprache ist, um ordentlich Programmieren zu lernen. Es ist etwas Anderes, wenn man bereits ordentlich Programmieren kann und dann, aus welchen Gründen auch immer, Java benutzt, als wenn man erst ordentlich Programmieren lernen muss. Wenn es darum geht, mit möglichst geringem Aufwand bestimmte Anwendungen umzusetzen, mag Java eine gute Wahl sein. Aber zumindest nach meiner Erfahrung, kann ich jemandem, der ordentlich Programmieren lernen will, Java absolut nicht guten Gewissens als Sprache für den Anfang empfehlen...

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »dot« (02.10.2013, 13:10)


H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

37

02.10.2013, 13:33

Ich denke ist sinnvoll Informatik, Technik und Programmierung etwas zu trennen. So verwirrt dies insbesondere Einsteiger mehr als komische Sprachkonzepte.
:love: := Go;

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

38

02.10.2013, 16:31

@dot:
Du bist ja mittlerweile auch immer mehr pro C++. An sich ist das kein Problem, aber ich habe das Gefühl dass das bei dir immer weiter in dein Schreiben eingeht. Früher hast du da glaube ich etwas objektiver geschrieben. Wenn du zum Beispiel davon schreibst ordentlich programmieren zu lernen, dann ist das so eine Sache. Eigentlich ist ja fast alles in der Informatik irgendwo in logische Schichten eingeteilt. Und so ist es doch auch mit Sprachen. Du hast einerseits zum Beispiel Sprachen aus Assembler Ebene. Dann kommen die technischeren Sprachen wie zum Beispiel C und C++ und danach kommen dann die managed Sprachen etc. Die Schichten sind hier sehr grob gehalten und wie man die oberen Ebenen der Sprachen jetzt genau einteilen möchte soll nicht wichtig sein. Du sagst wer ordentlich programmieren will kann das nur (oder am einfachsten) wenn er sich in der technischen Schicht einreiht. Eine tolle Eigenschaft dieser Schichten ist es doch, dass man die Basis darunter als gegeben nimmt und damit neues schaffen kann. Das Neue kann im Endeffekt komplexer aber mit weniger Aufwand geschaffen werden. Nun muss ich doch erst mal gucken in welcher Eben ich mich einreihen möchte. Möglicherweise vielleicht sogar in mehr als eine, aber da mit der Zeit normal mehr Sprachen zu dem persönlichen Repertoire hinzukommen konzentriert man sich ja am Anfang normal auf eine Sache. Die unterschiedlichen Sprachen haben unterschiedliche Vor- und Nachteile und wirklich objektiv wird man darüber wohl kaum diskutieren. Zumindest ist mir das hier im Forum bisher kaum bis gar nicht aufgefallen. Hier ist es meiner Meinung nach allgemein eher so "Was ich denke ist richtig". So denken hier zumindest einige. Das heißt dann aber doch, dass ich mir am besten eine Eben aus den Schichten aussuche und mir dort eine Sprache nehme und anfange. Weil mich die Ebene und deren Probleme interessiert habe ich möglichst viel Motivation. Was ich hinterher im Beruf mache ist ja erst mal eine ganz andere Geschichte und sollte für einen Einsteiger bei der ersten Sprache erst mal nicht all zu wichtig sein. Wenn du nun sagst, mit C++ lernt man ordentlich programmieren (du hast ja deine Argumente), so könnte ein Assembler Entwickler eine Stufe weiter unten ansetzen. Im Prinzip könnte sich am Ende irgendwo ein Physiker hinstellen und sagen was ihr alle macht ist quatsch weil es nicht grundlegend genug ist. Jede Sprache hat ihre eigenen Konzepte und so gestaltet sich die Programmierung hier anders. Der eine mag nun C++ lieber und der andere löst am liebsten alles mit Java Script. Zu unterstellen, man kann mit gewissen Sprachen nicht ordentlich programmieren ist da glaube ich etwas fehl am Platz. Eine Sprache wie C# kann zum Beispiel eine tolle Sache sein. Das weißt du ja selbst auch. Natürlich gibt es Punkte an denen man Probleme bekommen kann, aber die gibt es bei eigentlich jeder Sprache. Nun am Ende sagt man ja eigentlich man wählt die Sprache nach der Aufgabe, du bist darauf eingegangen dass es Firmen gibt die sicherlich auf C++ setzen, aber nicht jeder wird später bei diesen Firmen arbeiten. Genauso gut könnte man argumentieren, kleine Firmen wollen preiswert entwickeln und konkurrenzfähig zu bleiben. Wie gesagt, die Sprache wird nach dem Anwendungsfall gewählt. Wenn du eine Weckerapp für Android schreiben solltest als Auftrag würdest du mit Sicherheit nicht mit C++ arbeiten sondern in dem Fall zu Java greifen.
PS:
Allgemein fände ich es schön wenn einige versuchen würden objektiver zu bleiben. Bei reinen Diskussionen geht es natürlich um einige Meinung, aber wenn man helfen möchte bringt es ja nichts Person XY dazu zu bringen meine Lieblingssprache zu lernen. Es bringt ja viel mehr hn an den Punkt zu bringen wo er seine eigene Lieblingssprache findet. Die C++ Jünger hier im Forum sollten manchmal von ihrem hohen Ross runter kommen. Auch nicht C++ Entwickler können programmieren und haben sicherlich auch Ahnung von Laufzeiten und Komplexität. Und wie gesagt, denkt dran dass es da immer noch die Assembler Entwickler gibt die noch eine technische Ebene unter euch sind;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

39

02.10.2013, 23:30

Ich mach da mal etwas Werbung für meine eigenen Artikel, wobei ich damit noch sehr sehr unzufrieden bin. Mangels Zeit.
Aber vielleicht hilfts ja schon mal. Das Ganze möchte ich übrigens in Zukunft stark erweitern, auch ältere Artikel.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

40

03.10.2013, 23:40

Wie ich sehe, ist das wohl nicht ganz so rübergekommen, wie es von mir gedacht war. Ich bin nicht der Meinung, dass ein Anfänger möglichst weit unten beginnen soll, genausowenig wie ich der Meinung bin, dass ein Anfänger möglichst weit oben beginnen soll. Das hängt sehr von der jeweiligen Person ab, ob man eher ein top-down oder ein bottom-up Typ ist. Hauptgrund, wieso ich im konkreten Fall hier zu C++ rate, ist in erster Linie einmal, dass der Fragesteller bereits mit C++ angefangen hat und ich einen Sprachwechsel absolut nicht indiziert sehe. Abgesehen davon, habe ich die Erfahrung gemacht, dass manche Sprachen, die ich persönlich zwar mag und oft sehr praktisch finde (beispielsweise Python und C#), sich nicht besonders gut als Lehrsprachen eigenen. Und der Grund dafür ist nicht, dass diese Sprachen den Anfänger nicht mit genügend technischen Details konfrontieren, C++ ist sehr viel komplizierter als nötig wäre und es wäre natürlich toll, wenn es eine bessere Alternative gäbe. Möglicherweise wäre z.B. D eine solche Alternative, dazu gibt es aber weniger Material und ich hab damit keine direkte Erfahrung. Man beachte: Ich habe nicht gesagt, dass man in Java nicht ordentlich programmieren kann, oder gar dass Java Programmierer nicht programmieren könnten, sondern dass man mit Java nicht ordentlich Programmieren lernen kann, bzw. dass die Sprache sich zumindest imo nicht besonders gut dafür eignet. Und Java war dabei nur ein Beispiel, es ging mir hier eigentlich überhaupt nicht um Java, sondern um etwas ganz Allgemeines, Prinzipielles.

Insbesondere Sprachen mit Garbage Collection wurden bewusst so designed, dass konzeptionell wesentliche Dinge vor dem Programmierer versteckt ablaufen. Jemandem, dem es ausschließlich darum geht, möglichst schnell eine gewisse Anwendung zu realisieren, würde ich selbstverständlich zu Java, C# etc. raten, sofern diese für die jeweilige Aufgabe geeignet wären. Jemandem, der richtig Programmieren lernen will, kann ich nach bestem Wissen und Gewissen eine solche Sprache aber nicht empfehlen. Ich habe selbst nicht mit C++ angefangen, sondern mit VB. Und ich weiß, dass ich heute noch auf dem Stand von vor 10 Jahren stehen würde, wenn ich bei VB geblieben wäre. Und dabei geht es mir nicht um die technischen Hintergründe, sondern um Einsichten völlig abstrakter, theoretischer Natur. Eine Sprache, in der es nur Referenztypen gibt, wird dich niemals dazu zwingen, dich mit dem fundamentalen Unterschied zwischen Wertsemantik und Referenzsemantik zu beschäftigen. Eine Sprache, die kein klares Konzept von Scope aufweißt, wird dich nicht zu einer klaren Denk- und Ausdrucksweise erziehen. Eine Sprache, die Dinge wie Speicherverwaltung vor dir versteckt, wird dich niemals die im Design essentielle Bedeutung von Besitzverhältnissen erkennen lassen. Ein dynamisches Typsystem, macht es schwer, überhaupt den Sinn von Typen zu begreifen...

Daher bin ich mittlerweile immer mehr zu der Ansicht gelangt, dass Sprachen wie Java, C#, Python etc. wunderbare Werkzeuge für erfahrene Programmierer sind, die sich bewusst für eine Sprache entscheiden, weil sie deren Vor- und Nachteilen kennen und gegeneinander abwägen können; jemanden, der die Dinge bereits von außen betrachtet. Ich kann z.B. mit Python einfach, elegant und extrem schnell Skripte für komplexe Aufgaben maßfertigen. Auch wenn mir manche Dinge an Python nicht gefallen, so ist es dennoch in vielen Fällen die Sprache meiner Wahl. Gleiches gilt selbstverständlich für C++, C# usw. So dachte ich einige Zeit, Python wäre wohl die ideale Sprache, um jemandem Programmieren beizubringen. Bis ich es dann tatsächlich mal ausprobiert hab. Ich war selbst erstaunt, was ich fand, im Nachhinein scheint es mir aber sonnenklar. Ich hab selten jemanden gesehen, der sich bei seinen ersten Schritten bereits so geschickt angestellt hat. Dennoch hatte die betreffende Person an einem gewissen Punkt plötzlich irgendwie Probleme mit der Verwendung von Variablen und dem Konzept von Funktionsparametern (wieso verwenden wir das x da drinnen und dann da draußen nochmal? wieso ist das x hier auf einmal etwas anderes als dort?). Der extrem entspannte Umgang mit Gültigkeitsbereichen in Python war mir bis dahin selbst noch nichtmal wirklich bewusst aufgefallen, wurde ihm nun aber zum Verhängnis, da er zwar bereits richtig dachte, es aber keinen Weg gab, seine Gedanken in Python auszudrücken, das von ihm beobachtete Verhalten ihm völlig willkürlich erschien und er nur noch verwirrt im Nebel stochern konnte. Dann wollte ich benutzerdefinierte Typen erklären und musste feststellen, dass es in Python aufgrund des dynamischen Typsystems praktisch unmöglich ist, selbst eine simple Struktur für Punktkoordinaten in einer Art und Weise aufzuschreiben, die das Konzept eines Typs vermitteln würde (wofür brauchen wir so einen "Typ", wenn wir einfach jedem beliebigen Objekt ein .x und ein .y geben können?).

Für einen erfahrenen Programmierer ist es kein Problem, wenn gewisse Dinge nirgendwo explizit ausgedrückt sind, denn er geht bereits von vornherein mit einer gewissen Denkweise an die Sache heran; er sieht immer auch das, was nicht dort steht, denn in seinem Kopf existiert das ganze Gebilde. Ein erfahrener Programmierer wird sich von verschwommenen Scopes nicht verwirren lassen und auch ein dynamisches Typsystem zu seinem Vorteil zu nutzen verstehen. Ein erfahrener Programmierer wird auch in einer Sprache mit Garbage Collection ein klares Design verfolgen, denn er weiß genau, wie es um die Beziehungen zwischen seinen Objekten steht. Aber was für einen erfahrenen Programmierer unter Umständen produktivitätssteigernd sein mag, ist für einen unerfahrenen Programmierer, der die Dinge noch von innen betrachtet und sich erst seinen Weg nach draußen bahnen muss, meiner Erfahrung nach nicht unbedingt hilfreich. Ein erfahrener Programmierer kann sich in einer Sprache mit weniger strenger Struktur evtl. freier bewegen, ungezwungener Ausdrücken; man könnte Sprachen wie Python als eine Art Umgangssprache für Programmierer verstehen. Aber jemand, der erst Programmieren lernen muss, braucht eine gewisse Struktur um sich überhaupt erstmal zu orientieren. Eine Sprache, die gewisse Konzepte nicht explizit macht, ist für jemanden, der dennoch in diesen Konzepten zu denken vermag möglicherweise eine Entlastung, aber keine Hilfe für jemanden, der diese Konzepte erst erkennen muss.

Vergessen wir einfach mal C++ bzw. überhaupt irgendeine konkrete Programmiersprache. Es geht mir hier nicht darum, alle von C++ zu überzeugen oder gegen Java zu wettern (das tu ich zugegebenermaßen auch gern, aber ich versuche in der Regel, das auf Diskussionen zu beschränken, in denen es nicht ganz daneben ist ;)). Ich bin eigentlich immer bemüht, objektiv zu sein und ich hoff, ich hab nun auch auf rein rationaler Ebene nachvollziehbar begründet, wieso genau ich denke, was ich denke. Früher dachte ich anders und in nicht allzu ferner Zukunft werd ich hoffentlich wieder anders denken, denn alles Andere würde bedeuten, dass ich mich nicht weiterentwickelt hab ;). Wenn ich hier und jetzt, basierend auf all meinen bisherigen Erfahrungen meine ideale Anfängersprache charakterisieren müsste, dann wohl folgendermaßen:
  • Statisch starkes Typsystem
  • Feingranulares Scoping mit lexikalischer Bindung
  • Benutzerdefinierte Typen mit Wertsemantik und Referenzsemantik
  • Deterministische Lebensdauer von Objekten
Leider kenn ich nur drei einigermaßen populäre, imperative Sprachen, die alle diese Punkte erfüllen: C, C++ und D. Nachdem ich längere Zeit darüber nachgedacht hatte, bin ich genau auf diesem Weg zu dem Schluss gekommen, dass ich oben erwähnter Person nun C++ zeigen werde. Wie das ausgehen wird, weiß ich noch nicht, aber meine Erwartungen sind positiv...

Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »dot« (04.10.2013, 00:34)


Werbeanzeige