Investor pro C++ IDE

Ink

  • *****
  • 502
    • Zobrazit profil
    • E-mail
Re:Investor pro C++ IDE
« Odpověď #120 kdy: 13. 09. 2021, 15:33:11 »
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.

To je zajímavý pohled. Mně přijde jako super nápad pro "skriptování" aplikace použít WebAssembly (asi via Wasmer). Do něj se dá zkompilovat lecjaký jazyk a bude jich určitě přibývat.


BoneFlute

  • *****
  • 1 841
    • Zobrazit profil
Re:Investor pro C++ IDE
« Odpověď #121 kdy: 13. 09. 2021, 16:01:22 »
Já ho třeba používám protože implementace Amulet (https://amulet.works/) je podobná Haskellu, umí nějaké ty zajímavé featury a kompiluje mi to do Lui. Žádná další zvláštní motivace v tom není.
Kompilace do Luy? Proč? Zrovna Lua mi pro tenhle účel přijde extrémně nevhodná. A s dokumentací na stránkách toho jazyka je to takové nijaké.
Asi nerozumím tvému příspěvku. Extrémně nevhodná na co?
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.
Obávám se, že je to přesně naopak.

V runtime žádné typy nepotřebuju, snad tam ani žádné nejsou (dobře, to není tak docela pravda, ale to je fuk). Mocný typový systém potřebuju jen na začátku, při překladu. Pak už jej prakticky nevyužiju - maximálně se mi tam hodí typy jako tagy při nějakém switchi, což je přesně to co ten Amulet dělá. V runtime se mi naopak hodí to, že tam není žádné zbytečné smetí a může optimalizovat po svém (LuaJIT etc, i když to jsem ještě nezkoušel).


Ale to není úplně Ocaml, ne?
Ne? Já bych řekl že jo. Ale i kdybych se mýlil, tak co?  :)

Kdyby ses mýlil, tak bys nedával přímou odpověď na otázku, kterou jsem položil. Pokud si vzpomínám, tak Ocaml má poměrně mnoho jazykových vlastností (OOP, moduly a functory...), které "A simple, functional programming language in the ML tradition" (Amulet) mít všechny nebude. Tudíž beru, že používáš "nějaký jazyk z rodiny ML", akorát to holt asi není to samé co Ocaml.
Ok, přesvědčili jste mě, není to OCaml. Ale opravdu je mi to jedno. Já vlastně původně jen nechtěl vytahovat, že používám zrovna takovou obskurní věc, a tak jsem to zařadil do nejbližší kategorie která mě napadla. Netrefil jsem se. Přiznávám vinu v plném rozsahu.

Idris

  • *****
  • 1 904
    • Zobrazit profil
    • E-mail
Re:Investor pro C++ IDE
« Odpověď #122 kdy: 13. 09. 2021, 17:29:07 »
V runtime žádné typy nepotřebuju
Někdy se hodí vědět o typových parametrech. Viz třeba Java vs. Go, Java je všechny zahodí.

Re:Investor pro C++ IDE
« Odpověď #123 kdy: 13. 09. 2021, 19:41:45 »
Jo WASM je super, do něj se dá zkompilovat třeba to C++, takže jeho životnost bude zase o něco delší :)

Ink

  • *****
  • 502
    • Zobrazit profil
    • E-mail
Re:Investor pro C++ IDE
« Odpověď #124 kdy: 13. 09. 2021, 20:21:37 »
Jo WASM je super, do něj se dá zkompilovat třeba to C++, takže jeho životnost bude zase o něco delší :)

Tak to každopádně. Mohl bys to přidat do toho IDE.


