Erg (und oder ist Python)?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
Benutzeravatar
grubenfox
User
Beiträge: 540
Registriert: Freitag 2. Dezember 2022, 15:49

Wenn hier "Python mit anderen Sprachen verwenden" das Thema ist, dann bin ich hier vielleicht richtig: was ist mit Erg?

Bin ich kürzlich drüber gestolpert und offenbar ist das eine Sprache bei der hinten *.pyc raus kommt... also Python-Bytecode.

Sollte ich mir Erg antun? Hat sich schon wer mit dem Teil beschäftigt und kann berichten?
Benutzeravatar
grubenfox
User
Beiträge: 540
Registriert: Freitag 2. Dezember 2022, 15:49

als Suchbegriff hier in der Forums-Suche ist 'erg' jedenfalls etwas unpraktisch. Im Zweifel findet die Suche hier was in der Form

Code: Alles auswählen

erg = alpha * beta
:)
Benutzeravatar
__blackjack__
User
Beiträge: 13565
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich würde sagen Erg ist in diesem Unterforum richtig.

Zur Sprache kann ich nichts sagen, ich kenne die erst seit eben. Mal schauen wann ich dazu komme mir das mal anzuschauen. Rust wird gerade aktualisiert auf dem Rechner hier.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
grubenfox
User
Beiträge: 540
Registriert: Freitag 2. Dezember 2022, 15:49

Aha, der übliche Verdächtige, der immer mit Codebeispielen in den unmöglichsten (alten) Sprachen rumkommt, hat sich als erstes gemeldet... :D so ungefähr hatte ich das erwartet. :)
also schauen wir mal wann du dazu kommt dir Erg anzuschauen und/oder ob sich noch irgendwer meldet der in der Hinsicht schneller war. :wink:
Benutzeravatar
__blackjack__
User
Beiträge: 13565
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Der erste Versuch das zu kompilieren schlug fehl:

Code: Alles auswählen

error[E0277]: `&Arc<[&str]>` is not an iterator
   --> /home/bj/.cargo/registry/src/index.crates.io-6f17d22bba15001f/erg-0.6.33/src/dummy.rs:451:19
    |
451 |             .args(&cfg.runtime_args)
    |              ---- ^^^^^^^^^^^^^^^^^ `&Arc<[&str]>` is not an iterator
    |              |
    |              required by a bound introduced by this call
    |
    = help: the trait `Iterator` is not implemented for `&Arc<[&str]>`, which is required by `&Arc<[&str]>: IntoIterator`
    = note: required for `&Arc<[&str]>` to implement `IntoIterator`
note: required by a bound in `Command::args`
   --> /rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/std/src/process.rs:736:5
help: consider dereferencing here
    |
451 |             .args(&*cfg.runtime_args)
    |                    +
Da scheint sich in Rust was geändert zu haben. Allerdings wurde genau diese Zeile im Github-Repository vor 3 Wochen geändert. Kann also sein, dass *das* mit dem neuesten Rust kompiliert. Nun bin ich am überlegen ob ich herausfinde welche ältere Rust-Version ich installieren muss damit ``cargo install erg`` funktioniert, oder ob ich mal die aktuellen Erg-Quelltexte versuche, oder ob mir das zu unwichtig ist um da weiter Zeit aufzuwenden. 🤔

Python ist stark typisiert, es ist nicht statisch typisiert. TypeScript verhält sich zu JavaScript doch eher wie Python mit Typannotationen (+ MyPy & Co) zu Python ohne Typannotationen. JavaScript-Quelltext ist gültiges TypeScript. Erg ist eine andere Sprache mit anderer Syntax.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es gab mal shedskin, scheint sogar noch halbwegs aktiv. Was das kann, oder nicht, weiss ich aber nicht. Wenn ich Python schnell will (durch Typannotationen), dann schreibe ich Rust.
Benutzeravatar
__blackjack__
User
Beiträge: 13565
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@__deets__: Wieso schnell? Erg compiliert zu Python-Bytecode und der wird dann von Python ausgeführt. Da wird nix schneller. Es ist halt kein Python sondern eine eigene Sprache die von Python abweicht.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das war sehr gurkig formuliert. Ich haette sagen sollen, wenn ich mir ein Typkorsett anlege (wie mit Typescript oder eben Python Annotationen), und das entsprechend viel Aufwand erzeugt, dann kann ich's auch gleich richtig machen, und mit Rust (oder Haskell oder was nicht) auch performanten Code bekommen.
narpfel
User
Beiträge: 658
Registriert: Freitag 20. Oktober 2017, 16:10

@__blackjack__: Dass es nicht kompiliert, ist mit großer Wahrscheinlichkeit keine Änderung in Rust selbst, weil das den Stabilitätsgarantien der Sprache widerspricht und vom Rust-Projekt durch einen Crater-Run (da werden einmal alle öffentlich verfügbaren Crates automatisiert kompiliert, um Regressionen zu finden) gefunden worden wäre.

So wie ich das sehe, hast du zwei miteinander inkompatible Versionen von verschiedenen `erg`-Crates erwischt, z. B. erg-common 0.6.34 und erg 0.6.33. Wenn man sich die Suchtreffer auf crates.io anguckt, scheint da erg 0.6.34 zu fehlen, während alle anderen Crates bei 0.6.34 sind. Hilfe sollte ein `--locked` beim `cargo install` sein, dadurch werden beim Kompilieren die exakten Versionen aller Abhängigkeiten benutzt, die in der zu kompilierenden Crate angegeben sind, und nicht die neuesten Semver-kompatiblen Versionen. Edit: Oder aus dem Git-Repo kompilieren und nicht `cargo install` benutzen.

Im Endeffekt ist das ein Bug in erg, weil 0.6.34 nicht kompatibel zu 0.6.33 ist, obwohl die Versionsnummer das suggeriert. Hätte man als 0.7.0 veröffentlichen müssen.
Benutzeravatar
__blackjack__
User
Beiträge: 13565
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@narpfel: Die Versionsnummern der Crates sind mir nicht aufgefallen. Meine Erfahrung mit Rust ist halt das ich alle paar Jahre mal damit spiele und jedes mal irgendwas was beim letzten mal lief, mit der dann aktuellen Rust-Version nicht mehr kompiliert. Darum hatte ich das auch hier als wahrscheinlichste Ursache angesehen.

Zu Erg: Schlecht dokumentiert, weil da ständig irgendwas nicht funktioniert was da als Beispiele steht, und weil die Doku unvollständig ist, und weil häufig auf andere Sprachen verwiesen wird, wo eine Idee übernommen wurde. Man müsste also Haskell, OCaml und Rust können, oder dann dort nachlesen wie etwas (vielleicht) in Erg funktioniert.

Nachdem ich so ein paar Grundlegende Dinge nicht hinbekommen habe die im Erg-Book stehen und da Beispiele teilweise offensichtlich falsch sind, mag ich die Sprache nicht wirklich.

Und eine leicht navigierbare API-Doku fehlt. Man muss ja im Grunde den Quelltext von der Standardbibliothek komplett lesen und im Kopf haben um zu wissen was man mit einem Wert von einem bestimmten Typ machen kann, weil das ja alles sonstwo verteilt definiert werden kann.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
grubenfox
User
Beiträge: 540
Registriert: Freitag 2. Dezember 2022, 15:49

Aha, schon mal danke für die Info...
Offenbar noch keine neue Sau die man durchs Dorf treiben kann... bleiben wir lieber erstmal bei den bewährten Dingen die wir schon so haben
Antworten