Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Aká je hierarchia programovacích jazykov a ako sa líšia z komplexnosti funkčnosti?

Neexistuje jediný, všeobecne dohodnutý „hierarchia“ programovacích jazykov tak, ako existuje, ako existuje biologická taxonómia. Môžeme však hovoriť o rôznych * úrovniach * alebo * kategóriách * jazykov, často založených na faktoroch, ako je úroveň abstrakcie, účel, paradigma a zdroje, ktoré požadujú. Je to skôr ako spektrum ako tuhá hierarchia. Ďalej je zložitosť mnohostranná a závisí od perspektívy:zložitosť pre vývojára *sa môže líšiť od zložitosti pre počítač * *.

Tu je rozpis spoločných kategórií a to, ako sa líšia, spolu s súvisiacimi jazykmi a úvahami funkčnosti a zložitosti:

1. Jazyk strojového kódu / montáže (najnižšia úroveň)

* Popis: Vyhlásenia pokynov priamo spustiteľné CPU. Strojový kód je čistý binárny (0S a 1S), zatiaľ čo jazyk montáže používa na reprezentáciu týchto pokynov (napr. Add`, `mov`).

* Funkcia: Ponúka priamu kontrolu nad hardvérom. Umožňuje manipuláciu s pamäťovými adresami, registrmi a príznakmi CPU.

* zložitosť:

* * Zložitosť vývojárov:* extrémne vysoká. Vyžaduje hlboké pochopenie počítačovej architektúry. Kód je podrobný a náchylný na chyby. Ťažko čítať, písať a udržiavať. Neprehraditeľné (viazané na konkrétnu architektúru CPU).

* * Výpočtová zložitosť:* môže byť veľmi efektívna z hľadiska rýchlosti vykonávania a využívania pamäte z dôvodu priameho riadenia hardvéru.

* Príklad: Zostava Intel X86, zostava ramena. Dnes sa zriedka používa na všeobecné programovanie, s výnimkou veľmi špecifických oblastí (napr. Vstavané systémy s prísnymi obmedzeniami zdrojov, zavádzacími nakladačmi, ovládačmi zariadení, kritickými jadrami pre výkon).

2. Jazyky na nízkej úrovni (blízko hardvéru)

* Popis: Poskytnite viac abstrakcie ako montáž, ale stále ponúka významnú kontrolu nad správou pamäte a zdrojom hardvéru. Často sa používa na systémové programovanie.

* Funkcia: Umožňuje presné pridelenie pamäte, aritmetiku ukazovateľa a priama interakcia s API operačného systému.

* zložitosť:

* * Zložitosť vývojárov:* High. Vyžaduje si dobré pochopenie správy pamäte, ukazovateľov a systémových hovorov. Viac zvládnuteľné ako montáž, ale stále si vyžaduje starostlivú pozornosť detailom.

* * Výpočtová zložitosť:* môže byť veľmi efektívna. Umožňuje vývojárom optimalizovať konkrétne hardvérové ​​architektúry.

* Príklady: C, C ++, hrdza (hrdza je pravdepodobne vyššia ako C, ale jej zameranie na bezpečnosť pamäte a kontrolu nízkej úrovne ho tu umiestňuje).

* Prípady použitia: Operačné systémy, ovládače zariadení, herné motory, zabudované systémy, vysokovýkonné výpočty.

3. Jazyky na strednej úrovni (Bridge the Gap)

* Popis: Ponúkajte rovnováhu medzi nízkou úrovňou kontroly a abstrakciou na vysokej úrovni. Často sa používa na všeobecné programovanie a úlohy na úrovni systému.

* Funkcia: Poskytnite funkcie, ako je objektovo orientované programovanie, zber odpadu (v niektorých prípadoch) a knižnice pre bežné úlohy.

* zložitosť:

* * Zložitosť vývojárov:* Mierne. Ľahšie sa učia a používajú ako jazyky na nízkej úrovni. Poskytnite abstrakcie, ktoré zjednodušujú vývoj.

* * Výpočtová zložitosť:* Dobrý výkon, často porovnateľný s jazykmi na nízkej úrovni, najmä ak sa používajú dobre optimalizované kompilátory.

* Príklady: C ++, Java (aj keď sa Java stále viac posúvala smerom k koncu spektra na vysokej úrovni), C#, choďte.

* Prípady použitia: Vývoj hry, podnikové aplikácie, komponenty operačného systému, softvér na všeobecný účel.

4. Jazyky na vysokej úrovni (zameranie na abstrakciu a čitateľnosť)

* Popis: Zdôrazniť produktivitu a čitateľnosť programátora. Poskytnite silné abstrakcie a automatizujte veľa úloh.

* Funkcia: Medzi funkcie patrí automatická správa pamäte (zber odpadu), bohaté štandardné knižnice, dátové štruktúry na vysokej úrovni a podpora rôznych programovacích paradigiem (objektovo orientovaných, funkčných atď.).

* zložitosť:

* * Zložitosť vývojárov:* nízka. Ľahko sa učia a používajú. Zamerajte sa skôr na riešenie problémov ako na riadenie detailov na nízkej úrovni.

* * Výpočtová zložitosť:* Zvyčajne menej efektívna ako jazyky nízkej úrovne v dôsledku režijných nákladov abstrakcií a automatickej správy pamäte. Výkon sa môže veľmi líšiť v závislosti od implementácie jazyka a toho, ako je kód napísaný.

* Príklady: Python, JavaScript, Ruby, Php, Swift, Kotlin.

* Prípady použitia: Vývoj webových stránok, skriptovanie, veda o údajoch, strojové učenie, vývoj mobilných aplikácií, rýchle prototypovanie.

5. Jazyky s veľmi vysokou úrovňou / jazyky špecifické pre doménu (DSLS)

* Popis: Navrhnuté pre konkrétne úlohy alebo domény. Poskytnite špecializovanú syntax a funkcie, ktoré uľahčujú riešenie problémov v tejto oblasti. Často postavené na vrchole iných jazykov na vysokej úrovni.

* Funkcia: Poskytnite abstrakcie prispôsobené cieľovej doméne. Môže obsahovať vstavané funkcie, knižnice a typy údajov, ktoré sú špecifické pre túto úlohu.

* zložitosť:

* * Zložitosť vývojárov:* Nízka pre úlohy v doméne. Môže byť ťažké použiť na všeobecné programovanie.

* * Výpočtová zložitosť:* sa veľmi líši v závislosti od základnej implementácie.

* Príklady: SQL (pre databázové dotazy), R (pre štatistické výpočty), MATLAB (pre numerické výpočty), HTML/CSS (pre štruktúru a štruktúru webovej stránky a štýl). Regulárne výrazy možno považovať za DSL na porovnávanie vzorov.

* Prípady použitia: Analýza údajov, vedecké výpočty, vývoj webových aplikácií, správa databáz.

Kľúčové rozdiely a kompromisy:

| Funkcia | Jazyky na nízkej úrovni (C/C ++) | Jazyky na vysokej úrovni (Python/JavaScript) |

| -------------------- | ----------------------------------- | ------------------------------------------- |

| Úroveň abstrakcie Nízka | Vysoká |

| Správa pamäte | Manuál (Ovládanie programátora) Automatické (zbierka odpadu)

| Výkon | Vysoká | Nižšie (ale často optimalizované)

| Veľkosť kódu Väčšie | Menšie |

| Prenosnosť Nižšie (často špecifické pre platformu) Vyššie (krížové platformy)

| Čas vývoja Dlhšie | Kratšia |

| Manipulácia s chybami | Viac manuálov Automatickejšie

Dôležité úvahy:

* Abstrrakčná úroveň: Jazyky na vyššej úrovni abstraktujú viac podkladového hardvéru a podrobností o systéme. To uľahčuje ich používanie, ale môže tiež viesť k réžii výkonu.

* Správa pamäte: Jazyky na nízkej úrovni vyžadujú manuálnu správu pamäte, čo poskytuje programátorovi väčšiu kontrolu, ale tiež predstavuje riziko úniku pamäte a ďalšie chyby. Jazyky na vysokej úrovni často používajú zbierku odpadu na automatizáciu správy pamäte, čo zjednodušuje vývoj, ale môže ovplyvniť výkon.

* Výkon: Všeobecne sú jazyky na nižšej úrovni rýchlejšie a efektívnejšie ako jazyky na vyššej úrovni, pretože poskytujú priamejšiu kontrolu nad hardvérom. Moderné jazyky na vysokej úrovni však často majú sofistikované kompilátory a runtime prostredie, ktoré môžu optimalizovať kód pre výkon. Prekážka často tiež nie je jazykom, ale algoritmom.

* Prenosnosť: Jazyky na vysokej úrovni sú zvyčajne prenosnejšie ako jazyky na nízkej úrovni, pretože sú menej závislé od základného hardvéru a operačného systému.

* učenie sa krivka: Jazyky na vyššej úrovni sa vo všeobecnosti učia ľahšie ako jazyky na nízkej úrovni, pretože majú jednoduchšiu syntax a intuitívnejšie koncepty.

* Doménová vhodnosť: Najlepší jazyk pre konkrétnu úlohu závisí od konkrétnych požiadaviek projektu. Jazyky na nízkej úrovni sa často používajú na kritické aplikácie výkonu, zatiaľ čo jazyky na vysokej úrovni sa často používajú na rýchle prototypovanie a vývoj webových aplikácií.

V súhrne je „hierarchia“ skôr spektrum založené na abstrakcii. Existuje kompromis medzi kontrolou, efektívnosťou a ľahkosťou používania. Výber jazyka závisí od konkrétnych požiadaviek na projekt, odborných znalostí vývojára a požadovanej rovnováhy medzi týmito faktormi.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené