Inhaltsverzeichnis
Gobo Eiffel on OpenBSD

Die Eiffelsprache ist eine der besten objektorientierten Programmiersprachen, deren Konzepte die meisten von Sprachen wie Java, C# und anderen übernommen wurden.
Leider ist Eiffel inzwischen sehr gering beliebt, was Entwickler kaum dazu ermutigt, es zu lernen oder zu nutzen.
Historisch wurde die Eiffelsprache 1985 von Bertrand Meyer konzipiert. Für diese Sprache gibt es mehrere Kompilatoren:
- Eiffel aus B. Meyer
- Gobo Eiffel
- LibertyEiffel
Diese Sprachen werden alle als Open Source bereitgestellt, aber Gobo Eiffel hat den Vorteil, eine sehr permissive Lizenz zu haben und sich problemlos auf OpenBSD installieren zu lassen.
Installation auf OpenBSD
Beginnen wir damit, das Gobo Eiffel-Softwarepaket auf GitHub herunterzuladen: 'gobo-master.zip'
Lass uns diese Datei in unser Benutzerverzeichnis entpacken.
Wir können auch den Befehl 'git' mit dem
Link verwenden 'https://github.com/gobo-eiffel/gobo.git'
In der .profile-Datei unserer Benutzersitzung fügen wir die folgenden Zeilen ein:
ISE_PLATFORM=openbsd
export ISE_PLATFORM
GOBO=/home/<user>/<path-to>/gobo-master
export GOBOBeachten Sie, dass es wichtig ist, dass das Wort "bsd" in den ISE_PLATFORM zugewiesenen Namen aufgenommen wird.
Installieren wir das libiconv-Paket im "root"-Modus, der für die Kompilierung von Gobo Eiffel unerlässlich ist.
pkg_add libiconvLassen Sie uns überprüfen, ob die installierten Dateien vorhanden sind:
ls -l /usr/local/include/iconv.h
ls -l /usr/local/lib/libiconv.*Jetzt installieren wir Gobo Eiffel: Dafür müssen wir die Shell install.sh Befehlsdatei im Verzeichnis $GOBO/bin ausführen, die mit dem Kompilieren der Bootstrap C-Version des Compilers beginnt und dann alle Eiffel-Sprachdateien enthält. Die ausführbaren Dateien werden im Verzeichnis $GOBO/bin installiert. Wir müssen überprüfen, ob ein C-Compiler verfügbar ist, und verwenden Clang, das normalerweise auf OpenBSD vorinstalliert ist.
Gehen wir zum Verzeichnis '/home/<user>/gobo-master/bin' und führe den Befehl aus:
sh install.sh -v clangAlles kompiliert und installiert sich normal und ohne Fehler.
Um die Installation zu testen, führen wir im Verzeichnis /home/<user>/<path-to>/gobo-master den Befehl aus
geant test_geAm Ende dieser Installationstestsuite sollten Sie nur Warnungen und möglicherweise leere Fehlermeldungen sehen.
Erstes Programm
Beispiel
Versuchen wir trotzdem ein einfaches Beispiel. Dazu erstellen wir die folgenden Dateien im selben Verzeichnis:
hello.e
class HELLO
create
make
feature
i: INTEGER
make
do
print ("Hello, World%N")
from
i := 0
until
i >= 10
loop
print (i)
i := i + 1
end
print ("%N")
end
endhello.ecf
<?xml version="1.0" encoding="ISO-8859-1"?>
<system
xmlns="http://www.eiffel.com/developers/xml/configuration-1-22-0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-22-0 http://www.eiffel.com/developers/xml/configuration-1-22-0.xsd"
name="hello"
uuid="8C35A383-9927-4EF8-8784-D6F287B296E7"
>
<target name="hello">
<root class="HELLO" feature="make"/>
<file_rule>
<exclude>.git</exclude>
</file_rule>
<option warning="true">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option>
<!-- Assumes you set the GOBO environment variable to the path to your gobo repo folder, as per gobo's install instructions. -->
<library name="free_elks" location="${GOBO}/library/free_elks/library_ge.ecf" readonly="true"/>
<cluster name="root_cluster" location="./" recursive="false">
<file_rule>
<exclude>.git</exclude>
</file_rule>
</cluster>
</target>
</system>Dann kompilieren wir das Programm, indem wir den Befehl ausführen:
gec hello.ecfDegree 6: 0/0/0 0:0:0.058 Degree 5: 0/0/0 0:0:0.522 Degree 4: 0/0/0 0:0:0.182 Degree 3: 0/0/0 0:0:0.244 Degree -2: 0/0/0 0:0:0.221 Degree -3: 0/0/0 0:0:0.210 hello1.c(hello1.o:(eif_file_creatable)): warning: strcpy() is almost always misused, please use strlcpy() hello1.c(hello1.o:(eif_file_owner)): warning: sprintf() is often misused, please use snprintf() Degree -4: 0/0/0 0:0:7.088 Total Time: 0/0/0 0:0:8.704
Abgesehen von ein paar Warnhinweisen funktioniert es.
Zur Laufzeit wird angezeigt:
Hello, World
0123456789