#5 – 什麼是「抽象化」?跟C#中的抽象類別 abstract 一樣嗎?

之前在學習C#聽到「抽象」類別 (abstract),
毛多的我也對於這件事感到很怪…

「抽象」的定義:

在中文中,抽象是一種對事物本質特徵的提煉,是人類思維的一種方式,將具體、複雜的事物轉化為簡化的概念或框架。

抽象的存在意味著我們可以透過忽略細節來聚焦於核心本質,並以概念化的形式進行理解與表達。
「抽象」的範例:
1. 自由
自由是一種抽象概念,代表了個體能夠不受約束地選擇、行動或思考的狀態,無法直接觸摸或量化。

2. 幸福
幸福是一種主觀的感受,涉及滿足、喜悅或生活的意義,但因個人而異,難以具體定義。

3. 智慧
智慧是一種能夠洞察事物本質、作出深刻判斷的能力,無法被具體呈現或完全測量。

4. 信任
信任是對他人或系統的依賴與信賴,表現為行為與態度,但無法以實體形式存在。

5. 和平
和平是一種沒有衝突與紛爭的狀態,是社會與人類關係中的理想目標,卻無法具象化。

6. 勇氣
勇氣是面對困難、恐懼或挑戰時,內心產生的一種力量,無法用物質形式表示。

7. 愛
當我們談論「愛」時,並非指向某一具體的事件或行為,而是抽象地總結了一種情感和價值的集合體。

8. 希望
希望是對未來的積極期待,常存在於人們的信念或願景中,但無法具體呈現或量化。
9. 程式碼 
?????????????

相信大家可以理解我覺得怪的點了……
我在看EF Core線上課程時,
看到其中一句:”Abstraction of the database structure in code“
再度爆氣(脾氣到底奪差?)
資料庫是一個相對已經非常具體的東西,
到底為什麼要抽象化?
變成程式還是很不抽象啊(就看得到!!比感覺到還不抽象1000萬倍)


So here comes the answers and more questions:

1. The answers:

Abstraction 是指:
將複雜的細節隱藏起來,只呈現出關鍵的部分

—我個人覺得這和以前學術論文都一定會有abstract (摘要)的含義是相通的
(OK GPT說不一樣)

C# 的 abstract 強調的是類別和方法的不完整性(Incomplete Implementation),
需要透過繼承來實現具體行為

2. Details and more Questions

在這個上下文中,「Abstraction」的翻譯可以根據具體情境調整,但在EF Core中,「Abstraction of the database structure in code」的意思更接近「對資料庫結構在程式碼中的抽象化表達」。

  1. 翻譯為「抽象」的情境
  • Abstraction 是指將複雜的細節隱藏起來,只呈現出關鍵的部分。
  • 在 Database Context 的情境下,EF Core 的 DbContext 就是對資料庫結構的抽象化,它隱藏了 SQL 等低層操作,讓你可以透過 C# 程式碼來操作資料庫。
  • 這種「抽象」的做法可以使開發者專注於應用程式邏輯,而不需要直接操作資料庫細節。
  1. 與 C# 的 Abstract 的比較
  • 雖然 EF Core 的「Abstraction」和 C# 的 abstract 關鍵字在概念上有相似之處,但並非完全一樣。
  • C# 的 abstract 強調的是類別和方法的不完整性(Incomplete Implementation),需要透過繼承來實現具體行為。
  • 而 EF Core 的「Abstraction」更多是強調對底層細節的隱藏和簡化,以便提供更高層次的介面操作。
  1. 為什麼「摘要」不適用?
  • 「摘要」的翻譯更偏向提取重要資訊的總結,像是文章摘要(Summary)。而「抽象」描述的是對某個東西的高層次建模或概念化。
  • 在程式設計中,抽象是專業術語,意指從具體細節中提煉出通用的結構或模型,因此更為適合。

3. 總結:

EF Core 中的 Abstraction of the database structure in code 最佳翻譯是:

資料庫結構在程式碼中的抽象化

它不等同於摘要,也和 C# 的 abstract 關鍵字有相關但不完全相同的概念。

如果覺得「抽象」太難理解,可以試著理解為「資料庫結構的高層次表達」。


「思想在虛空裡劃過,
成為線,成為面,
最終消散,
抽象與具象,誰歸還誰的名字?」

——楊牧,《思想的邊界》

分享框