Re:Investor pro C++ IDE
« Odpověď #125 kdy: 13. 09. 2021, 21:16:35 »
Já ho třeba používám protože implementace Amulet (https://amulet.works/) je podobná Haskellu, umí nějaké ty zajímavé featury a kompiluje mi to do Lui. Žádná další zvláštní motivace v tom není.
Kompilace do Luy? Proč? Zrovna Lua mi pro tenhle účel přijde extrémně nevhodná. A s dokumentací na stránkách toho jazyka je to takové nijaké.
Asi nerozumím tvému příspěvku. Extrémně nevhodná na co?
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.
Obávám se, že je to přesně naopak.

V runtime žádné typy nepotřebuju, snad tam ani žádné nejsou (dobře, to není tak docela pravda, ale to je fuk). Mocný typový systém potřebuju jen na začátku, při překladu. Pak už jej prakticky nevyužiju - maximálně se mi tam hodí typy jako tagy při nějakém switchi, což je přesně to co ten Amulet dělá. V runtime se mi naopak hodí to, že tam není žádné zbytečné smetí a může optimalizovat po svém (LuaJIT etc, i když to jsem ještě nezkoušel).
Asi jsem se vyjádřil špatně, protože jste mě pochopil úplně opačně, než jsem to myslel.

U staticky typovaného jazyka můžete typy zahodit, jen nechat data v paměti a přistupuje k nim kód vygenerovaný na základě typů. A to přesně v dynamicky typované lue moc nejde. Tam musíte jednu každou položku separátně alokovat jako boxovanou dvojici typ + hodnota a celé to nasypat do hierarchie hashmap. Takže v runtime máte hromady zbytečných typových informací.

Re:Investor pro C++ IDE
« Odpověď #126 kdy: 13. 09. 2021, 21:21:47 »
Já ho třeba používám protože implementace Amulet (https://amulet.works/) je podobná Haskellu, umí nějaké ty zajímavé featury a kompiluje mi to do Lui. Žádná další zvláštní motivace v tom není.
Kompilace do Luy? Proč? Zrovna Lua mi pro tenhle účel přijde extrémně nevhodná. A s dokumentací na stránkách toho jazyka je to takové nijaké.
Asi nerozumím tvému příspěvku. Extrémně nevhodná na co?
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.

To dela i typescript. Take mi transpilace ze statickeho do dynamickeho jazyka prijde hloupa.

Re:Investor pro C++ IDE
« Odpověď #127 kdy: 13. 09. 2021, 22:07:13 »
To dela i typescript. Take mi transpilace ze statickeho do dynamickeho jazyka prijde hloupa.
Tak typescript a spol jsou trošku jiný případ. U webu je na výběr jen javascript nebo webassembly + záložní javascript. Jestli je něco hloupé má cenu řešit jen pokud existuje alternativa.

BoneFlute

  • *****
  • 1 841
    • Zobrazit profil
Re:Investor pro C++ IDE
« Odpověď #128 kdy: 13. 09. 2021, 22:14:56 »
Já ho třeba používám protože implementace Amulet (https://amulet.works/) je podobná Haskellu, umí nějaké ty zajímavé featury a kompiluje mi to do Lui. Žádná další zvláštní motivace v tom není.
Kompilace do Luy? Proč? Zrovna Lua mi pro tenhle účel přijde extrémně nevhodná. A s dokumentací na stránkách toho jazyka je to takové nijaké.
Asi nerozumím tvému příspěvku. Extrémně nevhodná na co?
Jako cílový jazyk kompilace. Síla Luy je IMO v tom, že je to jednoduchoučký jazyk s malinkým runtimem který se dá jednoduše embednout kamkoliv. Přijde mi trochu zvláštní mít mocný typový systém a v runtime všechny tyhle informace zahodit a všechno to nasypat do jedné univerzální hashmapy. To už by mi přišlo rozumnější, aby si Amulet zrovna interpretoval svůj AST než tohle.
Tohle kombinuje nevýhody z obou světů. Pro kompilaci potřebuje mocnou parní mlátičku a v runtime platí za nevyužitou flexibility Luy.
Obávám se, že je to přesně naopak.

V runtime žádné typy nepotřebuju, snad tam ani žádné nejsou (dobře, to není tak docela pravda, ale to je fuk). Mocný typový systém potřebuju jen na začátku, při překladu. Pak už jej prakticky nevyužiju - maximálně se mi tam hodí typy jako tagy při nějakém switchi, což je přesně to co ten Amulet dělá. V runtime se mi naopak hodí to, že tam není žádné zbytečné smetí a může optimalizovat po svém (LuaJIT etc, i když to jsem ještě nezkoušel).
Asi jsem se vyjádřil špatně, protože jste mě pochopil úplně opačně, než jsem to myslel.

U staticky typovaného jazyka můžete typy zahodit, jen nechat data v paměti a přistupuje k nim kód vygenerovaný na základě typů. A to přesně v dynamicky typované lue moc nejde. Tam musíte jednu každou položku separátně alokovat jako boxovanou dvojici typ + hodnota a celé to nasypat do hierarchie hashmap. Takže v runtime máte hromady zbytečných typových informací.
Tak nemusíte. Když nikde v cestě není žádný switch, tak není nutné tam ty typy uchovávat, a taky se tam neuchovávají.

Druhak, já používám Amulet nikoliv proto, že je to tak výborný jazyk, ale proto, že mi to z jazyka se silnými typy kompiluje do Lui. Původně jsem zkoušel TypeScript (do Lui), ale to zlobilo a nedal jsem tomu druhou šanci.

V runtime žádné typy nepotřebuju
Někdy se hodí vědět o typových parametrech. Viz třeba Java vs. Go, Java je všechny zahodí.
Tak určitě. Ale jednak v Javě ta motivace je prej dost jinak, protože VM těm typům nevěří. A druhak ty typy potřebuješ vědět jen někdy a u typovaného jazyka víš kdy.

Re:Investor pro C++ IDE
« Odpověď #129 kdy: 13. 09. 2021, 22:53:24 »
To dela i typescript. Take mi transpilace ze statickeho do dynamickeho jazyka prijde hloupa.
Tak typescript a spol jsou trošku jiný případ. U webu je na výběr jen javascript nebo webassembly + záložní javascript. Jestli je něco hloupé má cenu řešit jen pokud existuje alternativa.

Pokud ty typy maji slouzit jen jako hinty pro linter, stacilo by je psat do komentaru. Transpilacni krok je naprosto zbytecny.

Re:Investor pro C++ IDE
« Odpověď #130 kdy: 13. 09. 2021, 23:33:26 »
Idealni reseni v JS by bylo zavezt nejake zkratky pro Reflect.metadata("design:type" ... dekoratory, kterym by rozumel i typescriptovy linter. Jednalo by se o validni javascript a informace o typech by se zachovaly i v runtime. Byli bychom tam kde Python.

Re:Investor pro C++ IDE
« Odpověď #131 kdy: 13. 09. 2021, 23:36:36 »
V runtime žádné typy nepotřebuju

urcite lze informace o typech vyuzit i v runtime, treba pro ruzne validace vstupnich dat. Priklad z Pythonu https://pydantic-docs.helpmanual.io/ ,

BoneFlute

  • *****
  • 1 841
    • Zobrazit profil
Re:Investor pro C++ IDE
« Odpověď #132 kdy: 13. 09. 2021, 23:53:15 »
V runtime žádné typy nepotřebuju

urcite lze informace o typech vyuzit i v runtime, treba pro ruzne validace vstupnich dat. Priklad z Pythonu https://pydantic-docs.helpmanual.io/ ,

Takhle to u typovaných jazyků nefunguje. Nech to bejt.

Re:Investor pro C++ IDE
« Odpověď #133 kdy: 13. 09. 2021, 23:59:52 »
V runtime žádné typy nepotřebuju

urcite lze informace o typech vyuzit i v runtime, treba pro ruzne validace vstupnich dat. Priklad z Pythonu https://pydantic-docs.helpmanual.io/ ,

Pri interpretri je runtime samotny interpreter nie kod ktory sa interpretuje.

Validovat podla deklarovaneho typu premennej v kode je na facku. Aj v pripade tak typovo silneho a bohateho jazyka ako napr ada. Vstupne hodnoty sa maju validovat podla zadania.

Re:Investor pro C++ IDE
« Odpověď #134 kdy: 14. 09. 2021, 00:10:49 »
Takhle to u typovaných jazyků nefunguje. Nech to bejt.

pokud typove informace zahodite pri kompilaci, nemuze to fungovat. Pokud je zachovate a umoznite jejich cteni v case behu, lze je vyuzit.

Nech to bejt.

Netykejte mi. Nezname se.