:DE: Ist Haskell und die Cardano Philosophie ein Hindernis für die Akzeptanz von Cardano?

Hallo,

ich mache mir etwas Sorgen dass die primäre Programmiersprache Haskell ein ernsthaftes Problem darstellen könnte bei der Akzeptanz durch Entwickler.

Ich selbst habe bisher in Programmiersprachen wie C#, Python, C++, Solidity, JavaScript, Java, PHP und Rust programmiert und ich muss sagen, da Haskell als funktionale Sprache und keine C artige Sprache so anders ist, fällt mir das erlernen von Haskell schwer. Man kann praktisch auf keine Vorerfahrung mit den anderen Programmiersprachen zurückgreifen und muss vieles neu lernen. Und das erzeugt eine große Hemmung. Und bei vielen eine konsequente Ablehnung.

Und das ist leider nicht nur mein Eindruck. Man hört von Programmierern ständig eine Ablehnung gegen als akademisch empfundene funktionale Sprachen wie Haskell. Ich glaube auch daran das Haskell sicherlich eine gute Sprache ist, die solidere und sicherere Programme erzeugt als viele andere Sprachen. Damit passt es zu der Philosophie von Cardano. Das Problem ist, die Geschichte der Programmiersprachen hat einige Beispiele, wie sich solide und sicherere Programmiersprachen nicht durchgesetzt haben gegenüber qualitativ schwächere Programmiersprachen wie C. Haskell gibt es seit 1990 und in der Wirtschaft wird es nur in wenigen Nischen genutzt.

Ein anderes Beispiel ist die Programmiersprache Ada. Es ist 1980 erschienen und wird von manchen gerne mit Rust vergleichen weil es sehr stark auf stabilen und sicheren Code ausgelegt ist. Deswegen wird es bis heute häufig im militärischen Bereich genutzt. Obwohl die Wirtschaft mit seinen massenhaften C/C++ Programmen Jahrzehnte mit schweren Fehlern und Sicherheitslücken kämpfte, kam niemand auf die Idee Ada einzusetzen.

Die Geschichte zeigt dass die prinzipiell besseren Programmiersprachen sich nicht durchgesetzt haben. Sprachen wie C und C++ waren am Anfang einfacher zu erlernen. Als die Komplexität von Anwendungen wuchs und C++ Anwendungen immer schwieriger zu handhaben wurden, war bereits eine kritische Schwelle überschritten. C++ war so stark in der Wirtschaft verbreitet dass es für die meisten Unternehmen und Entwickler kein zurück mehr gab. Man machte mit C++ weiter. Und heute ist C++ stark verbreitet obwohl es nicht unbedingt als einfach zu erlernende Programmiersprache gilt. Aber Leute die sich sowieso schon an C artige Programmiersprachen gewöhnt haben, fällt es wohl leichter C++ zu lernen statt Haskell oder Ada.

Generell fürchte ich dass Cardano als die bessere und sicherere Blockchain das selbe Schicksaal wie Haskell und Ada erleiden könnte. Ethereum kommt mit einfacheren Konzepten und einfacheren Programmiersprachen. Und obwohl immer wieder Millionen geklaut werden oder durch Fehler verloren gehen machen alle mit Ethereum weiter und lassen sich davon nicht abschrecken.
Es erinnert an den Erfolg von C und C++. Obwohl diese Sprachen so viele Schwächen haben und die Compiler teilweise nicht eindeutig definiertes Verhalten zeigen, haben sich diese Sprachen durchgesetzt.
Aktuell entwickelt sich Rust gut. Mit Rust kann man auch sehr sichere und stabile Programme entwickeln. Dafür ist die Lernkurve recht hoch. Aktuell läuft es gut. Aber falls es Rust nicht gelingt C++ langfristig abzulösen, wäre es nur ein weiteres Beispiel dafür, wie sich eine bessere Sprache nicht durchsetzt, weil der Vorteil der Verbreitung von C++ und anderen etablierten Sprachen einfach zu dominant ist.

Man kann das Prinzip auch auf die biologische Evolution übertragen. Nehmen wir zwei Arten von Lebewesen. Lebewesen A ist langsamer und plant sein Vorgehen immer sehr genau und ist intelligenter und sorgfältiger in allem was es tut.
Lebewesen B überlegt nicht so lange und handelt schneller, auch mit unausgereiften Ideen.
Was glaubt ihr welches Lebewesen langfristig die höhere Überlebenschancen hat und sich erfolgreicher vermehren kann? Es ist B.
Die Evolution macht immer Kompromisse. Das menschliche Gehirn könnte noch größer und leistungsfähiger sein. Dann würde das Gehirn aber viel mehr Energie verbrauchen und wer nicht schnell handeln kann, weil er lange überlegt, wird eher aufgefressen.

Für den Erfolg einer Sache ist es also sehr entscheidend dass man schneller agiert als andere. Dieser Vorteil kann so stark sein, dass selbst bessere Konzepte später sich nicht durchsetzen können, sobald die ersten sich ausreichend stark etabliert haben.

Ich kann nicht sagen ob für Cardano der Zug bereits abgefahren ist. Ich glaube und hoffe dass es nicht so ist. Aber ich sehe definitiv die Gefahr dass es passieren kann.
Jetzt wo es endlich Smart Contract für Cardano gibt, finde ich ist der Anreiz für Ethereum Entwickler eher gering sich in Cardano einzuarbeiten, weil im Cardano Ökosystem einfach fast nichts los ist. Was natürlich kein Wunder ist weil man eben so spät dran ist. Was nützen einem geringere Transaktionskosten und eine bessere Blockchain wenn meine potenziellen Kunden im Ethereum Ökosystem unterwegs sind.

