Jak vzniká počítačový program

Diskuze čtenářů k článku

tom  |  08. 08. 2006 16:07

verim ze dane problematice tady vetsinou vsichni dobre rozumite ale nechapu proc se tu kazdy druhy povysujete nad ostatni, odsuzujete laiky kteri se chteji naucit neco noveho, neco ve smyslu: co se nam motate do remesla, my sme panibozi, my sme nej, my vse umime...zajimalo by me jak vy, ti uzasne chytri treba kopete do balonu nebo bruslite, asi to nebude zadnej slagr, presto vam to nikdo nezakazuje a nezesmesnuje, o profesionalnich sportovcich se povida ze jsou to nafoukanci zkazeni penezi, po precteni teto diskuze si tohle myslim spis o vas,

Souhlasím  |  Nesouhlasím  |  Odpovědět
Ipsilon  |  17. 11. 2004 12:50

aj ked je asemberr jazykom cisel aj tak je to jazyk.. ani ja nerozumiem cinstine...to vsak neznamena ze ked jej nerozumiem ja  - ze jej nerozumie miliarda cinanov! Ked niecomu nerozumies neznamena to ze tmu vuobec nikto tiez ako Ty nerozumie... (za pripadne Ipsiloni sa ospravedlnujem)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Matus UHLAR - fantomas  |  31. 08. 2004 14:44

podla mojich informacii (a nie z jedneho zdroja) jazyk C bol prinajmensom inspirovany Pascalom, ktory bol vytvoreny o rok-dva skor (1969?).

A to nehovorim o jazykoch ako ALGOL, ktory bol vzorom pre jazyky ako Pascal, C, Modula2, ADA a ine. O jazykoch ako je PL/1, spominany BASIC, Lisp a Prolog, pripadne novsie veci ako SmallTalk, spominana Java

Ako lahodku by som uviedol jazyky typu BrainF*** alebo Ook :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
--==[FReeZ]==--  |  01. 05. 2006 05:05

ktery prase vysralo ten assembler?

Copak nevis ze AH a AL lze zapsat pomoci AX a tim zrychlit aplikaci a usetrit par bytu ?

Souhlasím  |  Nesouhlasím  |  Odpovědět
--==[FReeZ]==--  |  01. 05. 2006 05:06

ktery prase vysralo ten assembler?

Copak nevis ze AH a AL lze zapsat pomoci AX a tim zrychlit aplikaci a usetrit par bytu ?

...samozrejme CH a CL je to same....

Souhlasím  |  Nesouhlasím  |  Odpovědět
--==[FReeZ]==--  |  01. 05. 2006 05:07

a jeste neco ty hovado,
zadny mov bx, 0
ale xor bx, bx !!!

Souhlasím  |  Nesouhlasím  |  Odpovědět
scatter  |  27. 08. 2004 13:07

"Protože člověk je tvor líný, hledal již od začátku programování různé cesty, jak si je zjednodušit." hned první věta mně fakt rozesmála... neřekl bych, že by někdo stihnul ve strojovém kódu napsat třeba 64bit operační systém dřív než by umřel... to, že člověk je línej, asi nebude hlavní důvod existence programovacích jazyků )

Souhlasím  |  Nesouhlasím  |  Odpovědět
alex  |  28. 08. 2004 13:40

Záleží na tom, co by takovej OS umět, napsat příkazovej interpreter nebo zaváděč je práce tak na tejden za předpokladu, že se podaří vtěsnat OS loader do jednoho sektoru, můžeš napsat následující zaváděč:

B8 C0 07		MOV     AX, 07C0h  		; napřed inicializujeme zásobník

8E D0 MOV SS, AX

BC FE 03 MOV SP, 03FEh ; nastavíme adresu na vrchol stacku

0E PUSH CS ; nastavíme data segment

1F POP DS

B4 00 MOV AH, 00h ; nastavíme video mód (výchozí rozlišení 80x25 znaků)

B0 03 MOV AL, 03h

10 INT 10h

a teď zavedem OS na adresu 0800h:0000h: prvnich 10 sektorů začíná na cylindru 0 sektoru 2 diskový hlavy 0
B4 02		MOV     AH, 02h 		; BIOS funkce 13h interruptu pro čtení z disku s následujícáma parametrama:

B0 0A MOV AL, 10 ; sectorů pro načtení

B5 00 MOV CH, 0 ; válce

B1 02 MOV CL, 2 ; počáteční sektor

B6 00 MOV DH, 0 ; číslo hlavy

BB 00 MOV BX, 0800h ; ES:BX obsahují adresu 0800h:0000h: odkazující na data buffer:

8E C3 MOV ES, BX

BB 00 MOV BX, 0

CD INT 13h ; a zavedeme OS do paměti

EA 00 00 00 08 JMP 0800h:0000h ; skočíme na segment:offset 0800h:0000h, čímž předáme řízení OS

Po přepsání do strojáku boot.bin jeho bajty zapíšeme na druhej sektor diskety např. utilitou partcopy
PARTCOPY boot.bin 0 2 -f0 0

Souhlasím  |  Nesouhlasím  |  Odpovědět
deda.jabko  |  26. 08. 2004 19:53

chybi mi tu par jazyku, opomenuli jeden z nejfundamentalnejsich - LISP - tak by to chtelo minimalne jazyky SmallTalk a hlavne Javu nebo jejiho bratricka C# - kteri ve vetsine prikladu kompiluji do mezi kodu JBC/IL a ten pak pripadne interpretuji nebo za behu kompiluji do nativniho kodu procesoru....

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 18:48

Článek obsahuje řadu nepřesností, ale je napsaný čtivě a týká se tématu který je pro většinu z vás atraktivní, až osobní... Z vlastní zkušenosti vím, že k takovému způsobu psaní redakce autory motivuje a krom toho jsou autoři striktně limitováni rozsahem článku. Ve skutečnosti je velmi dobrý námět na rozsáhlejší miniseriál, který bude rozveden trochu podrobněji a místy i precizněji.

