Miért nincs a python?
Most nincs időm végigmenni a Kérdező illetve a 14. válaszoló összes tévedésein, így csak nagyvonalakban:
1) A Java compilert is compilernek nevezzük, pedig nem vasra fordít
2) A .NET platformot platformnak nevezzük, akkor is, ha framework IS
3) Hiába van a C-nek interpretere, ha nem használja senki
4) A Python nem interpretált, hanem egyszerre interpretált és fordított nyelv is, ugyanis a Python értelmező is bájtkódra fordít, akárcsak például a Java, és a .pyc fájlokat a Python VM futtatja. Az igazi interpretált nyelvek, mint például a BASIC, sorról sorra vannak értelmezve. A Python egy köztes valami.
A Python lehetne (és lesz is) valamivel gyorsabb, de eddig nem fordítottak erre nagyobb figyelmet. Mindesetre kérdező az összes lehetőséget (numba, cython stb.) kimerítettétek már a kollégákkal, vagy csak sörözgetés közben ötleteltek? A Cython például majdnem teljesen Python, és C-sebességgel fut.
Ami szerintem egy helyesebb kérdés, az nem az, hogy lehet-e a Pythonhoz compilert írni (némi kompromisszummal lehet: Cython), hanem az, hogy mi a Python interpreter/compiler optimalizálásának felső határa. Tehát ha egy olyan tehetséges csapat nekiesne, mint Lars Bak és a V8 csapata, akkor mire lennének képesek. A megoldás lassan alakulgat, hallgasd meg Lex Fridman decemberi interjúját Guido van Rossummal, hosszasan beszélnek erről.
30. Bocs, hogy beleszólok, de miért nem akarsz tanulni a szemmel láthatóan jobban képzett 28-astól?
Tehát akkor még egyszer, lassabban. Ha egy értelmező (interpreter) sorról sorra haladva végrehajtja a parancsokat, akkor az egy interpreter. Például a BASIC interpreter ilyen.
Ha viszont egy nyelv egy másik nyelvű (legyen az bájtkód vagy gépi kód) utasítássort állít elő egy forráskódból, akkor az a compiler. Ezért compiler a Java compiler (amely bájtkódot állít elő a forráskódból, és nem gépi kódot, tehát az a korábbi tézised, hogy a compiler vasra fordítana eleve megdőlt), és compiler a Cython compiler is, amely pedig C-re fordítja a Python forráskódot.
Igen, van még egy köztes kategória is, a transpiler, amelyet a TypeScript feldolgozóra szoktak mondani. Tulajdonképpen az egész vitának ilyen formában nincs értelme, mert lehetne a TypeScript előfeldolgozót is compilernek nevezni, és még egyszer, a Python feldolgozó nem klasszikus értelemben vett interpreter, hanem bájtkódra fordító valami.
Szóval 28-nak van igaza már megint.
A JAVA compiler egy olyan compiler, ami egy virtuális gép processzorára fordít, lényegében gépi kódot állít elő.
A .NET-et te nevezheted platformnak, de attól még framework marad. Ám, hogy ne erőlködj tovább, inkább elárulok neked valamit. Bizonyos fogalmakat (körte, fog, éles, sötét) más és más relációban is használhatunk. Tesszük is.
Ezért aztán nem csak a karodon ketyegő breitling, hanem akár egy leszúrt bot is lehet óra. Ha más nem, akkor napóra. Az viszont tény, hogy bármely fogalomnak egy adott kontextusban csak egyféle értelmét ajánlott használni.
A python attól nem lesz compileres nyelv, hogy virtuális gépen futtatják a python bájtkódot. Marad ami volt, interpretált kód.
Amiről te beszélsz (G. Van Rossum és tsai), az egy más dolog. A python interpretere már sok platformon dolgozik. Ez az az ok, amiért jó, hogy a pythonnak interpretere van. Ezzel ugyanis alaposan alárug a JAVA-nak, hiszen ha legalább részben is, de kiváltja azt. A python interpreter itt, ott, amott ugyanis pont az, ami a JAVA-nak a JVM.
De attól, hogy a python interpretert, nagyon dicséretesen optimalizálni akarják, még nem kapok választ a kérdésemre.
"30. Bocs, hogy beleszólok, de miért nem akarsz tanulni a szemmel láthatóan jobban képzett 28-astól?"
Nagyon nagy bajok vannak a te szemeddel, ez biztos.
"Tehát akkor még egyszer, lassabban. Ha egy értelmező (interpreter) sorról sorra haladva végrehajtja a parancsokat, akkor az egy interpreter. "
Igen, meg ami nem sorról sorra halad, hanem egy lépésben feldolgozza a futtatandó kódot és belső kóddá (bájtkóddá) alakítja, az is interpreter.
Legyél te ebben egészen biztos, kis kibic.
A transpilerről és egyebekről meg ne itt állj neki hazudni.
Transpiler az, ami pl. a C forrásból ASM-et generál, TRANS-pilálja, átírja egyik nyelvi forrásból a szöveget egy másikéra. Szomorú, hogy a hülyeségeitek, vagy mondjuk azt, vélt igazatok védelmében még hazudozni is képesek vagytok.
What is Python?
Python is an interpreted, interactive, object-oriented programming language.
forrás: [link]
33. “ A .NET-et te nevezheted platformnak, de attól még framework marad.”
Nem én nevezem platformnak, hanem a Microsoft személyesen.
“ What is .NET?
.NET is an open source developer platform, created by Microsoft, for building many different types of applications.”
34. Itt elmagyarázzák még érthetőbben, hogy miért compiled nyelv a Python:
“ But to stop nitpicking and answer the question you meant to ask: Practically (read: using a somewhat popular and mature implementation), Python is compiled. Not compiled to machine code ahead of time (i.e. "compiled" by the restricted and wrong, but alas common definition), "only" compiled to bytecode, but it's still compilation with at least some of the benefits.”
De fentebb én is ezt magyaráztam el, hogy a Python fordító bájtkódra fordít, amelyet a Python virtuális gép futtat.
34. “ A transpilerről és egyebekről meg ne itt állj neki hazudni.
Transpiler az, ami pl. a C forrásból ASM-et generál, TRANS-pilálja, átírja egyik nyelvi forrásból a szöveget egy másikéra.”
Nem értem az okát ennek az útszéli, kocsis stílusnak. Mi az, hogy “hazudni”? Miféle kocsmai stílus ez?
Na de a lényegre térve, transpilernek azt nevezzük, amikor egy konverter egy azonos absztrakciós szintű nyelvre fordítja át a forráskódot. Tehát például hy nyelvről Pythonra, vagy TypeScriptről JavaScriptre. (Sőt emlékeim szerint pont a TS-JS esetében jött divatba maga a transpiler kifejezés is.)
Szerintem a C-ASM fordítás ennek nem felel meg, nem is transpilernek nevezzük, hanem compilernek.
"34. Itt elmagyarázzák még érthetőbben, hogy miért compiled nyelv a Python:"
Ki magyarázza el? Akit te a szájízed és érdekeid alapján kiválasztasz?
Még az a figura is elmondja, hogy mi a különbség. Annyi, hogy kicsit gyorsabban fut, mintha nem lenne VM.
Ha a pythonnak valóban lenne compilere, akkor mit mondanál, mit hazudnál most?
Ott írják a python hivatalos oldalán, az első modatban, hogy interpretált nyelv, de te csak nyomod itt a falsot. Nevetséges vagy.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!