Beratung Programmierung (Beratung Programmierung), Lektion, Seite 723888
https://www.purl.org/stefan_ram/pub/beratung_programmieren (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Programmieren

Beratung Programmierung

Welche Programmiersprache soll ich wählen?

Python.

Falls die Programmiersprache in Zusammenhang mit Microsoft Office verwendet werden soll, ist auch VBA eine gute Wahl.

Falls die Programmiersprache in Zusammenhang mit Web-Seiten (für Programme, die auf dem Rechner des Betrachters laufen) oder Web-Apps verwendet werden soll, ist JavaScript  besser als Python  geeignet.

Python, VBA  und JavaScript  sind besonders anfängerfreundliche Sprache.

Java  ist schon schwieriger anzuwenden als Python. Dafür laufen Java -Programme schneller.

C - und C++ -Programme laufen noch etwas schneller, aber richten sich an Computer-Experten mit schnellem Lerntempo und viel Zeit zum Lernen. Sie sollten daher nur dann gewählt werden wenn man bereits Computerexperte ist oder einen besonderen Grund hat, warum ausgerechnet diese schwierigen Sprachen erlernt werden müssen. Es ist nämlich schwierig, in diesem Sprachen produktiv zu werden. Wahrscheinlich ist dies heute in C  sogar noch etwas schwieriger als in C++.

Lassen Sie sich nicht täuschen: Für Kurse suchen Dozenten sich oft die einfachen Teile einer Sprache heraus. Daher kann man zunächst auch an C - oder C++ -Kursen oft noch erfolgreich teilnehmen. Schwierigkeiten werden aber auftreten, wenn diese Sprachen dann angewendet  werden sollen!

Java  befindet sich hinsichtlich der Erlernbarkeit und der Geschwindigkeit zwischen Python  und C  oder C++ .

Python  kann schnell erlernt werden, und erlaubt es Programmierern, schnell darin produktiv zu werden. Dies gilt auch für VBA  oder JavaScript, wenn es nicht stört, daß der Anwendungsbereich dieser Sprachen etwas eingeschränkt ist. Daher gilt normalerweise die Empfehlung:

Lernen Sie Python !

Verschiedene Sprachen geordnet nach Schwierkeit
 einfach  |         Python          VBA             JavaScript
| für Office für Webclients
| und mehr
|
|
| Java C#.net VB.net SQL
| für Windows für Windows für Datenbank
|
|
|
schwierig | C C++

Hinweis für den Dozenten  ► → Am Anfang dieser Beratung sammelt der Dozent zunächst Fragen und Themenwünsche.

Was ist eine Programmiersprache?

Die Sprachen wie sie Menschen schon seit Tausenden von Jahren zur Kommunikation untereinander verwenden, nennt man natürliche Sprachen. Italienisch, Norwegisch  oder Latein  sind beispielsweise solche natürlichen Sprachen.

Programmiersprachen sind demgegenüber stark vereinfache  Sprachen. Weil sie so einfach sind, kann man alles Details ihrer Schreibweise und der Bedeutung ihrer Texte ausführlich und genau  festlegen. Beispiele für Programmiersprache sind VBA  oder JavaScript.

Ein Text, der in einer Programmiersprache geschrieben ist, wird als Programm  bezeichnet. Eine Sammlung von Programmteilen, die in verschiedenen Programmen eingesetzt werden kann, wird eine Bibliothek  genannt.

Eine Implementation einer Programmiersprache  (wenn keine Mißverständnisse möglich sein, einfach: eine Implementation ) ist eine Maschine, die das tut, was man in einem Programm, das in der Programmiersprache geschrieben ist, von ihr verlangt (ohne Rückfragen zu stellen).

Die Bedeutung eines Programms ist in einer Programmiersprache so genau  festgelegt, daß es darin gar nicht möglich ist, sich so vage auszudrücken, daß die Implementation nicht weiß, was sie tun soll.

Was ist Programmieren?

Beispiel
Ein Mensch setzt sich in ein Taxi und verlangt, daß ihn der Taxifahrer irgendwohin fährt, „wo es schön ist“. Der Taxifahrer versteht nicht, wohin der Kunde gefahren werden will.
→ Die Anweisung des Fahrgasts war zu vage.

Wenn ein Programm läuft, kann die Implementation keine Rückfragen an den Programmierer stellen, wenn er sich zu vage ausgedrückt hat. Alles wichtige muß im voraus genau und eindeutig  gesagt werden.

Beispiel
Ein Helfer wird zum Einkaufen geschickt, und soll unter anderem ein Kilogramm Tomaten kaufen. Es gibt aber keine Tomaten. Der Helfer weiß nicht, was er nun als Ersatz kaufen soll.
→ Der Auftraggeber hat die Möglichkeit, daß es keine Tomaten gibt, nicht vorhergesehen. Seine Instruktionen waren unvollständig.

Für alle Dinge, die eventuell passieren könnten, muß im Programm im voraus festgelegt werden, was die Implementation dann tun soll, selbst wenn sie unwahrscheinlich sind. Das Programm muß vollständig  in dem Sinne sein, daß es für alles, was beim Ablauf eines Programms eventuell passieren und schiefgehen könnte, Anweisungen enthält.

Beispiel
Wenn man einmal am Fischstand drei grüne Makrelen verlangt, ohne auf die Makrelen zu zeigen oder sie dabei anzusehen, so wird man beim Verkäufer oft Verständnisschwierigkeiten bemerken. Er wird dann oft Nachfragen stellen und kann manchmal nicht verstehen, was ein Kunde verlangt, wenn der Kunde nicht auf die Ware zeigt oder sie anblickt.
→ Die Anweisung des Kunden war eindeutig verständlich, aber der Verkäufer war es nicht gewohnt, nur mit Worten zu kommunizieren.

Beim Programmieren kann man dem Computer nicht mit dem Finger oder den Augen zeigen, was man will. Alles muß nur mit einem Text gesagt werden: mit dem Programm.

Programmieren heißt, nur mit Worten  so zu sagen, was man will, daß es ohne Rückfragen eindeutig  und vollständig  ist.

Warum verwendet man Programmiersprachen?

Wenn man in einer natürlichen Sprache  mit einem anderen Menschen kommuniziert, kann der Fehler bei einem Mißverständnis auf der Seite des Zuhörers liegen. Dadurch ist es für einen Sprecher kaum möglich, sicherzustellen, daß seine Äußerung verständlich ist. Im Dialog zwischen Menschen sind aber Rückfragen möglich, die helfen, das Verständnis sicherzustellen.

Wenn eine Implementation ein Programm erhält, dann tut sie zuverlässig genau das, was das Programm laut den Regeln der Programmiersprache verlangt. Falls nun etwas schief geht, liegt die Schuld beim Programmierer und nicht bei der Implementation. Der Programmierer kann sich darauf verlassen, daß die Implementation fehlerfrei ist.

In der Praxis findet man natürlich doch auch manchmal Fehler in einer Implementation, aber diese sind so selten, daß ein Anfänger davon ausgehen kann, daß die Implementation fehlerfrei ist.

Lernen im Überblick oder mit Details?

Wir können verschiedene Situationen unterscheiden:

Jemand, der selber weder Programmierer ist noch selber programmieren erlernen will, will verstehen, was Programmierer machen, um besser mit ihnen kommunizieren zu können.
In diesem Fall braucht derjenige einen Kurs, der ihm schnell eine Überblick  vermittelt, ohne zu sehr in Details  zu gehen. Die Programmierkurse von Stefan Ram  beinhalten in der Regel Übungen  und vermitteln alle Details  einer bestimmten Programmiersprache, die nötig sind, um die Übungen bewältigen zu können. Dadurch kommen sie aber auch entsprechend langsam voran. → Wer einen Überblick über eine das Programmieren oder eine bestimmte Programmiersprache ohne Details  wünscht, sollte daher bei anderen Dozenten danach fragen (falls die Ausführungen in dieser Beratung noch nicht dafür ausreichend sind).
Jemand will eine Programmiersprache lernen, um Programme verstehen und schreiben zu können.
Um Programm lesen  und schreiben  zu können, muß man viele Details einer bestimmten Programmiersprache erlernen, ähnlich wie beim Erlernen einer Fremdsprache. Das Lesen und Schreiben einfacher, kleiner Programme kann man in wenigen Tagen  erlernen, aber das Programmieren richtig gut zu erlernen kann viele Jahre  dauern. Volkshochschulkurse sind eine ausgezeichnete Möglichkeit, das Erlernen des Programmierens zu beginnen, aber manchmal ist es nötig, nach dem Ende eines Kurses noch weiterzulernen.

Es ist auch denkbar, daß jemand zunächst etwas  programmieren erlernen will, um dann entscheiden zu können, ob er sich weiter damit beschäftigt, oder jemand möchte eine bestimmte Programmiersprache erlernen, um Prüfungen in der Schule  oder im Studium  bestehen zu können. Auch in diesen Fällen ist der Besuch eines Volkshochschulkurses mit Übungen eine gute und hilfreiche Vorgehensweise. In einigen dieser Fälle muß derjenige dann nicht mehr selber entscheiden, welche Programmiersprache er erlernt, weil die Programmiersprache von seiner Ausbildungsstätte bereits vorgegeben ist.

Tip Manche Dozenten geben in ihren Kursen eher einen Überblick  über das Thema ohne Übungen  im Schreiben von Programmen, andere behandeln mehr Details und stellen praktische Programmieraufgaben. Wenn Sie vorher wissen wollen, wie ein bestimmter Kurs abläuft und noch nicht alle Fragen durch die Angaben im Programmheft beantwortet wurden, können Sie die Volkshochschule dazu befragen (beispielsweise per E-Mail). Die Volkshochschule wird Ihre Frage dann nötigenfalls an den Dozenten weiterleiten.

Verschiedene Programmiersprachen

Man kann nicht allgemein „programmieren lernen“. Man kann immer nur eine bestimmte Programmiersprache  erlernen. Will man dann eine andere  Programmiersprache erlernen, muß man vieles wieder neu  lernen.

Jede Programmiersprache hat bestimmte Stärken  und Schwächen. Es wäre Zeitverschwendung, eine Programmiersprache zu erlernen, die den eigenen Anforderungen gar nicht entspricht.

Wir behandeln hier die verschiedenen Programmiersprachen unter verschiedenen Gesichtspunkten.

Im folgenden werden zunächst nur die an Berliner Volkshochschulen populärsten Programmiersprachen  behandelt. Später wird dann noch kurz auf einige andere Programmiersprachen eingegangen.

Tip Wenn Sie Programmieren lernen wollen und keinen besonderen Grund zur Wahl einer bestimmten Sprache haben, wählen Sie zum Einstieg am besten Python, da diese Sprache relativ leicht zu erlernen ist und doch viele Möglichkeiten bietet ohne dabei an ein bestimmtes Betriebssystem oder Produkt gebunden zu sein. Genauso gut können Sie VBA  wählen, falls Sie ohnehin gerne mit Microsoft-Office -Produkten arbeiten wollen, oder JavaScript, falls Sie gerne Webseiten oder JavaScript -Apps erstellen wollen. SQL  ist nur dann geeignet, wenn Sie insbesondere mit Datenbanken arbeiten wollen, und PHP, wenn Sie Web-Server damit programmieren wollen. Falls es Sie nicht stört, daß Scratch  sich an Kinder wendet, ist diese Sprache als besonders leichter Einstieg ins Programmieren empfehlenswert, sie ist sozusagen kinderleicht.

