Bernd Leitenbergers Blog

Was ist wichtig, wenn ich eine Programmiersprache lernen will

Der Link von Hans hat mich auf etwas gebracht was immer gerne bei den Diskussionen, welche Programmiersprache die beste ist vergessen wird, aber für den Neueinsteiger wichtig ist: Der Komfortfaktor und die Einstiegsschwelle. Um es vorweg zu sagen, ich rede jetzt nicht davon eine Programmiersprache sich anzueignen um Programmieren zu lernen, also systematisch die Konzepte einer Programmiersprache, Algorithmen, Datenstrukturen, die objektorientierte und ereignisorientierte Programmierung mit allem was dazu gehört (Vererbung, Polymorphismus, thread-safe Routinen etc…) wie es Bestandteil eines Informatikunterrichtes sein sollte, sondern von dem Ansatz her: ich bin Laie, möchte sehen ob ich am Programmieren Spaß habe und vielleicht was nützliches machen kann. Ich will aber nicht Informatiker oder beruflicher Software-Entwickler werden und ich brauche das auch nicht beruflich.

Bei den Diskussionen für und gegen eine Sprache kommt man sehr schnell immer auf konkrete Umsetzungen. Denn natürlich sind die Probleme mit Pufferüberläufen bei C bekannt und Compiler sind oft standardmäßig so eingestellt dass sie auf den Stack Daten schreiben die sie vor dem Rücksprung prüfen um die Ausführung von Fremdcode zu verhindern und beim beliebten „=“ in der If Anweisung gibt’s zumindest eine Warnung.

Was mich als ich Informatik studierte gestört hat (das war so 2000-2004) wie meilenweit Java und C++ damals von dem Komfortstandard von Delphi entfernt waren. In Delphi konnte ich schon damals relativ einfach visuelle Oberflächen gestalten und dann die Ereignisverarbeitungsroutinen schreiben. Trotzdem habe ich natürlich eine leistungsfähige Sprache im Hintergrund, mit der ich dann auch komplexe Programme schreiben kann. Visual C arbeitete damals mit zig verschiedenen Makros die man einfügen musste und visuell konnte man Formulare schon gar nicht designen. Bei Java gab es einen Formulardesigner, aber der war hakelig und schwergängig. Selbst dann sahen die Anwendungen altbacken aus. Zum Ende des Studiums hin hat sich mit C# mit denselben Möglichkeiten wie Delphi einiges verbessert.

Inzwischen sind ja Ruby und Phyton en Vogue, aber sie haben alle für mich das Henne und Ei Problem. Solange ich damit weniger machen kann als bisher (oder zumindest das, was ich bisher mache nicht möglich ist oder ich einen Rückschritt zur reinen Programmierung auch von visuellen Oberflächen im Quelltexteditor machen muss) solange sind sie für mich keine Alternativen.

Für den Anfänger haben solche komponentenbasierte Systeme den Vorteil, dass er schnell Erfolgserlebnisse hat. Ein Button, einige Eingabefelder und ein Onclick Ereignis und jemand kann schnell eine Berechnung ausführen und das Ergebnis ausgeben. Die große Gefahr ist, dass man auf diesem Einstiegsniveau kleben bleibt. Ich habe deswegen, als wir vor einigen Monaten diskutiert haben wie es mit dem Informatikunterricht weiter geht, eine ziemliche Diskussion. Da war ein Dozent der genau anderen Meinung als ich: während ich im ersten Teil nur Konsolenprogramme mache weil ich möchte das die Studenten die Grundlagen erlernen, hat dieser immer mit der grafischen Oberfläche wegen der „Erfolgserlebnisse“ angefangen. Für mich ist sie der zweite Schritt, wobei ich dann die Elemente nicht so vertiefe, sondern dann eben in Algorithmen und komplexere Programme einsteige. Das dort objektorientiert programmiert wird und das System ereignisorientiert ist, kann man bei den wenigen Stunden aber auch nur streifen. Für mich ist ein fundiertes Grundgerüst in der prozeduralen Programmierung wichtiger als alles kurz anzusprechen. Doch wer möchte der kann sich dies dann aneignen.

Das ist meiner Meinung nach das wichtigste bei einer Programmiersprache für Anfänger: ein leichter Einstieg, die Möglichkeit rasch Erfolgserlebnisse zu bekommen, aber auch dass man eine leistungsfähige Sprache hat, mit den Möglichkeiten sich weiter zu entwickeln. Ob das ganze dann ein  historisch gewachsene Sprache wie Delphi oder Visual BASIC ist, etwas komplett neues von der Wiese wie Ruby, oder so was wie Java die für eine reine Einsteigersprache schon etwas zu komplex ist, man muss sich erst mal in die objektorientierte Programmierung einarbeiten (nichts dagegen und für größere Programme fast unverzichtlich, aber die Einstiegsschwelle ist bei prozeduralem Ansatz doch deutlich niedriger).

Der wohl wichtigste Punkt ist für Anfänger, dass man die Sprache umsonst bekommt. Schließlich will man erst mal ausprobieren, Leider hat sich bei Borland aka Embaccadero da einiges verschlechtert. Früher gab es noch Delphi Personal Versionen und auch mal Turbo Delphi umsonst – mit Einschränkungen, aber mit denen konnte man leben. Inzwischen ist das nicht mehr so, was auch der Grund bei der Hochschule war, sich von dem Produkt zu verabschieden, weil die Studenten natürlich für Übungen zu Hause auch Lizenzen brauchen. Wir haben ja keine Informatiker. Ich glaube daher das keine dieser Lizenzen jemals eine Umsatzverlust bedeutet hätte, zumal alle mit Online Aktivierung liefen (hat die Uni keine Lizenz mehr läuft auch die lokal installierte nicht mehr). Wir nutzen nun Lazarus, was in der Oberfläche und Bedienung einige Generationen hinterher ist, aber weitgehend kompatibel, was die Funktionalität angeht. Problematisch ist bei mir dass der Debugger reproduzierbar abstürzt wenn er mehr als zweimal in derselben Codezeile über eine Exception stolpert. Aber es ist umsonst und so eine Möglichkeit für Einsteiger. zudem ist es recht schmal und startet enorm schnell.

Microsoft denkt da weiter und verschenkt seine Express Versionen von Visual Studio nach wie vor. Die Express Version ist eben nur eine Sprache und das reicht ja für Privatpersonen. Da kann man aussuchen ob es Visual Basic oder C# sein soll. Ich würde C# wählen, weil man dann relativ leicht zu anderen C-ähnlichen Sprachen wechseln kann. Wie es mit Java, Ruby oder Python aussieht kann ich ehrlich gesagt derzeit nicht sagen, weil ich da seit einigen Jahren nicht mehr mit einer aktuellen IDE gearbeitet habe.

Die mobile Version verlassen