Matrioszka C. Warstwowy system języka programu

Spróbujmy wyobrazić sobie chemię bez układu okresowego Mendelejewa (1869). O ilu elementach trzeba było pamiętać i w dowolnej kolejności... (Wtedy - 60.)

Aby to zrobić, wystarczy pomyśleć o jednym lub kilku językach programowania na raz. Te same uczucia, ten sam twórczy chaos.

A teraz możemy na nowo przeżyć uczucia XIX-wiecznych chemików, kiedy zaoferowano im całą swoją wiedzę i trochę więcej w jednym układzie okresowym.

Matrioszka C. Warstwowy system języka programu


Książka „Matryoshka C. Warstwowy system języka programu” prezentuje w skrócie wszystkie jednostki języka C. Pozwala to na ich uporządkowanie, poprawienie nieaktualnych informacji, a nawet doprecyzowanie samej koncepcji programu.

Obecnie informacje programowe wymagają usystematyzowania jeszcze bardziej niż pierwiastki chemiczne 150 lat temu.

Pierwszą koniecznością jest nauczanie. Mendelejew zaczął tworzyć swój system, gdy stanął przed pytaniem, od jakiego pierwiastka zacząć wykłady: O, H, N, He, Au... Jednocześnie było mu łatwiej - chemii uczył najlepszych - uczniów kl. Uniwersytet w Petersburgu. A programowania uczy się już w szkole, a wkrótce zacznie się w przedszkolu.

Drugą potrzebą jest podejście naukowe. Za pomocą układu okresowego odkryto nowe pierwiastki i skorygowano informacje o starych. Pomogła stworzyć model atomu (1911). I tak dalej.

Trzecią potrzebą jest wyjaśnienie koncepcji programu.

Współczesne programowanie jedną nogą utknęło w latach 50. XX wieku. W tamtych czasach programy były proste, ale maszyny i języki maszynowe były złożone, więc wszystko kręciło się wokół maszyn i języków.

Teraz wszystko jest na odwrót: programy są złożone i pierwotne, języki są proste i wtórne. Nazywa się to podejściem stosowanym i wydaje się, że wszyscy je znają. Jednak studenci i programiści nadal są przekonani, że wszystko jest takie samo.

Co prowadzi nas z powrotem do pierwszego wykładu Privatdozenta Mendelejewa. Co powiedzieć pierwszoklasistom? Gdzie jest prawda? Oto jest pytanie.

Odpowiedź na to pytanie daje książka „Matryoshka C”. Warstwowy system języka programu”. Co więcej, adresowany jest nie tylko do studentów, ale także do przeszkolonych programistów, bo to oni, czyli my, musimy szukać prawdy i zmieniać światopogląd.

Poniżej znajduje się streszczenie książki.

1. Wprowadzenie

W 1969 roku powstał język C, który stał się podstawowym językiem programowania i pozostaje nim od 50 lat. Dlaczego tak jest? Po pierwsze dlatego, że C jest stosowany język, w którym napisano program humanitarny zamiast tego obejrzyj maszyna. Osiągnięcie to zapewniły języki z rodziny C: C++, JavaScript, PHP, Java, C# i inne. Po drugie, jest to język krótki i piękny.

Jednak sam język C jest zwykle mieszany z asemblerem maszynowym, co komplikuje i zniekształca jego postrzeganie. Drugą skrajnością jest narzucanie językowi pewnej „filozofii”: proceduralnej, obiektowej, funkcjonalnej, kompilowanej, interpretowanej, maszynowej i tak dalej. Dodaje to emocji, ale nie pomaga lepiej opisać języka.

Prawda leży po środku, a w przypadku języka C jest dokładnie pośrodku między percepcją filozoficzną a maszynową.

Język C nie jest niezależny, podlega zwykłemu językowi pisanemu, a jednocześnie kontroluje sam język asemblera. To stanowisko opisuje Model mowy programu, zgodnie z którym program dzieli się na trzy podrzędne typy: mowa, kod, polecenie. Za drugi rodzaj kodu odpowiada język C.

Po ustaleniu miejsca języka w programie można uporządkować informacje na jego temat, co sprawia, że Warstwowy system języka programu, reprezentujący język C w duchu układu okresowego - na jednej stronie.

System jest zbudowany z uwzględnieniem wspólnoty języków stosowanych, wynikające z ich podporządkowania mowy. Jeden zestaw jednostek Matrioszki C pozwala opisywać i porównywać różne języki, tworząc serię Matrioszek: C++, PHP, JavaScript, C#, MySQL, Python i tak dalej. Godne i poprawne jest opisywanie różnych języków za pomocą jednostek języka podstawowego.

2. ROZDZIAŁ 1. Model mowy programu. Wyczyść C

Pierwszy rozdział przedstawia model mowy programuodzwierciedlające zastosowane podejście. Według niego program ma trzy oczywiste typy sekwencyjne:

  1. mowa - bezpośrednia mowa programisty rozwiązującego problem,
  2. coded - zakodowanie rozwiązania do postaci matematycznej w języku C (lub innym)
  3. i polecenie - bezpośrednie polecenia maszyny.

Model mowy wyjaśnia, dlaczego C jest językiem prostym i zrozumiałym. Xi jest zbudowany na obraz i podobieństwo ludzkiej mowy, które jest nam znane.

Pierwszy rodzaj programu to bezpośrednia mowa programisty. Mowa odpowiada ludzkiemu myśleniu. Początkujący programiści piszą programy za pomocą mowy - najpierw po rosyjsku, a następnie krok po kroku tłumaczą działania na język kodowy. I właśnie na tym modelu powstał język C.

Wnioski programisty wyrażone w mowie zamieniane są na zakodowaną postać liczbową. Tę transformację należy nazwać odbicie, gdyż mowa i kod mają tę samą naturę (odbicie – narodziny – płeć). Jest to całkiem oczywiste, jeśli porównamy typy mowy (po lewej) i kod (po prawej) programu.

Matrioszka C. Warstwowy system języka programu

Ciekawe, że refleksja przebiega bardzo prosto – za pomocą tylko dwóch rodzajów wyrażeń.

Jednak współczesny opis języka C (z 1978 r.) nie zawiera wystarczającej listy nazw ani do opisu języka w ogóle, ani w szczególności do zadania refleksji. Dlatego jesteśmy zmuszeni wykazać się kreatywnością i wprowadzić te nazwy.

Dobór słów musi być precyzyjny i jasny. Wymagało to specjalnego podejścia, które w skrócie można wyrazić następująco: ścisłe używanie języka ojczystego. Dla Anglików byłby to angielski, ale my nie jesteśmy Anglikami. Użyjemy więc tego, co mamy i spróbujemy mówić po rosyjsku.

Refleksja odbywa się za pomocą dwóch rodzajów wyrażeń:

  1. obliczenie (HF) - odzwierciedla zmianę właściwości obiektu. Właściwość obiektu wyraża się liczbą, wtedy akcja na właściwości jest akcją na liczbie - operacją.
  2. podporządkowanie (Pch) - odzwierciedla zmianę kolejności działań. Prototypem Pch jest zdanie złożone w mowie, dlatego większość typów Pch zaczyna się od spójników podrzędnych „jeśli”, „w przeciwnym razie”, „podczas gdy”, „dla”. Uzupełniają je inne typy komputerów PC.

Swoją drogą, czy uwierzycie, że w opisie C nie ma nazwy dla wyrażeń obliczeniowych - nazywa się je po prostu „wyrażeniami”? Po tym nie będzie już zaskoczeniem brak nazwy i skojarzenia dla rodzaju podporządkowania, a wręcz niedostatek nazw, definicji i uogólnień w ogóle. Dzieje się tak dlatego, że słynny K/R („Język C”, Kernighan/Ritchie, 1978) nie jest opisem, ale przewodnikiem po użyciu języka.