Die Programmiersprachen Java, C♯  und VB.net  sind schon etwas anspruchsvoller und geeignet, wenn Sie größere Projekte damit entwickeln wollen, dabei ist Java  nicht an ein bestimmtes Betriebssystem gebunden, während C♯  und VB.net  eher an Microsoft-Windows  gebunden sind.

Die Programmiersprachen C  und C++  sollten Sie vermeiden, da sie sehr anspruchsvoll und schwer zu erlernen sind. Zwar kann man einfache Programme in beiden Sprachen auch als Anfänger noch gut schreiben, um damit größere Projekte realisieren zu können, muß man aber abstrakter denken, mehr Entscheidungen treffen und mehr lernen als bei der Verwendung anderer Programmiersprachen.

Bezeichnungen der Programmiersprachen

In diesem Abschnitt finden sich einige Anmerkungen zu den Bezeichnungen von Programmiersprachen, wenn dabei Besonderheiten zu beachten sind.

Die Programmiersprache C♯  wird wie “see sharp ” ausgesprochen. Das Zeichen „ “ soll ein musikalisches Erhöhungszeichen (englisch “sharp ”) darstellen.

Die Programmiersprache Visual-Basic  („Visual Basic “) unterscheidet sich in der Version 7 erheblich von Visual-Basic-6  und weiteren Vorgängern. Die Unterschiede sind so groß, daß man praktisch von zwei verschiedene Programmiersprachen  sprechen muß. Verwirrenderweise verwendet Microsoft heute aber die Bezeichnung „Visual-Basic “ für beide  Sprachen. Wir verwenden hier deshalb „Visual-Basic-classic “, um uns auf Visual-Basic-6  und seine Vorgänger zu beziehen, und „VB.net “, um uns auf Visual-Basic-7  und seine Nachfolger zu beziehen.

Visual Basic classic  wird von Microsoft  schon lange nicht mehr unterstützt. Man kann keine Implementationen dieser Sprache mehr von Microsoft  beziehen. Trotzdem ist es eine wundervolle Sprache, die noch viele Anhänger hat. VB.net  wurde von Microsoft  zunächst als Sprache „erster Klasse“ geführt, die von Microsoft  genau so unterstützt wird wie C♯ . Erst in letzter Zeit (Stand 2018) gibt es Anzeichen dafür, daß VB.net  zukünftig vielleicht etwas weniger Möglichkeiten als C♯  bieten könnte.

Die Programmiersprache Python  wurde nach einer englischen Komikertruppe benannt und nicht nach einer Schlange.

Die Programmiersprache C  war der Nachfolger einer Programmiersprache namens B. C++  ist eine Erweiterung von C.

Die Programmiersprache SQL  hieß ursprünglich SEQUEL structured-English query language ”, und heute stehen die Buchstaben in SQL  offiziell für nichts anderes mehr, die Sprache heißt einfach „SQL  “.

Die Programmiersprache Java  wurde vielleicht nach einem Spruch “It's a jungle out there, so drink your Java.“ benannt. (Java  ist im Englischen auch Kaffee oder Arabica-Kaffee.)

Bei der Programmiersprache VBA  hat jeder Buchstabe eine treffende Bedeutung: „V “ steht für „visuell“ (die Fenster eines Programms können teilweise „auf den Bildschirm gezeichnet“ werden), „B “ steht für „BASIC “ (VBA  basiert auf BASIC, einer besonders anfängerfreundlichen Sprache) und „A “ steht für „Anwendungen“ (mit VBA  werden Anwendungsprogramme programmiert).

VB.net  ist eine VBA -artige Sprache, die aber nicht zur Programmierung von Anwendungen sondern zur Programmierung mit Hilfe der Bibliothek “net ” gemacht wurde.

Der Zweck der Programmiersprache

Allzwecksprachen

Die meisten bekannten Programmiersprachen sind Allzwecksprachen, mit denen man fast alles  programmieren kann.

Das heißt: Spiele; Programme zur Aufnahme, Wiedergabe, Erzeugung, Be- und Verarbeitung von Daten wie Medien (Bildern, Klängen, Tönen); Kommunikationsprogramme; Informationssysteme; Schriftsatzprogramme; Datenbanken; Betriebssysteme; Syntheseprogramme; Steuerprogramme für Aktoren (Geräte); Programme zur Interpretation von Daten; Benutzeroberfläche; Programme zu Einlesen von Sensoren oder Speichereinheiten; u.s.w.

Zu den Allzwecksprachen gehören: Python, Java, C♯, VB.net, C  und C++.

Erwähnenswert ist noch, daß auch JavaScript  heute manchmal zur Entwicklung von Anwendungsprogrammen (Apps) und Web-Servern eingesetzt wird und damit weniger als früher nur in Web-Seiten zu finden ist. Insofern entwickelt sich JavaScript  langsam von einer Webseiten-Sprache zu einer Allzwecksprache.

Sprachen zur Systemprogrammierung

C  und C++  erlauben eine relativ direkte Programmierung  eines Computers mit direkten Zugriffen auf die Geräte, wie sie etwa zum Schreiben von Treibern für Betriebssysteme nötig ist. Diese direkte Programmierung wird als Systemprogrammierung  bezeichnet. Das Schreiben von Programmieren, welche direkt von wenig geschulten Endanwendern bedient werden können, nennt man Anwendungsprogrammierung. Die Systemprogrammierung ist schwieriger als die Anwendungsprogrammierung. Obwohl C  und C++  auch für Anwendungsprogrammierung geeignet sind, werden sie doch insbesondere zur Systemprogrammierung verwendet.