Kdo z běžných uživatelů PC vlastně ví, jak se dnes vytvářejí rozsáhlejší aplikace a programové celky, jak se sestavují buildy, z jakých kroků se skládá, co je to lexer, tokenizer, parser, jaké finty používají dnešní překladače, jak a proč funguje assembler a linker, jak probíhají systémová volání, jak a proč OS připravuje programu paměť, zásobník a návratové adresy, jak po sobě zase program "uklízí" registry, atd... ?

To jsou všechno docela zajímavé věci, jen je není možné vtěsnat do 3000 - 4000 znaků vyhražených pro článek.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 18:49

...se skládá kompilace...

Souhlasím  |  Nesouhlasím  |  Odpovědět
hey  |  27. 08. 2004 12:20

A co je to lexer?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petrik  |  28. 08. 2004 11:34

lexer je zkratka za lexical analyzer a jeho úkolem je převádět řetězec znaků zdrojáku na stream jazykově specifických tokenů (gramatických elementů jazyka, jako jsou identifikátory nebo klíčová slova), např. deklaraci:

type Colour is (Red, Green, Blue);

převede na

Type_KW, Identifikátor("Colour"), Is_KW, Leva_Zavorka, Identifikátor("Red"), Čárka, Identifikátor("Green"), Čárka, Identifikátor("Blue"), Pravá_závorka, Středník

Souhlasím  |  Nesouhlasím  |  Odpovědět
Janek Wagner  |  26. 08. 2004 16:03

Odborná úroveň posledních článků Jana Polzera je otřesná. Už první článek o programech pro výuku psaní mě překvapil, ale tohle je už příliš. Popis chyb, nepřesností a nesmyslů v tomto paskvilu o programování by zabral stjné místo jako článek samý, ale neodpustím si vypíchnout pár perel, které se zatím v komentářích nevyskytly:

1. "nejznámější je C" - podle rozšíření je to nejspíše Basic (i když Basic ze ZX Spectra a poslední Visual Basic .NET jsou od sebe hodně daleko...). Před více než deseti lety Visual Basic 3.0 pro Win 3.1 znamenal dost výrazný posun.

2. i o nejznámějších intepretech by se dalo diskutovat: ale opět asi Basic nebo JavaScript

3. "rozšířená vývojová prostředí" - k pěti vyjmenovaným se najde určitě dvojnásobek stejně rozšířených

4. výrobce Lazarus je OpenSource?!





Souhlasím  |  Nesouhlasím  |  Odpovědět
Ghost  |  26. 08. 2004 17:21

Úroveň diskutujících čtenářů Živě však není o mnoho lepší

Co takhle hodit odkaz na svůj článek, pakliže je ten od původního autora tak špatný ?

Největší sranda je totiž ta, že pokud kdokoliv cokoliv na Živě napíše, vždy ho totálně zpraží odborná komunita, která však není schopna vypracovat srozumitelný článek, který by laické veřejnosti dokázal podat téma čtivou formou - ta totiž rozhoduje o úspěchu článku, notabene v takovém časopisu, jako je Computer. Pokud budu chtít přesné a úplné informace, nebudu je hledat ani na Živě ani v Computeru, ale šáhnu po seriózním pramenu (např. VŠ skripta apod.)

Přátelé, buď to chce trochu tolerance, nebo přímý odkaz na článek lepší.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Janek Wagner  |  26. 08. 2004 18:23

Neprovozuji jako Saturnin kancelář "pro uvádění románových příběhů na pravou míru", ale už jsem jednou nedotaženou práci Jana Polzera doplňoval (původní Přehled správců souborů a doplněk Přehled správců souborů podruhé). O historii počítačů a i o programování jsem publikoval leccos, bohužel můj bývalý "mateřský" server Svět Namodro už díky Českému Telecomu druhý rok nefunguje a odpočívá v jeho archivu. Ale přečtěte si třeba mé další články na Živě nebo na České škole, jestli se zajímáte o programování, tak třeba Dobrý Karel ještě žije nebo  Dobrý Karel žije víc, než jsem čekal 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Janek Wagner  |  26. 08. 2004 18:30

Omlouvám se, ztratily se linky, takže ještě jednou

Neprovozuji jako Saturnin kancelář "pro uvádění románových příběhů na pravou míru", ale už jsem jednou nedotaženou práci Jana Polzera doplňoval (původní Přehled správců souborů - http://www.ceskaskola.cz/ICTveskole/Ar.asp?ARI=101667 a doplněk Přehled správců souborů podruhé - http://www.ceskaskola.cz/ICTveskole/Ar.asp?ARI=101682). O historii počítačů a i o programování jsem publikoval leccos, bohužel můj bývalý "mateřský" server Svět Namodro už díky Českému Telecomu druhý rok nefunguje a odpočívá v jeho archivu. Ale přečtěte si třeba mé další články na Živě (http://www.zive.cz/Autori/?AUI=581) nebo na České škole (http://www.ceskaskola.cz/Authors/?AUI=543), jestli se zajímáte o programování, tak třeba Dobrý Karel ještě žije (http://www.ceskaskola.cz/ICTveskole/Ar.asp?ARI=101647&CAI=2129) nebo  Dobrý Karel žije víc, než jsem čekal (http://www.ceskaskola.cz/ICTveskole/Ar.asp?ARI=101662&CAI=2129)

Souhlasím  |  Nesouhlasím  |  Odpovědět
vlabo  |  26. 08. 2004 15:51

Tak preco ho vsetci citate do konca, ked je zly?

Souhlasím  |  Nesouhlasím  |  Odpovědět
DuckDaffy  |  26. 08. 2004 13:59

Když jsem tento článek četl v Computeru, musel jsem se podívat, zda náhodou nečtu Blesk... :)
Opravdu si dokážu představit tento typ článku napsaný daleko fundovaněji a s větším záberem. Na druhou stranu nechci zase VŠ skripta (která taky místy mají Bleskovou úrověň), ale já osobně jsem se v tom chaosu nedozvěděl nic nového.
DuckDaffy d(.)!(.)b
PS: Programuju v 10ti jazycích. ;)