Jednak nadal chciałbym mieć opis języka. Dlatego jest oferowany Warstwowy system języka programu.

3. ROZDZIAŁ 2. System warstwowy. Krótkie C

Każdy opis musi być dokładny i niezwykle zwięzły. W przypadku języka programu opis frontalny jest trudny.

Tutaj mamy program. Składa się z modułów. Moduły składają się z podprogramów i kolekcji (struktura). Podprogramy składają się z poszczególnych wyrażeń: deklaracji, obliczeń, podporządkowania. Rodzajów podporządkowania jest aż dziesięć. Podporządkowanie łączy podpoziomy i podprogramy. Jest też kilka reklam. Jednak deklaracje zawarte są nie tylko w podprogramach i podpoziomach, ale także w modułach i kolekcjach. Większość wyrażeń składa się ze słów, które są tak trudne do opisania, że ​​zwykle podaje się je po prostu na dwóch listach – słów oryginalnych i pochodnych, z którymi będziesz się zaznajomić w trakcie nauki i używania języka. Dodajmy do tego znaki interpunkcyjne i szereg innych wyrażeń.

W takim przedstawieniu niełatwo zrozumieć, kto na kim stanął.

Bezpośrednie, hierarchiczne podejście do opisu języka byłoby zbyt złożone. Wyszukiwanie okrężne prowadzi do opisu języka w oparciu o jego naturę mowy i stronę dowodzenia. W ten sposób narodził się System Warstwy, częściowo pokrywający się z Układem Okresowym Mendelejewa, który również jest zagięcie. Jak się okazało 42 lata po jego opublikowaniu (1869 r.), okresowość systemu związana jest z elektroniką warstwy (1911, model atomu Bohra-Rutherforda). Ponadto systemy warstwowe i okresowe są podobne pod względem tabelarycznego ułożenia wszystkich jednostek na jednej stronie.

Opis jednostek językowych jest krótki - tylko 10 rodzajów wyrażeń i 8 typów innych jednostek, a także znaczących i wizualnych. Chociaż niezwykłe dla pierwszego znajomego.

Jednostki językowe podzielone są na 6 poziomów:

  1. jednostki - wiersze tabeli
  2. działy - specjalne grupy rodzajów (części pierwszej linii)
  3. rodzaj - komórki (główny poziom podziału)
  4. supergatunki - separatory gatunków (rzadki poziom)
  5. typy - formuły jednostkowe na dole komórki lub osobno
  6. wzorce - same jednostki (tylko dla słów)

Przykładowe słowa opisują słownik - odrębny podsystem składający się z tych samych sześciu poziomów.

Komponent mowy języka C jest dość oczywisty, choć nadal zasługuje na opis. Ale część poleceń języka jest ściśle związana ze sterowaniem kompilacją, podczas której tworzony jest trzeci typ programu - polecenie. Tutaj dochodzimy do najbardziej ekscytującego aspektu języka C: piękna.

4. NASTĘPNE ROZDZIAŁY. Przystojny Si

Język C jest podstawą współczesnego programowania. Dlaczego? Po pierwsze, ze względu na największą zgodność z mową. Po drugie dlatego, że pięknie ominął ograniczenia przetwarzania numerów maszynowych.

Co dokładnie zaproponował Xi? Obraz i warstwa.

Słowo „obraz” jest tłumaczeniem angielskiego słowa „typ”, które pochodzi od greckiego „prototyp” – „typ”. W języku rosyjskim słowo „typ” nie oddaje kamienia węgielnego wyrażanego pojęcia, a ponadto jest mylone z pomocniczym znaczeniem „typ”.

Początkowo obraz rozwiązał czysto maszynowy problem obliczeniowy, a następnie stał się wybiegiem dla narodzin języków obiektowych.

Warstwa natychmiast rozwiązała kilka problemów - zarówno maszynowych, jak i nakładanych. Dlatego rozważania rozpoczniemy od obrazu jednozadaniowego i przejdziemy do warstwy wielozadaniowej.