Sprachen zur Anwendungsprogrammierung

Python, Java, C♯  und VB.net  enthalten zusätzliche Bestandteile, um die Anwendungsprogrammierung zu erleichtern. C  und C++  sind ebenfalls dafür geeignet, aber die Anwendungsentwicklung mit C  und C++  ist schwieriger, da diese Sprachen besonders auf die Systemprogrammierung ausgerichtet sind.

Skriptsprachen

Eine Skriptsprache  erlaubt speziell die Programmierung eines bestimmten  Programmes (wie zum Beispiel von Microsoft-Word ). Die Sprachen VBA  und JavaScript  sind solche Skriptsprachen.

Im Falle von VBA  handelt es sich bei dem umgebenden Programm um Anwendungsprogramme  wie Microsoft-Excel, Microsoft-Word  oder Microsoft-Access. Früher lizenzierte Microsoft  die Programmiersprache auch noch an andere Unternehmen, damit sie diese Sprache in ihre eigenen Programme einbetten können. VBA  ist besonders dafür geeignet, das umgebende Programm zu erweitern. Man kann damit aber keine Programme schreiben, die ohne ein umgebendes Programm laufen.

Bei JavaScript  ist das umgebende Programm ein Web-Browser. Diese Sprache wird verwendet, um Programme zu schreiben, die in einer Web-Seite  enthalten sind und so die Möglichkeiten der Web-Seite und des Web-Browsers erweitern. JavaScript -Programme können nicht selbständig außerhalb eines Web-Browsers laufen. Da ein Web-Browser heute allerdings auf sehr vielen Computern und Mobilgeräten vorhanden ist, stellt dies keine große Einschränkung dar.

Programme wie Node.js, das JDK  oder der Windows Script Host  stellen ebenfalls Umgebungen für JavaScript -Programme bereit und erlauben es, diese Programme auch ohne einen Web-Browser  laufen zu lassen. Sie sind aber nicht so populär, wie die Verwendung von JavaScript -Programme in einem Web-Browsers.

PHP  ist in einem Web-Server  eingebettet und erlaubt die Programmierung des Web-Servers. Diese Sprache ist daher besonders dann nützlich, wenn jemand Web-Dienste  (wie zum Beispiel einee Web-Shop ) anbieten will.

Für übliche Web-Dienste wie Web-Shops gibt es schon fertige Angebote, so daß man sich diese nicht mehr selber mit PHP  programmieren muß. Die Sprache ist daher also besonders dann wichtig, wenn man Web-Dienste anbieten möchte, für die es noch keine fertigen Angebote gibt.

Scratch  ist in eine Umgebung eingebettet, die speziell zum einfachen Erlernen des Programmierens hergestellt wurde und es besonders erleichtert beispielsweise einfache Spiele zu programmieren.

SQL  ist in Datenbankensysteme eingebettet und erlaubt, es Datenbanken anzulegen, zu verändern, mit Daten zu füllen und die Daten nach verschiedenen Kriterien abzufragen. Damit ist SQL  eine ausgesprochen spezielle Sprache, die nicht verwendet werden kann, um Anwendungsprogramme damit zu schreiben. Um ein Anwendungsprogramm zu entwickeln, braucht man daher neben SQL  immer noch mindestens eine weitere Programmiersprache für die Entwicklung der Benutzeroberfläche.

Schnittstellen  von Allzwecksprachen

Für einige Anfänger ist es besonders befriedigend, mit einem Programm nicht nur Texten ausgeben zu können, sondern auch Graphiken anzeigen, Verzeichnisse der Festplatte durchsuchen oder Webseiten abrufen zu können. Dies geht zwar mit fast allen Allzwecksprachen, doch bei einigen sind diese Möglichkeiten bereits in der üblichen Implementation enthalten, während sie bei anderen Sprachen vom Betriebssystem abhängen oder die Installation von Erweiterungen der Implementation verlangen.

Sprachen, die Zugriffe auf Verzeichnisse, das Netzwerk und Graphik bereits bei der üblichen Implementation erlauben sind Python, Java, C♯  und VB.net.

C++, JavaScript, VBA  unterstützen in der üblichen Installation nicht alle dieser Möglichkeiten.

C++  erlaubt Zugriffe auf Verzeichnisse. Zugriffe auf das Netzwerk und Graphik sind mit Erweiterung möglich. Tatsächlich ist C++  sogar die verbreiteste Programmiersprache für die professionelle Programmierung von Computerspielen, wo sie oft mit entsprechenden Erweiterungen kombiniert wird. Die Arbeit mit C++  ist in diesem Bereichen aber oft weniger anfängerfreundlich.

Bei JavaScript  im Browser gehört es zum Sicherheitskonzept, daß Zugriffe auf Verzeichnisse und das Netzwerk nur eingeschränkt möglich sind, während Canvas -Graphik mit Hilfe von HTML  möglich ist.

VBA  erlaubt Zugriffe auf Verzeichnisse und fast alles, was die Anwendung kann, in der es eingebettet ist. Abrufe von Webseiten und Zugriffe auf das Netzwerk sind möglich, aber schon etwas schwieriger.

C  unterstützet in der Standardversion keine Zugriffe auf Verzeichnisse, das Netzwerk oder Graphik. All dies ist dort aber mit Erweiterungen möglich, deren Verwendung jedoch weniger anfängerfreundlich ist.

Aktualität