Auch sind inzwischen Plattformen wie Opensea extrem wichtig geworden. NFTs die dort nicht gelistet werden, haben ein großen Nachteil. Wenn solche Plattformen Cardano nicht integrieren wird es noch viel schwieriger an den bestehenden Markt anzuknüpfen.

Das konkrete Problem mit der Akzeptanz von Haskell könnte man damit lösen dass man zeitnah Unterstützung für Solidity bietet, wie es eigentlich schon mal angekündigt wurde. Ich weiß nicht wie da der Stand der Dinge ist. Auch eine Unterstützung von Rust wäre interessant.

Hallo, CardanoX.

dies ist ein spannendes Thema welches du hier aufmachst, und ich gehe davon aus, dass du dich hier auf die Smart Contract Sprache Plutus beziehst, die tatsächlich sehr Haskell-lastig ist. (um nur mit der Blockchain zu inteagieren benötigst du kein Haskell wissen)

Ja, Haskell ist in der Tat nicht die Programmiersprache die Einsteiger lernen, oft schätzt man formale Sprachen erst nachdem man bereits erfahrener in anderen Sprachen ist und mal über den Tellerrand blicken möchte.

Persönlich sehe ich genau den Vorteil hier, denn auch das “Smart Contract” sind eher nicht etwas mit denen man sich als Einsteiger beschäftigen sollte. Auch in Plutus kann man einen Haufen Fehler machen und Fehler in Smart Contracts bedeutet am Ende, dass jemand Geld verliert. Du willst also lieber Produkte von Leuten, die schon sehr lange im Thema sind, verwenden.

Der Anreiz gerade jetzt auf Cardano zu bauen sehe ich als sehr hoch, selbst wenn man sich in neue Sprachen einlesen muss. Die Entwickler die fertige Produkte auf den Markt bringen, wissen dass die Cardano Community groß ist und quasi darauf warten (um genau zu sein, schon lange) neue Produkte verwenden zu können.

Zunächst mal finde ich die Definition von formalen Sprachen hier etwas merkwürdig. Sind vielleicht funktionale Programmiersprachen gemeint? Da hat der CardanoX aber auch einige Beispiele gelistet, die funktionalen Programmiersprachen entsprechen. Trotzdem bleibt da Haskell ein Buch mit sieben Siegeln.

Ganz ehrlich. Security by Obfuscation hat noch nie funktioniert. Einen Priester, der die Inhalte aus einer lateinischen Bibel vor Menschen ohne “Lese- und Rechtschreibfähigkeiten” vorliest, haben wir auch überwunden. Hier geht es um Zugänglichkeit und Cardano wird nicht besser, wenn es etwas ist, womit sich “eher nicht” Einsteiger beschäftigen. Wenn man Kenntnisse in den o.g. Programmiersprachen hat, ist man wohl eher kein Einsteiger. Ich finde diese Argumentation Unsinn.

Für mich persönlich: Ich würde für Cardano nicht in Haskell entwickeln. Ich werde auch andere Software nicht in Haskell entwickeln. Die Plus-Argumente für Haskell erreiche ich ebenfalls mit C++20 oder Rust, wenn ich mich damit beschäftige.

Hallo zusammen

Der grosse Vorteil von Haskell in liegt darin, dass das Programm deterministisch ist.
Das bedeutet, dass zu jedem Zeitpunkt gewährleistet wird, dass alle Transaktionen und Skripts in der gleichen Reihenfolge abgearbeitet werden. Es kann kein Zustand entstehen, wo durch eine Race-Condition oder eine Bufferoverflow, falsche Ergenisse entstehen.
Dadurch ergibt sich ein weiterer Vorteil, dass die Transactionskosten berechnet werden können. Dies ist z.B. bei Etherum nicht möglich.

Ich glaube es hat devinitv einen Einfluss auf die Geschwindigkeit, wie schnell sich Cardano verbreiten kann. Aber die Philosophie von Cardano liegt nicht darin möglichst schnell erfolgreich zu sein, sonder langfristing erfolgreich zu sein.
Wird sich Cardano durchsetzen, werden sich auch mehr Software Entwickler auf Haskell und Plutus spezialisieren.

Du kannst selbstverständlich auch mit anderen Programmiersprachen/Ökosystemen Software so bauen, dass Race-Conditions, Buffer-Overflows und sonstige Bugs vermieden werden. Deterministisch sind sie alle. Und berechenbare Transaktionskosten hängen überhaupt nicht von der verwendeten Programmiersprachen, sondern nur vom Entwurf Deines Kryptowährungs-Protokolls ab.

Es könnte sogar jemand die Protokolle von Cardano in einer anderen Programmiersprache nachimplementieren. Eigentlich hoffe ich sogar, dass das irgendwann mal jemand macht. Der Code von IOG sieht jedes Mal, wenn ich da rein gucke, gar nicht soo gut aus.

Für mich ist Haskell der (!) Grund mich mit Cardano/Plutus näher zu beschäftigen (Plutus-Pioneer). Imperative Programmiersprachen sind meiner Ansicht nach “viel zu nah am Blech”. Was ich an Haskell schätze, ist das ausdrucksstarke Typ-System, der exponierte Umgang mit Seiteneffekten, die Wiederverwendbarkeit (composability) und die Kompaktheit des Codes.

1 Like