Go als Compiler-Sprache für die CFW?

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Go als Compiler-Sprache für die CFW?

Beitrag von richard.kunze » 30 Okt 2017, 18:58

Hallo zusammen,

auch wenn man mit Brickly und Python mit der CFW schon ziemlich weit kommt, fehlt da eigentlich immer noch eine Sprache, mit der man "echte" Binaries produzieren kann. Traditionell nimmt man für sowas dann gerne C, aber das halt ich für die CFW aus verschiedenen Gründen für nicht so optimal:
  • Ein C-Compiler ist ziemlich "schwergewichtig", d.h. ein C-Compiler auf dem TXT wäre für Sachen jenseits von "Hello World" vermutlich deutlich zu langsam. Und eine Cross-Compile-Umgebung für C passt nicht gut zur Design-Philosophie der CFW ("Du brauchst zum Programmieren nur einen TXT, die CFW und irgendwas auf dem ein Browser läuft")
  • C ist eine Sprache, mit der man sich vor allem sehr leicht und sehr effektiv selbst in den Fuß schießen kann (siehe auch die täglichen Nachrichten zu Sicherheitslücken von in C geschriebenen Programmen). Das muss man nicht unbedingt auch noch in die nächste Generation von Software-Entwicklern propagieren ;)
Eine mögliche Alternative zu C wäre Go (https://golang.org/). Die Vorteile aus meiner Sicht sind:
  • Go ist eine moderne Sprache, deren Entwickler aus den Fehlern der letzten paar Jahrzehnte gelernt haben
  • Go ist gut dokumentiert
  • Es gibt für Go schon eine Menge fertige Pakete für alles mögliche
  • Der Go-Compiler ist sehr schnell. Schnell genug, dass er wohl ziemlich problemlos auch auf dem TXT laufen kann
  • Man kann in Go auch Erweiterungen für Python schreiben, d.h. Go passt ziemlich reibungslos in unser bestehendes "Programmiersprachen-Portfolio" aus Brickly und Python.
Was haltet Ihr davon? Kompletter Blödsinn, oder wäre Go eine sinnvolle Ergänzung für die CFW? Oder habt Ihr einen Vorschlag für eine andere, besser geeignete "Experten-Sprache"?

heikoh
Beiträge: 37
Registriert: 23 Dez 2012, 11:29
Wohnort: Heidenheim

Re: Go als Compiler-Sprache für die CFW?

Beitrag von heikoh » 03 Nov 2017, 12:27

Hallo,

ich fände Go die richtige Wahl. Hat für mich einiger Vorteile gegenüber C, insbesondere auch bei der Struktur und Speicherverwaltung. Auf der aktuellen "most hated languages" (siehe aktuell auf heise.de) schneidet sie ebenfalls gut ab :)

Viele Grüße
Heiko

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Go als Compiler-Sprache für die CFW?

Beitrag von PHabermehl » 03 Nov 2017, 13:50

Hallo Richard,
kann man Go dann über ein Webinterface programmieren, d.h., läuft eine IDE auf dem TXT?

Ich habe bislang keine Erfahrung mit Go. Eine kurze Webrecherche läßt die Sprache aber durchaus brauchbar erscheinen. Vom Gefühl her hätte ich auch erstmal "C" geschrien, aber warum nicht nach Alternativen schauen.
Deine Argumente contra C sind jedenfalls nicht zu leugnen.

Meine subjektiv kritische Grundhaltung gegenüber allen Google-Produkten läßt in mir die Frage aufkommen, ob uns aus dem Ursprung und der Nähe von Go zu Google irgendwelche Nachteile erwachsen können?

Gruß
Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Go als Compiler-Sprache für die CFW?

Beitrag von richard.kunze » 03 Nov 2017, 14:11