Jedną z nieprzyjemnych cech programowania historycznego jest to, że większość pojęć, w tym podstawowe, jest podana bez definicji. „Język programowania (nazwy rzek) ma typy liczb całkowitych i zmiennoprzecinkowych…” i drapały dalej. Nie trzeba definiować, czym jest „typ” (obraz), gdyż sami autorzy nie do końca to rozumieją i „dla przejrzystości” będą to przemilczać. Jeśli zostaną przyszpilone do ściany, dadzą niejasną i bezużyteczną definicję. Bardzo pomaga ukrywanie się za obcymi słowami: autorom rosyjskim - za angielskim (typ), Anglikom - za francuskim (podprogram), greckim (polimorfizm), łacińskim (hermetyzacja) lub ich kombinacjami (polimorfizm ad-hoc).

Ale to nie jest nasze przeznaczenie. Nasz wybór to definicje z podniesionym wizjerem w czystym języku rosyjskim.

Obraz

Obraz jest prefiguratywną nazwą wielkości, określającą 1) wewnętrzne właściwości wielkości i 2) wybór operacji na wielkości.

Słowo „typ” (typ) odpowiada pierwszej części definicji: „wewnętrznym właściwościom wielkości”. Ale główne znaczenie obrazu znajduje się w drugiej części: „dobór operacji do ilości”.

Punktem wyjścia do wprowadzenia obrazu w C jest zwykłe obliczenie, takie jak operacja dodawania.

Papier Matematyka, niezależnie od tego, czy jest pisana ręcznie, czy drukowana, nie rozróżnia zbytnio typów liczb, zwykle zakładając, że są one rzeczywiste. Dlatego też ich operacje przetwarzania są jednoznaczne.

Maszyna Matematyka ściśle dzieli liczby na liczby całkowite i ułamki zwykłe. Różne typy liczb są w różny sposób przechowywane w pamięci i przetwarzane przez różne instrukcje procesora. Na przykład instrukcje dodawania liczb całkowitych i ułamków to dwie różne instrukcje odpowiadające dwóm różnym węzłom procesora. Ale nie ma polecenia dodawania argumentów całkowitych i ułamkowych.

Stosowany matematyka, czyli język C, rozdziela typy liczb, ale łączy operacje: dodawanie liczb całkowitych i/lub ułamków zapisuje się jednym znakiem akcji.

Jasna definicja obrazu koncepcyjnego pozwala zdecydowanie mówić o dwóch innych pojęciach: wartość и operacja.

Wielkość i działanie

Wartość — przetwarzany numer.

operacja — przetwarzanie wartości wartości początkowych (argumentów) w celu uzyskania liczby końcowej (ogółem).

Wielkość i działanie są ze sobą powiązane. Każda operacja jest wielkością, ponieważ ma wynik liczbowy. A każda wartość jest wynikiem przekazania wartości do/z rejestru procesora, czyli wynikiem operacji. Pomimo tej zależności najważniejsza jest możliwość ich osobnego opisu, aczkolwiek z powtórzeniem jednego słowa w różnych działach słownika, co ma miejsce w MA3.

Podejście maszynowe dzieliło wszystkie liczby używane przez programistę na polecenia и dane. Wcześniej oba były liczbami, na przykład polecenia pisano kodami numerycznymi. Jednak w językach stosowanych polecenia przestały być liczbami i stały się słownie и znaki akcji. Tylko „dane” pozostają liczbami, ale absurdem jest dalsze nazywanie ich w ten sposób, ponieważ przy przejściu od maszynowego do matematycznego punktu widzenia liczby są wielkościami podzielonymi przez oryginał (dane) i końcowy (wymagany). „Nieznane dane” zabrzmi głupio.

Zespoły podzielono także na dwa rodzaje akcji: matematyczną i służbową. Działania matematyczne - operacje. Później przejdziemy do spraw oficjalnych.