Souhlasím  |  Nesouhlasím  |  Odpovědět
pakl  |  26. 08. 2004 13:34

Koneckonců i HTML soubory jsou skripty, o jejichž provedení se stará WEBOVÝ SERVER a vrací je uživatelům v podobě internetových stránek.....

jo jo, kdyby to tak bylo, nemusel by kazdy tvurce HTML uvazovat nad W3C a padesati prohlizeci...

Souhlasím  |  Nesouhlasím  |  Odpovědět
vladimir  |  26. 08. 2004 14:01

jj..myslim ze jan polzer udelal chybu kdyz se rozhodl psat o progamovani

Souhlasím  |  Nesouhlasím  |  Odpovědět
Jméno a Příjmení  |  26. 08. 2004 12:52

nejako mi tam chýba výborný skriptovaco/programovací jazyk "šitý horúcou ihlou" pre skutočnú prax; dnes ho asi málokto používa, ale svojho času to bol výborný nápad ako zároveň vykonávať príkazy resp. pripravovať odlaďovanie a programovať zároveň :o)

Souhlasím  |  Nesouhlasím  |  Odpovědět
px  |  26. 08. 2004 16:12

By si sa cudoval, ale niektori vyrobcovia pocitacov pouzivaju Forth vo svojom firmware. Menovite su to Apple (OpenFirmware) a Sun Microsystems (OpenBoot).

Souhlasím  |  Nesouhlasím  |  Odpovědět
anicka  |  27. 08. 2004 09:46

V tom pripade tady chybi take cesky Flex .o)

Souhlasím  |  Nesouhlasím  |  Odpovědět
tulupin  |  26. 08. 2004 10:53

Cafte. Netvrdim ze som odbornik na interpretery, ale myslim, ze najznamejsim interpretovanym jazykom je BASIC. Mozno to zutor myslel inak, ale napisat ze HTML sa vykonava na servery je dost zavadzajuce tvrdenie. Taktiez si myslim ze zaradit ASP madzi skriptovazie jazyky je dost odvazne. Autor by si mal prejst trochu informacie o tychto zalezitostiach a netahat ludi za nos!

Souhlasím  |  Nesouhlasím  |  Odpovědět
junix  |  26. 08. 2004 14:33

Souhlas. Tvrdit o ASP, ze je to jazyk... no s tim HTML je to jeste horsi blud

Souhlasím  |  Nesouhlasím  |  Odpovědět
Pichi  |  26. 08. 2004 09:55

Autor je IT analfabet. Psát o počítačových programech a programovacích jazycích a nezmínit lisp, smalltalk apod. Tohle je velmi povrchní a úzký výběr imperativních programovacích jazyků a ještě blbě, když opemene javu a ruby. Stejně tak patrně žil na konci 80. let někde v cizině, když nezmíní úžasný progamovací jazyk karel a taky si mohl všimnout, že tu bylo třeba i logo. Vynechat BASIC jehož implementace na platformě PC je příčina dnešního zBillovatění IT. Fakt IT analfabet.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Tomcat  |  26. 08. 2004 14:15

KAREL Rules

Souhlasím  |  Nesouhlasím  |  Odpovědět
x  |  26. 08. 2004 08:58

"Při lexikální analýze se tedy kontroluje správnost zápisu zdrojového kódu."

Pochopitelne, ze to tak neni, spravnost zapisu se kontroluje az pri syntaktické analyze. Pri lexikální analýze se pouze rozpoznavaji symboly jazyka (klic. slova, identifikatory....)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Albi  |  26. 08. 2004 08:39

Tak jsem si hned zavzpominal na sve zacatky programovani. Pred davnymi lety jsem musel na C64 programovat v assembleru, pokud jsem nechtel pouzivat omezeny BASIC, a to nikoli pomoci prekladace assembleru, ale primo instrukcemi na konkretni misto do pameti! To znamenalo, ze kdyz jsem chtel neco do sveho programu vlozit, musel jsem kus kodu prepsat instrukci JSR volajici podprogram a do podprogramu dat zpet to, co jsem smazal instrukci JSR.

Pres tyto polni podminky jsem byl schopen timto zpusobem naprogramovat spoustu utilit a dve hry. Bylo mi zlatych 13 let, ty casy se uz nikdy nevrati, ale budu mit o cem vykladat v domove duchodcu ))

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 09:48

Jo jo, PEEK a POKE

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kevin  |  26. 08. 2004 11:11

PEEK 64738 resetne C64 :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 12:54

Ja bych bral nejaky sitovy POKE ... NPOKE. Treba neco na zpusob
NPOKE 0.0.0.0 666
by resetnul/zastavil vsechny widle

Souhlasím  |  Nesouhlasím  |  Odpovědět
Lien  |  27. 08. 2004 08:28

Prikaz byl SYS a nikoli POKE, ale adresa sedi

Souhlasím  |  Nesouhlasím  |  Odpovědět
hacesoft  |  26. 08. 2004 18:03

POKE xxx,255 a nesmrtelnost v gamesce zarucena

Souhlasím  |  Nesouhlasím  |  Odpovědět
Marian Kechlibar  |  26. 08. 2004 08:35

"Pravdou je, že žádný program napsaný v tzv. vyšších programovacích jazycích není obecně tak výkonný jako tentýž napsaný v assembleru."