Alle der hier behandelten Sprachen sind aktuell, in dem Sinne, daß sie heute (2019) immer noch verwendet werden und Implementationen verfügbar sind.

Portabilität von Allzwecksprachen

Eine Sprache ist portabel, wenn mit ihr geschriebene Programme ohne aufwendige Anpassungsarbeiten unter verschiedenen  verbreiteten Betriebssystemen und Prozessoren laufen.

Python  ist wahrscheinlich die portabelste der hier behandelte Allzwecksprachen, dicht gefolgt von Java.

Aber auch JavaScript  ist hier besonders zu erwähnen: Es läuft unter allen Betriebssystemen, unter denen ein Web-Browser läuft. Jedoch stellt es bei JavaScript  noch ein Problem dar, daß manchmal noch Anpassungen für einzelne Web-Browser nötig sind. Die Situation hat sich allerdings in den letzten Jahren verbessert (Stand 2019).

C♯  und VB.net  laufen mit allen ihren Möglichkeiten besonders unter Microsoft-Windows, lassen sich mit Einschränkungen jedoch auch unter anderen Betriebssystemen verwenden.

C++  und C  sind sehr portabel, solange man nur die Standardfähigkeiten dieser Sprachen verwendet. Für Programme, die Erweiterungen verwenden, hängt die Portabilität dann aber von der Portabilität jener Erweiterungen ab. Falls mit diesen Sprachen auf das Betriebssystem zugegriffen wird, müssen die entsprechenden Zugriffe für jedes Betriebssystem angepaßt werden. Daher ist es schwieriger, mit C++  und C  portable Programme zu schreiben, die Erweiterungen verwenden.

VBA -Programme laufen unter jedem Betriebssystem, unter dem das sie umgebende Programm (wie beispielsweise Microsoft-Excel ) läuft.

SQL  kann für die Programmierung von Datenbanken verschiedener Hersteller verwendet werden, aber bei komplizierteren Programmen sind oft mehr oder weniger aufwendige Anpassungen nötig, da verschiedene Datenbanken verschiedene „Dialekte“ von SQL  verwenden.

Erlernbarkeit der ersten Schritte

Die ersten Schritte sind besonders leicht in Python, VBA, JavaScript, SQL  und Scratch. Wir zeigen eine Eingabe beziehungsweise ein Programm, das „Hallo“ ausgibt:

Einige Programmiersprachen bieten in der Standardimplementation eine sogenannte Konsole, welche die ersten Schritte noch mehr erleichtert.

Python  (Eingabe in der Konsole)
'Hallo'
Python  (Programm außerhalb der Konsole)
print( 'Hallo' )
VBA  (in der Konsole)
? "Hallo"
VBA  (Programm außerhalb der Konsole)
Sub Main()
Debug.Print "Hallo"
End Sub

JavaScript  ist speziell für die Programmierung von Webseiten gedacht und kennt daher keine Ausgabekommandos, die genau denen anderer Programmiersprachen entsprechen. Wir zeigen im folgenden eine Möglichkeit zur Ausgabe, die von den meisten verbreiteten Web-Browsern unterstützt wird.

JavaScript  (Eingabe in der Konsole)
'Hallo'
JavaScript  (Programm außerhalb der Konsole)
console.log( 'Hallo' )
JavaScript  (Programm in einer Webseite)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
<head><meta charset="UTF-8" /><title>Main</title><style type="text/css">
</style></head><body><pre><code><script>/*<![CDATA[*/
console.log( 'Hallo' )
/*]]>*/</script></code></pre></body></html>
SQL  (MySQL ) (Eingabe in der Konsole)
SELECT 'Hallo';

(In Standard-SQL  ist die Ausgabe von »Hallo« allerdings etwas komplizierter als in MySQL.)

Besonders einfach sind die ersten Schritte auch noch in Scratch, da diese Sprache extra dafür geschaffen wurde, Anfängern die ersten Schritte zu erleichtern. Von Scratch  gibt es sogar eine angepaßt Version, mit deutschsprachigen Kommandos. Scratch -Programme sind graphisch und können daher hier nicht direkt wiedergegeben werden, aber man kann sich das Scratch -Kommando zur Ausgabe des Wortes „Hallo“ in etwa so vorstellen: »Sage "Hallo"«. Scratch  ist besonders auch dafür gedacht, bereits Kindern und Jugendlichen das Programmieren beibringen zu können.

In Java, C♯ , VB.net, C++  und C  sind die ersten Schritte schon etwas schwieriger. Man wird im folgenden sehen, daß die Programme zur Ausgabe von „Hallo“ schon relativ lang sind. Man sollte die dadurch verursachte Erschwernis aber nicht überschätzen, da die ersten Zeilen all dieser Programm oft so etwas wie „Standard-Textbausteine“ darstellen, die man einfach kopieren kann, ohne immer über sie nachdenken zu müssen.

Einige der folgenden Programme könnte man auch noch etwas kürzen, wenn man unbedingt ein möglichst kurzes Programm wünscht. Es handelt sich um Beispiele die so aus Programmierkursen übernommen wurden, und bei denen es nicht darum ging, ein möglichst kurzes Programm zu schreiben.

Java 
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "Hallo" ); }}
C♯ 
public static class Program
{ public static void Main()
{ global::System.Console.WriteLine
( "Hallo" ); }}
VB.net 
Module Hello
Sub Main()
Call Global.System.Console.WriteLine( "Hallo" )
End Sub
End Module
C++ 

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main() { ::std::cout << "Hallo"s << "\n"s; }

C 

#include <stdio.h>

int main( void )
{ printf
( "%s\n", "Hallo" ); }