W językach C zwykłe papierowe i maszynowe jednoznaczne lub pojedyncze operacje matematyczne prawie zawsze stają się wielokrotne.

Operacje wielokrotne to kilka operacji o tej samej nazwie z różnymi typami argumentów i różnymi działaniami o podobnym znaczeniu.

Argumenty całkowite odpowiadają całej operacji, a argumenty ułamkowe odpowiadają operacji ułamkowej. Różnica ta jest szczególnie widoczna podczas operacji dzielenia, gdy wyrażenie 1/2 daje w sumie 0, a nie 0,5. Taki zapis nie odpowiada regułom matematyki papierowej, ale język C nie stara się ich przestrzegać (w przeciwieństwie do Fortranu) – gra według własnego stosowany zasady.

W przypadku mieszania liczb całkowitych i ułamków uwzględniana jest jedyna poprawna rzutowanie wartości argumentów — selektywne przekształcanie wartości z jednego obrazu na inny. Rzeczywiście, dodając liczbę całkowitą i liczbę ułamkową, wynik jest ułamkowy, a więc obraz operacji podnosi operacja konwersji argumentu będącego liczbą całkowitą na wartość ułamkową.

Pozostało jeszcze kilka operacji wiele I pojedynczy. Operacje takie definiowane są tylko dla jednego typu argumentów: reszta z dzielenia – argumenty całkowite, układanie (operacje bitowe) – liczby całkowite naturalne. Ma3 oznacza krotność operacji znakami (#^) wskazującymi obrazy, dla których zdefiniowano operację. Jest to ważna, choć wcześniej pomijana właściwość każdej operacji.

Wszystkie funkcje są dowolnymi operacjami jednostkowymi. Wyjątkiem są operatorzy - funkcje nienawiasowe, wbudowane w język (oryginalne operacje).

Promowanie

Promowanie - czynność towarzysząca operacji.

Jeśli uznamy operację za akcję główną, możemy wyróżnić dwie towarzyszące, które zapewniają operację i różnią się od niej. Są to 1) kontrola zmienna i 2) podporządkowanie. Ta akcja nazywa się wsparcie.

Tutaj musimy zrobić dygresję i osobno powiedzieć o rosyjskich tłumaczeniach podręczników programowania. W tekście K/R wprowadzono nowe słowo oznaczające czynności rejestracyjne oświadczenie (wyrażenie), w którym próbowano podzielić koncepcje polecenia maszynowego na różne działania: 1) operację, 2) deklarację i 3) podporządkowanie (zwane „konstrukcjami kontrolnymi”). Próbę tę pogrzebali rosyjscy tłumacze, zastępując „wyrażenie” słowem „operator”, co:

  1. stało się synonimem maszynowego słowa „polecenie”,
  2. okazał się synonimem wyrażenia „znak działania”,
  3. a także otrzymał nieograniczoną liczbę dodatkowych wartości. Oznacza to, że zmienił się w coś podobnego do angielskiego artykułu „uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh”

Rozważ działania towarzyszące lub wsparcie.

Zmienna kontrola

Zmienna kontrola (UP) - tworzenie/usuwanie komórek zmiennych.
UE występuje domyślnie podczas deklarowania zmiennej, która jest już zapisana z innego powodu - aby wskazać obraz wartości. Tylko jeden widok jest jawnie zarządzany dodatkowe zmienne za pomocą funkcji malloc() i free().

Należy zauważyć, że ukryte działania są wygodniejsze do pisania, ponieważ w ogóle nie wymagają pisania, ale są trudniejsze do zrozumienia - trudniej je wziąć pod uwagę i zinterpretować.

Podporządkowanie

Podporządkowanie — łącz/wyłącz sekcje warstw.

Język C oferował zastosowaną metodę kontrolowania kolejności działań, inną niż w asemblerze - podporządkowanie. Odzwierciedla i rozwija zdanie złożone mowy z wyraźnym podziałem na część główną (klauzula podporządkowania) i część podrzędną (sekcje podpoziomu/podprogramu).