Na základě své praxe si dovoluji tvrdit, že toto je spíš mýtus než realita. Už nějayký ten pátek píšu matematický software a musím říci, že je jen nepatrné množství úloh, v nichž jsem pozoroval skutečnou rychlostní výhodu assembleru nad přeloženým kódem v C/C++ s optimalizacemi na daný procesor. Taková kritická místa jsou třeba prosívací fáze u kvadratického síta nebo multiprecision aritmetika, ale kupodivu ani tam ty rozdíly nejsou zas tak velké (max. 2:1, spíš míň). No, a kolik skutečných, běžně použitelných aplikací, reálně takové vylepšení vyžaduje? U naprosté většiny programů dneska 99% času čekáte na uživatelský vstup, výstup nebo periferie, a matematické operace nad daty, resp. paměťové operace, které jediné vysloveně benefitují z assembleru, tvoří naprosto zanedbatelné mikrosekundy celého běhu. Tím se výkonnost programů používajících a nepoužívajících asm naprosto srovnává.

Na druhou stranu, zatáhnete-li do svého kódu assembler, máte okamžitě po přenositelnosti na jiné platformy. Tohle třeba vedlo holandského génia Arjena Lenstru k tomu, aby svoje implementace kvadratického síta a číselně teoretického síta (NFS) psal čistě v C-čku - a vyplatilo se, neboť díky tomu byl schopen roztáhnout výpočty natolik distribuovaně, že třeba lámání RSA challenge 129 (1994) běželo i na dvou faxových mašinách

Souhlasím  |  Nesouhlasím  |  Odpovědět
lucky  |  26. 08. 2004 08:44

neni to mytus, je to realita. nikdo, ale netvrdi, ze to bude rychlejsi 10x 20x apod... pokud se ale jedna o cast kodu, ktera je opakovana treba 100000000x za sebou, tak se optimalizace vyplati.
a pokud si autor clanku mysli, ze assembler neni programovaci jazyk, tak co je to potom ? kazdopadne by si nemel plest assembler a strojovy kod. clanek o nicem, na zakladce musi informovane decka napsat lepsi

Souhlasím  |  Nesouhlasím  |  Odpovědět
Marian Kechlibar  |  26. 08. 2004 09:16

Ad optimalizace assemblerem: to se tyka treba driveru, kernelu apod., ale aplikacni programator se na tuto uroven, myslim, ani nedostane. Mozna se mylim, nebot aplikacni programovani znam jenom z mobilnich telefonu (Symbian C++ a Java), uvedte kdyz tak nejaky protipriklad, at se poucim

Mam ten pocit, ze za DOSovych casu byl Volkov Commander psan v assembleru; taky byl podstatne rychlejsi nez NC a chodil mi i na PC-XT 8 MHz vcelku slusne Dneska se ale programuje spis pro velke operacni systemy, kde se k HW nedostavate primo, ale skrz nejaka API, ne?

Jinak souhlasim s tim, ze ve specifickych podminkach (treba ten 100 000 000x) udela nahrazeni 20-30 radek ASM docela zrychleni, zvlast kdyz clovek na rozdil od prekladace vi, co chtel napsat; ale opravdu si myslim, ze takoveho SW je velmi malo ...


Souhlasím  |  Nesouhlasím  |  Odpovědět
peto  |  26. 08. 2004 10:49

Ja poskytnem tabulku pre optimalner naprogramovane algoritmy v jednotlivych jazykoch

jazyk                            cas vykonania    cas programovania

asembly language                 1                                1

C/C++                                     1.1                             0.2

Pascal                                     5                                0.15

Basic                                     12                                 0.05

script jazyky                          15-20                             0.01-0.05

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
xxx  |  26. 08. 2004 11:03

Pane kolego,

jak jste přišel na to, že programy napsané v Pascalu (dnes hlavně v prostředí Delphi) jsou 5x (slovy PĚT KRÁT) pomalejší než ty napsané v C/C++ ???

Bavíme se o zkompilovaných aplikacích, nikoliv o interpretorech (různě rychlých či pomalých).

Samozřejmě pokud si v Pascalovském programu zapnete všechny možné kontroly a v Céčku je vypnete, pak byste mohl dojít k podobnému závěru, jaký jste prezentoval. A opačně.

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Filip Truhlík  |  26. 08. 2004 13:00

Já mám takový dojem, že rychlost c/assembler je záležitost jen a pouze překladače, co takhle použít kvalitní překladač s optimalizací? Dá se porovnávat jeden kód přeložený různými překladači, ne dva různé programy, které notabéne běží v jiném prostředí (operačním systému) - on totiž přístup přeloženého kódu k systému a hw je docela jiný než u assembleru.

Souhlasím  |  Nesouhlasím  |  Odpovědět
peto  |  26. 08. 2004 13:20

Na tie udaje som prisiel z predmetu Programovanie, kde sme ako studijnu literaturu pouzivali kniznicu manualov k Borland C 2.0

Souhlasím  |  Nesouhlasím  |  Odpovědět
Marian Kechlibar  |  26. 08. 2004 13:49

No, prominte, ale ta tabulka je dost zavadejici - pokud k ni nejsou presne udaje o tom, jaka metodika byla k vyhodnocovani pouzita, tak nedava zadnou predstavu o skutecnosti. Napriklad sloupec "cas programovani" mi prijde jako naprosty nesmysl - jak se tohle meri? Casem jednoho programatora? Casem kompletace velkeho projektu?
Mne treba C-cko prijde jako jazyk rychlejsi ke skutecnemu psani programu nez Pascal. Byt Java mi prijde na psani jeste rychlejsi nez C-cko (Ted se vubec nebavim o rychlosti bezici aplikace)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 19:20

