Seite 1 von 1

Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 08:48
von grubenfox
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?

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 08:52
von grubenfox
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
:)

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 09:30
von __blackjack__
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.

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 09:53
von grubenfox
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:

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 10:16
von __blackjack__
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.

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 10:54
von __deets__
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.

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 11:44
von __blackjack__
@__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.

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 13:03
von __deets__
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.

Re: Erg (und oder ist Python)?

Verfasst: Donnerstag 18. April 2024, 20:34
von narpfel
@__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.

Re: Erg (und oder ist Python)?

Verfasst: Samstag 20. April 2024, 11:57
von __blackjack__
@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.

Re: Erg (und oder ist Python)?

Verfasst: Samstag 20. April 2024, 15:33
von grubenfox
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