{"id":33886,"date":"2019-10-31T21:55:15","date_gmt":"2019-10-31T18:55:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/matryoshka-si-slojnaya-sistema-yazyka-programmy\/"},"modified":"2019-10-31T21:55:15","modified_gmt":"2019-10-31T18:55:15","slug":"matryoshka-si-slojnaya-sistema-yazyka-programmy","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","title":{"rendered":"Matrioska C. Sistema a strati del linguaggio di programmazione","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Provate a immaginare la chimica senza il Sistema Periodico di Mendeleev (1869). Quanti elementi bisognava tenere a mente, per di pi\u00f9 in ordine casuale... (All'epoca erano 60.)<\/p>\n<p>Per questo \u00e8 sufficiente pensare a uno o pi\u00f9 linguaggi di programmazione alla volta. Le stesse sensazioni, lo stesso disordine creativo. <\/p>\n<p>Ora possiamo rivivere le emozioni dei chimici del XIX secolo, quando ricevettero tutte le loro conoscenze, e un po' di pi\u00f9, in un'unica Tabella Periodica. <\/p>\n<p><img decoding=\"async\" alt=\"Matrioska C. Sistema a strati del linguaggio di programmazione\" src=\"\/wp-content\/uploads\/2019\/05\/15ce1538e152aad5fcd683fe7fcd96c0.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIl libro \"Matryoshka C. Sistema stratificato del linguaggio di programmazione\" presenta tutte le unit\u00e0 del linguaggio C come su un palmo della mano. Questo consente di ordinarle, correggere informazioni obsolete e persino chiarire il concetto stesso di programma. <\/p>\n<p>Oggi le informazioni sulla programmazione necessitano di sistematizzazione ancora pi\u00f9 delle sostanze chimiche di 150 anni fa. <\/p>\n<p>La prima necessit\u00e0 \u00e8 l'insegnamento. Mendeleev inizi\u00f2 a creare il suo sistema quando si trov\u00f2 di fronte al dilemma di quale elemento cominciare a insegnare: O, H, N, He, Au\u2026 Per lui era pi\u00f9 semplice: insegnava chimica ai migliori - gli studenti dell'universit\u00e0 di San Pietroburgo. Mentre la programmazione \u00e8 gi\u00e0 insegnata a scuola e presto inizieranno a insegnarla anche all'asilo. <\/p>\n<p>La seconda necessit\u00e0 \u00e8 un approccio scientifico. Con il Sistema Periodico sono stati scoperti nuovi elementi e corrette informazioni sugli elementi esistenti. Ha aiutato nella creazione del modello atomico (1911). E cos\u00ec via. <\/p>\n<p>La terza necessit\u00e0 \u00e8 la chiarificazione del concetto di programma. <\/p>\n<p>La programmazione moderna \u00e8 in parte bloccata negli anni '50 del XX secolo. All'epoca i programmi erano semplici, mentre le macchine e i linguaggi di programmazione erano complessi, quindi tutto ruotava attorno a macchine e linguaggi. <\/p>\n<p>Ora \u00e8 tutto l'opposto: i programmi sono complessi e primari, i linguaggi sono semplici e secondari. Questo \u00e8 chiamato approccio applicato, che a tutti sembra familiare. Ma studenti e sviluppatori continuano a essere persuasi che tutto rimane uguale. <\/p>\n<p>Questo ci riporta alla prima lezione del privato-docente Mendeleev. Cosa dire agli studenti del primo anno? Dove si trova la verit\u00e0? Ecco la questione. <\/p>\n<p>Il libro \"Matryoshka C. Sistema stratificato del linguaggio di programmazione\" offre la sua risposta. Inoltre, \u00e8 rivolto non solo agli studenti, ma anche ai programmatori preparati, poich\u00e9 sono proprio loro che devono cercare la verit\u00e0 e ribaltare la propria visione del mondo, cio\u00e8 noi. <\/p>\n<p>Segue un breve riassunto del libro. <\/p>\n<h2>1. Introduzione<\/h2>\n<p>\nNel 1969 \u00e8 stato creato il linguaggio C, che \u00e8 diventato un linguaggio di programmazione fondamentale e continua ad esserlo da 50 anni. Perch\u00e9 \u00e8 cos\u00ec? In primo luogo, perch\u00e9 C \u00e8 un <i>linguaggio applicativo<\/i> , che conferisce al programma un <i>aspetto umano<\/i> invece di <i>meccanico<\/i>. Questo traguardo \u00e8 stato consolidato dai linguaggi della famiglia C: C++, JavaScript, PHP, Java, C# e altri. In secondo luogo, \u00e8 un linguaggio conciso e bello. <\/p>\n<p>Tuttavia, il linguaggio C \u00e8 spesso confuso con l'assemblatore, complicando e distorcendo cos\u00ec la sua percezione. L'altro estremo \u00e8 l'imposizione di una qualche \"filosofia\" aggiuntiva al linguaggio: procedurale, orientata agli oggetti, funzionale, compilata, interpretata, tipizzata e cos\u00ec via. Questo aggiunge emozione, ma non aiuta a descrivere meglio il linguaggio. <\/p>\n<p>La verit\u00e0 si trova nel mezzo, e per il linguaggio C sta rigorosamente a met\u00e0 tra la percezione filosofica e quella meccanica. <\/p>\n<p>Il linguaggio C non \u00e8 autonomo, si conforma al linguaggio scritto comune e contemporaneamente controlla il linguaggio dell'assemblatore. Questa condizione \u00e8 descritta da <i>Il modello linguistico del programma<\/i>, secondo il quale il programma \u00e8 suddiviso in tre tipi subordinati: linguistico, codificato, comandi. Il linguaggio C si occupa del secondo, quello codificato. <\/p>\n<p>Definendo il posto del linguaggio nel programma, si possono ordinare le informazioni su di esso, il che crea <i>Un sistema stratificato del linguaggio del programma<\/i>, che rappresenta il linguaggio C nello spirito del sistema periodico di Mendeleev \u2014 su un'unica pagina. <\/p>\n<p>Il sistema \u00e8 costruito tenendo conto della <i>comunanza dei linguaggi applicativi<\/i>, derivante dalla loro subordinazione linguistica. Un insieme di unit\u00e0 Matrioska in C consente di descrivere e confrontare diversi linguaggi, creando una serie di Matriosche: C++, PHP, JavaScript, C#, MySQL, Python e cos\u00ec via. \u00c8 giusto e corretto che diversi linguaggi siano descritti in unit\u00e0 del linguaggio fondamentale. <\/p>\n<h2>2. CAPITOLO 1. Il modello linguistico del programma. C comprensibile<\/h2>\n<p>\nNel primo capitolo \u00e8 presentato <i>il modello linguistico del programma<\/i>, che riflette l'approccio applicativo. Secondo questo modello, il programma ha tre modi sequenziali ovvi: <\/p>\n<ol>\n<li>linguistico \u2014 la parola diretta del programmatore che risolve un compito, <\/li>\n<li>codificato \u2014 la codifica della soluzione in forma matematica nel linguaggio C (o in qualsiasi altro)<\/li>\n<li>e comandi \u2014 i comandi diretti della macchina. <\/li>\n<\/ol>\n<p>\nIl modello linguistico spiega perch\u00e9 C sia un linguaggio semplice e comprensibile. C \u00e8 costruito a immagine e somiglianza del linguaggio umano che conosciamo. <\/p>\n<p>Il primo tipo di programma \u00e8 la narrazione diretta del programmatore. Il discorso corrisponde al pensiero umano. Attraverso il linguaggio, i programmatori principianti scrivono programmi - inizialmente in russo, poi traducendo passo dopo passo le azioni nel linguaggio di codice. \u00c8 proprio sulla base di questo modello che \u00e8 stato creato il linguaggio C. <\/p>\n<p>Le deduzioni del programmatore, espresse a parole, vengono trasformate in una forma numerica di codice. Questa trasformazione dovrebbe essere chiamata <i>riflessione<\/i>, poich\u00e9 il linguaggio e il codice hanno una stessa natura (riflessione - nascita - genitore). \u00c8 abbastanza ovvio se confronti il tipo di linguaggio (a sinistra) e quello di codice (a destra). <\/p>\n<p><img decoding=\"async\" alt=\"Matrioska C. Sistema a strati del linguaggio di programmazione\" src=\"\/wp-content\/uploads\/2019\/05\/e88d13730660ebac1d661bb2d34a33d5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 curioso notare che la riflessione avviene in modo molto semplice - solo con due forme di espressione. <\/p>\n<p>Tuttavia, la descrizione moderna del linguaggio C (dal 1978) non contiene un elenco sufficiente di nomi n\u00e9 per descrivere il linguaggio in generale, n\u00e9 per trattare specificamente la riflessione. Pertanto, siamo costretti a impegnarci nella creativit\u00e0 e a introdurre questi nomi.<\/p>\n<p>La scelta delle parole deve essere precisa e chiara. Per questo \u00e8 stato necessario un approccio particolare, riassumibile come - utilizzo rigoroso della lingua madre. Per gli inglesi sarebbe stato l'inglese, ma noi non siamo inglesi. Quindi utilizziamo ci\u00f2 che abbiamo e cerchiamo di parlare in russo. <\/p>\n<p>La riflessione si realizza attraverso due forme di espressione: <\/p>\n<ol>\n<li><i>elaborazione <\/i>(El) - riflette la modifica delle propriet\u00e0 di un oggetto. La propriet\u00e0 di un oggetto \u00e8 espressa da un numero, quindi l'azione sulla propriet\u00e0 \u00e8 l'azione su un numero - un'operazione. <\/li>\n<li><i>sottomissione <\/i>(Sm) - riflette il cambiamento nell'ordine delle azioni. Il prototipo di Sm \u00e8 la proposizione subordinata del linguaggio, pertanto la maggior parte dei tipi di Sm inizia con congiunzioni subordinanti come \"se\", \"altrimenti\", \"finch\u00e9\", \"per\". Altri tipi di Sm le completano. <\/li>\n<\/ol>\n<p>\nA proposito, puoi credere che nella descrizione del C non ci sia un nome per le espressioni di elaborazione - vengono semplicemente chiamate \"espressioni\"? Dopo ci\u00f2, non dovrebbe sorprendere l'assenza di un nome e di un'unione per la forma di sottomissione, cos\u00ec come la scarsit\u00e0 in generale di nomi, definizioni e generalizzazioni. Tutto ci\u00f2 perch\u00e9 il famoso K\/R (\"Linguaggio C\", Kernighan\/Ritchie, 1978) non \u00e8 una descrizione, ma una guida all'uso del linguaggio. <\/p>\n<p>Tuttavia, si desidererebbe avere una descrizione del linguaggio. Pertanto, viene proposta <i>Un sistema stratificato del linguaggio del programma<\/i>. <\/p>\n<h2>3. CAPITOLO 2. Sistema a strati. C brevissimo<\/h2>\n<p>\nQualsiasi descrizione deve essere precisa e estremamente concisa. Nel caso del linguaggio del programma, una descrizione diretta \u00e8 difficile. <\/p>\n<p>Abbiamo un programma. \u00c8 composto da moduli. I moduli sono formati da sottoprogrammi e collezioni (structure). I sottoprogrammi consistono in espressioni singole: dichiarazioni, calcoli, subordinazioni. Ci sono dieci tipi di subordinazioni. Le subordinazioni collegano sotto-livelli e sottoprogrammi. Anche le dichiarazioni sono diverse. Tuttavia, le dichiarazioni vengono incluse non solo nei sottoprogrammi e nei sotto-livelli, ma anche nei moduli e nelle collezioni. La maggior parte delle espressioni \u00e8 composta da parole che \u00e8 cos\u00ec difficile descrivere, che di solito vengono solo fornite in due elenchi - parole originarie e parole derivate, con cui si dovr\u00e0 fare conoscenza per tutta la durata dello studio e dell'applicazione del linguaggio. A questo si aggiungono i segni di punteggiatura e una serie di altre espressioni. <\/p>\n<p>In una tale esposizione, \u00e8 difficile capire chi stava su chi. <\/p>\n<p>Un approccio diretto e gerarchico alla descrizione del linguaggio sarebbe eccessivamente complesso. La ricerca di vie alternative porta a descrivere il linguaggio sulla base della sua natura verbale e della parte di comando. Cos\u00ec \u00e8 nato il Sistema Stratificato, parzialmente sovrapponendosi al Sistema Periodico di Mendeleev, che \u00e8 anch'esso <i>stratificato<\/i>. Come \u00e8 emerso 42 anni dopo la sua pubblicazione (1869), la periodicit\u00e0 del sistema \u00e8 legata agli <i>strati <\/i>elettronici (1911, modello di atomo di Bohr-Rutherford). Inoltre, il Sistema Stratificato e il Sistema Periodico condividono la disposizione tabellare di tutte le unit\u00e0 su una sola pagina. <\/p>\n<p>La descrizione delle unit\u00e0 di linguaggio risulta concisa: solo 10 generi di espressioni e 8 generi di altre unit\u00e0, oltre a essere sostanziosa e visibile. Sebbene sia insolita per un primo incontro. <\/p>\n<p>Le unit\u00e0 linguistiche sono suddivise in 6 livelli:<\/p>\n<ol>\n<li>ordini - righe della tabella<\/li>\n<li>sezioni - gruppi speciali di generi (parte della prima riga)<\/li>\n<li>generi - celle (livello principale della divisione)<\/li>\n<li>sottogeneri - separatori di tipi (livello raro)<\/li>\n<li>tipi - formule delle unit\u00e0 nella parte inferiore della cella o separatamente<\/li>\n<li>campioni - le unit\u00e0 stesse (solo per le parole)<\/li>\n<\/ol>\n<p>\nI campioni di parole sono descritti dal <i>dizionario<\/i> un sottosistema separato composto dagli stessi sei livelli. <\/p>\n<p>La componente verbale del linguaggio C \u00e8 abbastanza evidente, anche se merita comunque una descrizione. La parte di comando del linguaggio \u00e8 in realt\u00e0 legata alla gestione della compilazione, durante la quale viene creato il terzo tipo di programma - il programma di comando. Qui ci avviciniamo all'aspetto pi\u00f9 affascinante del linguaggio C - la bellezza. <\/p>\n<h2>4. CAPITOLI SUCCESSIVI. Un C bello<\/h2>\n<p>\nIl linguaggio C sta alla base della programmazione moderna. Perch\u00e9? In primo luogo, per il suo maggiore allineamento con il linguaggio. In secondo luogo, perch\u00e9 ha superato elegantemente i limiti dell'elaborazione numerica da parte delle macchine.<\/p>\n<p>Cosa ha proposto C? Immagine e alce. <\/p>\n<p>La parola \u00abimmagine\u00bb \u00e8 la traduzione dell'inglese \u00abtype\u00bb, che deriva dal greco \u00abprototipo\u00bb \u2014 \u00abmodello\u00bb. In russo, la parola \u00abtipo\u00bb non esprime esattamente il concetto centrale ed \u00e8 spesso confusa con il significato funzionale \u00abtipo\u00bb. <\/p>\n<p>Inizialmente, l'immagine ha risolto un compito puramente meccanico di calcolo, diventando poi una pista di lancio per la nascita dei linguaggi orientati agli oggetti. <\/p>\n<p>L'alce ha subito risolto pi\u00f9 problemi, sia meccanici che applicativi. Pertanto, l'analisi inizier\u00e0 con un'immagine monocomputazionale e passer\u00e0 a un alce multi-tasking. <\/p>\n<p>Una delle caratteristiche sgradevoli della programmazione storica \u00e8 che la maggior parte dei concetti, compresi quelli fondamentali, \u00e8 fornita senza definizioni. \u00abIl linguaggio di programmazione (nome dei fiumi) ha un tipo di numeri interi e flottanti\u2026\u00bb \u2014 e il discorso continua. Cosa si intende per \u00abtipo\u00bb (immagine) \u2014 non \u00e8 necessario definirlo, poich\u00e9 gli autori stessi non lo comprendono appieno e si tirano indietro \u00abper chiarezza\u00bb. Se messi alle strette, forniranno una definizione vaga e inutile. \u00c8 molto utile nascondersi dietro parole straniere: per gli autori russi \u2014 dietro quelle inglesi (tipo), per gli inglesi \u2014 dietro quelle francesi (subroutine), greche (polimorfismo), latine (incapsulamento) o le loro combinazioni (polimorfismo ad hoc). <\/p>\n<p>Ma questo non \u00e8 il nostro destino. La nostra scelta sono definizioni chiare in un russo puro. <\/p>\n<h3>Immagine<\/h3>\n<p>\n<i>Immagine<\/i> \u2014 \u00e8 il nome modello della grandezza, che definisce 1) le propriet\u00e0 proprie della grandezza e 2) la selezione di operazioni per la grandezza. <\/p>\n<p>Alla parola \u00abtipo\u00bb (tipo) corrisponde la prima parte della definizione: \u00abpropriet\u00e0 proprie della grandezza\u00bb. Ma il significato principale dell'immagine risiede nella seconda parte: \u00abselezione di operazioni per le grandezze\u00bb.<\/p>\n<p>Il punto di partenza per l'introduzione dell'immagine nel linguaggio C \u00e8 un calcolo comune, ad esempio, l'operazione di addizione. <\/p>\n<p><i>Carta<\/i> la matematica, scritta a mano o stampata, non fa particolari distinzioni tra i tipi di numeri, considerando generalmente che siano reali. Pertanto, le operazioni su di essi sono inequivocabili.<\/p>\n<p><i>Macchina<\/i> La matematica distingue rigorosamente i numeri in interi e frazionari. I diversi tipi di numeri vengono memorizzati in modo differente e trattati da comandi diversi del processore. Ad esempio, i comandi per sommare numeri interi e frazionari sono due comandi differenti, corrispondenti a due nodi diversi del processore. Tuttavia, non esiste un comando per sommare argomenti interi e frazionari. <\/p>\n<p><i>Applicata<\/i> La matematica, cio\u00e8 il linguaggio C, distingue i tipi di numeri ma unifica le operazioni: la somma per numeri interi e\/o frazionari viene espressa con un unico simbolo dell'operazione.<\/p>\n<p>Una chiara definizione del concetto di immagine consente di parlare con certezza di due altri concetti: <i>quantit\u00e0 <\/i>e <i>operazione<\/i>. <\/p>\n<h3>Quantit\u00e0 e operazione<\/h3>\n<p>\n<i>Quantit\u00e0 <\/i> \u00e8 il numero elaborato.<\/p>\n<p><i>Operazione<\/i> \u00e8 l'elaborazione dei valori delle quantit\u00e0 sorgente (argomenti) per ottenere il numero finale (risultato). <\/p>\n<p>Quantit\u00e0 e operazione sono interconnesse. Ogni operazione \u00e8 una quantit\u00e0, poich\u00e9 ha un risultato numerico. E ogni quantit\u00e0 \u00e8 il risultato della trasmissione di un valore nel registro del processore\/dal processore, cio\u00e8 \u2014 il risultato dell'operazione. Nonostante questa interconnessione, comunque, la cosa principale \u00e8 la possibilit\u00e0 della loro descrizione separata, anche se con la ripetizione della stessa parola in diverse sezioni del dizionario, che \u00e8 ci\u00f2 che accade in ma3. <\/p>\n<p>L'approccio macchina divide tutti i numeri utilizzati dal programmatore in <i>comandi <\/i>e <i>dati<\/i>. In passato entrambi erano numeri, ad esempio, i comandi erano scritti con codici numerici. Tuttavia, nei linguaggi applicativi i comandi hanno smesso di essere numeri e sono diventati <i>parole <\/i>e <i>simboli delle azioni<\/i>. Solo \"dati\" sono rimasti numeri, ma continuare a chiamarli cos\u00ec \u00e8 ridicolo, perch\u00e9 passando dalla prospettiva della macchina a quella matematica i numeri sono quantit\u00e0 che si dividono in originali (<i>dati<\/i>) e finali (<i>cercati<\/i>). \"Dato sconosciuto\" suonerebbe sciocco. <\/p>\n<p>I comandi si sono anch'essi divisi in due tipi di azioni: matematiche e ausiliarie. Le azioni matematiche sono operazioni. Ci occuperemo in seguito di quelle ausiliarie. <\/p>\n<p>Nei linguaggi C, le abituali operazioni matematiche chiare e singole, o uniche, tendono a diventare quasi tutte multiple. <\/p>\n<p>Le operazioni multiple sono diverse operazioni omonime con diversi tipi di argomenti e azioni che hanno significati simili. <\/p>\n<p>A un argomento intero corrisponde un'operazione intera, a un argomento frazionario un'operazione frazionaria. Questa differenza \u00e8 particolarmente visibile nell'operazione di divisione, quando l'espressione 1\/2 d\u00e0 come risultato 0, e non 0,5. Questo formato non rispetta le regole della matematica cartacea, ma il linguaggio C non si sforza di seguirle (a differenza del Fortran) \u2014 gioca secondo le sue <i>regole.<\/i> In caso di mescolanza di numeri interi e frazionari viene attivato l'unico corretto<\/p>\n<p>adeguamento dei valori degli argomenti <i>\u2014 una trasformazione selettiva del valore da una forma all'altra. Infatti, quando si somma un numero intero a uno frazionario, il risultato \u00e8 frazionario, quindi il formato dell'operazione<\/i> sceglie <i>l'operazione di trasformazione dell'argomento intero in un valore frazionario. <\/i>Una serie di operazioni rimane non <\/p>\n<p>multipla <i>singola<\/i>, ma <i>. Tali operazioni sono definite solo per un tipo di argomenti: il resto della divisione \u2014 argomenti interi, bitwise operations \u2014 numeri interi naturali. Ma3 indica la molteplicit\u00e0 delle operazioni con segni (#^) specificando le forme per le quali l'operazione \u00e8 definita. Questa \u00e8 una propriet\u00e0 importante, ma trascurata in precedenza, di ciascuna operazione.<\/i>Tutte le funzioni sono operazioni arbitrarie singole. Un'eccezione \u00e8 rappresentata dagli operatori \u2014 <\/p>\n<p>funzioni senza parentesi <i>, incorporate nel linguaggio (operazioni di base).<\/i>Cooperazione <\/p>\n<h3>\u2014 azione associata all'operazione.<\/h3>\n<p>\n<i>\u2014 azione associata all'operazione. <\/i> Se consideriamo l'operazione come l'azione principale, possiamo identificare due azioni associate che garantiscono l'operazione e si differenziano da essa. Sono 1) gestione della variabile e 2) subordinazione. Questa azione \u00e8 chiamata<\/p>\n<p>cooperazione. <i>Qui \u00e8 necessario distaccarsi e discutere separatamente delle traduzioni russe dei libri di testo sulla programmazione. Nel testo K\/R \u00e8 stata introdotta una nuova parola<\/i>.<\/p>\n<p>statement <i>(espressione), che ha tentato di separare i concetti di comando macchina in diverse azioni: 1) operazione, 2) dichiarazione e 3) subordinazione (denominata 'strutture di controllo'). Questo tentativo \u00e8 stato sepolto dai traduttori russi, sostituendo 'espressione' con la parola 'operatore', che: <\/i>\u00e8 diventata sinonimo della parola macchina 'comando',<\/p>\n<ol>\n<li>si \u00e8 rivelata sinonimo della frase 'simbolo di azione', <\/li>\n<li>e ha anche acquisito un numero illimitato di significati aggiuntivi. Cio\u00e8 \u00e8 diventata simile all'articolo inglese 'uhhh...'.<\/li>\n<li>Esaminiamo le azioni associate, o <\/li>\n<\/ol>\n<p>\ncooperazioni. <i>Gestione della variabile.<\/i>.<\/p>\n<h4><i>Gestione della variabile<\/i> <\/h4>\n<p>\n<i>Gestione della variabile<\/i> (UP) \u2014 creazione\/rimozione di celle variabili. <br \/>\nL'UP avviene in modo implicito durante la dichiarazione di una variabile, che \u00e8 gi\u00e0 scritta per un'altra ragione \u2014 per specificare il modo in cui viene misurata la grandezza. Solo un tipo \u00e8 gestito esplicitamente. <i>di variabili aggiuntive<\/i> utilizzando le funzioni malloc() e free(). <\/p>\n<p>\u00c8 importante notare che le azioni implicite sono pi\u00f9 comode da scrivere, poich\u00e9 non richiedono nulla da essere scritto, ma sono pi\u00f9 difficili da comprendere \u2014 \u00e8 pi\u00f9 complicato tenerne conto e interpretarli. <\/p>\n<h4><i>Sottomissione<\/i><\/h4>\n<p>\n<i>Sottomissione <\/i> \u2014 connessione\/disconnessione di sezioni stratificate. <\/p>\n<p>Il linguaggio C ha proposto un modo pratico di gestire l'ordine delle azioni, diverso dall'assembler \u2014 sottomissione. Essa riflette e sviluppa la proposizione subordinata del linguaggio, con una chiara separazione tra la parte principale (proposizione di sottomissione) e la parte subordinata (sezioni sottolivello\/sottoprogramma). <\/p>\n<p>Sia la dichiarazione che la sottomissione sono completamente costruite sul concetto di <i>strato<\/i>. <\/p>\n<h3>Strato<\/h3>\n<p>\n<i>Strato <\/i> \u2014 \u00e8 un insieme selettivo di espressioni limitato a un solo livello. <\/p>\n<p>Lo strato ha chiaramente e implicitamente assunto diversi compiti: <\/p>\n<ol>\n<li>ordinare il programma,<\/li>\n<li>limitare la visibilit\u00e0 dei nomi (implicitamente),<\/li>\n<li>gestire le variabili (celle di memoria) (implicitamente),<\/li>\n<li>definire sezioni subordinate per la sottomissione,<\/li>\n<li>definizione di funzioni e raccolte e altro ancora. <\/li>\n<\/ol>\n<p>\nNei linguaggi macchina non esisteva il concetto di strato, quindi non \u00e8 apparso nemmeno in K\/R, e se qualcosa non c'era l\u00ec \u2014 sarebbe stato empio e libertino introdurlo nei libri successivi. Pertanto, il concetto di strato non \u00e8 mai apparso, anche se \u00e8 estremamente utile e abbastanza ovvio. <\/p>\n<p>Senza strato, non \u00e8 possibile spiegare brevemente e chiaramente molte azioni e regole del programma. Ad esempio, perch\u00e9 il semplice comando goto sia dannoso, ma il complesso while sia vantaggioso. Si pu\u00f2 solo imprecare impotentemente, come faceva Dijkstra (\u00abla qualificazione dei programmatori \u00e8 una funzione che dipende inversamente dalla frequenza di utilizzo dell'operatore goto nei loro programmi\u00bb. In breve, solo gli stupidi usano il goto. Livello di giustificazione \u2014 Dio). In effetti, non \u00e8 cos\u00ec terribile se i vostri libri non devono spiegare nulla, ma, come abbiamo gi\u00e0 detto, non \u00e8 il nostro destino. <\/p>\n<p>A proposito, si potrebbe ipotizzare che Den Ritchie abbia lasciato goto proprio come chiave per la ricerca di un concetto non nominato, perch\u00e9 non c'era alcuna necessit\u00e0 o bellezza nell'espressione goto. Tuttavia, c'era bisogno di una spiegazione semplice e chiara dei nuovi principi del linguaggio, che lo stesso Ritchie non voleva fornire, e che si basano proprio sul concetto <i>strato<\/i>. <\/p>\n<h3>Deviazione<\/h3>\n<p>\n<i>Deviazione <\/i> \u2014 modifica delle propriet\u00e0 normali del nuovo nome. <\/p>\n<p>La deviazione pi\u00f9 importante \u00e8 proprio quella legata alle propriet\u00e0 strato della programma, e viene descritta con una sola parola: \u00abstatic\u00bb, che ha significati diversi in ciascun tipo di strato. <\/p>\n<h2>5. ULTIMO CAPITOLO. Comunit\u00e0 dei linguaggi applicativi<\/h2>\n<p>\nI linguaggi applicativi sono <i>figurativi <\/i>linguaggi (che hanno un'immagine, \u00abtipizzati\u00bb). Si basano su un utilizzo esplicito o implicito dell'immagine. Qui si manifesta di nuovo la contraddizione: l'immagine esplicita \u00e8 pi\u00f9 comprensibile, ma meno comoda, e viceversa. <\/p>\n<p><img decoding=\"async\" alt=\"Matrioska C. Sistema a strati del linguaggio di programmazione\" src=\"\/wp-content\/uploads\/2019\/05\/7d0fd49d678736a023f471b54847be7d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>(La formattazione della tabella non \u00e8 stata ancora fornita, quindi la tabella \u00e8 presentata come immagine.)<\/i><\/p>\n<p>Dopo C, lo sviluppo dei linguaggi applicativi ha seguito la strada dell'aumento della loro figurativit\u00e0. Il discendente diretto di C, il linguaggio C++, \u00e8 il pi\u00f9 importante per comprendere l'alta figurativit\u00e0. Esso sviluppa l'idea di selezione arbitraria di operazioni per le quantit\u00e0 e la incarna sulla base dell'espressione di C nota come selezione, che riceve un nuovo nome: oggetto. Tuttavia, C++ non \u00e8 cos\u00ec conciso ed espressivo come C, a causa del sovraccarico di nuovi tipi di selezione e delle regole ad esse associate. A proposito, parliamo del \u00absovraccarico\u00bb. <\/p>\n<h3>Sovraccarico e polimorfismo <\/h3>\n<p>\nLa parola \u00absovraccarico\u00bb (overload) \u00e8 un termine obsoleto dell'approccio di macchina, che indica la creazione <i>di operazioni multiple<\/i>. <\/p>\n<p>Programmiatori di macchine (sistemici) <i>la molteplicit\u00e0 <\/i>di operazioni poteva irritare: \u00abCosa significa questo segno (+): somma di numeri interi, somma di numeri frazionari o addirittura uno spostamento?! Ai nostri tempi non si scriveva cos\u00ec!\u00bb Da qui il tono negativo della parola scelta (\u00abripetizione\u00bb, \u00abstanco\u00bb). Per il programmatore applicativo, le operazioni multiple sono la pietra angolare, il principale risultato e l'eredit\u00e0 del linguaggio C, cos\u00ec naturali che spesso non vengono nemmeno percepite. <\/p>\n<p>Nel linguaggio C++ <i>la molteplicit\u00e0<\/i> si \u00e8 diffusa non solo sulle operazioni di partenza, ma anche sulle funzioni - sia separate che unite in classi - metodi. Insieme ai molteplici metodi \u00e8 emersa la possibilit\u00e0 di ridefinirli nelle classi estese, che \u00e8 stata vagamente denominata \u00abpolimorfismo\u00bb. La combinazione di polimorfismo e sovraccarico ha dato una miscela esplosiva, che si \u00e8 suddivisa in due polimorfismi: \u00abvero\u00bb e \u00abad-hoc\u00bb. Capire questo \u00e8 possibile solo contro i nomi assegnati. Nomi stranieri hanno pavimentato la strada verso ad. <\/p>\n<p>L'annuncio di tipo \u00absovraccarico\u00bb \u00e8 meglio esprimere con la parola <i>ridefinizione <\/i> \u2014 annuncio aggiuntivo della funzione omonima con argomenti di un'altra forma. <\/p>\n<p>L'annuncio di tipo \u00abpolimorfismo\u00bb \u00e8 meglio chiamarlo con la parola <i>ridefinizione<\/i> \u2014 annuncio sovrapposto in un nuovo strato espandente della funzione omonima con argomenti della stessa forma. <\/p>\n<p>Allora sar\u00e0 facile capire che i metodi omonimi di diverse forme (argomenti) \u2014 <i>vengono ridefiniti<\/i>, ma di una stessa forma \u2014 <i>vengono ridefiniti<\/i>. <\/p>\n<p>Le parole russe risolvono. <\/p>\n<h3>Pista di decollo<\/h3>\n<p>\nLa considerazione dei concetti dei linguaggi altamente tipizzati conferma l'importanza di una chiara definizione dei concetti fondamentali. Con un C ben descritto, lo studio dei linguaggi altamente tipizzati sar\u00e0 facile e piacevole. <\/p>\n<p>Ci\u00f2 \u00e8 particolarmente importante per <i>linguaggi altamente tipizzati impliciti<\/i> (PHP, JavaScript). Per loro, l'importanza degli oggetti (formati compositi) diventa ancora pi\u00f9 alta rispetto a C++, ma il concetto stesso di formato diventa implicito e sfuggente. Dal punto di vista della comodit\u00e0, sono diventati pi\u00f9 semplici, ma da quello della comprensione \u2014 pi\u00f9 complessi. <\/p>\n<p>Pertanto, si dovrebbe iniziare lo studio dei linguaggi di programmazione con il C e procedere in ordine di apparizione dei linguaggi della famiglia C. <\/p>\n<p>Lo stesso vale per la descrizione dei linguaggi. Diversi linguaggi hanno un insieme di generi di unit\u00e0 coincidente o minore rispetto al C. Il numero di tipi e formati pu\u00f2 variare in entrambe le direzioni: in C++ ci sono pi\u00f9 tipi rispetto a C, in JavaScript \u2014 meno. <\/p>\n<p>Merita particolare menzione il linguaggio MySQL. A prima vista \u2014 nulla in comune, ma si descrive perfettamente con Matryoshka, e fare conoscenza con esso diventa pi\u00f9 veloce e semplice. Ci\u00f2 \u00e8 importante, considerando la sua rilevanza per il web \u2014 l'arteria del moderno programmazione. E dove c'\u00e8 MySQL, ci sono anche gli altri SQL. Bene, anche vari Fortran-Pascal-Python vengono descritti da Matryoshka, non appena si ha l'opportunit\u00e0. <\/p>\n<p>Quindi, ci aspettano grandi opere: una descrizione pratica del linguaggio C e una descrizione unificata dei linguaggi successivi. \u00abI nostri obiettivi sono chiari, i compiti definiti. Al lavoro, compagni! (Applausi entusiasti e prolungati che sfociano in un'ovazione. Tutti si alzano.)\u00bb <\/p>\n<p>Le vostre opinioni saranno ascoltate con grande attenzione, il vostro aiuto nella creazione del sito delle matrioske sar\u00e0 accolto con enorme gratitudine. Maggiori informazioni sul libro si trovano sul sito, astutamente nascosto nella Matrioska C.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452328\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869). \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0436\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043f\u0440\u0438\u0447\u0451\u043c \u0432 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435\u2026 (\u0422\u043e\u0433\u0434\u0430 \u2014 60.) \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0440\u0430\u0437\u0443 \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0435 \u0436\u0435 \u0447\u0443\u0432\u0441\u0442\u0432\u0430, \u0442\u043e\u0442 \u0436\u0435 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u0431\u0435\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0447\u0443\u0432\u0441\u0442\u0432\u0430 \u0445\u0438\u043c\u0438\u043a\u043e\u0432 XIX \u0432\u0435\u043a\u0430, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u043b\u0438 \u0432\u0441\u0435 \u0438\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25550,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-33886","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 Matrioska C. Sistema a strati del linguaggio di programmazione | ProHoster","description":"Cerchiamo di immaginare la chimica senza il Sistema Periodico di Mendeleev (1869).","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u0430\u0442\u0440\u0451\u0448\u043a\u0430 \u0421\u0438. \u0421\u043b\u043e\u0439\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u044f\u0437\u044b\u043a\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b | ProHoster","og:description":"\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0445\u0438\u043c\u0438\u044e \u0431\u0435\u0437 \u041f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u041c\u0435\u043d\u0434\u0435\u043b\u0435\u0435\u0432\u0430 (1869).","og:url":"https:\/\/prohoster.info\/it\/blog\/news\/matryoshka-si-slojnaya-sistema-yazyka-programmy","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:55:15+00:00","article:modified_time":"2019-10-31T18:55:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33886","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 17:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:23","updated":"2026-01-21 17:06:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/33886","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=33886"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/33886\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/25550"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=33886"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=33886"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=33886"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}