Pascal je ve skutečnosti v průměru dokonce o něco rychlejší, než C++ (je to nejrychlejší jazyk podporující OOP) -jen ve srovnání s C++ produkuje objemnější kompiláty.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 19:18

Musíte být velmi dobrý znalec assembleru a velmi dobrý a trpělivý programátor, aby jste se vyrovnal se všemi optimalizacemi a fígly, které dnes pro zrychlení kódu nebo snížení nároků na systémové prostředky používají dnešní překladače, práce s různými instrukčními sety (MMX, 3DNow!, v poslední době hyperthreading). Pokud překladač zjistí, že se část kódu opakuje, samozřejmě takovou optimalizaci udělá sám - místo stonásobného přičítání jedničky vynásobí sem a podobně - tohle už dělal Fortran 70).

Dnešní překladače jsou opravdická věda a troufám si tvrdit, že v souboji s nimi nejpozději u nějakých 20 - 30.000 řádcích odpadnete, protože se v ASM zdrojáku díky různým optimalizacím přestanete orientovat. A zrychlení ASM je u krátkých programů napsaných v C nepatrný, pohybuje se v řádu několika procent.

ASM je dnes spíš používaný pro svou flexibilitu tam, kde nevadí nepřenositelnost - tj. pro aplikace intenzívně pracující s registry a porty (řadiče a ovladače). Naproti tomu je možné ASM docela výhodně používat i naopak v hi-level aplikacích, které stejně 99% volají různé systémové API. Výsledkem je, že třeba s makry HLA (high level assembleru, odvozeného od MASM) je možné docela dobře pracovat objektově.

V poslední době na webu drobné utility přibývají pro Windows, typické tím, že se mají několik kB  - minimální kompilát Pascalu (který sám o sobě disponuje velmi rychlým překladačem) má přitom přes 200 kB

Souhlasím  |  Nesouhlasím  |  Odpovědět
foo bar  |  26. 08. 2004 22:18

hmm, ze naco je assembler ? demosceeeeeneeeee !!!!!
ale to su skuor *extremne* veci, napr aj taky farbrausch robi svoje 64KB veci vacsinou v C++ a asm pouzivaju len sporadicky. A pozrite si co sa zmesti do ich 64KB : http://www.farb-rausch.de/

Souhlasím  |  Nesouhlasím  |  Odpovědět
px  |  26. 08. 2004 23:37

V skutocnosti sa dnes ovladace pisu v C alebo dokonca v C++. V pripade starsieho hardware sa nadefinuju instrukcie in a out ako makra, eventualne aj s prislusne nacasovanym cakanim (pekne to vidno napr. v zdrojovych kodoch pre X.org a karty, ktore pouzivaju PIO).

Novsi hardware (t.j. hardware od zaciatku ery PCI) poziva jednoduch MMIO (memory mapped IO). Ovladac si namapuje pamat z karty do adresneho priestoru procesora, v hlavickovych suboroch si zadefinuje struktury popisane v dokumentacii od vyrobcu a ovladanie karty potom spociva v zapise/citani jednotlivych poli struktury - v com je C velmi dobre a procesor len robi mov.

V dnesnej dobe assembler vidno najviac v inner loops, kde na vykone zalezi - kodeky, softwarove casti 3d ovladacov, transformacie a podobna matematika so SIMD. Ako perlicka bude mozno posobit, ze glibc ma optimalizovany memcpy pre MMX/SSE/3Dnow.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Radek Novák  |  30. 08. 2004 10:37

1. Minimální kompilát v Pascalu (Delphi) může mít klidně 16 kB. Stačí nepoužívat TForm a všechny okna otrocky vykreslit přes API - docela otrava, kterážto nestojí vůbec za onu úsporu - v době GB disků.

2. Pascal versus C++ a ASM - snad již od první verze IDE je k dispozici příkaz inline, kterým lze vložit instrukce v hexa kódu do zdrojáku. Později přibyla direktiva asm za kterou programátor může přejít plynule do ASM. Skvělá věc, napíšete pascalskou definici hlavičky procedury/fce za begin dáte asm a přejdete do asm s tím, že bez problémů můžete používat lokální proměné.

3. Rychlost - Vždy lze optimalizovat ručně, s minimální námahou lze dosáhnout výrazného zrychlení použítím vhodných datových typů tak, aby se provádělo minimálně konverzí, při mat. výpočtech používat funkce, které najednou vracejí sin i cos (analýzou zjistíte, že obvykle potřebujete obojí, tak proč to dělat opakovaným voláním), rovněž se vyplatí optimalizovat vzorce a ne je jen mechanickY opsat. Nicméně v 95 procentech případů se ruční optimalizace nevyplatí - protože čas programátora je dražší než čas CPU. Ale viděl jsem optimalizace, které zrychlily program 4 násobně oproti standardní kompilaci v IDE.

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
tom  |  26. 08. 2004 08:48

V tom tvrdeni asi ani tak nejde o sucasny stav, ale o moznosti. Pri programovani v C zavisi efektivita vysledneho kodu od algoritmu v C a aj od kvality prekladaca a kvality pripadneho optimalizatora. Co su vlastne programy bez moznosti sa naucit nieco po svojom vytvoreni. Algoritmus v assembleri dava dokopy clovek, ktory moze postrehnut aj nejake zavislosti, ktore moze odtranit postupne. To, ze su dnes prekladace uz na velmi dobrej urovni a dokazu prekladat dostatocne optimalne, nic nemeni na tej moznosti, ze by to clovek mohol vediet lepsie...

Souhlasím  |  Nesouhlasím  |  Odpovědět
lubos  |  26. 08. 2004 11:16

