aktuellste Programmiersprache
-
alles nur mittelmaß oder schrott.
kann aber sein das das auch für andere sprachen gilt.
-
Walli schrieb:
Ja, ganz toll. Man kann noch nicht mit dem Hammer umgehen, aber hauptsache man weiß wie man die Hilti anschaltet. Ein paar wenige Grundlagen sollte man sich aneignen, denn irgendwann braucht man sie sowieso.
Genau, und wenn man sie dann braucht, dann kann man sie lernen. Aber ehrlich gesagt: Ich fahre schon seit einigen Jahren Auto und weißt Du was: ich kann immer noch keins bauen. Warum soll man also std::vector nicht benutzen?
Es geht doch darum Probleme zu lösen und nicht sich künstlich neue zu schaffen.
Benutzt wird, was einfach ist und funktioniert.MfG Jester
-
Eine Library zu verwenden hat aber nichts mit der Sprache zu tun.
Wenn ich mir mal die WinAPI als Beispiel nehme, dann ist diese zwar in C geschrieben, aber ich kann sie in C/C++, VB oder Pascal verwenden. Die Art der Funktionsaufrufe ist wiederum sprachabhängig. Aber ich kann nicht sagen, dass ich eine Programmiersprache lehre/lerne, wenn ich lehre/lerne, wie man eine Bibliothek verwendet.Sprachliche Elemente wären da eher Syntax (wieso gehört hier oder da ein Semikolon hin?), Basistypen (int, char, ...), Objektorientierte Ansätze (Klassen, Vererbung, Interfaces, etc.), Generische Ansätze (Templates). In C++ kämen da noch Zeiger und Referenzen hinzu, welche es afaik in Java so nicht gibt.
Da kommt es dann auf das Vorwissen und die Motivation der Schüler an, denke ich. C++ ist halt etwas low-level-mäßiger, als Java, aber dafür auch mächtiger (meine Meinung). Wenn man aber C++ kann fällt es einem leichter, denke ich, später mal etwas in Java zu machen, als umgekehrt. Wenn man nie so hart mit den Problemen, wie Zeiger, Referenzen, deren Unterschiede, und/oder Templates konfrontiert wurde, dann kann das schon ein ziemlicher Hammer werden, könnte ich mir vorstellen.
Auf der anderen Seite gibt es in Java Interfaces, die es in C++ nicht gibt, man aber mit abstrakten Klassen relativ gut nachbilden kann. Weiter kann ich da nichts zu sagen, weil meine Erfahrung bes. mit Java nicht so groß ist, aber ich denke mein Standpunkt ist klar geworden.
-
Jester schrieb:
Walli schrieb:
Ja, ganz toll. Man kann noch nicht mit dem Hammer umgehen, aber hauptsache man weiß wie man die Hilti anschaltet. Ein paar wenige Grundlagen sollte man sich aneignen, denn irgendwann braucht man sie sowieso.
Genau, und wenn man sie dann braucht, dann kann man sie lernen. Aber ehrlich gesagt: Ich fahre schon seit einigen Jahren Auto und weißt Du was: ich kann immer noch keins bauen. Warum soll man also std::vector nicht benutzen?
Man soll std::vector benutzen! Aber ich finde, dass ein Anfänger zumindest ein paar grundlegende Sachen verstanden haben sollte. Wer nicht versteht wie ein vector funktioniert, der benutzt ihn an den unmöglichsten Stellen, auch wenn vielleicht eine deque oder etwas anderes viel angebrachter wäre.
-
Das ist aber am Anfang völlig wurst. Es geht doch um echte Anfänger. Beliebte Übungsaufgabe: Lies Zahlen von der Tastatur ein, bis ne -1 kommt und gib danach aus welche Zahl wie oft angegeben wurde oder gib die Zahlen sortiert wieder aus etc.
Jetzt kann man entweder anfangen mit new rumzuschachteln um sich den Speicher für die Zahlen anzulegen, oder man benutzt den std::vector erstmal als Blackbox und hat nen ordentlichen Erfolg. Man kommt voran. Wer das ernsthaft lernen will, der wird früher oder später diese Blackbox auch aufmachen wollen um zu sehen was da drin ist.
Imho sollte beim Lehren von C++ die STL aber eine zentrale Rolle spielen, weil sie viele Probleme beseitigt oder zumindest verringert. Auch der Untschied zwischen deque und vector läßt sich erläutern und verstehen, ohne genau zu wissen wie das implementiert ist.
Natürlich sollte man dabei nicht verschweigen, daß es sich nicht um ein eingebautes Sprachfeature sondern um die Standardbibliothek handelt.Ich glaube, daß sich viele Leute mit C++ sehr schwer tun, weil sie "alles selber machen" wollen und nicht die Library benutzen. Gerade wenn es um Programmieranfänger geht ist es aber wichtiger, daß die if,for etc. verstehen, als sich um Probleme des Speichermanagments zu kümmern.
-
Walli schrieb:
Jester schrieb:
Walli schrieb:
Ja, ganz toll. Man kann noch nicht mit dem Hammer umgehen, aber hauptsache man weiß wie man die Hilti anschaltet. Ein paar wenige Grundlagen sollte man sich aneignen, denn irgendwann braucht man sie sowieso.
Genau, und wenn man sie dann braucht, dann kann man sie lernen. Aber ehrlich gesagt: Ich fahre schon seit einigen Jahren Auto und weißt Du was: ich kann immer noch keins bauen. Warum soll man also std::vector nicht benutzen?
Man soll std::vector benutzen! Aber ich finde, dass ein Anfänger zumindest ein paar grundlegende Sachen verstanden haben sollte. Wer nicht versteht wie ein vector funktioniert, der benutzt ihn an den unmöglichsten Stellen, auch wenn vielleicht eine deque oder etwas anderes viel angebrachter wäre.
Du kannst den Leuten beibringen, wann sie vector oder deque verwenden sollen, ohne dass sie lernen, wie diese implementiert werden. Ausserdem werden Arrays oft sehr früh eingeführt. Wenn man da std::vector für nimmt ist es auf jeden Fall besser und man macht nichts grundlegend anders.
-
Artchi schrieb:
Warum z.B. bei C++ erstmal groß beibringen was C-Strings sind? Warum nicht gleich std::string benutzen?
Nun, ich sehe das etwas differenzierter. Das Problem hierbei ist, dass C++ keinen echten builtin Stringtyp hat. Dh, Literale werden über nullterminierte Zeichen Arrays dargestellt, also C-Strings. Und solange das so ist, sollte man schon den Aufbau von C-Strings kennen. Es wäre reine Ressourcenverschwendung für ein Literal Alias std::string zu nehmen. Klar, einem Anfänger ist das relativ egal. Aber für Leute, die professionell Software vermarkten möchten, nicht. Da zählen neben der eigenen Bequemlichkeit (oder sollte ich sagen Entwicklungsgeschwindigkeit
) auch andere Dinge.
Die andere Frage ist, ob"Hallo, Welt!".length()
dem Look&Feel eines builtin Typs entspricht.
Dass man für das String Handling selbst, std::string und nicht die str... Funktionen verwenden sollte, versteht sich von selbst.
-
Jester: Ich gestehe ja ein, dass dieses Top-Down-Lernen etwas für sich hat, aber auf der anderen Seite sehe ich viel zu viele Leute, die später große Programme schreiben und sich nicht wirklich mit der Wahl der geeigneten Datenstruktur auseinander setzen, weil der vector ja immer so schön funktioniert hat.
-
Es ist auch so, dass das meiner Meinung nach beste C++ Buch für Anfänger "Accelerated C++" den Weg der STL geht und mit std::string, std::vector von Anfang an arbeitet.
-
Ponto schrieb:
Es ist auch so, dass das meiner Meinung nach beste C++ Buch für Anfänger "Accelerated C++" den Weg der STL geht und mit std::string, std::vector von Anfang an arbeitet.
Wenn es dann auch vernünftig erklärt wo die Vor- und Nachteile der jeweiligen Datenstrukturen liegen bin ich ja zufrieden
.
-
Artchi schrieb:
Ganz davon abgesehen, das jeder Depp auf sourceforge ein Projekt anlegen kann.
das hat gesessen
-
kidfakenewold? schrieb:
Artchi schrieb:
Ganz davon abgesehen, das jeder Depp auf sourceforge ein Projekt anlegen kann.
das hat gesessen
Und? Gibt es mehr C++ und weniger C# Deppen? Glaub ihr bei >15.000 Projekten spielen solche Leute eine gewichtige Rolle? Das glaube ich nicht, bevor ich eine andere Statistik gesehen habe die in der Relation deutlich anders sieht.
-
Jester schrieb:
Noodles schrieb:
Geil wenn man sich auf Statistiken berufen kann.
Ja, gell? Da merkt man, ob man irgendwelchen Hypes hinterherrennt, oder ob die Sachen auch tatsächlich eingesetzt werden.
Also macht man an einer Statistik fest ob eine Sprache gut ist?
Was ist denn wenn ein (groß?)Teil der Projekte schon etwickelt wurden bzw. in Entwicklung waren bevor eine neuere Sprache auf den Markt kam?Man kann natürlich z.B. ASP.NET (2.0) als Hype bezeichnen, oder damit komfortabel eine Webanwendung erstellen.
-
Noodles schrieb:
Jester schrieb:
Noodles schrieb:
Geil wenn man sich auf Statistiken berufen kann.
Ja, gell? Da merkt man, ob man irgendwelchen Hypes hinterherrennt, oder ob die Sachen auch tatsächlich eingesetzt werden.
Also macht man an einer Statistik fest ob eine Sprache gut ist?
Nein, wie gesagt macht man daran fest ob die Sprache auch tatsächlich eingesetzt wird. Da bei sourceforge hauptsächlich Hobbyprogrammierer unterwegs sind stellt sich natürlich die Frage, wie repräsentativ das ganze ist. Ausserdem spielt natürlich auch ne Rolle wie alt die Sprache ist.
-
Hmm.... was fuer eine Schule ist das? Wie lang soll der Kurs gehen? Und welcher Jahrgang?
Ich bin nach wie vor der Meinung, dass sowohl Java als auch C++ zu komplex sind, um sie in 1 Jahr einem nur halbinteressiertem Publikum beizubringen. Da bin ich immer noch fuer Python. Damit bringt man IMO die Basics leichter bei als bei komplexeren Sprachen. Und wer die beherrscht, tut sich auch spaeter leichter, wenn er maechtigere Sprachen (eben C++ oder Java z. B.) lernen will. Aber auch die anderen haben vielleicht was davon.
Wenn ich jetzt an 'ner IT-Berufsschule oder einer HTL einen Kurs ueber mehrere Jahre machen wuerde, waer C++ / Java die Ueberlegung wert. Wobei ich in dem Fall zu Java tendieren wuerd, weils eben einfacher ist. Aber ich denk das haengt vom Zielpublikum ab...
-
Warum auf eine Programmiersprache festlegen? So ist z.B. Logo für den Anfang
genial (Schleifen, Funktionen, Rekursion, ... und das alles gleich sichtbar).
Und danach vielleicht C, C++ oder auch Java. Wenn man den Leuten die Grund-
lagen klargemacht hat, dann können die sich auch wesentlich einfacher später
eigenes Wissen aneignen - besser als gleich mit C++ zu überrumpeln
-
Jester schrieb:
Walli schrieb:
Ja, ganz toll. Man kann noch nicht mit dem Hammer umgehen, aber hauptsache man weiß wie man die Hilti anschaltet. Ein paar wenige Grundlagen sollte man sich aneignen, denn irgendwann braucht man sie sowieso.
Genau, und wenn man sie dann braucht, dann kann man sie lernen. Aber ehrlich gesagt: Ich fahre schon seit einigen Jahren Auto und weißt Du was: ich kann immer noch keins bauen. Warum soll man also std::vector nicht benutzen?
Es geht doch darum Probleme zu lösen und nicht sich künstlich neue zu schaffen.
Benutzt wird, was einfach ist und funktioniert.MfG Jester
Man soll auch nicht alles von Grund neu lernen, sondern vielleicht einfach ein paar Grundlagen lernen, in der Fahrschule lernt man zwar nicht, wie man ein Aubaut, aber immerhin, wie man ein Reserverad dranpappt (und normalerweise auch, wie ein Motor aufgebaut ist und wie man den zu warten hat)
-
Tu dir selbst einen Gefallen und versuch gar nicht erst denen eine Sprache wie C oder C++ beizubringen.
Java ist da sehr viel besser, da man hier viel schneller coole Sachen machen kann (für nen Schulfach wichtig, da nicht jeder so die extreme Motivation hat und sich mit "langweiligen" Konsolenprogrammen herumschlagen will), außerdem ist die Fehleraufspürung viel einfacher für einen Programmierneuling (wer geübt mit dem Debugger ist hats natürlich auch in c++ leicht *g*).Aber wieso lehrst du die Leute nicht (x)html und php ich denke php wäre für die Mehrheit leichter zu lernen und sie können damit ihre eigene Webseite erstellen, was die Mehrheit aus dem Kurs wohl eher mal machen wird als nen eigenes Programm, denn da fehlt dann meist doch das Detailwissen für ne ganz bestimmte Anwendung.
Wenn du nichts gegen die hässliche Syntax von Pascal hast könntest du ja auch Delphi in betracht ziehen.
-
Sorry zu früh abgeschickt.
Ich würde an deiner Stelle ne Sprache wie PHP,Perl,... nehmen und gar nicht auf OO eingehen sondern prozedural programmieren, da schafft man in einem Jahr mehr und es ist bei Programmen in dem Rahmen sowieso quatsch da groß was mit OO zu machen.
Man muss sich ja auch immer vor Augen halten, dass die Leute nicht ewig lange OOP Theorie haben wollen und sich den Kopf über das Klassendesign zu zerbrechen, sondern nen Ergebnis
-
TheToast schrieb:
Man soll auch nicht alles von Grund neu lernen, sondern vielleicht einfach ein paar Grundlagen lernen
Genau. std::vector gehört in C++ zu den Grundlagen! Genauso wie std::string.