Man sieht, daß die Programme in Java  und in C♯  sich etwas ähneln, und daß das C -Programm noch am kürzesten ist. Wenn man es unbedingt wollte, könnte man das C++-Programm allerdings noch deutlich kürzer schreiben.

C++ 

#include <iostream>

int main(){ std::cout << "Hallo\n"; }

Wenn man sich einmal an die „Textbausteine“ gewöhnt hat, ist das Schreiben von Programmen in Java, C♯ , VB.net, C++  und C  für einen Anfänger nicht mehr besonders viel schwieriger als das Schreiben von Programmen in Python, VBA, JavaScript, SQL  oder Scratch.

Allerdings machen Sprachen mit einer speziellen Lernumgebung (wie Scratch ) und Sprachen mit einer Konsole (wie Python, VBA, JavaScript  und SQL ) das Erlernen der ersten Schritte doch noch einmal einfacher. Für Java  ist inzwischen auch eine Konsole erschienen.

In JavaScript -Kursen sind einige Teilnehmer oft besonders ungeduldig und erwarten, baldmöglichst das Schreiben von Programmen zu erlernen, die in Webseiten eingebettet sind. Um zunächst erst einmal die Grundlagen von JavaScript  zu erlernen ist es aber viel einfacher, die ersten Schritte mit der Konsole zu machen.

Erlernbarkeit im Mittelfeld zwischen Anfänger und Fortgeschrittenem

Das Erlernen der Sprachen C++  und C  ist besonders schwierig, weil diese abstrakter definiert sind. Viele wichtige Details sind nicht genau festgelegt. Dies hat zwar den Vorteil größerer Flexibilität, aber ist besonders schwer zu erlernen und zu beherrschen.

Scratch  und teilweise auch VBA, VB.net  und Python  sind Sprachen, die speziell geschaffen wurden, um Anfängern das Programmieren zu erleichtern,

Erlernbarkeit fortgeschrittener Programmiertechniken

Die Erlernbarkeit von Programmiersprachen zum Schreiben größerer und komplizierterer Programme ist für die einzelnen Sprachen ähnlich wie die Erlernbarkeit für die ersten Schritte. Auch hier sind Python, VBA, JavaScript, SQL  oder Scratch  einfacher anzuwenden als Java, C♯ , VB.net, C++  und C.

Scratch  ist jedoch überhaupt nur als Lernsprache gedacht und nicht als Sprache zum Schreiben größerer Programme.

C++  ist besonders schwierig gut zu erlernen, da der Programmierer bei größeren und komplizierteren Programmen oft eine manuelle Speicherverwaltung durchführen muß und diverse komplizierte Techniken und Sprachmöglichkeiten erlernen muß. C  ist schließlich noch etwas schwieriger als C++  für größere und kompliziertere Programme zu erlernen. Die Sprache ist zwar kleiner und damit einfacher als C++  aber sie bietet dem Programmierer noch weniger Unterstützung. Ein gut ausgebildeter Programmierer kann mit C  und C++  Programme schreiben, die schneller laufen als in anderen Programmiersprachen geschriebene Programme, aber er braucht mehr Zeit, um diese Sprachen so weit zu erlernen und die Programme in ihnen zu schreiben. In C++  und besonders in C  kann ein Programmierer weniger auf vorbereitete Programmteile zurückgreifen und muß mehr selber programmieren und sich um die Auswahl und Beschaffung von Erweiterungen kümmern. Dadurch kann er zwar mehr Details selber festlegen, aber er muß auch sehr gut ausgebildet sein, um dazu in der Lage zu sein.

Es ist verkehrt, die anspruchsvollen Sprachen C  und C++  in der Ausbildung zum Erlernen des Programmierens an allgemeinbildenden Schulen einzusetzen, da gerade diese beiden Sprachen eher schwer gut zu erklären und zu erlernen sind. In Schulen sollten Sprachen wie Python, JavaScript  oder Scratch  bevorzugt werden; Java  wäre gerade noch vertretbar.

PHP  scheint eher für kleine Programme, die auf einem Web-Server laufen, gut geeignet zu sein. Wenn PHP -Programme auf einem Web-Server sehr groß werden, werden sie oft auf Java  umgestellt (Java EE ), was die Handhabung größerer Projekte besser unterstützt.

Speicherverwaltung

Eine automatische Speicherverwaltung erleichtert das Schreiben größerer komplizierterer Programme. Gleichzeitig kann sie Programme manchmal etwas ausbremsen, so daß diese dann nicht immer sofort auf Ereignisse reagieren können.

Solch eine automatische Speicherverwaltung gehört zu allen hier angesprochenen Programmiersprachen außer C  und C++. Dabei bietet C++  noch etwas mehr Unterstützung für eine wenigstens teilweise automatische Speicherverwaltung (deren Handhabung aber auch erst einmal aufwendig erlernt werden muß), während in C  der Programmierer alles alleine machen muß.

Effizienz

Programme die von einem Experten  in C  oder C++  geschrieben wurden, laufen in der Regel am schnellsten. Gleichzeitig ist die Programmierung mit diesen beiden Sprachen aber auch schwieriger und zeitaufwendiger. Tendenziell kann man sagen, daß schnellere Sprachen für Programmierer schwerer zu erlernen und zu beherrschen sind.

Für viele Fälle sind alle genannte Sprachen ausreichend schnell. Hier folgen grobe Richtwerte, die ungefähr angeben, wie lange dasselbe Programm braucht, wenn man es in einer der Sprachen laufen läßt (diese Information ist nicht für alle Sprachen verfügbar und nur ein grober Anhaltspunkt).

Laufzeiten
40     Python 3 
20 PHP
10 JavaScript mit Node.js
2 C#
2 Java
1,5 C++
1 C