Zvacsa plati, ze kompilator si rozne volania este vselijako obali kadejakym nie vzdy potrebnym balastom. Bezne to nevadi, ak ide o cyklus volani, alebo nieco podobne, dost to zdrzi. Ovsem, kompilatory mavaju rozne optimalizacie, uz som videl aj kod, ktory sa ani v assembleri nedal rychlejsie napisat, ovsem bol to malinkaty kusok ... nie vzdy to ide.
Ale ten kto v assembleri pise moze napisat aj vacsi grc ako v Ccku :)
V zasade sa da povedat, ze macher na programovanie v assembleri s velmi dobrymi znalostami o danom procesore napise rychlejsi kod ako optimalizator v kompilatore. Prakticky takych ludi je minimum, a aj cas tomu venovany byva vacsi. Optimalizacia kompilatorov byva na velmi-velmi dobrej urovni a az na male vynimky k assembleru nie je treba siahnut.

Souhlasím  |  Nesouhlasím  |  Odpovědět
orbital  |  26. 08. 2004 08:24

Nechci bejt puntičkář, ale v takovýmhle článku opomenout BASIC je přinejmenším zvěrstvo. Myslim že hodně velká většina programátorů se na něm začínala učit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
C/C++  |  26. 08. 2004 09:40

Osobne som rad, ze basic upadol do zabudnutia. Pseudo-programovaci jazyk deformujuci programatorske myslenie patri na smetisko dejin.

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 09:46

A co to je Basic? Ten na ZX, nebo GFA Basic na Atari ST, nebo Visual Basic od MS. Odsuzovat Basic jen podle nazvu Basic je proste ... Basic.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Prorok  |  26. 08. 2004 11:04

GFA basic je celkom slusny programovaci jazyk. Dodnes pouzivam niektore tie moje programy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Pavel Chromy  |  26. 08. 2004 12:31

A co je to potom Pascal? Take pro nej neexistuje (narozdil od C) zadna norma, alespon o tom nevim.

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 12:47

Taky se o to nikdo nepre.

Souhlasím  |  Nesouhlasím  |  Odpovědět
mol  |  26. 08. 2004 12:49

existuje ISO 7185 a ISO 10206

Souhlasím  |  Nesouhlasím  |  Odpovědět
Závistivý hovado  |  26. 08. 2004 12:42

GOTO do prdele

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 12:45

Command not found.

Souhlasím  |  Nesouhlasím  |  Odpovědět
vladimir  |  26. 08. 2004 13:38

ROFL

Souhlasím  |  Nesouhlasím  |  Odpovědět
a  |  15. 07. 2005 11:08

ja som mal GOTO rad :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
akai  |  26. 08. 2004 10:28

Upadl v zapomění ? A co M$ Visual Basic ? Nene, ten paskvil bohužel žije. Ale zase, VBA mi připadá jako docela dobrý skriptovací jazyk pro aplikace.

Souhlasím  |  Nesouhlasím  |  Odpovědět
hacesoft  |  26. 08. 2004 18:01

Ucili me programovat na IQ151 Basic. Potom jsem delal jen Assembler pro pruzne processory. Nedavno jsem presel na Visual Cecka a Visual Basic os MS. A sintax co me naucily na iq151 v Basicu pouzival ve VB a no problem. Pokud potrebuji neco udelat jako s databazemi to je sprasilos to delat v cecku, protoze to bude hodne dlouho trvat ale ve VB to je malina.

Souhlasím  |  Nesouhlasím  |  Odpovědět
lubos  |  26. 08. 2004 11:10

"Pseudo-programovaci jazyk deformujuci programatorske myslenie" - no iste, iste, pan velavazeny programator teoretik.

Souhlasím  |  Nesouhlasím  |  Odpovědět
BoodOk  |  26. 08. 2004 12:52

Taky me tyhle typkove pripadaji k smichu. Jiste jsou jazyky a jazyky. Nektere jsou striktnejsi, nektere mene. Nektere charakterizuje takova syntaxe, nektere jina. Ale plati jedno. Zverstvo pacha programator, nikoliv jazyk. A pomineme-li objektove programovani, ktere pominutelne je, pak plati, ze dobry program ve strukturovanem programovani napises prakticky v libovolnem jazyku, totez plati i pro spatny program. To ze je neco v C neznamena, ze je to nutne kvalitnejsi/rychlejsi (dosad cokoliv) nez to co je v basicu (a basic je v zasade jen syntaxe).

Souhlasím  |  Nesouhlasím  |  Odpovědět
Petr Bříza  |  27. 08. 2004 16:31

Vy dva mi připadáte jako ortodoxní zastánci BASICu a ostatních jazyků se bojíte. Já jsem na BASICu taky začínal, a dodnes dělám sem tam drobnosti v ve VBS (na ASP). A mám docela dlouhou programátorskou praxi, za kterou musím říci: čím méně má programátor svobody, tím lépe! Tím chci poukázat hlavně na netypové jazyky, které jsou učiněnou hrůzou. Kvalitní jazyk má být navržen pro OOP, měl by být dostatečně silný a pružný, ale nesmí svádět programátora k tomu, aby psal nějaké zhovadilosti. Tím směřuji hlavně k Javě, a ještě lépe k C#, což je vlastně (jak už tu někdo psal) vykradená Java. Takže pánové, zkuste programovat v něčem pořádném, přeji hodně štěstí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 18:58

Oč je podle Vás BASIC horší než třeba FORTRAN ? Ten přece konstrukce GoTo, Continue apod. obsahuje také a je to klasický jazyk, používaný špičkovými programátory superpočítačů v kódech o miliónech řádků. Ve skutečnosti je váš postoj deformovaný obecným povědomím o Basicu stejně, jako to přičítáte jemu.

Ve skutečnosti je Basic ve srovnání s řadou ostatních jazyků navržen docela univerzálně, přenositelně a čistě. Ne náhodou je to výchozí high-level jazyk, implementovaný v mikropočítačích, kontrolérech apod..