PHabermehl hat geschrieben: kann man Go dann über ein Webinterface programmieren, d.h., läuft eine IDE auf dem TXT?
Genau das ist der Plan. Für sowas gibts sogar schon ziemlich viel fertig (z.B. https://ace.c9.io/ als Editor-Komponente), d.h das Ganze ist mit halbwegs vertretbarem Aufwand zu schaffen.
PHabermehl hat geschrieben: Ich habe bislang keine Erfahrung mit Go. Eine kurze Webrecherche läßt die Sprache aber durchaus brauchbar erscheinen.
"Brauchbar" triffts eigentlich ganz gut. Go ist jetzt auch keine Sprache, die mich vom Hocker reißt, aber ist einfach zu lernen, hat ein solides Konzept, kann genug für unsere Zwecke (aber z.B. ein Betriebssystem würde ich nicht in Go schreiben wollen) und hat genug Unterstützung um nicht sofort wieder in der Versenkung zu verschwinden.

Aber der für mich ausschlaggebende Punkt ist tatsächlich, dass ein explizites Designziel von Go ein schneller Compiler ist - und damit eben auch die Möglichkeit, den Compiler auf einem langsamen System wie dem TXT betreiben zu können ohne jedesmal stundenlang warten zu müssen bis der Compilerlauf endlich durch ist.
PHabermehl hat geschrieben: Meine subjektiv kritische Grundhaltung gegenüber allen Google-Produkten läßt in mir die Frage aufkommen, ob uns aus dem Ursprung und der Nähe von Go zu Google irgendwelche Nachteile erwachsen können?
Glaub ich eigentlich nicht. Die Lizenz für Go ist die BSD-Lizenz, d.h. im wesentlichen "Mach damit was Du willst, aber sag wer es entwickelt hat, und wirb nicht mit dem Namen Google ohne dass wir es Dir extra erlauben".

Im schlimmsten Fall kann Google das Projekt fallen lassen und es findest sich niemand sonst der es weiterentwickelt - dann müssten wir uns auf die Suche nach einer passenden neuen Sprache machen, und bis wir die gefunden haben Go halt auf der letzten verfügbaren Version mit ausliefern.

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Go als Compiler-Sprache für die CFW?

Beitrag von PHabermehl » 03 Nov 2017, 15:20

Immerhin scheint mir Go ja recht nahe an C zu sein, was die Erlernbarkeit erleichtert. Mir wäre halt ein Standard lieber (wer hat da Basic gerufen :mrgreen: ), damit man sich nicht noch 'ne neue Syntax merken muss.
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Go als Compiler-Sprache für die CFW?

Beitrag von richard.kunze » 03 Nov 2017, 15:47

PHabermehl hat geschrieben:Immerhin scheint mir Go ja recht nahe an C zu sein, was die Erlernbarkeit erleichtert.
Naja. Ist halt eine Sprache, die {} als Blockbegrenzer benutzt (und wenns danach geht, ist auch Perl "nahe an C"). Sonst hat Go eigentlich recht wenig mit C zu tun.
PHabermehl hat geschrieben:Mir wäre halt ein Standard lieber (wer hat da Basic gerufen :mrgreen: )
Was, reicht Dir Unicode als Standard nicht? 8-)
Und welches Basic darfs denn sein? VBA ist heute im Angebot, aber wir haben auch noch einen Rest GW-Basic da...
PHabermehl hat geschrieben:damit man sich nicht noch 'ne neue Syntax merken muss.
Die wichtigen Dinge, die man sich merken muss, sind eher die Konzepte die hinter der Sprache stecken und die Ausdrucksmöglichkeiten die Sprache bietet (also z.B. ob Funktionen als Sprachobjekt behandelt werden können oder nicht, wie das Typsystem der Sprache aussieht usw.). Und ein grober Überblick über die verfügbaren Bibliotheken (Details kann man nachschlagen, aber grob wissen wo man nachschlägt sollte man schon). Syntax ist unwichtig, da kann sich die IDE drum kümmern...

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Go als Compiler-Sprache für die CFW?

Beitrag von richard.kunze » 01 Dez 2017, 22:47

Hallo zusammen,

ich habe mal ein wenig mit Go auf dem TXT herumgespielt. Prinzipiell funktioniert das ganz gut, der Compiler ist auf dem TXT zwar nicht berauschend schnell, aber noch erträglich. Aber:
  • Allein das Basissystem (Compiler, Tools und Quellcode der Standardbibliothek) kommt auf gut 60MB, die compilierte Standardbibliothek bringt nochmal ca. 100 MB dazu
  • Um mit den Go-Tools (insbesondere "go get") arbeiten zu können, braucht man zusätzlich noch git
  • Und um alle Features (insbesondere die Integration mit C und damit auch Python) nutzen zu können muss auch noch ein C-Compiler installiert sein
Das ist denke ich etwas zuviel "Gewicht" für die CFW (zumindest in der Form wie sie heute existiert). Ich habe zwar schon ein paar Ideen, wie man das (und eventuell andere Sprachen) trotzdem vernünftig hinbekommt, aber das ist auf jeden Fall ein Thema für später (nach CFW 1.0).

PS: Das bezieht sich alles jetzt nur auf Go direkt auf dem TXT. Mit Go auf dem PC Sachen für den TXT zu entwickeln ist absolut simpel, weil Go erstens einen passenden Crosscompiler gleich eingebaut hat und zweitens per Default statisch gelinkte Binaries erzeugt. Im Wesentlichen muss man nur die Environment-Variable GOARCH=arm und GOOS=linux setzen und kann dann die ganz normalen Go-Tools ("go get", "go build" etc.) verwenden. Das fertige Binary dann auf den TXT kopieren, läuft. :D
Zuletzt geändert von richard.kunze am 02 Dez 2017, 00:53, insgesamt 3-mal geändert.

Benutzeravatar
PHabermehl
Beiträge: 2429
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: Go als Compiler-Sprache für die CFW?

Beitrag von PHabermehl » 02 Dez 2017, 00:06

Uff... Das ist zwar jetzt keine besonders erfreuliche Erkenntnis, aber es ist eine...

Gruß
Peter
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Antworten