Awọn kọmputa, Eto eto
Awọn itumọ jẹ ... Orisi awọn onitumọ. Yi pada ki o si ṣafihan eto naa
Awọn eto, gẹgẹbi awọn eniyan, nilo onitumọ tabi onitumọ lati ṣe itumọ lati ede kan si miiran.
Awọn agbekale ipilẹ
Eto naa jẹ apẹẹrẹ ti o jẹ ede ti awọn iṣiro: i → P → P (i). Olutumọ jẹ eto ti o gba input P ati diẹ ninu awọn data input data x. O ṣe P lori x: I (P, x) = P (x). Awọn o daju pe o wa ni oludasile onitumọ kan ti o le ṣe gbogbo awọn eto ti o ṣeeṣe (eyi ti o le wa ni ipoduduro ninu eto ti o ṣe deede) jẹ awari pupọ ti o ṣe pataki ti Turing.
Onisẹ jẹ onitumọ ti eto ni ede ẹrọ. O maa n gbowolori lati kọ awọn itumọ fun awọn ede giga, nitori naa wọn ṣe itumọ sinu fọọmu ti o rọrun lati ṣe itumọ.
Diẹ ninu awọn onirũrọ ti ni awọn orukọ ajeji pupọ:
- Awọn eto tumọpọ ti n pejọpọ ni adapo sinu ede ẹrọ.
- Oniṣiro naa tumọ lati ede ti o ga ni ede kekere.
Onitumọ kan jẹ eto ti o gba eto kan ni ede S gẹgẹ bi ọna rẹ ati ki o fun eto ni T ni ọna ti wọn ni kannaa semantic: P → X → Ibeere. Eyi ni, ∀x. P (x) = Q (x).
Ti o ba ṣe itumọ gbogbo eto naa si nkan ti o tumọ, lẹhinna eyi ni a npe ni iṣaju ṣaaju ipaniyan, tabi akopo AOT. Awọn oludoti AOT le ṣee lo ni sisẹsẹ, eyi ti o jẹ igba ti apejọ kan, fun apẹẹrẹ:
Orisun koodu → Compiler (compiler) → Assembler code → Assembler (onitumọ) → Ṣiṣe ẹrọ ẹrọ → CPU (onitumọ).
Atilẹjade wẹẹbu tabi iṣamulo waye bi o ba jẹ pe apakan ninu eto naa ni itumọ nigbati awọn ẹgbẹ ti o ti ṣopọ ti pa. JIT-awọn atupọ ranti ohun ti wọn ti ṣe tẹlẹ, ki o maṣe tun tun koodu koodu tun pada ati lẹẹkansi. Wọn le paapaa ṣe akoso iṣeduro ati iṣipọ, ti o da lori ihuwasi ti agbegbe igbasẹ.
Ọpọlọpọ awọn ede gba ọ laaye lati ṣaṣe koodu lakoko iyipada ati ṣajọ koodu tuntun ni akoko asise.
Awọn ipo ti itumọ
Itumọ naa ni awọn ipo ti onínọmbà ati iyasọtọ:
Orisun koodu → Oluṣatunkọ → Agbekale agbekalẹ → Generator (synthesizer) → Àkọlé koodu.
Eyi jẹ nitori awọn idi wọnyi:
- Eyikeyi ọna miiran ko dara. Ọrọ ìtumọ ọrọ-ọrọ-ọrọ nìkan ko ṣiṣẹ.
- Aṣayan imọran to dara: ti o ba nilo lati kọ awọn itọka fun awọn orisun orisun M ati awọn ede N afojusun, o nilo lati kọ awọn eto ti o rọrun M + N nikan (semicompilers), kii ṣe M x N (awọn alatumọ ni kikun).
Sibẹsibẹ, ni iṣe, iṣeduro ti imọ-ọrọ jẹ gidigidi kii ṣe itọnisọna pupọ ati agbara lati bo gbogbo orisun ti o le fojuhan ati awọn ede afojusun. Biotilejepe diẹ ninu awọn ti wọn le sunmọ si eyi.
Awọn olutọto gidi lọ nipasẹ ọpọlọpọ awọn ipo. Nigbati o ba ṣẹda akoso ara rẹ, iwọ ko nilo lati tun gbogbo iṣẹ lile ti awọn eniyan ti ṣe tẹlẹ nigbati o ba ṣẹda awọn iwo ati awọn oniṣelọpọ. O le ṣe itumọ ede rẹ taara sinu JavaScript tabi C ati lo awọn irin-ṣiṣe JavaScript to wa tẹlẹ ati awọn oludari C lati ṣe isinmi. O tun le lo awọn ti wa tẹlẹ agbedemeji oniduro ati foju ero.
Igbasilẹ ti onitumọ
Onitumọ kan jẹ eto tabi ohun-elo imọ kan ninu eyiti awọn ede mẹta ṣe pẹlu: orisun, afojusun ati ipilẹ. Wọn le kọ ni T-fọọmu, fifi orisun si apa osi, afojusun naa ni apa ọtun, ati ipilẹ ni isalẹ.
Awọn oriṣi mẹta ti awọn olukopọ:
- Onitumọ kan jẹ apani-ara ẹni ti o ba jẹ pe orisun ede rẹ ṣe deede.
- Oniwakọ, ti ede ede ti o ni ibamu si ede mimọ, ni a npe ni olugbe ara ẹni.
- Onitumọ kan jẹ oluṣakoso agbelebu ti o ba ni ede ti o yatọ si ede ati ede ipilẹ.
Kini idi ti eyi ṣe pataki?
Paapa ti o ko ba ṣe akoso gidi, o dara lati mọ nipa ọna ẹrọ ti ẹda rẹ, nitori awọn agbekale ti a lo fun eyi ni a lo nibi gbogbo, fun apẹẹrẹ ni:
- Ṣiṣilẹ kika awọn ọrọ;
- ede yoowu ti to infomesonu;
- Awọn ile-iṣẹ kọmputa ti o gbooro;
- Awọn iṣoro ti o dara ju ti o ṣawari;
- Awọn iṣiro aworan;
- Awọn ede afọwọkọ;
- Awọn alakoso;
- Awọn ẹrọ foju;
- Awọn itumọ ẹrọ.
Ni afikun, ti o ba fẹ kọ awọn oniṣẹkọṣẹ, awọn akọle, awọn agbọn agbara, awọn aṣoju, tabi awọn profaili, o nilo lati lọ nipasẹ awọn igbesẹ kanna bi nigbati o ba ṣe akopọ.
O tun le kọ bi o ṣe le kọ awọn eto sii daradara, niwon ṣiṣẹda onitumọ kan fun ede tumọ si oye ti o dara julọ nipa awọn ẹtan ati awọn aifọwọyi. Ko eko awọn agbekale gbogbogbo ti itumọ jẹ ki o ṣee ṣe lati di oluṣeto ede ti o dara. Ṣe o ṣe pataki, bi o ṣe wuwo ede naa, ti o ko ba le ṣe iṣiṣe daradara?
Imọye ti o gbooro julọ
Ẹrọ imọ-ẹrọ npo ọpọlọpọ awọn oriṣiriṣi awọn agbegbe ti imọ-ẹrọ kọmputa:
- Ilana ede ti o jọwọ: ilo ọrọ, sisọ, agbara;
- Išọpọ Kọmputa: awọn itọnisọna ẹkọ, RISC tabi CISC, pipẹpọ, awọn kernels, awọn aago aago, ati bẹẹbẹ lọ;
- Awọn ero ti awọn eto siseto: fun apẹẹrẹ, iṣakoso ọkọọkan, idaniloju ipaniyan, isọdọtun, igbasilẹ, iṣeduro iṣẹ, modularity, mimuuṣiṣepo, eroja aworan, ami-ọrọ, awọn idiwọn, awọn abọkule, awọn awoṣe, irujade ọja, awọn ami-ẹri, awọn akọsilẹ, awọn okun, awọn ọmọde, leta, awọn amugbooro , Wildcards, awọn iṣọrọ deede, iranti idunadura, ilẹ-iní, polymorphism, awọn ipo paramita, ati bẹbẹ lọ;
- Awọn ajeji awọn ede ati awọn ẹrọ iṣiri;
- aligoridimu ati awọn data ẹya: deede expressions, Ìbòmọlẹ aligoridimu, eya aligoridimu, ìmúdàgba siseto, ikẹkọ;
- Awọn ede siseto: syntax, semanticics (stic and dynamic), atilẹyin fun awọn ipilẹṣẹ (igbekale, OOP, iṣẹ, logbon, akopọ, iṣiro, atọka aworan);
- Ṣiṣẹda software (awọn oludasile, bi ofin, nla ati eka): sisọpọ, fifọ, sisọpọ, awọn apẹẹrẹ API, tun lo, mimuuṣiṣẹpọ.
Ṣiṣẹda apanilenu
Diẹ ninu awọn iṣoro ti o dide nigbati o ba ndagbasoke gidi kan:
- Awọn iṣoro pẹlu ede orisun. Ṣe o rọrun lati ṣajọ o? Njẹ aṣoju kan wa? Bawo ni a ṣe ṣakoso awọn oniruuru? Ṣe awọn ikawe wa?
- Oniṣiropọ akopọ gba koja: nikan- tabi ọpọ-kọja?
- Iwọn ti o fẹ julọ. Itọka aiyara ati alaimọ ti eto naa pẹlu kekere tabi ko dara julọ le jẹ deede. Imọye ti o ga julọ yoo fa fifalẹ awọn apanilerin, ṣugbọn koodu ti o dara julọ ni akoko asiko isise le jẹ tọ.
- Iwọn aṣiṣe aṣiṣe ti a beere. Ṣe onitumọ naa le duro lori aṣiṣe akọkọ? Nigba wo ni o yẹ ki o da? Ṣe o gbẹkẹle oniṣiro lati ṣe atunṣe awọn aṣiṣe?
- Wiwa ti awọn irinṣẹ. Ti ede idaniloju ko ba kere julọ, ẹrọ-atupẹ ati oluṣakoso olupada jẹ dandan. Awọn ẹrọ iyatọ tun wa ti awọn oniṣayan ọja koodu, ṣugbọn wọn ko wọpọ.
- Iru koodu afojusun fun iran. O yẹ ki o yan lati mimọ, ti o pọju, tabi ti o ṣaṣe koodu iṣedede. Tabi, kọ akọsilẹ kan ti o ṣẹda awọn agbedemeji agbedemeji gbajumo, bii LLVM, RTL, tabi JVM. Tabi ṣe iyipada lati orisun si koodu orisun ni C tabi JavaScript.
- Awọn kika ti koodu afojusun. O le yan ohun ijọ ede, a to šee ẹrọ koodu, ẹrọ koodu iranti image.
- Perenatselivanie. Pẹlu ọpọlọpọ awọn oniṣelọpọ o dara lati ni apakan ipinnu wọpọ kan. Fun idi kanna, o dara lati ni monomono kan fun ọpọlọpọ awọn ọna titẹ sii.
Iṣawepọ Oniwasu: Awọn ohun elo
Awọn wọnyi ni awọn ẹya-ara ti iṣẹ akọkọ ti onitumọ ti o ṣe koodu koodu ẹrọ (ti eto iṣẹ ba jẹ eto C tabi ẹrọ iyọdaṣe, lẹhinna a ko nilo awọn igbesẹ pupọ):
- Eto titẹ sii (sisanwọle awọn ami) ti nwọ scanner (oluṣakoso lexical), ti o yi i pada sinu ṣiṣan ti awọn ami.
- Parser (parser) ṣe itumọ igi ti a ti ṣawari ti abuda lati wọn.
- Atọwe-aṣayan itọsi decomposes awọn alaye itumọ ati ṣayẹwo awọn apa ti igi fun awọn aṣiṣe. Gẹgẹbi abajade, a ṣe itumọ awọn aworan ti o tọmọ ni - igi ti a ti ṣawari pẹlu syntax pẹlu awọn afikun ohun-ini ati awọn itọkasi ti a fi sori ẹrọ.
- Awọn ọna asopọ alakoso agbedemeji n ṣe itọsi iwọn igbasilẹ kan (awọn idin ti wa ni akopọ sinu awọn bulọọki akọkọ).
- Aṣayan ominira ti ominira ti ẹrọ-iṣẹ ṣe awọn agbegbe mejeeji (laaarin ipilẹ agbegbe) ati agbaye (fun gbogbo awọn bulọọki) ti o dara julọ, daadaa ti o wa laarin awọn alailẹgbẹ. Dinku koodu lasan ati simplifies iṣiroye. Abajade jẹ iyatọ ti o ti ṣatunṣe.
- Ošuwọn koodu iyasọtọ ṣajọpọ awọn ohun amorindun ipilẹ si koodu ila-laini pẹlu gbigbe iṣakoso, ṣiṣẹda faili faili ni ipopọ pẹlu awọn oluṣakoso ifura (o ṣee ṣe aiṣe).
- Oluṣeto oluṣeto alafọdage olominira-ẹrọ nṣe ipinnu iranti laarin awọn iyokuro ati awọn eto iṣeto. Yipada eto naa ni apejọpọ si olutọju gidi pẹlu lilo ti o dara fun pipẹgbẹ.
Ni afikun, awọn igbasilẹ wiwa aṣiṣe ati awọn oluṣakoso tabili aami jẹ lilo.
Atọjade ti o ni imọran (ṣawari)
Scanner n yi iyipada ti awọn ohun kikọ ti koodu orisun sinu ṣiṣan ti awọn ami, yiyọ awọn aaye, awọn alaye ati sisọ awọn macros.
Awọn oluwadi nigbagbogbo nni awọn iṣoro bii gbigba tabi gbigba sinu iforukọsilẹ, awọn ifunni, awọn kikọ sii laini ati awọn alaye ti o jẹ idaniloju.
Awọn aṣiṣe ti o le waye lakoko aṣoju a npe ni lexical ati ki o ni:
- Awọn lẹta ti ko wa ninu ahbidi;
- Ti kọja nọmba nọmba ninu ọrọ kan tabi okun;
- Ko si ohun kikọ ti a ti pa tabi okun gangan;
- Opin faili naa ninu ọrọ naa.
Ṣiṣayẹwo ti iṣeduro (sisọ)
Parser naa yipada ni ọna awọn ami sinu igi syntaxu alabọde. Igbasoke igi kọọkan ti wa ni fipamọ bi ohun pẹlu awọn orukọ ti a darukọ, ọpọlọpọ ninu awọn ti o jẹ ara ti ara wọn. Ko si awọn waye ni ipele yii. Nigbati o ba ṣẹda oludari, o yẹ ki o fiyesi si ipele ti isọdi ti awọn ẹkọ-ẹkọ (LL tabi LR) ati lati wa boya awọn ofin kan wa fun yiyọ iṣan. Diẹ ninu awọn ede nilo iṣiro sẹẹli.
Awọn aṣiṣe ti o pade ni ipele yii ni a npe ni awọn aṣiṣe ti iṣeduro. Fun apẹẹrẹ:
- K = 5 * (7 - y;
- J = / 5;
- 56 = x * 4.
Imọọtọ ti ara ẹni
Nigba ti atunmọ onínọmbà lati ṣayẹwo awọn permissibility ti ofin ati láti ẹya ara ti awọn parse igi (gbigba itọkasi awọn orukọ sii isẹ fun ifisinu iru awọn iyipada, ati ki o bẹ lori. D.) Fun lara awọn atunmọ awonya.
O han ni, ṣeto awọn ofin gbigba fun awọn ede oriṣiriṣi yatọ. Ti a ba ṣapọ awọn ede Java Java, awọn atọwe le wa:
- Awọn ikede pupọ ti ayípadà kan laarin agbara rẹ;
- Itọkasi si ayípadà kan ṣaaju ki o to ikede rẹ;
- Ifika si orukọ ti a ko peye;
- Ṣẹda awọn ofin wiwọle;
- Opo nla tabi nọmba ti ko ni iye ti awọn ariyanjiyan nigba pipe ọna;
- Iru iṣiro.
Ọdun
Awọn iran ti awọn koodu agbedemeji funni ni irisi sisan ti a da awọn tuples sinu sinu awọn bulọọki ipilẹ.
Iwọn koodu n pese koodu gangan ẹrọ. Ni awọn oludasile ti ibile fun awọn ẹrọ RISC-ẹrọ, ipele akọkọ ti ṣẹda apejọ kan pẹlu nọmba ailopin ti awọn aami iyasọtọ. Fun awọn ẹrọ CISC, eyi kii ṣe ṣẹlẹ.
Similar articles
Trending Now