Avatar
jan.ruzicka01
Redaktor
Avatar
jan.ruzicka01:

Ahoj, jsem asi tak v půlce psaní parseru a kompilátoru pro svůj jazyk a napadlo mě, zda je dobrý nápad ho psát v Pythonu? Jde mi o rychlost paměť a tyto obecné atributy.

Odpovědět 17.11.2014 19:41
';' je má jediná noční můra...
Avatar
Odpovídá na jan.ruzicka01
Josef Kuchař (Pepa489):

Python není moc dobrá volba pro rychlost, kompiluje se totiž za běhu ;)

Nahoru Odpovědět  -6 17.11.2014 19:45
2x piš, jednou debuguj
Avatar
jan.ruzicka01
Redaktor
Avatar
Nahoru Odpovědět 17.11.2014 20:11
';' je má jediná noční můra...
Avatar
Samuel Illo
Redaktor
Avatar
Odpovídá na jan.ruzicka01
Samuel Illo :

Pamäťovo podobne jako Java alebo C#. Čiže používa Garbage Collection, co nie je najlepšia volba z hladiska rýchlosti a využitia pamäte.

Editováno 17.11.2014 20:37
Nahoru Odpovědět  -2 17.11.2014 20:36
www.samuelillo.com; lamka02sk(zavináč)samuelillo.com, www.point.samuelillo.com, www.csgorig.eu
Avatar
hanpari
Redaktor
Avatar
Odpovídá na jan.ruzicka01
hanpari:

Python je jen specifikace jazyka, a jeho rychlost se liší podle konkrétní implementace a konkrétní aplikace. Místo cpythonu (tj. standardní implementace stažená z python.org) existují implementace zaměřené výkon jako cython nebo pypy. Ze samostatným výkonem se tedy dá ještě čarovat, mimo jiné i pomocí céčkových knihoven, které uvolní úzké hrdlo dané aplikace.
POkud vím, např. jython je obecně pomalejší proti samotné javě proto, že není staticky typovaný, a to brání kompilátoru ho optimalizovat tak účinně jako samotnou javu nebo jiný staticky typovaný jazyk pro JVM.
Je ovšem potřeba si uvědomit, že úzké hrdlo samotného programu netvoří většinou jazyk, ale spíš nevhodný algoritmus.
Co se týče paměti, tam záleží na tom, jak to naprogramuješ. Se samostatným jazykem bych si hlavu nelámal. Co se týče správy paměti, generátory určitě znamenaly pro její uvolnění obrovský pokrok.
Ovšem, python je vysokoúrovňový jazyk, takže se snaží své programátory odfiltrovat od nižších úrovní. Proto hodně záleží na tom, co si od toho slibuješ :)

POkud tě to opravdu zajímá, můžeš si přečíst toto:

http://it-ebooks.info/book/3816/

 
Nahoru Odpovědět  +2 17.11.2014 21:09
Avatar
jan.ruzicka01
Redaktor
Avatar
jan.ruzicka01:

Tak jsem nakonec použil PyPy3 a běží jako hodinky. A mimochodem, můžete si ho vyzkoušet. Zdroják je na adrese: https://github.com/Unicyde/Flat

Nahoru Odpovědět  +1 2.4.2015 8:37
';' je má jediná noční můra...
Avatar
hanpari
Redaktor
Avatar
Odpovídá na jan.ruzicka01
hanpari:

Pěkné,

mimochodem, kde jsi našel toto? Tohle jsem ještě nikde neviděl. Ale kupodivu to funguje :)

result[0::2] = lst
 
Nahoru Odpovědět 2.4.2015 17:27
Avatar
David Novák
Tým ITnetwork
Avatar
Odpovídá na jan.ruzicka01
David Novák:

hlavně hodně záleží, jak to myslíš.. napsat parser a překladač v pythonu je naprosto v pohodě.. s textem umí pracovat pěkně a jednoduše.. ;)

překládat ten tvůj jazyk do pythonu zase není moc dobrý nápad.. Python je sám o sobě hodně vysokuúrovňový a pomalý.. záleží samozřejmě k čemu to má sloužit.. jestli je to jen blbinka na vyzkoušení si tvorby jazyka, tak proč ne.. ;)
Pokud to má být reálný, dobře využitelný jazyk, tak by se měl překládat minimálně do C/C++, ideálně rovnou do ASM :D

Ale to je hodně práce (ne pro jednoho).. Takže dobrý kompromis by bylo překládat do http://llvm.org/ Výhoda je, že tím bez enormní námahy získáš překlad pro x různých platforem.. Nějak blíž jsem to ale nezkoumal, takže nemůžu přesně říct, jak to funguje a jak to použít ;)

EDIT: Tak jsem si právě všiml, že ta diskuze je poněkud postaršího data.. :D

Editováno 2.4.2015 19:11
Nahoru Odpovědět 2.4.2015 19:10
Chyba je mezi klávesnicí a židlí.
Avatar
jan.ruzicka01
Redaktor
Avatar
Odpovídá na hanpari
jan.ruzicka01:

Tak to už vážně netuším, ale myslím, že je to slicování multidimenzio­nálního listu..

EDIT:
Už to vím! Na každou druhou pozici v listu přidá daný element. (Nejspíš jsem to našel na StackOverflow)

Editováno 4.4.2015 19:23
Nahoru Odpovědět  +1 4.4.2015 19:21
';' je má jediná noční můra...
Avatar
virlupus.soft:

Zdravím, myslím, že Python je dost fajn jazyk, který se dá použít velmi všeobecně. Když jsem v něm mohl stvořit emulátor ZX, tak i rychlost je přijatelná. Též byl mou volbou pro přetvoření PC Fandu do trochu modernější varianty...zatím rozpracovaná verze. Tedy v závěru mohu tvrdit, že programovací jazyk v Pythonu jde udělat...i když C by asi byla lepší volba, ale příliš složitá práce s ukazateli a mnoho nutných kontrol poněkud v C zpomaluje vývoj.

 
Nahoru Odpovědět  +1 4.4.2015 21:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.