Bestenfalls an der Uni aus akademischen Interesse; für den Rest braucht man eine verbreitete Sprache mit geringer Einstiegshürde und tonnenweise Resourcen im Netz.
Lua?
Wer Typen bei C, Pascal oder Java nicht versteht, wird es mit Ada auch nicht tun.
Aber ich denke, dass Ada in vielerlei Hinsicht verständlicher sein kann. Das ist aber auch schwer nachzuvollziehen. Ich verstehe auch nicht mehr, wie ich bestimmte Dinge nicht verstehen konnte. Naja, wahrscheinlich liegt es wirklich am selbst lernen.
Für Anfänger sind solle Belange vollkommen irrelevant. Man fängt im Deutschunterricht auch nicht mit Hegel und Nietzsche an.
Aber du lernst Lesen und Schreiben zur gleichen Zeit, wie die Buchstaben des Alphabets, während du Dinge, wie die Unterscheidung von Selbstlauten, Mitlauten, Umlauten so wie Silbentrennung erst viel später lernst. Es ist falsch anzunehmen, dass Menschen am besten lernen indem man auf simple Logik setzt, sonst wären die meisten Mathe- und Physikasse. In der Realität ist es so, dass man mit der Analyse und dem Spielen komplexeren Dingen viel mehr lernst. Oder anders gesagt sind die einfachen Dinge für Anfänger oft die schwersten und wenn du ihn daran scheitern lässt, dann war's das mit der Motivation. Also darf man nur das absolut nötigste Beibringen und musst dann echte Anwendungsfälle bringen. Ada ist nicht das beste Beispiel, aber Pascal ist es sicherlich auch nicht. So etwas wie Lua, JavaScript oder Ruby sind viel verständlicher. Ich habe neulich einem Linguisten Perl beigebracht, was relativ einfach war, weil es sich viele Eigenschaften natürlicher Sprachen hat.
Um das zu verdeutlichen. Wenn du mit Begriffen wie Deklarationen, Typen, Integers, Klassen, void, ... kommst dann sieht keiner irgendeinen Sinn und schläft ein. Wenn du mit einem Beispielprogramm (abseits von Hello World) kommst, es nach und nach bildlich erklärst und erst mal ignorierst, dass zunächst nicht jedes Details verstanden wird dann kann sich der Lernende viel eher selbst damit beschäftigen. Dann ist es vollkommen egal, ob der Lehrer sich Dinge anders vorstellt. Man lernt am Besten selbst. Klar braucht man die Hilfe von Referenzen, Beispielen oder jemanden der einem Fragen beantwortet, aber man kann nicht einfach erwarten, dass alle sich die Dinge wie der Lehrer vorstellt und schon gar nicht, dass jemand auf die gleiche Weise versteht. Genau das passiert aber gegenwärtig. Man ist ein guter Schüler, wenn man entweder die Gedanken des Lehrers nachvollziehen kann oder sich daheim dann alles selbst beibringt.
Dafür ist der Programmierunterricht ja da - die Leute mit Interesse anfixen, der Rest kann sich anschließend zumindest etwas darunter vorstellen.
So sollte es wohl sein. Den tatsächlichen Zustand habe oben beschrieben. Schüler sind frustriert weil sie ständig gegen abstrakte Begriffe laufen, die sie sich besser selbst beibringen sollten. Ich will gar nicht daran denken wie viele gute Informatiker daran verloren gehen, aber ich kann sehen was dabei raus kommt. Bachelor und Master, die zwar wissen wie sie gute Arbeiten schreiben, aber nicht wie sie ein anständiges Programm schreiben, keine Ahnung von Standards haben, glauben, dass Assembly Magie ist und glauben JSP ist der beste und einzige Weg eine Website zu erstellen. Achja und sie haben ein technisches Studium abgeschlossen und stehen ohne technische Fähigkeiten da, aber können das Zehnfingersystem.
Nein, es ist zum Glück nicht immer so. Bei Informatik hat man den Vorteil, dass es als technisch und damit schwer gilt. Außerdem sind die Allermeisten nach dem Gymnasium so fertig damit, dass sie nicht im Traum daran denken würden Informatik zu studieren, wenn sie kein echtes Interesse haben. Aber ich bezweifle, dass jemand, der Informatik nur aus der Schule kennt jemals echtes Interesse gewinnen kann.
Nur, weil es ein wenig dazu passt eine interessante Perspektive zum Bildungssystem. Ich denke das trifft global zu:
http://www.insidehighered.com/views...uld_get_out_before_higher_education_collapses
Jeder hat seine Stärken und Schwächen. Nur wenige sind mit einer Begabung für solch abstrakte Themen zur Welt gekommen.
Das ist schlicht und ergreifend falsch. Man kommt nicht mit Begabung zur Welt und mal ehrlich, alles ist interessant wenn man sich ernsthaft damit beschäftigt. Das ist genau der elitäre Unfug, den ich ständig höre und jedes Mal widerlege wenn ich jemanden etwas beibringe für das angeblich keine Begabung da ist. Klar, das wäre die einfache Standardantwort. Genauso, wie man sagen kann XY ist einfach ein Genie. Man kommt nicht mit Begabungen zur Welt. Das Hirn entwickelt sich vielleicht so, dass man die abstrakte Welt des einen Lehrers besser versteht als die des Anderen, aber das mit der Begabung ist Unfug und basiert auf falschen Vorstellungen darüber wie das menschliche Gehirn funktioniert. Klar, das ist auch vereinfacht dargestellt, aber glaubst du ernsthaft jemand kommt mit einem Informatikerin zur Welt oder mit der Fähigkeit zum Abstrakten denken?
Es ist vielmehr so, dass Leute in gewisse Denkmuster eingefahren sind und sich davon nicht so leicht lösen kennen. Sie "verkrampfen" bei abstrakten Aufgaben, aber genauso gibt es Mathematiker die an Geisteswissenschaften scheitern. Begabung ist also dann eher etwas, was sich in der Kindheit festlegt und wenn man nur ein Interesse hat, dann "optimiert" das Hirn immer mehr darauf. Genauso wie sich auch alles Andere in einem Körper dem Leben das man führt anpasst. Trotzdem kann man, wenn man sich intensiv einer Tätigkeit widmet besser darin werden und für gewöhnlich findet man auch Interesse daran.
In den meisten Frameworks kann man nach einem Tag schon produktiv sein und Standardaufgaben erledigen. Den Rest kann man bei Bedarf nachlesen.
Damit hast du recht. Meine Aussage war dementsprechend Unsinn.
Aus Erfahrung kann ich dir sagen, dass genau das ein ganz großer Irrtum ist.
Die meisten Projekte fahren mit Frameworks um Größenordnung besser als mit Eigenentwicklungen, die
Ich habe nicht behauptet, dass sie es nicht tun, aber große Frameworks halten oft mit neuen Entwicklungen nicht immer Schritt. Sie werden zwar immer besser, weil sie meist mit der Zeit modularer werden, aber wenn ein besseres Konzept entsteht um ein Projekt zu lösen wird es schwer. Ein Beispiel: Websockets haben sie alle eingebaut, aber so etwas, wie Socket.io wurde in allen Sprachen als Modul für Rack-Clones oder komplett Standalone implementiert, weil es ein kleines "unabhängiges" Modul ist. Andererseits ist das auch nicht _die_ Lösung und es kommt sehr darauf an, was genau man machen will.
Beim allgemeinen Programmieren schaut man doch auch erstmal, ob eine bekannte, erprobte und unterstützte Bibliothek das eigene Problem löst.
Sonst haben wir wieder das [URL="http://de.wikipedia.org/wiki/Not-Invented-Here-Syndrom"Not-Invented-Here-Syndrom[/URL], vor dem ich schon gewarnt habe.
Stimmt, aber die ist eben nicht immer vorhanden und bei monolithischen Frameworks kann es vorkommen, dass man etwas ersetzen will was relativ fix eingebaut ist und dann wird es schwer. Oder es ist anders und du willst auf etwas umsteigen, was besser ist. Ich weiß nicht, wie das bei GWT ist, aber häufig bedeutet das ein Rewrite. Wenn du so etwas, wie Rack-Module verwendest kannst du mehr wiederverwerten.
Was ist besser, ein Perl/Java/Python/Ada-Entwickler, der möglichst Funktionalität aus einer Standardbibliothek nimmt oder für jeden Furz seine eigene Lösung entwickelt?
Außerdem muss man es doch erstmal besser machen als die Framework-Entwickler. Wie viele Entwickler liefern tatsächlich bessere Arbeit ab als die Entwickler von Ruby on Rails, GWT und Konsorten?
Genau darauf wollte ich ja hinaus. Es geht nicht darum, was jemand macht, wenn das Ergebnis passt und dann kommt die Frage nach Interfaces damit es möglichst unabhängig von irgendetwas Speziellem (Sprache, Plattform, spezieller Zusatzsoftware, ...) nutzbar ist. Ich, weiß das ist nicht immer wichtig, aber sehr oft und häufig weiß man nicht genau wie und wozu etwas genutzt wird. Ein simples Interface erhöht aber in den allermeisten Fällen die Möglichkeiten den Einsatzes. Was gut ist ist natürlich subjektiv, aber es geht darum das ganz generell zu beachten und sich keine Sackgassen zu bauen. Oft sieht man leider zu spät, dass das passiert ist und dann darf man die Dinge neu machen.
Das lässt sich mit Webframeworks nicht vergleichen
Hatte ich auch nicht vor, aber es ist ein Problem, das Layers und Frameworks ganz generell betrifft.
Aber ich sehe langsam wo das Problem ist. Sich darüber Gedanken zu machen und sie darzulegen ist eine Herausforderung für sich.