Що протилежне абстракції? [зачинено]


19

Як я розумію, абстракція - це термін, який ми використовуємо, коли більше сенсу створюється з чогось більш простого, не змінюючи його. Він походить від латинського дієслова abstrahere («відтягувати»). Наприклад, текст - це лише одне абстрагування двійкових даних - як і растрові карти. Так, у комп’ютерах текст та растрові зображення існують поверх (реалізованих з точки зору) двійкових даних.

Моє запитання: що таке протилежний термін? Якщо я хочу знати більш можливі основні речі, які мали бути реалізовані в растрових формах, крім інших, ніж бінарні дані - такі як плитка для мозаїки або тканинні патчі для ковдри з печворку - про що я прошу? Чи є для цього слово?

Абстракція має конотації узагальнення, протилежний процес - спеціалізація. IDK, чи це допомагає.


7
Це може бути краще підходить на English.SE.
Péter Török

3
У деяких випадках простота. Я бачив безліч жахливих абстракцій, які тільки ускладнили речі; |
Вільям

Я думаю, що ця концепція не має задовільного слова. Давайте монету одну так: "
знезараження

Відповіді:


8

Впровадження.

Абстракція - це короткі слова, це розумовий процес отримання (зменшеної) моделі речі реального світу, а «компактність» у поняття чи ідею.

Тож навпаки - взяти поняття чи ідею та перетворити її на реальну світову річ ;-)


2
Я не знаю, чи б я так сильно назвав це навпаки, як доповнюючої концепції. Як і в кожному випадку, коли у вас є абстракція в програмуванні, ви також маєте реалізацію, що абстракція ховається. Однак, як видається, про це і задається питання.
поштовх

@jhocking Гальмо та прискорювач автомобіля є протилежними, але також доповнюють. Ура.
umlcat

"прояв" ефірної абстракції від планетичної сфери до (просто) фізичної реальності
Конор Коснетт

41

Зазвичай

Конкретизація - як у C ++ Бетонному класі

а в деяких випадках:

Спеціалізація - як у спеціалізації шаблонів C ++

Додано 12 червня-2012 : Це прекрасний термін:

Реіфікація - Як і в кількох мовах програмування


6
Хоча я не погоджуюся з використанням "конкретизації" - це трохи громіздке слово ... не було б "конкретування" краще? thefreedictionary.com/concretion
HorusKol

1
Конкрет точно.
Захарій Йейтс

Чи встановлюється це в бетон тоді, після бетонування? Просто запитую :-)
JensG


4

"Бетон" є протилежним "абстрактному", тому протилежність "абстракції" логічно "конкретизація". Однак не існує абсолютно суттєвого протилежного, оскільки ви, як правило, говорите лише про абстракцію і рідко думаєте про те, що це навпаки.


3

Почнемо з нуля. Перш за все, що насправді є абстракцією?

Проблема / мотив

Програмуючи, вам часто доводиться вирішувати дуже конкретні проблеми.

Основним мотивом абстракції є те, коли ви можете опинитися в ситуації, коли ваша програма вирішує всю проблему як єдине ціле, з безліччю дискретних маленьких особливостей, які потребують уваги та розуміння. Проблема тут полягає в тому, що людині важко обробляти такі величезні обсяги даних одночасно.

Рішення: Абстракція

Для того, щоб ви змогли зрозуміти, що саме вам потрібно, щоб реалізувати свою ідею , ви витягуєте детальні рішення в спрощені абстракції .

Наприклад, давайте подивимось на ORM (Object-Relational Mapping), де SQL абстрагується на об'єкти.

Для того, щоб вставити новий елемент у базу даних без абстракцій, програміст повинен знати SQL. Отже, щоб вставити новий елемент, програмісту потрібно запам’ятати синтаксис SQL для вставки нового елемента в таблицю:

INSERT INTO Items (field1, field2) VALUES (value1, value2)

Але з абстракціями програмісту потрібно лише усвідомлювати ідею того, що він хоче зробити. Об'єктно-орієнтована абстракція може виглядати так:

Item item = new Item(value1, value2)

Можна навіть зайти трохи далі і подумати про те, що сам SQL - це величезна абстракція для тонн складних структур та алгоритмів зберігання даних, які цілком у вас під рукою за ціну вивчення простої мови декларацій.


Протилежне абстракції

Виходячи з того, що ми зараз визначили, що абстракція насправді полягає в тому, щоб зробити її достатньою лише для того, щоб знати наявну в даний час концепцію, ми можемо легко зробити висновок, що протилежність абстракції насправді є езотерикою , де використання або розуміння тягне за собою певні спеціалізовані знання про особливості предмета.


1

"Відволікання" - як у тому, що відбувається, коли фрагмент коду неможливо зрозуміти без усвідомлення багатьох дотичних деталей того, що насправді відбувається під час його запуску.


0

Абстракція походить від abs-trahere, і я б сказав, що найкраще перекладати як "малювати з" (хоча буквальний переклад, таким чином, був би зняттям). Я намагався пояснити це в публікації в блозі .

Абстракція - це процес виведення сутності з чогось конкретного. Конкретні речі зазвичай надзвичайно складні. Наприклад, якщо ви подивитесь на найближчий стілець, який ви можете бачити, є багато деталей, які насправді складають його. Її матеріал, його структура, форма тощо. Але жодна з цих речей насправді не є істотною . Важливе, що ви можете сидіти на ньому.
Ваше "абстрактне" щось - це те, що ви бачите, коли ви дивитесь на це. Коли ти дивишся на цей стілець, то бачиш стілець. Борець може натомість побачити зброю.

Тож результат абстракції насправді є суттю чогось із заданої точки зору.

У випадку растрового зображення або тексту абстракція полягає в тому, що ви вважаєте задане значення як щось, що відповідає певній меті. Залежно від мови програмування, ви можете представити своє мислення в межах мовної семантики.
Але для вас не важливо, чи базові дані є "бінарними". Це спрацювало б так само добре, якби його читали в режимі реального часу з рулону обмазаного паперу, що має дані, закодовані з 13-ти бітною схемою пробивання отворів. Вас не цікавить.
Звичайно, реалізація конкретної растрової карти з використанням бінарних даних, що зберігаються в пам'яті, має деякі очевидні переваги, і більшість людей віддадуть перевагу цьому. Тим не менш, існує ще кілька способів, наприклад, фактично кодувати інформацію про растрові карти. І це навіть може мати сенс використовувати різні підходи поряд з одним. Але за винятком невеликого фрагмента коду, який обирає представлення на основі ряду обмежень, ви не хочете мати ніяких знань про конкретний характер растрової карти. Вас хвилює лише те, що важливо з вашої точки зору. У цьому прикладі, мабуть, існує ряд методів маніпулювання піксельними даними.

Оскільки абстракція - це насамперед ідея (як в ідеальній моделі чогось), навпаки можна назвати "втіленням". Оскільки програмування рідко є тілесною річчю, можна йти з "реалізацією", тоді як абстракції часто представляються як інтерфейси.
Конкретизація, як говорив @Lior, також є дуже підходящим словом, хоча вона зосереджується більше на засобах (тобто наданні чогось конкретного - що, звичайно, неминуче), а не на власній меті (тобто на реалізацію ідеї).


0

Абстракція - це процес вилучення конкретики для узагальнення чогось. Якщо абстракція - це вилучення специфіки, то, можливо, протилежність абстракції є специфікацією.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.