Souhlasím  |  Nesouhlasím  |  Odpovědět
ja  |  26. 08. 2004 07:47

To byl tak blby clanek, ze je jasne, ze ho daji i na internet.

Souhlasím  |  Nesouhlasím  |  Odpovědět
prg  |  26. 08. 2004 08:12

a prdlajs

toto byl jen draft, lidi kteří tomu rozumí to v diskuzi opraví a v tištěné podobě vyjde vše jak má být.

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
Martin  |  26. 08. 2004 09:32

Sakra. Uz sem zadne opravy nenapisu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
miroslav.kucera  |  26. 08. 2004 07:41

Veta pro zaramovani

"Koneckonců i HTML soubory jsou skripty, o jejichž provedení se stará webový server a vrací je uživatelům v podobě internetových stránek."

Souhlasím  |  Nesouhlasím  |  Odpovědět
zd  |  26. 08. 2004 11:58

jo to je stejne dobra hlaska jako sem videl v hospode tabulku s:
"zakaz poslouchani verejne reprodukovane hudby" :))

Souhlasím  |  Nesouhlasím  |  Odpovědět
paja  |  26. 08. 2004 04:12

Zbytecny clanek. Skoda casu autora i ctenaru.

Souhlasím  |  Nesouhlasím  |  Odpovědět
ondrej  |  26. 08. 2004 02:52

Me to cely prijde jak nejaka seminarni prace studenta predmetu Uvod do programovani a ty chyby jsou asi na stejny urovni

Souhlasím  |  Nesouhlasím  |  Odpovědět
vladimir  |  26. 08. 2004 13:37

no spis slohovka na zakladni skole :)...a dostal by prinejlepsim za 3 :)

Souhlasím  |  Nesouhlasím  |  Odpovědět
Martin  |  26. 08. 2004 02:31

* Strojový kód není assembler.
* Úkolem preprocesoru není soubory spojit do jednoho.
* Téměř finální verze spustitelného programu je výsledkem generace kódu (dělá jí generátor kódu), nikoliv sémantická analýzy (analyzátor analyzuje).
* Pěkný screenshot
* Úkolem linkeru je spojit moduly vytvořené generátorem kódu s tím, že vyřeší odkazy na symboly (funkce, metody, externí globální proměnné). To, že nějaký linker dělá mj. to, že "bundluje" obrázky do .dll se nedá zobecnit na definici - obecně je to úkol pro program určený k archivaci zdrojů programu (třeba JAR v Javě).

* Ten seznam IDE by si opravdu zasloužil rozšířit (z mých oblíbených např. kdevelop, quanta).

Jestli jsou HTML soubory "skripty, o jejichž provedení se stará webový server a vrací je uživatelům v podobě internetových stránek", tak co jsou potom "internetové stránky". Nebylo tím třeba myšleno, že HTML soubory mohou obsahovat Server Side Includes a podobné věci?

Souhlasím  |  Nesouhlasím  |  Odpovědět
Janek Wagner  |  27. 08. 2004 11:04

Když si vzpomenu, jak jsem zadával před skoro třiceti lety instrukce tlačítky bit po bitu... Jan Polzer je příliš mladý na rozlišení strojového kódu a assembleru

Souhlasím  |  Nesouhlasím  |  Odpovědět
Janko Hrasko  |  26. 08. 2004 01:29

Uplne suhlasim s tuto kolegom Molom a dovolil by som si dodat, ze napisat clanok o programovacich jazykoch a nespomenut JAVU - tak to je pekna nevedomost. A samozrejme vyvojove IDE prostredie ECLIPSE.

Souhlasím  |  Nesouhlasím  |  Odpovědět
prg  |  26. 08. 2004 08:09

Co to je Eclipse?

takovej blud jsem nikdy neslyšel

ještě zapoměli na .NET a C#, což je velký mezník v oblasti programování:

Tato platforma je portovaná na Linux i MS Windows  

Prosím, tentokrát nevyvolávám flameware, jen chci upozornit na na to, že díky frajerům z mono-projektu (nyní Novel) nutí přemýšlet zatrvzelé příznivce MS i jinak.

Souhlasím  |  Nesouhlasím  |  Odpovědět
x  |  26. 08. 2004 08:51

Az na to, ze ta prenositelnost je tak trochu sporna, nemyslis? Nikdy nebude takova jako je u Javy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Marian  |  26. 08. 2004 09:53

K Jave asi toto:

Saying JAVA is good because it works on all OSes is like saying anal sex
is good because it works on all genders.

Souhlasím  |  Nesouhlasím  |  Odpovědět
usáma husajn  |  26. 08. 2004 10:54

 LOL, ale v podstatě je to pravda, néé?

Souhlasím  |  Nesouhlasím  |  Odpovědět
00,0,,  |  26. 08. 2004 15:01

Write once, debug everywhere...

Souhlasím  |  Nesouhlasím  |  Odpovědět
Kachlik  |  26. 08. 2004 19:01

Přenositelnost .NETu mezi platformami je potenciálně ještě vyšší než u Javy - s tím, že už dnes je přenositelný mezi různými jazyky. Z toho, že si migraci .NET na jiné platformy Microsoft nechává jako strategickou zálohu byste neměl usuzovat na její možnosti.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Martin  |  26. 08. 2004 20:41

Toto je bod, kdy praxe jde naprosto jiným směrem než teorie. Microsoft chce, aby .NET byl přenosný -- ehm, aby přenesl vývojáře na Windows. Migraci .NET na jiné platformy Microsoft nechává jako strategickou zálohu, která ale nemá být nikdy realizována. Je to jen tah, jak nalákat lidi.

Bohužel praxe .NET programování je tu a tam připojit dll knihovnu, tu a tam použít různé nespecifikované věci a portovatelnost je v ****.