Zarówno deklaracja, jak i złożenie wniosku opierają się w całości na tej koncepcji warstwa.

Warstwa

Warstwa jest ograniczonym, jednopoziomowym, selektywnym zestawem wyrażeń.

Warstwa jawnie i implicytnie podjęła się kilku zadań jednocześnie:

  1. zorganizowanie programu
  2. ograniczenie widoczności nazw (w sposób dorozumiany),
  3. zarządzanie zmiennymi (komórkami pamięci) (domyślne),
  4. definicja zdań podrzędnych dla podporządkowania,
  5. definicje funkcji i selekcji i inne.

W językach maszynowych nie istniało pojęcie warstwy, więc w K/R nie pojawiło się ono, a gdyby czegoś nie było, to wprowadzenie go w kolejnych książkach byłoby herezją i wolnomyślicielstwem. Dlatego koncepcja warstwy w ogóle się nie pojawiła, chociaż jest niezwykle przydatna i dość oczywista.

Bez warstwy nie da się krótko i jasno wyjaśnić wielu działań i zasad programu. Na przykład, dlaczego to tak proste, jak trzy kopiejki jest złe, a trudne while jest dobre. Można tylko bezradnie przeklinać, jak to zrobił Dijkstra („umiejętności programistów to funkcja, która odwrotnie zależy od częstotliwości występowania instrukcji goto w ich programach”. Krótko mówiąc, tylko kozy używają goto. Poziomem uzasadnienia jest Bóg.) To prawda, że ​​\uXNUMXb\uXNUMXbto nie jest takie straszne, jeśli twoje książki Nie musimy w ogóle niczego wyjaśniać, ale jak już powiedzieliśmy, to nie jest nasze przeznaczenie.

Swoją drogą można założyć, że Dan Ritchie pozostawił goto właśnie jako klucz do poszukiwania jakiegoś nienazwanego pojęcia, gdyż w wyrażeniu goto nie było potrzeby ani piękna. Potrzebne było jednak proste i zrozumiałe wyjaśnienie nowych zasad języka, których sam Richie nie chciał podać, a które właśnie opierają się na koncepcji warstwa.

Odchylenie

Odchylenie — zmiana zwykłych właściwości nowej nazwy.

Najważniejsze odchylenie jest ściśle związane z właściwościami warstwy programu i określane jest jednym słowem „statyczny”, które w każdym typie warstwy ma inne znaczenie.

5. OSTATNI ROZDZIAŁ. Wspólność języków stosowanych

Stosowane języki to symboliczny języki (posiadanie obrazu, „wpisywanie”). Opierają się na jawnym lub ukrytym użyciu obrazu. Co więcej, tutaj znowu pojawia się sprzeczność: wyraźny obraz jest bardziej zrozumiały, ale mniej wygodny i odwrotnie.

Matrioszka C. Warstwowy system języka programu

(Układ tabeli nie został jeszcze dostarczony, dlatego tabela jest pokazana na zdjęciu.)

Po C rozwój języków stosowanych poszedł drogą zwiększania ich figuratywności. Najważniejszy dla zrozumienia wysokich obrazów jest bezpośredni potomek C - języka C++. Rozwija ideę arbitralnego doboru operacji na wielkości i urzeczywistnia ją w oparciu o syntetyczny wybór wyrażeń, który otrzymuje nową nazwę – przedmiot. Jednak C++ nie jest tak zwięzły i wyrazisty jak C ze względu na przeciążenie nowymi typami kolekcji i związanymi z nimi regułami. Nawiasem mówiąc, porozmawiajmy o „przeciążeniu”.

Przeciążenie i polimorfizm

Słowo „przeciążenie” jest przestarzałym terminem używanym w uczeniu maszynowym na określenie tworzenia wiele operacji.

