1) Python ani Java nejsou interpretovane, bezi na virtualnim stroji a jde nastavit aby se kompilovaly (ano JIT), to je jako rict ze procesor interpretuje C/C++, nevim jak Ruby.
2) Nejak jsem po precteni clanku "SWIG - Uvod" nepostrehl k cemu ten swig vlastne slouzi. To dokaze zkompilovat Javu do binarky? Nebo se C udela knihovna ktera se pozdeji vola?
Pokud se preklada do bytecodu, pak samozrejme meni. Je to pak kompilovany jazyk, bezici na virtualni masine. U pythonu mam ale pocit, ze mate obe moznosti. Napr. knihovny se kompiluji do nejakeho *.pyc bytecodu, ale muzete spoustet - interpretovat - i skripty bez kompilace. Ani JIT nesouvisi s tim, jestli se jedna o kompilovany resp. interpretovany jazyk. Napr. Smalltalk zadny JIT nema, a presto se jedna o kompilovany jazyk. Je jedno jestli se zdrojak prelozi na instrukce procesoru, nebo instrukce VM (bytecode). Pokud se preklada, je to kompilovany jazyk, pokud se interpretuje rovnou z vnitrni formy, pak je interpretovany. To byste pak mohli tvrdit, ze napr. .net je interpretovany... ale co? kdyz to neni jazyk? ;)
Dobře, když tak toužíte po akademické správnosti. Python se zkompiluje do bajtkódu, který se posléze interpretuje. Rozhodně žádná kompilace do nativního kódu.
Teda, nedá mi to a trošku si rýpnu: Basic na osmibitech je tedy taky kompilovaný? Protože v operační paměti samozřejmě není uložen přímo zdroják (je to moc objemné a interpretace by byla neskutečně pomalá), ale pouze tokeny jednotlivých příkazů. "Kompilace" se provádí pro každý řádek po jeho odentrování (resp. v té době ještě "odreturnování").
Myslel jsem, že Smalltalk má JIT od konce osmdesátých let... :-D High Performance Smalltalk, VM ve VisualWorks, dříve ObjectWorks nebo ObjectStudio nebo tak nějak, pokud se nepletu.
Ten priklad_cpp je naozaj jednoduchucky, nieco ako "Hello World!", ale aj tak vdaka.
Chcelo by to triedu s pretazenymi funkciami a operatormi a neuskodili by ani vlastne rozsirenia (minimalne __str__ a __rep__), aby sa vysledny objekt v pythone spraval slusne.
V clanku chyba poriadny popis a motivacia. Nie je napr. uvedene, ze vdaka SWIGu mozeme v pythone pouzivat take kniznice ako OpenGL, Win32, VTK a urcite kopu dalsich.
Som zvedavy, ako sa autor ukaze v dalsich dieloch.
ten prikladik bol navrhnuty ako to najjednoduchsie,
co sa da so SWIG-om spachat, pripravene su aj
komplikovanejsie veci - napr. 'programovanie' SWIG-u,
konverzie agregovanych C++ datovych typov na pythonovske atd.
... len nemam cas na spisovatelsku robotu
Skoda, prave vyrabam wrapper pre nas kod a riesim dost komplikovane veci so sablonami a podobne. Prvu verziu clovek dostane celkom lahko, pomocou %ignore ;-), ale ak ma wrapper interagovat s pythonom, da to zabrat. Dokumentacia je slaba a tak casto zostava len metoda pokus/omyl.
Kouzlo swigu je v tom, ze vetsinou lze i slozite veci udelat jednoduse (ve smyslu "simple", ne vsak "easy"). Ale pokud pouzivate netrivialni datove typy, tak je pro tuto jednoduchost stejne potreba znat "streva" te virtualni masiny ("interpretru") ciloveho jazyka (Perl, Python, Ruby, Java, C#, ...).
Hlavni problem swigu, na nejz jsem narazil, je neprilis sdilna dokumentace, neprilis mnoho prikladu nalezitelnych pres Google a neprilis privetivy diskusni list (vetsina dotazu tam, zda se, prochazi nezodpovezena).
Ale nechci vas odradit, byla rozhodne zabava si to me 3rd party API wrapnout do Perlu. A prijemny pocit, kdyz se mi to opravdu povedlo.
my to v nasem informacnim systemu pouzivame uz od roku 1999 a mohu potvrdit vase mineni. Co si clovek neudela sam, to neni. Lide, kteri to vyvijeji se nachazeji nekde ve vysinach teoreticke informatiky a pri problemech se predava ta horka brambora mezi swigem a napr. perlem.
Nasim zamerem bylo vyuzit te nejvetsi prednosti swigu, ze napr. API v C budou moci uzivatele pouzivat v perlu, pythonu a ruby a musi vpodstate jen vytvorit moduly v tom preferovanem interpretru. Bohuzel to ale 100% nefunguje.
Jinak mam z clanku dojem, ze autor to videl vsechno z rychliku, ale takova je dnesni doba, odpovedny redaktor je na portalech neznamy pojem (ze ano pani Dolezalova), kvalita jde do kytek ale to je dobre, alespon se to drive komletne ze*ere.
Nechapu k cemu vlastne SWIG muzu vyuzit. Docela bych uvital v pristim clanku zakladni popis pro BLBE (cili pro me). Python se ucim, ale tohle jsem nejak nepochopil. Rozhodne jsem zvedavy na pristi clanek.