Diskusia: Jak fungují dnešní jazyky?
Tvůrce
Zobrazené 13 správy z 13.
Na prispôsobenie obsahu a reklamy, poskytovanie funkcií sociálnych médií a analýzu našej návštevnosti používame súbory cookie. Informácie o tom, ako náš web používaš, zdieľame s našimi partnermi pre sociálne médiá, inzerciu a analýzy. Partneri môžu tieto údaje kombinovať s ďalšími informáciami, ktoré si im poskytol alebo ktoré získali v dôsledku toho, že používaš ich služby.
Používame nevyhnutné cookies na fungovanie webu a s tvojím súhlasom aj analytické a marketingové cookies.
Zaisťujú základné funkcie, bezpečnosť a služby, ktoré si si vyžiadal. Nedajú sa vypnúť.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Prevádzka webu, relácia, prihlásenie a uloženie nastavenia cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relácia až 1 rok |
| Google Tag Manager | Správa značiek a načítanie meracích nástrojov webu. | Žiadne | Neukladá sa | |
| Google Fonts | Načítanie typografie webu. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa | |
| Google Hosted Libraries | Načítanie potrebných knižníc a štýlov webu. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa | |
| Google reCAPTCHA | Ochrana formulárov a webu pred zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relácia až 180 dní | |
| YouTube | Prehrávanie vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relácia až trvalé úložisko | |
| Vimeo | Vimeo | Prehrávanie vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relácia až 2 roky |
| Facebook Login | Meta | Prihlásenie pomocou účtu tretej strany. | Úložisko riadené poskytovateľom | Relácia až 1 rok |
| GoPay | GoPay | Spracovanie používateľom vyžiadanej platby. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa |
Pomáhajú nám porozumieť používaniu webu a zlepšovať ho.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| Google Analytics 4 | Meranie návštevnosti a používania webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Meranie návštevnosti a používania webu. | _clck, _clsk, _cltk | Relácia až 1 rok |
Slúžia na meranie kampaní, personalizáciu reklamy a marketingovú komunikáciu.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| Google Ads | Meranie kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relácia až 90 dní | |
| Meta Pixel | Meta | Meranie kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Meranie kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relácia až trvalé úložisko |
| LinkedIn Insight | Meranie kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relácia až 1 rok | |
| Ecomail | Ecomail.cz | Meranie kampaní, reklama a remarketing. | ecmid, Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa |
| Atribúcia kampaní ITnetwork | ITnetwork | Priradenie návštevy a objednávky ku kampani. | campaign_clid[*], user_session_context | Až 1 rok |
Úplně první programy byly ve strojovém kódu. Bylo to zdlouhavé a pracné. Proto v tomto strojovém kódu vývojáři napsali první Assembler, který ze symbolického zápisu udělal potřebný strojový kód. V Assembleru pak napsali kousek vyššího jazyka, např. Fortranu. V něm dopsali další kus Fortranu. Podobně to bylo i s C. No a v C byly už napsány další jazyky.
Pro psaní parserů se často používá nějaká nadstavba C, např. Flex nebo Bison, ale můžeš si ho napsat klidně v C#. Není to obtížné a troufám si tvrdit, že jsi to už někdy dělal. Jenom sis to neuvědomil. Vlastně už ve chvíli, kdy použiješ switch na vstupní data a podle nich se rozhoduješ, jak budeš dál pokračovat.
"Dobrý den,
snažím se pochopit, jak fungují vyšší jazyky. Tedy teorie je jasná a
snadná. Je jedno, co bude tam "nahoře" - prostě si vytvořím klíčová
slova a pravidla. Jenže jak ta pravidla aplikovat? Jak generovat strojový kód
- nemohu přeci přiřadit tomu a tomu uskupení ten a ten příkaz/y ve
strojovém kódu - nebo ano? "
Tohle je docela slozite tema, hodne zjednodusena a nepresna verze, jak to muze
vypadat: rozparsujes kod na symboly reprezentujici ten kod, pak si to podle
pravidel rozdelis na mensi casti, ktery umis prevest - treba prirazeni do
promenny, provedeni aritmeticke operace, volani funkce atd. a z nich pak
vygenerujes spustitelnej soubor - symboly nahradis strojovym kodem.
"Pokud ano, tak mne zaráží, jak může mít jazyk vlastní kompilátor -
nezaložený na existujícím jazyku... Tedy v čem vůbec bude parser - ten
přeci musí být v existujícím jazyku - a jeho parser vznikl jak?"
Prvni byl napsan v strojovem kodu - strojovy kod parser ani kompilator
nepotreboval, rovnou provadel instrukce zadane v podobe, ktera pro nej je
citelna - stejne tak muzes dneska na pc programovat tim, ze si v poznamkovym
bloku otevres novy soubor, pojmenujes ho jako .exe, a zacnes v hex modu psat
bajty odpovidajici prislusnemu opkodu strojoveho kodu (ale je to pekne naprd
).
"Byl bych moc rád, kdyby mi to někdo odhalil... Docela si to dovedu
představit - jen nevím, jak bych napsal ta pravidla - a v čem psát parser -
jinak to už je celkem dominový efekt... Děkuji."
Parser muzes napsat v cemkoliv, klidne muzes napsat kompilator pro assembler v
c#, v tom ti nic nebrani, ty jen z textu delas strojovy instrukce, tedy
posloupnost nejakych bajtu.
Já jsem kdysi ve strojáku programoval a přestože to není složité,
už bych se k tomu nevracel. Na každou blbost je totiž potřeba mračna
kódu a jenom vykreslit na obrazovce zarovnané znaky tě zpotí i na zadku.
Svým způsobem máš pravdu, že určitému příkazu ve vyšších
jazycích odpovídá
určité množství strojového kódu, jenže toho kódu je prostě moc.
Proto taky vyšší jazyky vznikly. Když musíš udělat hodně práce,
začneš tak,
že si na to napíšeš program. A psát program je hodně práce..
Takže skutečně přiřazuji strojový kód - to je to co mně přišlo divné - když je strojový kód tak specifický - výsledek nepřenositelný jinam...
Nuže mám tedy výstup - strojový kód - nebo ještě interpret a z něj strojový kód - viz. C# a Java - a ten spustím jak?
Jo a vlastně si to parsování mohu usnadnit Regex - ne? 
Teď si říkám, že bude blbost psát parser v C# - bude lepší
multiplatformní jazyk ne? Jinak bych musel psát tisíce parserů... 
Dnešní překladače už strojový kód moc nedělají. Program většinou zkompilují do kódu nějakého virtuálního procesoru - bajtkód. Pro každou platformu se pak napíše interpretr tohoto bajtkódu nebo JIT kompilátor. Takový program je pak přenositelný.
Než se do toho pustím, chtěl bych se zeptat, zda by se Vám to vůbec líbilo. Jmenoval by se SAM. Zrušil bych dělení na namespace, třídy, struktury,... Bral bych vše jako souhrn příkazů - commands - zkratka cmd:
add // přidání externích souborů
{
System;
System.Windows;
}
internal cmd Name : System.Web // dědění - navíc použit modifikátor
{
var // blok definování proměnných
{
int i = 6;
}
private var // proměnné s modifikátorem...
{
}
private cmd Name
{
} => 6; // návrat
private cmd Name : System.Net
{
cns(parametry) //konstruktor
{
var
{
int // blok proměnných stejného typu
{
files = 5;
names = 8;
}
}
}
}
edt cmd Who NewName // úprava existujícího bloku - Who -> upravovaný
{
prp // vlastnosti
{
int Folders : <= hodnota { } => hodnota // set, možný blok, get
float Points : modifikátor <= hodnota 0 modifikátor => hodnota // bez bloku s modifikátory
Point // blok vlastností stejného typu
{
Name; // abstraktní
Name : <= value 0 => value // standart - bez bloku
}
}
}
}
Kde za Name si pochopitelně dáte jméno bloku...
Nejsem si jist, jestli má smysl zakázat možnost editace - ale kdyžtak
bych udělal něco jako uned (uneditable). Také si pohraji s maximálním
počtem vnoření... 
Cyklus by byl jediný - cycle - bral by možnosti:
příkaz; bool; příkaz
bool; příkaz
bool
ddd in xxx
Kompilátor se pokusím udělat formou virtuálního stroje - viz. C#, Java...
Raději bych se držel už zavedených klíčových slov import, function, construct, ... Zkracování na 3 znaky ničemu neprospěje. Vím, jak mnozí nadávají na pythonský "def".
Na můj vkus tam máš příliš mnoho složených závorek. Zkus je všechny vypustit.
Začínat obecným programovacím jazykem nepovažuji za nejvhodnější. Zkus něco speciálnějšího, například generátor tiskových sestav nebo naopak zpracování dat z GPS či meteostanice. Můžeš pak zkusit napsat Forth nebo Lisp.
Zobrazené 13 správy z 13.