Python 3  ist in der Praxis wahrscheinlich manchmal etwa schneller als in dieser Tabelle, nämlich dann, wenn ein Python-3 -Programm für zeitkritische Teile eine Bibliothek verwendet, die in C  geschrieben wurde.

Popularität

Alle hier genannten Sprachen sind sehr populär (verbreitet).

Spezifikation

Für eine Programmiersprache sollte eine Spezifikation  verfügbar sein, welche die Programmiersprach ausreichend genau und detailliert festlegt. Dies ist für die hier behandelten Programmiersprachen der Fall. Ein Anfänger braucht eine solche technische Spezifikation allerdings nicht zu lesen, diese richtet sich nur an Fortgeschrittene und Experten.

Wenn eine Spezifikation eines herstellerübergreifenden Gremiums vorhanden ist, macht man sich bei der Verwendung einer Programmiersprache weniger von einem bestimmten Hersteller abhängig.

Bei den Sprachen C  und C++  ist die Spezifikation nicht kostenlos verfügbar, sondern muß käuflich erworben werden. Jedoch gibt es für diese beiden Sprachen kostenlos verfügbare Entwürfe der Spezifikation, welche für viele Zwecke ausreichen.

Bei den Sprachen Python  und VBA  scheint die Spezifikation noch etwas weniger ausgereift zu sein, was aber für das Erlernen und Verwenden dieser Sprachen kein Hindernis darstellt.

Implementationen

Für eine Programmiersprache sollten natürlich auch Implementationen  verfügbar sein, am besten mehrere und kostenlos verwendbare. Dies ist für fast alle hier behandelten Programmiersprachen der Fall.

Wenn es mehrere Implementationen von verschiedenen Anbietern gibt, macht man sich bei der Verwendung einer Sprache weniger von einem bestimmten Hersteller abhängig.

Zur Schreiben von VBA -Programmen ist der Erwerb einer Microsoft-Office -Anwendung mit VBA  nötig. Einige andere Office -Pakete enthalten VBA -ähnliche Sprachen. Die VBA -ähnliche Sprache VBS  ist Bestandteil vieler Windows -Versionen. VBA -Programme werden in der Regel an andere Office -Benutzer weitergegeben, obwohl es auch eine Möglichkeit gibt, Access-VBA -Programme in manchen Fällen nach Erwerb eines speziellen Entwicklungssystems an Anwender weiterzugeben, die kein Microsoft-Access  besitzen.

Für C♯  und VB.net  gibt es derzeit hauptsächlich eine einzige Implementation von Microsoft, aber es gibt daneben noch die alternative Implementation Mono  für C♯ .

Sicherheit

Programme in C  und C++  müßten eigentlich weniger sicher sein, da diese Sprachen aus Gründen der Effizienz (Schnelligkeit) keine Sicherheitsprüfungen enthalten, die während des Programmablaufs ausgeführt werden. In der Praxis zeigt es sich aber, daß alle Sprachen mit Sicherheitsprobleme zu kämpfen haben. Beispielsweise gab es eine Zeit zu der besonders viel über Sicherheitslücken in der eigentlich als besonders sicher gestalteten Programmiersprache Java  berichtet wurde. Daher ist es schwer unter dem Aspekt der Sicherheit Sprachen auszuwählen, jedoch kann man sicher sagen, daß ein Programmierer, der sichere Programme in C  oder C++  schreiben will im allgemeinen einer umfangreicheren Ausbildung bedarf.

Weitergebbarkeit

Programme in C  und C++  werden oft für ein bestimmtes Betriebssystem geschrieben und können dann an alle Anwender dieses Betriebssystems weitergegeben werden, die sie meist ohne weiteres starten können.

Programme in C♯  und VB.net  können in der Regel an alle Anwender einer modernen Microsoft-Windows -Version weitergegeben werden.

VBA -Programme können an alle Anwender des entsprechenden Programmes (wie zum Beispiel Microsoft-Excel ) weitergegeben werden.

Um Programme in Python, Java  oder Scratch  an jemanden weitergeben zu können, muß der Empfänger zunächst eine entsprechende Laufzeitumgebung installieren. Manchmal ist es aber auch möglich, Python - oder Java -Programme zu einem ohne weiteres ausführbaren Programm zu übersetzen. Für Scratch  gibt es ein spezielles System, das es erlaubt Programme mit anderen Programmierern auszutauschen.

Programme, die in PHP  geschrieben wurden, laufen in der Regel auf einem Web-Server. Daher kann sie jeder nutzen, der Zugang zu diesem Web-Server hat. Dasselbe gilt auch für Programme in anderen Sprachen, die auf einem Web-Server laufen.

JavaScript -Programme laufen oft in einem Web-Browser, aber sie werden von einem Web-Server dorthin ausgeliefert. Daher kann jeder ein Java-Script -Programm verwenden, der Zugriff auf den ausliefernden Web-Server hat.

SQL -Programme werden oft in Programme einer anderen Programmiersprache eingebaut und können dann mit diesen zusammen weitergegeben werden.

Quellcodeschutz

Einige Autoren von Programmen befürchten, daß ihr „geistiges Eigentum“ entwendet werden kann, wenn sie ihre Programm weitergeben.

Programme in C  und C++  können in die nur schwer verständliche Maschinensprachenprogramme übersetzt werden, bevor sie an Anwender zur Ausführung ausgegeben werden. Der Empfänger des Programms kann dessen Funktionsweise dann nur mit viel Mühe und Fachkenntnis analysieren.

Programme in vielen anderen Programmiersprache werden oft in einer leichter verständlichen Form weitergegeben und können dann vom Empfänger einfacher analysiert werden. Durch spezielle Verschleierungsprogramme kann dies aber auch wieder erschwert werden.

Programme, die auf einem Web-Server laufen, werden in der Regel von Endanwendern bei der Benutzung des Web-Servers mitbenutzt, ohne daß der Endanwender die Programme dabei lesen kann.

SQL-Programme werden in der Regel in Programme anderer Sprachen eingebettet, so daß dann das für die anderen Programme Gesagte gilt. Allerdings werden eingebettete Programme beim Übersetzen oder Verschleiern nicht immer mitübersetzt oder verschleiert, so daß sie lesbar bleiben könnten. SQL-Programme können aber auch auf einer Datenbank gespeichert werden, wo sie für einen Anwender der Datenbank nicht lesbar, sondern nur benutztbar sind (ähnlich wie Programme auf einem Web-Server).

Beispiele für Programme oder Anwender

Viele speziell für einen bestimmten Zweck geschriebene Programme verrichten ihren Dienst bei einzelnen Personen oder in Organisationen, ohne daß dies öffentlich bekannt wird. Daher gibt es keine realistische Statistik zur Anwendung einzelner Programmiersprachen. Wir können hier anekdotenhaft eine Programme und Programmtypen vorstellen, die öffentlich bekannt geworden sind.

Der Kern des Betriebssystems Linux  (und damit auch der Kern von Android ) ist in C  geschrieben. Viele Programme, die unbedingt so schnell und effizient wie möglich laufen sollen, sind in C  geschrieben, darunter beispielsweise Office -Programme, Compiler, viele Systemprogramme (wie beispielsweise Treiber) oder auch Web-Browser.

Einige Programme, die früher in C  geschrieben wurden, werden heute in C++  geschrieben. C++  verspricht nur Vorteile gegenüber C, doch es gibt einige überzeugte C -Anwender, wie Linus Thorvalds, die C++  und C++ -Programmierer vehement ablehnen. Man kann aber sagen, daß sich der Anwendungsbereich von C  und C++  stark ähnelt. C++  ist die am häufigsten zur Programmierung professioneller Spiele verwendete Sprache.

Python  ist dafür bekannt als Sprache in der Ausbildung führender amerikanischer Hochschulen eingesetzt zu werden und bei Google  verwendet zu werden. Django ist eine in Fachkreisen bekannte Bibliothek zur Programmierung von Web-Servern, das in Python geschrieben wurde.

Java  ist der Standard zur Programmierung großer Programme auf Web-Servern. Aber auch die Urfassung des Spieles Minecraft  wurde in Java  geschrieben. Der angesehene Heise-Verlag kürte Java  zur Programmiersprache des Jahres 2017. In einigen Umfragen ist Java  die am häufigsten eingesetzte Programmiersprache.

JavaScript  ist der Standard zur Programmierung von Programmen, die in Webseiten enthalten sind. Beispielsweise spielt es für Google Maps  eine wichtige Rolle. In einer Umfrage aus dem Jahre 2017 war JavaScript  die beliebteste und die verbreiteteste Programmiersprache.

Diese Webseiten hier (einschließlich des Registers des Java -Kurses) wurden mit Hilfe von VBA  erstellt, das weltweit in Tausenden von Büros eingesetzt wird, um die Fähigkeiten von Microsoft-Office -Programmen zu erweitern und diese an spezielle Bedürfnisse anzupassen.

Andere häufige Fragen zu Programmierkursen

Können schon Kinder das Programmieren erlernen?

Ab einem Alter von zirka 12 Jahren kann ein Kind in Erwachsenenkursen das Programmieren erlernen. Kinder ab 5 Jahren können Programmieren in Kursen erlernen, die speziell auf ihre Altersgruppe ausgerichtet sind.

Dies heißt aber nicht, daß alle Kinder einen Programmierkurs garantiert erfolgreich absolvieren können. Das können ja auch Erwachsene nicht. Es heißt nur, daß das geringe Alter des Kindes dann keinen besonderen Ausschlußgrund darstellt.

Windows Vorkenntnisse

>723881 Lektion W-0 Windows -Grundlagen für Programmierkurse

Ein Text von Peter Norvig 

Lernen Sie zehn Jahre lang programmieren!
https://www.purl.org/stefan_ram/html/21-tage

 Ist Python  einfacher?

Man kann das Erlernen einer Programmiersprache mit dem Fahrunterricht  vergleichen: Es ist leichter, ein Automatikgetriebe zu fahren als ein Schaltgetriebe, aber beim Erlernen der Verkehrsregeln hilft das nicht viel!

Siehe ["struggle rates" "Python"] dl.acm.org/citation.cfm?id=3160586 www.cs.ucr.edu/~aedgcomb/presentations/SIGCSE18_PythonCpp_Vahid.pptx

We found the Python struggle rate was not lower than C++. One possible reason is that the languages’ syntax differences are eclipsed by the difficulty of learning language-independent programming concepts 

Der C++ -Kurs des Autors ist nicht schwieriger als der Python -Kurs, weil in beiden Fälle schwierige Stellen aus dem Kurs elimiert wurden. Jedoch hat C++  tatsächlich mehr schwierige Stellen als Python, und bei der Anwendung in der Praxis merkt man das dann nach dem Ende  des Kurses auch. Python  ist  einfacher zu erlernen und anzuwenden als C++, aber dies merkt man eher bei fortgeschrittenen Themen.

page.mi.fu-berlin.de/prechelt/Biblio/jccpprt2_advances2003.pdf, Lutz Prechelt: Are Scripting Languages Any Good?

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723888 stefan_ram:723888 Beratung Programmierung Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723888, slrprddef723888, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/beratung_programmieren