Autor Zpráva
Anonymní
Profil *
ako si pozriem zdrojak progrmu, ktory je naprogramovany v nejakom jazyku typu C, python pascal, C++, delphi, ........ ??
a ako sa číta "C#"
Hugo
Profil *
Pokud mas ten program uz zkompilovany, tak si ho neprectes. Jinak staci nejaky textovy editor.

C# - C sharp
pyty
Profil
takze ked je zkompilovany neje ziadna sanca na jeho pozreie ?
zdrojak TotalCommander alebo bulancov si uz nepozriem ?
viem ze niektory vyvojari davaju na net aj zdrojaky ale nie vsetci....
a ako potom vidi zdroj program co ho vyhodnocuje ?
thingwath
Profil *
Zkompilovaný kód se do původního zdrojáku už převést nedá. Jsou sice nějaké dekompilátory pro konkrétní jazyky (které dokáží do určité míry kód rekonstruovat), ale originál se z toho dát dohromady nedá.

pyty: Ta poslední otázka? Odpověděl bych, pokud bych ji pochopil.

Rozdíl je u interpretovaných jazyků, takže skript z Pythonu, pokud není převedený do bajtkódu nebo přímo windows binárky nebo elfu, se dá normálně zobrazit v textovém editoru.
pyty
Profil
html, javascript vyhodnot //resp. zobrazi// prehliadac
php, asp... program na serveri
tak aj program spusteny v win by malo nieco vyhodnotit nie ?
thingwath
Profil *
Ano, váš procesor. Zkompilovaný spustitelný soubor obsahuje instrukce pro procesor. Ty se dají snadno převést do Assembleru, ale to nijak moc nepomůže.
Anonymní
Profil *
ahaa takže programy v C,python,pascal..... vyhodnocuje procesor ..::.. mmm
ale na napr. javu potrebujem program ci nie ?
thingwath
Profil *
Ty programy jsou zkompilované do tvaru instrukcí pro procesor. Python sem netahejte, to je primárně interpretovaný jazyk (jako třeba PHP).

Java (a .NET) je trochu zvláštní případ. Ta se sice taky kompiluje, ale do takzvaného bajtkódu, který ovšem má trochu jiný tvar než obvyklá spustitelná binárka třeba pro windows (.exe). Výhoda je pak ta, že to není závislé na konkrétním procesoru, ale je potřeba mít interpret (v javě se nazývá VM, virtuální stroj), který program vykonává.
pyty
Profil
takze ked nieco naprogramujem do c#, program//??// mi to prevedie do binarnej podoby //1,0// a potom to sparcuje procesor ? a nemoze sa to z binarnej podoby dostat spat ?
nepoznate o tom nejaky clanok? red by som si nieco precital. nie konkretny, ale zaoberajuci sa VSEOBECNE touto problematikou. nie ze by som sa chcel v blizkej dobe ucit programovat v niecom veciom ako PHP alebo javascript, ale dost ma to zaujima, a zaujimalo uz od mala :-)
thingwath
Profil *
C# se kompiluje do toho dotnetích bajtkódu, který má nějakou zkratku, asi Common Language Runtime, nebo něco takového. Prostě jako Java :-)

Jinak, binárně máte v počítači samozřejmě úplně všechno. NIcméně některé věci jsou uloženy jako textové (tedy s daty se pracuje po jednom bajtu, který každý představuje jeden znak), jiné jako binární, z nichž vám textový editor nic neukáže, protože čtené po bajtu nedávají smysl.

Zvolíme lepší příklad a napíšeme program v C :-)

Napíšeme si něco, dejme tomu tohle


#include <stdio.h>

int main () {
printf ("hello world!\n");
return 0;
}


Teď máme zdrojový kód programu, který je nám ale na nic, protože mu rozumíme my, ale procesor ne. Proto spustíme kompilátor, který nám program právě do takové podoby převede. Výsledek (dejme tomu linuxová binárka - říká se jim ELF - spustitelný linkovatelný formát) bude vypadat v assembleru takto:


.LC0:
.string "hello world!\n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
subl %eax, %esp
subl $12, %esp
pushl $.LC0
call printf
addl $16, %esp
movl $0, %eax
leave
ret


Je to výstup GCC kompilátoru, redakčně malinko kráceno. Nyní je kód už výrazně nepřehlednější a je mnohem těžší z něj dostat co vlastně původně dělal, že?

Výalednou binárku sem nepošlu, takže se za domácí úkol v něčemschopném zobrazovat hexadecimálně podívejte na nějakou vlastní :-)

Nyní, když budeme chít program spustit, tak udělá nějaké techtlemechtle operační systém (vytvoří nový proces, alokuje paměť, přidělí mu nějaký strojový čas ...). Pak si procesor žádá jednotlivé instrukce programu (které jsou nataženy v paměti) a vykonává je. Dokud se neprobudí plánovač a nepřidělí procesor zase někomu jinému :-)

U PHP je to o něco složitější. Tam si napřed náš skript (jako normální textový soubor) vyžádá interpret PHP. Interpret je napsaný v C a má takový tvar jako program výše. Interpret si také bere instrukci po instrukci a zpracovává je. Interpret tak v podstatě napodobuje chování procesoru, ale na vyšší úrovni. Pro vykonání PHP skriptu tak samozřejmě musíme mít procesor, ale ten náš skript zpracovává prostřednictvím programu interpetu. Proto je taky PHP o mnoho pomalejší než kompilovaný program psaný v C.

Z binární podoby dokážeme dát dohromady přibližně uvedený tvar v assembleru, ale uznáš, že ten nám moc platný nebude.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0