Programiści maszyn (systemów). mnogość operacje mogą być denerwujące: „Co oznacza ten znak (+): dodawanie liczb całkowitych, dodawanie ułamków, a nawet przesuwanie?! W naszych czasach tak nie pisano!” Stąd negatywna konotacja wybranego słowa („przesada”, „zmęczony”). Dla programisty aplikacji podstawą, głównym osiągnięciem i dziedzictwem języka C są wielokrotne operacje, tak naturalne, że często nie są rozpoznawane.

W języku C++ mnogość rozszerzony nie tylko na oryginalne operacje, ale także na funkcje - zarówno indywidualne, jak i łączone w klasy - metody. Wraz z wieloma metodami pojawiła się możliwość ich zastępowania w klasach rozszerzonych, co zostało niejasno nazwane „polimorfizmem”. Połączenie polimorfizmu i przeciążenia stworzyło wybuchową mieszaninę, która podzieliła się na dwa polimorfizmy: „prawdziwy” i „ad hoc”. Można to zrozumieć tylko pomimo przypisanych im nazw. Droga do reklamy jest usłana obcymi nazwami.

Deklarację formy „przeciążenie” lepiej wyrazić słowem dodatkowe ogłoszenie — dodanie deklaracji funkcji o tej samej nazwie z argumentami innego obrazu.

Lepiej jest nazwać deklarację postaci „polimorfizmem”. ponowne ogłoszenie — nakładająca się deklaracja w nowej warstwie rozszerzenia funkcji o tej samej nazwie z argumentami o tym samym obrazie.

Wtedy łatwo będzie zrozumieć, że te same metody różnych obrazów (argumenty) - dodatkowo ogłoszonei jeden obraz - ogłoszono ponownie.

Decydują rosyjskie słowa.

Pas startowy

Rozważenie pojęć języków wysoce figuratywnych potwierdza znaczenie jasnej definicji podstawowych pojęć. Dzięki poprawnie opisanemu C nauka języków wysokofiguratywnych będzie łatwa i przyjemna.

Jest to szczególnie ważne dla ukryte języki wysoce figuratywne (PHP, JavaScript). Dla nich znaczenie obiektów (obrazów złożonych) staje się jeszcze większe niż w C++, ale samo pojęcie obrazu staje się ukryte i nieuchwytne. Z punktu widzenia wygody stały się prostsze, ale z punktu widzenia zrozumienia stały się trudniejsze.

Dlatego naukę języków programowania warto rozpocząć od języka C i posuwać się dalej w kolejności występowania języków z rodziny C.

To samo tyczy się opisu języków. Różne języki mają taki sam lub mniejszy zestaw rodzajów jednostek niż język C. Liczba typów i próbek może różnić się w obu kierunkach: C++ ma więcej typów niż C, podczas gdy JavaScript ma ich mniej.

Na szczególną uwagę zasługuje język MySQL. Wydawać by się mogło, że nie ma ze sobą nic wspólnego, a jednak Matrioszka opisuje go doskonale, a poznanie go staje się szybsze i łatwiejsze. Co jest ważne, biorąc pod uwagę jego znaczenie dla sieci – jadalni współczesnego programowania. A tam, gdzie jest MySQL, są inne SQLe. Cóż, wszystkie rodzaje Fortran-Pascal-Pytonów są również opisywane przez Matryoshkę, gdy tylko dostaną je w swoje ręce.

Czekają nas więc wielkie rzeczy - opis stosowany języka C i ujednolicony opis języków, które po nim następują. „Nasze cele są jasne, nasze zadania określone. Do dzieła, towarzysze! (Burzliwe, długotrwałe brawa, przechodzące w owacje. Wszyscy wstają.)”

Wasze opinie zostaną wysłuchane z wielką uwagą, a pomoc w tworzeniu strony z lalkami gniazdowymi zostanie przyjęta z wielką wdzięcznością. Pełniejsze informacje o książce znajdują się na stronie internetowej, sprytnie ukryte w Matrioszce C.

Źródło: www.habr.com

Dodaj komentarz