Pánů z Mona si samozřejmě vážím, ale bojím se, že tím jen odvádí službu pro MS.

Souhlasím  |  Nesouhlasím  |  Odpovědět
x  |  27. 08. 2004 09:24

Prenostitelnost .NETu je pochopitelne podstatne nizsi nez u Javy, je videt, ze se v tom vubec nevyznate. To, ze muzete psat ve vice jazycich neznamena, ze je cela platforma prenositelna. Podivejte se na nektere jmenne prostory a zjistite, ze .NET nebude prenositelnej skoro vubec. Jak preneste tak "vysoce systemove zavisly" veci, jako jsou prave DLL knigovny, registry u Windows a spoustu dalsich...

Nejdriv si o tom aspon neco prectete a pak teprve vychvalujte Microsoft.

Ale, kdyz vynecham prenostitelnost, tak musim uznat ze .NET je lepsi nez Java..

 

 

Souhlasím  |  Nesouhlasím  |  Odpovědět
.md  |  27. 08. 2004 11:53

osobne si myslim, ze prenositelnost mezi vsemi operacnimi systemy nebylo to po cem microsoft touzil s .net
samozrejme porty na unixove systemy existuji (viz referncni port na freebsd primo od microsoftu, ci open source projekt mono)
dle meho se microsoft pokusil sjednotit sve systemy, tedy windows32, windows64 a windowsCE, coz ruzne platformy jistojiste jsou
jine ambice bych .net nikdy nepripisoval
strach o zavislost na ruzne dll bych nemel, vzdyt se spoustou z nich si treba linux uz poradit umi - linspire atd
takze uvidime kam se to vsechno vlastne pohne
(btw me se .net libi hodne, neni nejdokonalejsi, ale ve spouste veci se poucil - napriklad z chyb javy - a dokazal je vylepsit; je to dalsi krok dopredu, je jasne, ze ne posledni, uvidime jak bude reagovat java (release 1.6 a dalsi))

Souhlasím  |  Nesouhlasím  |  Odpovědět
Danik  |  26. 08. 2004 10:48

To jako, mistre, myslite vazne, ze nevite, co je eclipse????

Souhlasím  |  Nesouhlasím  |  Odpovědět
deda.jabko  |  26. 08. 2004 19:46

boze! uvedomte si z ceho C# vychazi! ze by to byla java! ano je to tak! a je zajimave, ze java uz je nekolik let plne prenositelna... nevim pracoval jsem nejakou dobu s monem i kdyz na i386 slusna prace! porad tomu chybi treba slusny JIT prekladac pro PowerPC a Sparc... nebo existuji nekompatibility mezi knihovnami tu porad jsou.... takze s tou prenostielnosti bych to tak moc neprehanel...

ten meznik tu uz byl o nekoli let driv....

Souhlasím  |  Nesouhlasím  |  Odpovědět
px  |  26. 08. 2004 23:40

Prave na PowerPC mi mono chodi (az na vynimky, pun intended), ale mint nechce a nechce. Prenositelnost je samozrejme blbost, staci pouzit PInvoke alebo v aplikacii pre System.Form WndProc a prenositelnost je v haji. Co si samozrejme zastanci takychto rieseni neuvedomuju a potom sa cuduju, ze to na inom systeme nebezi.

Souhlasím  |  Nesouhlasím  |  Odpovědět
mol  |  26. 08. 2004 01:10

tedy to je hodně lidově napsaný článek
pominu drobné nepřesnosti, ale dovolil bych si upozornit, že Python je o 10 let mladší, že -- jakkoli je spoluautor oné známé knihy -- Kerninghan není uváděn jako autor Cčka.

nicméně největší úlet je poznámka o tom, že HTML soubory jsou skripty zpracovávané na serveru

víte, to, že je článek určen laikům, neznamená, že ho může psát kdokoli

Souhlasím  |  Nesouhlasím  |  Odpovědět
akai  |  26. 08. 2004 10:24

Máš pravdu, až na toho Kerninghana, opravdu když jsem začínal programovat /v roce 1989, ještě na 8-bitech TNS/, tak učebnice začínala tím, že Kerninghan a Ritchie si pro programováni UNIXU vyvinuli nový programovací jazyk a nazvali ho C. /Takto jsem to četl a nehádám se že to je nebo není pravda./

Souhlasím  |  Nesouhlasím  |  Odpovědět
mol  |  26. 08. 2004 12:44

Nic proti, ale myslím si, že dnes (nejen) díky internetu máme podstatně přesnější informace než v roce 1989. Kernighan není uváděn jako spoluautor Cčka ani v té slavné učebnici, co s Ritchiem napsal. Těžko najít důvěryhodnější zdroj, než je on sám . To už bývá spíš uváděn Ken Thompson, jako autor přímého předchůdce, jazyka B.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Danik  |  26. 08. 2004 11:02

No, rek bych ze neni napsanej lidove! Autor, rek, bych nasel na inetu nekolik zdroju o programovani a to, cemu rozumel (moc toho nebylo) zkompiloval do tohoto blabolu a  aby vypadal odborneji, tak pridal jeste par veci, o kerejch nema ani paru. Opravdu nevim, proz opomnel moji oblibenou Javu! Mohl se take zminit o mych neoblibencich C# a spol.... No proste No comment. To je typ clanku, kerej kdyby nebyl, tak je to lepsi!

Souhlasím  |  Nesouhlasím  |  Odpovědět
x0rph  |  26. 08. 2004 11:32

Souhlas, jako spoluautor C byva obcas uvaden pouze Kernighan :) Buhvi, proc tam vsichni cpou to N navic.

Souhlasím  |  Nesouhlasím  |  Odpovědět
Zasílat názory e-mailem: Zasílat názory Můj názor