Abstrakce (počítačová věda) - Abstraction (computer science)
![]() | tento článek potřebuje další citace pro ověření.Červen 2011) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
v softwarové inženýrství a počítačová věda, abstrakce je:
- proces odstraňování fyzických, prostorových nebo časových detailů[2] nebo atributy při studiu předmětů nebo systémy zaměřit pozornost na detaily většího významu;[3] má podobnou povahu jako proces zobecnění;
- vytvoření abstraktní pojem -předměty zrcadlením společných rysů nebo atributů různých neabstraktních objektů nebo systémů studia[3] - výsledek procesu abstrakce.
Abstrakce obecně, je základní pojem v informatice a vývoj softwaru.[4] Proces abstrakce lze také označit jako modelování a úzce souvisí s pojmy teorie a design.[5] Modely lze také považovat za typy abstrakcí podle jejich zobecnění aspektů realita.
Abstrakce v informatice úzce souvisí s abstrakce v matematice vzhledem k jejich společnému zaměření na budování abstrakcí jako objektů,[2] ale také souvisí s jinými pojmy abstrakce používanými v jiných oblastech jako umění.[3]
Abstrakce mohou také odkazovat na objekty a systémy reálného světa, pravidla výpočetní systémy nebo pravidla programovací jazyky které nesou nebo využívají vlastnosti samotné abstrakce, jako například:
- použití typy dat vystupovat abstrakce dat oddělit použití od pracovních reprezentací datové struktury v rámci programy;[6]
- koncept postupy, funkce nebo podprogramy které představují specifickou implementaci regulační tok v programech;
- pravidla obecně pojmenovaná „abstrakce“, která zobecňují výrazy použitím volné a vázané proměnné v různých verzích lambda kalkul;[7][8]
- použití S-výrazy jako abstrakce datových struktur a programů v EU Programovací jazyk Lisp;[9]
- proces reorganizace běžného chování z neabstrahového třídy do „abstraktních tříd“ pomocí dědictví abstrahovat podtřídy jak je vidět na objektově orientovaný C ++ a Jáva programovací jazyky.
Odůvodnění
Výpočetní technika většinou funguje nezávisle na konkrétním světě. Hardware implementuje a model výpočtu to je zaměnitelné s ostatními.[Citace je zapotřebí ] Software je strukturován do architektury umožnit lidem vytvářet obrovské systémy soustředěním se na několik problémů najednou. Tyto architektury jsou tvořeny konkrétními možnostmi abstrakcí. Greenspunovo desáté pravidlo je aforismus o tom, jak je taková architektura nevyhnutelná a složitá.
Ústřední formou abstrakce ve výpočetní technice je jazyková abstrakce: jsou vyvíjeny nové umělé jazyky, které vyjadřují specifické aspekty systému. Modelovací jazyky pomoc při plánování. Počítačové jazyky lze zpracovat pomocí počítače. Příkladem tohoto procesu abstrakce je generační vývoj programovací jazyky z jazyk stroje do montážní jazyk a jazyk na vysoké úrovni. Každá fáze může být použita jako odrazový můstek pro další fázi. Jazyková abstrakce pokračuje například v skriptovací jazyky a programovací jazyky specifické pro doménu.
V rámci programovacího jazyka umožňují některé funkce programátorovi vytvářet nové abstrakce. Tyto zahrnují podprogramy, moduly, polymorfismus, a softwarové komponenty. Některé další abstrakce, jako je vzory návrhu softwaru a architektonické styly zůstávají neviditelné pro a překladatel a fungují pouze v konstrukci systému.
Některé abstrakce se snaží omezit rozsah konceptů, které si programátor musí být vědom, tím, že úplně skryjí abstrakce, na nichž jsou zase postaveny. Softwarový inženýr a spisovatel Joel Spolsky kritizoval toto úsilí tvrzením, že všechny abstrakce jsou děravý - že nikdy nemohou úplně skrýt níže uvedené podrobnosti;[10] to však nevyvrací užitečnost abstrakce.
Některé abstrakce jsou navrženy tak, aby spolupracovaly s jinými abstrakcemi - například programovací jazyk může obsahovat a rozhraní cizí funkce pro volání do jazyka nižší úrovně.
Jazykové funkce
Programovací jazyky
Různé programovací jazyky poskytují různé typy abstrakce v závislosti na zamýšlených aplikacích pro daný jazyk. Například:
- v objektově orientované programovací jazyky jako C ++, Objekt Pascal nebo Jáva, pojem abstrakce se samo stalo deklarativním prohlášením - pomocí klíčová slova
virtuální
(v C ++ ) neboabstraktní
[11] arozhraní
[12] (v Jáva ). Po takovém prohlášení je odpovědností programátora implementovat a třída vytvořit instanci objekt prohlášení. - Funkční programovací jazyky běžně vykazují abstrakce související s funkcemi, jako např lambda abstrakce (vytvoření termínu do funkce nějaké proměnné) a funkce vyššího řádu (parametry jsou funkce).
- Moderní členové rodiny programovacích jazyků Lisp, jako je Clojure, Systém a Společný Lisp Podpěra, podpora makro systémy umožnit syntaktickou abstrakci. Další programovací jazyky, jako např Scala mít také makra nebo velmi podobná metaprogramování funkce (například Haskell má Šablona Haskell, a OCaml má MetaOCaml ). Ty mohou programátorovi umožnit odstranění standardní kód, odstraňte zdlouhavé sekvence volání funkcí, implementujte nové řídit struktury toku a implementovat Jazyky specifické pro doménu (DSL), které umožňují stručně a elegantně vyjádřit koncepty specifické pro doménu. Všechny z nich při správném použití zlepšují efektivitu programátoru i jasnost kódu tím, že zamýšlený účel je jasnější. Důsledkem syntaktické abstrakce je také to, že jakýkoli dialekt Lisp a ve skutečnosti téměř jakýkoli programovací jazyk lze v zásadě implementovat do jakéhokoli moderního Lispu s výrazně sníženým (ale v některých případech stále netriviálním) úsilím ve srovnání s „tradičnějším“ programovací jazyky jako Krajta, C nebo Jáva.
Specifikační metody
Analytici vyvinuli různé metody pro formální specifikaci softwarových systémů. Některé známé metody zahrnují:
- Metoda založená na abstraktním modelu (VDM, Z);
- Algebraické techniky (modřín, CLEAR, OBJ, ACT ONE, CASL);
- Procesní techniky (LOTOS, SDL, Estelle);
- Stopové techniky (SPECIAL, TAM);
- Techniky založené na znalostech (Refine, Gist).
Specifikační jazyky
Specifikační jazyky se obecně spoléhají na abstrakce toho či onoho druhu, protože specifikace jsou obvykle definovány dříve v projektu (a na abstraktnější úrovni) než případná implementace. The UML specifikační jazyk například umožňuje definici abstraktní třídy, které v projektu vodopádu zůstávají abstraktní během fáze architektury a specifikace projektu.
Ovládejte abstrakci
Programovací jazyky nabízejí abstrakci řízení jako jeden z hlavních účelů jejich použití. Počítačové stroje rozumějí operacím na velmi nízké úrovni, jako je přesun některých bitů z jednoho místa paměti do jiného umístění a vytváření součtu dvou sekvencí bitů. Programovací jazyky to umožňují na vyšší úrovni. Zvažte například toto prohlášení napsané v a Pascal - jako móda:
a: = (1 + 2) * 5
Pro člověka se to zdá být docela jednoduchý a zřejmý výpočet („jedna plus dvě jsou tři, pět je patnáct“). Kroky nízké úrovně nutné k provedení tohoto vyhodnocení, vrácení hodnoty „15“ a následné přiřazení této hodnoty proměnné „a“, jsou však ve skutečnosti celkem jemné a složité. Hodnoty je třeba převést na binární reprezentaci (často mnohem složitější úkol, než by si člověk myslel) a výpočty rozložit (kompilátorem nebo tlumočníkem) na pokyny k sestavení (opět, které jsou pro programátora mnohem méně intuitivní: operace jako např. posunutí binárního registru doleva nebo přidání binárního doplňku obsahu jednoho registru do druhého jednoduše není způsob, jakým si lidé myslí o abstraktních aritmetických operacích sčítání nebo násobení). Nakonec přiřazení výsledné hodnoty „15“ proměnné označené „a“, aby bylo možné „a“ použít později, zahrnuje další kroky „zákulisí“ vyhledávání štítku proměnné a výsledného umístění ve fyzickém nebo virtuální paměť, uložení binární reprezentace „15“ do tohoto paměťového umístění atd.
Bez abstrakce kontroly by programátor musel specifikovat Všechno kroky registru / binární úrovně pokaždé, když chtěli jednoduše přidat nebo vynásobit pár čísel a přiřadit výsledek k proměnné. Takové zdvojení úsilí má dva závažné negativní důsledky:
- nutí programátora neustále opakovat docela běžné úkoly pokaždé, když je potřeba podobná operace
- nutí programátora programovat pro konkrétní hardware a sadu instrukcí
Strukturované programování
Strukturované programování zahrnuje rozdělení komplexních programových úkolů na menší části s jasným řízením toku a rozhraními mezi komponentami, se snížením potenciálu složitosti pro vedlejší účinky.
V jednoduchém programu to může mít za cíl zajistit, aby smyčky měly jednoduché nebo zjevné výstupní body a (pokud je to možné) mít jednotlivé výstupní body z funkcí a postupů.
Ve větším systému to může zahrnovat rozdělení složitých úkolů do mnoha různých modulů. Zvažte systém, který zpracovává mzdy na lodích a na pobřežních úřadech:
- Nejvyšší úroveň může obsahovat nabídku typických operací koncového uživatele.
- V rámci toho by mohly být samostatné spustitelné soubory nebo knihovny pro úkoly, jako je přihlašování a odhlášení zaměstnanců nebo tisk šeků.
- V rámci každé z těchto samostatných součástí by mohlo být mnoho různých zdrojových souborů, z nichž každý by obsahoval programový kód pro zpracování části problému a pro ostatní části programu byla k dispozici pouze vybraná rozhraní. Přihlašovací program může mít zdrojové soubory pro každou obrazovku zadávání dat a rozhraní databáze (což může být samo o sobě samostatná knihovna třetí strany nebo staticky propojená sada rutin knihovny).
- Databáze nebo mzdová aplikace musí také zahájit proces výměny dat mezi lodí a pobřežím a tato úloha přenosu dat bude často obsahovat mnoho dalších komponent.
Tyto vrstvy vytvářejí efekt izolace implementačních detailů jedné komponenty a jejích nejrůznějších interních metod od ostatních. Objektově orientované programování tento koncept zahrnuje a rozšiřuje.
Abstrakce dat
Abstrakce dat vynucuje jasné oddělení mezi abstraktní vlastnosti a datový typ a beton podrobnosti o jeho provádění. Abstraktní vlastnosti jsou ty, které jsou viditelné pro klientský kód, který využívá datový typ - the rozhraní na datový typ - zatímco konkrétní implementace je zcela soukromá a může se skutečně změnit, například za účelem začlenění zlepšení účinnosti v průběhu času. Myšlenka je, že takové změny nemají mít žádný dopad na kód klienta, protože nezahrnují žádný rozdíl v abstraktním chování.
Například by se dalo definovat abstraktní datový typ volala vyhledávací tabulka který se jednoznačně přidruží klíče s hodnoty, a ve kterých hodnotách lze načíst zadáním jejich odpovídajících klíčů. Taková vyhledávací tabulka může být implementována různými způsoby: jako a hash tabulka, a binární vyhledávací strom, nebo dokonce jednoduchá lineární seznam párů (klíč: hodnota). Pokud jde o kód klienta, jsou abstraktní vlastnosti typu v každém případě stejné.
Samozřejmě, to vše se spoléhá na získání podrobností rozhraní hned na prvním místě, protože jakékoli změny tam mohou mít zásadní dopad na kód klienta. Jako jeden ze způsobů, jak se na to podívat: rozhraní tvoří a smlouva na dohodnutém chování mezi datovým typem a kódem klienta; cokoli, co není uvedeno ve smlouvě, se může změnit bez předchozího upozornění.
Ruční abstrakce dat
I když k velké části abstrakce dat dochází prostřednictvím počítačové vědy a automatizace, jsou chvíle, kdy se tento proces provádí ručně a bez programového zásahu. Jedním ze způsobů, jak tomu lze porozumět, je abstrakce dat v procesu provádění a systematický přehled literatury. V této metodice jsou data abstrahována jedním nebo několika abstraktory při provádění a metaanalýza, s chybami redukovanými dvojitou abstrakcí dat následovanou nezávislou kontrolou známou jako rozhodnutí.[13]
Abstrakce v objektově orientovaném programování
v objektově orientované programování teorie, abstrakce zahrnuje zařízení k definování objektů, které představují abstraktní „aktéry“, kteří mohou vykonávat práci, podávat zprávy a měnit jejich stav a „komunikovat“ s ostatními objekty v systému. Termín zapouzdření odkazuje na skrývání Stát podrobnosti, ale rozšíření pojmu datový typ od dřívějších programovacích jazyků k asociaci chování nejsilněji s daty a standardizace způsobu, jakým různé datové typy interagují, je začátek abstrakce. Když abstrakce pokračuje do definovaných operací, což umožňuje nahrazení objektů různých typů, je volána polymorfismus. Když to probíhá v opačném směru, uvnitř typů nebo tříd, jejich strukturování pro zjednodušení složité sady vztahů, se nazývá delegace nebo dědictví.
Různé objektově orientované programovací jazyky nabízejí podobná zařízení pro abstrakci, vše pro podporu obecné strategie polymorfismus v objektově orientovaném programování, které zahrnuje náhradu jednoho typ pro jiného ve stejné nebo podobné roli. Ačkoli to není tak obecně podporováno, a konfigurace nebo obrázek nebo balíček může mnoho z nich předurčit vazby na čas kompilace, link-time nebo doba načítání. To by ponechalo jen minimum takových vazeb ke změně na run-time.
Společný systém objektů Lisp nebo Já, například, mají méně rozdílu mezi instancemi třídy a větší využití delegování pro polymorfismus. Jednotlivé objekty a funkce jsou abstrahovány pružněji, aby lépe odpovídaly sdílenému funkčnímu dědictví z Lisp.
C ++ je příkladem dalšího extrému: spoléhá se na něj šablony a přetížení a další statické vazby v době kompilace, což má zase určité problémy s flexibilitou.
Ačkoli tyto příklady nabízejí alternativní strategie pro dosažení stejné abstrakce, zásadně nemění potřebu podporovat abstraktní podstatná jména v kódu - veškeré programování se opírá o schopnost abstraktních sloves jako funkcí, podstatných jmen jako datových struktur a buď jako procesů.
Zvažte například vzorek Jáva fragment, který představuje některá běžná hospodářská „zvířata“ na úroveň abstrakce vhodnou k modelování jednoduchých aspektů jejich hladu a krmení. Definuje Zvíře
třída, která představuje stav zvířete i jeho funkce:
veřejnost třída Zvíře rozšiřuje Žijící věc{ soukromé Umístění loc; soukromé dvojnásobek energieRezervy; veřejnost booleovský je hladový() { vrátit se energieRezervy < 2.5; } veřejnost prázdnota jíst(Jídlo jídlo) { // Konzumujte jídlo energieRezervy += jídlo.getCalories(); } veřejnost prázdnota Přesunout do(Umístění umístění) { // Přesunout do nového umístění tento.loc = umístění; }}
S výše uvedenou definicí by bylo možné vytvářet objekty typu Zvíře a zavolat jejich metody takto:
prase = Nový Zvíře();kráva = Nový Zvíře();-li (prase.je hladový()) { prase.jíst(tableScraps);}-li (kráva.je hladový()) { kráva.jíst(tráva);}kráva.Přesunout do(stodola);
Ve výše uvedeném příkladu třída Zvíře
je abstrakce používaná místo skutečného zvířete, Žijící věc
je další abstrakce (v tomto případě zobecnění) Zvíře
.
Pokud někdo vyžaduje diferencovanější hierarchii zvířat - odlišit, řekněme, ty, kteří poskytují mléko, od těch, kteří na konci svého života neposkytují nic kromě masa - to je střední úroveň abstrakce, pravděpodobně DairyAnimal (krávy, kozy), který by jíst potraviny vhodné k podávání dobrého mléka a MeatAnimal (prasata, voly), kteří by jedli potraviny, aby poskytovali tu nejlepší kvalitu masa.
Taková abstrakce by mohla odstranit potřebu aplikačního kodéru specifikovat typ jídla, takže by se mohl místo toho soustředit na plán krmení. Tyto dvě třídy by mohly být spojené pomocí dědictví nebo samostatně a programátor mohl definovat různé stupně polymorfismus mezi těmito dvěma typy. Tato zařízení mají tendenci se drasticky lišit mezi jazyky, ale obecně každý může dosáhnout čehokoli, co je možné, s některým z ostatních. Velké množství provozních přetížení, datový typ podle datového typu, může mít v době kompilace stejný účinek jako jakýkoli stupeň dědičnosti nebo jiné prostředky k dosažení polymorfismu. Zápis třídy je jednoduše pohodlí kodéru.
Objektově orientovaný design
Rozhodování o tom, co abstrahovat a co ponechat pod kontrolou kodéru, se stalo hlavním zájmem objektově orientovaného designu a analýza domény —Činné určení příslušných vztahů ve skutečném světě je předmětem zájmu objektově orientovaná analýza nebo starší analýza.
Obecně platí, že k určení vhodné abstrakce je třeba učinit mnoho malých rozhodnutí o rozsahu (doménová analýza), určit, s jakými jinými systémy musí spolupracovat (starší analýza), poté provést podrobnou objektově orientovanou analýzu, která je vyjádřena v rámci času a rozpočtu projektu omezení jako objektově orientovaný design. V našem jednoduchém příkladu je doménou dvůr, živá prasata a krávy a jejich stravovací návyky jsou původními omezeními. Podrobná analýza spočívá v tom, že programátoři musí mít flexibilitu, aby nakrmili zvířata tím, co je k dispozici, a proto není důvod kódovat typ jídla do samotné třídy a design je jednoduchá jednoduchá třída zvířat, ve které jsou prasata a krávy příklady se stejnými funkcemi. Rozhodnutí odlišit DairyAnimal by změnilo podrobnou analýzu, ale analýza domény a dědictví by se nezměnila - je tedy zcela pod kontrolou programátora a v objektově orientovaném programování se jí říká abstrakce odlišná od abstrakce v doméně nebo starší analýza.
Úvahy
Při diskusi formální sémantika programovacích jazyků, formální metody nebo abstraktní interpretace, abstrakce odkazuje na akt zvažování méně podrobné, ale bezpečné definice pozorovaného chování programu. Například lze pozorovat pouze konečný výsledek provádění programu namísto zvážení všech mezikroků provádění. Abstrakce je definována jako a beton (přesnější) model provedení.
Abstrakce může být přesný nebo věřící pokud jde o vlastnost, pokud lze na konkrétní vlastnost nebo abstraktní model stejně dobře odpovědět na otázku týkající se této vlastnosti. Například, pokud si přejete vědět, jaký je výsledek vyhodnocení matematického výrazu zahrnujícího pouze celá čísla +, -, × modulo n, pak stačí provést všechny operace modulo n (známá forma této abstrakce je vyhazovat devítky ).
Abstrakce, i když ne nutně přesný, mělo by zvuk. To znamená, že by mělo být možné získat od nich zdravé odpovědi - i když abstrakce může jednoduše přinést výsledek nerozhodnutelnost. Například studenti ve třídě mohou být abstrahováni podle jejich minimálního a maximálního věku; pokud se někdo zeptá, zda určitá osoba patří do této třídy, lze jednoduše porovnat její věk s minimálním a maximálním věkem; pokud jeho věk leží mimo rozsah, lze bezpečně odpovědět, že daná osoba do třídy nepatří; pokud tomu tak není, lze odpovědět pouze „Nevím“.
Úroveň abstrakce zahrnutá v programovacím jazyce může ovlivnit jeho celkovou úroveň použitelnost. The Kognitivní rozměry rámec zahrnuje koncept abstrakční gradient ve formalismu. Tento rámec umožňuje návrháři programovacího jazyka studovat kompromisy mezi abstrakcí a dalšími charakteristikami designu a to, jak změny v abstrakci ovlivňují použitelnost jazyka.
Abstrakce se mohou ukázat jako užitečné při práci s počítačovými programy, protože netriviální vlastnosti počítačových programů jsou v zásadě nerozhodnutelný (vidět Riceova věta ). V důsledku toho musí automatické metody pro odvozování informací o chování počítačových programů buď ukončit ukončení (v některých případech mohou selhat, selhat nebo nikdy nepřinesou výsledek), spolehlivost (mohou poskytovat nepravdivé informace) nebo přesnost ( mohou na některé otázky odpovědět „nevím“).
Abstrakce je základním pojmem abstraktní interpretace. Kontrola modelu obvykle probíhá na abstraktních verzích studovaných systémů.
Úrovně abstrakce
Počítačová věda běžně představuje úrovně (nebo méně často vrstvy) abstrakce, kde každá úroveň představuje jiný model stejných informací a procesů, ale s různým množstvím detailů. Každá úroveň používá systém vyjádření zahrnující jedinečnou sadu objektů a kompozic, které platí pouze pro konkrétní doménu.[14]Každá relativně abstraktní „vyšší“ úroveň staví na relativně konkrétní „nižší“ úrovni, která má tendenci poskytovat stále „granulárnější“ reprezentaci. Například brány staví na elektronických obvodech, binární na branách, strojový jazyk na binární, programovací jazyk na jazyk stroje, aplikace a operační systémy na programovacích jazycích. Každá úroveň je ztělesněna, ale není určena úrovní pod ní, což z ní činí jazyk popisu, který je poněkud samostatný.
Databázové systémy
Protože mnoho uživatelů databázových systémů nemá dostatečné znalosti počítačových datových struktur, vývojáři databází často skrývají složitost prostřednictvím následujících úrovní:

Fyzická úroveň: Nejnižší úroveň abstrakce popisuje jak systém skutečně ukládá data. Fyzická úroveň podrobně popisuje složité nízkoúrovňové datové struktury.
Logická úroveň: Další vyšší úroveň abstrakce popisuje co data, která databáze ukládá, a jaké vztahy mezi těmito daty existují. Logická úroveň tedy popisuje celou databázi z hlediska malého počtu relativně jednoduchých struktur. Přestože implementace jednoduchých struktur na logické úrovni může zahrnovat složité struktury fyzické úrovně, uživatel logické úrovně si nemusí být této složitosti vědom. Toto se označuje jako nezávislost fyzických dat. Správci databází, kdo se musí rozhodnout, jaké informace má v databázi uchovávat, použije logickou úroveň abstrakce.
Zobrazit úroveň: Nejvyšší úroveň abstrakce popisuje pouze část celé databáze. I když logická úroveň používá jednodušší struktury, složitost zůstává kvůli rozmanitosti informací uložených ve velké databázi. Mnoho uživatelů databázového systému nepotřebuje všechny tyto informace; místo toho potřebují přístup pouze k části databáze. Úroveň pohledu abstrakce existuje, aby se zjednodušila jejich interakce se systémem. Systém může poskytnout mnoho pohledy pro stejnou databázi.
Vrstvená architektura
Schopnost poskytovat a design různých úrovní abstrakce může
- značně zjednodušit design
- umožnit různým hráčům rolí efektivně pracovat na různých úrovních abstrakce
- podporovat přenositelnost softwarové artefakty (ideálně na základě modelu)
Návrh systémů a návrh obchodního procesu mohou oba použít. Nějaký návrhové procesy konkrétně generovat návrhy, které obsahují různé úrovně abstrakce.
Vrstvená architektura rozděluje zájmy aplikace do skládaných skupin (vrstev). Jde o techniku používanou při navrhování počítačového softwaru, hardwaru a komunikace, při níž jsou systémové nebo síťové komponenty izolovány ve vrstvách, takže lze provádět změny v jedné vrstvě bez ovlivnění ostatní.
Viz také
- Princip abstrakce (počítačové programování)
- Inverze abstrakce pro anti-vzorec jednoho nebezpečí v abstrakci
- Abstraktní datový typ pro abstraktní popis sady dat
- Algoritmus pro abstraktní popis výpočetního postupu
- Závorka abstrakce pro vytvoření termínu do funkce proměnné
- Datové modelování pro strukturování dat nezávisle na procesech, které je používají
- Zapouzdření pro abstrakce, které skryjí podrobnosti implementace
- Greenspunovo desáté pravidlo pro aforismus o (?) optimálním bodě v prostoru abstrakcí
- Funkce vyššího řádu pro abstrakci, kde funkce produkují nebo spotřebovávají jiné funkce
- Lambda abstrakce pro vytvoření termínu do funkce nějaké proměnné
- Seznam abstrakcí (informatika)
- Upřesnění pro opak abstrakce ve výpočtu
- Celé číslo (informatika)
- Heuristika (informatika)
Reference
- ^ Guttag, John V. (18. ledna 2013). Úvod do výpočtu a programování pomocí Pythonu (Vydání z jara 2013). Cambridge, Massachusetts: MIT Press. ISBN 9780262519632.
- ^ A b Colburn, Timothy; Shute, Gary (5. června 2007). "Abstrakce v informatice". Mysl a stroje. 17 (2): 169–184. doi:10.1007 / s11023-007-9061-7. ISSN 0924-6495. S2CID 5927969.
- ^ A b C Kramer, Jeff (1. dubna 2007). "Je abstrakce klíčem k práci s počítačem?". Komunikace ACM. 50 (4): 36–42. doi:10.1145/1232743.1232745. ISSN 0001-0782. S2CID 12481509.
- ^ Ben-Ari, Mordechai (1. března 1998). „Konstruktivismus ve výuce informatiky“. Bulletin ACM SIGCSE. 30 (1): 257, 257–261. doi:10.1145/274790.274308. ISSN 0097-8418.
- ^ Comer, D. E .; Gries, David; Mulder, Michael C .; Tucker, Allen; Turner, A. Joe; Young, Paul R. / Denning (1. ledna 1989). "Výpočetní technika jako disciplína". Komunikace ACM. 32 (1): 9–23. doi:10.1145/63238.63239. ISSN 0001-0782. S2CID 723103.
- ^ Liskov, Barbara (1. května 1988). Msgstr "Adresa hlavní adresy - abstrakce a hierarchie dat". Oznámení ACM SIGPLAN. ACM. 23: 17–34. doi:10.1145/62138.62141. ISBN 0897912667. S2CID 14219043.
- ^ Barendregt, Hendrik Pieter (1984). Lambda kalkul: jeho syntax a sémantika (Přepracované vydání.). Amsterdam: Severní Holandsko. ISBN 0444867481. OCLC 10559084.
- ^ Barendregt, Hendrik Pieter (2013). Lambda kalkul s typy. Dekkers, Wil., Statman, Richard., Alessi, Fabio., Association for Symbolic Logic. Cambridge, Velká Británie: Cambridge University Press. ISBN 9780521766142. OCLC 852197712.
- ^ Newell, Allen; Simon, Herbert A. (1. ledna 2007). Počítačová věda jako empirický dotaz: symboly a hledání. ACM. p. 1975. doi:10.1145/1283920.1283930. ISBN 9781450310499.
- ^ Spolsky, Joel. „Zákon děravých abstrakcí“.
- ^ „Abstraktní metody a třídy“. Výukové programy Java ™. Věštec. Citováno 4. září 2014.
- ^ „Použití rozhraní jako typu“. Výukové programy Java ™. Věštec. Citováno 4. září 2014.
- ^ E, Jian-Yu; Saldanha, Ian J .; Canner, Joseph; Schmid, Christopher H .; Le, Jimmy T .; Li, Tianjing (2020). "Při snižování chyb při abstrakci dat při systematických kontrolách záleží spíše na rozhodování než na zkušenostech s abstrakcí dat." Výzkumné metody syntézy. 11 (3): 354–362. doi:10,1002 / jrsm.1396. ISSN 1759-2879. PMID 31955502.
- ^ Luciano Floridi, Levellismus a metoda abstrakce IEG - Výzkumná zpráva 22.11.04
- Tento článek je založen na materiálu převzatém z Zdarma online slovník výpočetní techniky před 1. listopadem 2008 a začleněno pod "licencování" podmínek GFDL, verze 1.3 nebo novější.
Další čtení
- Harold Abelson; Gerald Jay Sussman; Julie Sussman (25. července 1996). Struktura a interpretace počítačových programů (2. vyd.). MIT Stiskněte. ISBN 978-0-262-01153-2. Archivovány od originál dne 26. února 2009. Citováno 22. června 2012.
- Spolsky, Joel (11. listopadu 2002). „Zákon děravých abstrakcí“. Joel na software.
- Skrytí abstrakce / informací - kurz CS211, Cornell University.
- Eric S. Roberts (1997). Programování abstrakcí v C Druhý kurz výpočetní techniky.
- Palermo, Jeffrey (29. července 2008). "Cibulová architektura". Jeffrey Palermo.
- Vishkin, Uzi (leden 2011). „Použití jednoduché abstrakce k znovuobjevení výpočtů pro paralelismus“. Komunikace ACM. 54 (1): 75–85. doi:10.1145/1866739.1866757.
externí odkazy
- SimArch příklad vrstvené architektury pro distribuované simulační systémy.