[Veranschaulichung des Public-Key-Verfahrens]

KRYPTOLOGIE

Erste Analyse der Programmiersprachen

[Veranschaulichung des Public-Key-Verfahrens]

Gemeinsamkeiten und Unterschiede der Programmiersprachen
Coffeescript, Python und Ruby

Python und Ruby wurden in den 90-Jahren entwickelt und weisen viele Gemeinsamkeiten auf. Coffeescript wurde 2009 als 'Ersatz' für Javascript definiert. Damit ist diese Sprache nicht vollständig mit den beiden anderen Sprachen vergleichbar. Trotz der Unterschiede weist die Arbeit mit den Sprachen grosse Gemeinskeiten auf. In dieser ersten Analyse werden noch keine didaktischen Aspekte berücksichgt.
  • Bei allen drei hier untersuchten Sprachen handelt es sich um sogenannte Skriptsprachen. Diese haben alle die gemeinsame Eigenschaft, dass es sich um Interpretersprachen handelt. Sie werden daher in der Ausführung vom Interpreter analysiert, übersetzt und sodann gleich ausgeführt. Das ermöglicht eine interaktive Programmentwicklung, die auch im schulischen Umfeld im Gegensatz zu Compilersprachen wie Java oder Pascal sehr vorteilhaft ist.
  • Für alle drei Sprachen gibt es eine Laufzeitumgebung, in der Anweisungen in der entsprechenden Sprache direkt ausgeführt werden können. In dieser Laufzeitumgebungen können auch Programme ausgeführt werden. Programme lassen sich aber auch jeweils den Interpretern zur Ausführung übergeben werden.
    In diesen Laufzeitumgebungen können als 'vorgefertigte' Prozeduren und/oder Funktionen geladen sowie unvollständige Programmteile geladen werden. In der Laufzeitumgebung können dann Anweisungen direkt eingegeben werden, die dann sofort ausgeführt werden. Damit lassen sich Programm(teile) sehr einfach testen.
    Da Coffeescript in erster Linie als 'Ersatz' für Javascript konzipiert wurde, ist in der Laufzeitumgebung eine Eingabe von Werten zur Laufzeit nicht möglich. Das ist nur in der Laufzeitumgebung Pencilcode (IDE) möglich.
  • Alle drei Sprachen haben keine statische Typenbindung. Das bedeutet, dass zur Laufzeit bestimmt wird, welcher Typ die Werte einer Variablen haben. Das ist zweisfelsohne sehr praktisch, hat aber in punkto Sicherheit Nachteile.
  • Alle Sprachen lassen eine imperative als auch eine objektorientierte Programmierung zu.
  • Da es für alle gängigen Betriebssysteme Interpreter gibt, sind die Programme weitgehend portierbar.
  • Alle drei Programmiersprachen sind Open-Source, es entstehen also keine Kosten bei der Nutzung dieser Systeme

Es gibt natürlich auch Unterschiede:

  • Eine Besonderheit weist Ruby auf: Sie als konsequent objektorientierte Sprache designed worden. Eine daraus folgende Möglichkeit ist, dass nicht nur Klassen definiert werden können, sondern auch einzelne Objekte.
  • Die Syntax ist zwar nicht identisch, die Unterschiede bei den meisten Sprachkonstrukten sind allerdings nicht sehr gross.
  • Es gibt für alle drei Sprachen eine Community. Diese ist bei Python sehr gross, die von Ruby ist allerdings aus Sicht der Nutzer zwar kleiner, aber in der Bedeutung praktisch nicht geringer. Bei Coffeescript ist sie dagegen allerdings sehr klein. Es ist zumindest zu Beginn daher etwas schwieriger, an die gewünschten Informationen zu kommen.
  • Die beiden Sprachen Ruby und Python sind 'vollständige' Skriptsprachen. Mit ihnen lassen sich Programme entwicklen, die beispielsweise von der Kommandozeile aufgerufen werden können und von dort Eingaben erhalten und textbasierte Ausgaben erzeugen. Mit unterschiedlichen Bibliotheken können natürlich auch Anwendunten entwickelt werden, die unter einer grafischen Oberfläche (GUI) arbeiten.
    Dies gilt nicht für Coffeescript. Auf der Kommandozeile kann keine interaktive Eingabe vorgenommen werden. Diese Sprache ist in erster Linie gedacht, in Webseiten als Skriptsprache verwendet zu werden. Daher ist eine Eingabe über ein HTML-Element angedacht. Solche Programme können beispeilsweise in der IDE Pencilcode entwickelt und ausgeführt werden.
Diese Aufzählung ist sicher nicht vollständig. Die verschiedenen Gemeinsamkeiten und Unterschiede werden je nach persölicher Preferenz zudem unterschiedlich gewichtet.