[爆卦]axel意思是什麼?優點缺點精華區懶人包

為什麼這篇axel意思鄉民發文收入到精華區:因為在axel意思這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者zzss2003 (brotherD)看板C_and_CPP標題[問題] 請教關於Axel-To...


小弟最近在拜讀Axel-Tobias Schreiner的Object-oriented Programming in ANSI-C,
殊不知看不太懂作者想要表達的想法與觀念,故想上網請教前輩們。

附上pdf網址:https://www.cs.rit.edu/~ats/books/ooc.pdf

在PDF第7頁,"Alternatively, we can define a data type as a set of values plus
operations to work with them."

data type可以定義為一組數值+上與數值的運算,不太懂這句話想要表達的含意是什麼(註
:我只會C,不會C++)

對我來說data type就是最基本的int, char,double與float,其餘像是array, struct,
union都是最基本的延伸的變化型。

接著在下列的這句話"Typically, the values are what a computer can represent, and
the operations more or less reflect the available hardware instructions. int in
ANSI-C does not do too well in this respect: the set of values may vary between
machines, and operations like arithmetic right shift may behave differently."

第二句看不懂,operation體現出可使用的硬體指令?為什麼ANSI-C的int在這方面做得不太
好?是哪方面?

接著,"More complicated examples do not fare much better. Typically we would
define an element of a linear list as a structure"
作者說明更複雜的data type進展的也不是很好,並舉例了一個例子:

typedef struct node {
struct node * next;
... information ...
} node;

and for the operations we specify function headers like

node * head (node * elt, const node * tail);

作者說明,這個方法相當馬虎,好的原則應該是要隱藏data item的representation且只
declare possible manipulations.

問題1: 什麼是 linear list? 為什麼這個struct是linear list的一種?
問題2: head應該是指向一個函式的指標吧?
問題3: 所以operation不是指+ - * /這類的?
問題4: 這個例子的representation of data item是那些東西?
問題5: only declare possible manipulation是指什麼意思?
問題6: 為什麼這個方法會相當馬虎? 哪邊馬虎?

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.26.157
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1502782305.A.C87.html
james732: 先查一下什麼是linked-list? 08/15 15:38
我知道什麼是Linked-list
※ 編輯: zzss2003 (60.248.26.157), 08/15/2017 15:40:46
james732: 他的linear list應該跟linked-list是一樣的東西? 08/15 16:36
我不確定...所以才上來問版友@@
※ 編輯: zzss2003 (60.248.26.157), 08/15/2017 16:54:59
chuegou: 這裡的operation應該是指oop的"方法"? 08/15 19:05
chuegou: 這裡的data type不好 是因為他沒有包含操作該data的方法 08/15 19:11
chuegou: 作者應該認為好的data應該包含"方法" 08/15 19:11
chuegou: 像是c++的class那樣 08/15 19:12
chuegou: 第二個例子就用struct作一個類似class的封裝 08/15 19:12
chuegou: 其中包含了head這個方法 08/15 19:13
longlongint: 比如說我要定義 2bits 的正整數型態 08/15 23:19
longlongint: 數值有 0 1 2 3, 0+1=1 1+1=2 等等可以列舉16種可能 08/15 23:21
longlongint: 資料的表示 跟如何運算的意思啦...... 08/15 23:22
longlongint: 然後第二段是在靠北說一樣的碼不同機器跑結果不一樣 08/15 23:23
longlongint: 其實講這麼多只是盡量希望所有東西都定義清楚 08/15 23:28
legendmtg: 整段就是在跟你說封裝很重要啦 08/16 13:32
zzss2003: 謝謝兩位大大的解釋,小弟資質太淺還是看不懂QQ 08/16 14:07
Neisseria: 這本是好書,第一次看看不懂,後來才慢慢了解作者的 08/16 14:34
Neisseria: 用意。不過,除了非得用 C 寫程式的場合外,還是用 08/16 14:34
Neisseria: C++ 或 Java 比較簡單,有現成的物件系統可用 08/16 14:35
zzss2003: 想請問N大,我現在在寫嵌入式軟體(純C),這本對我現在 08/16 15:57
zzss2003: 的幫助大嗎? 08/16 15:57
zzss2003: 因為之後想要自己玩看看RTOS,很怕對物件導向的觀念不熟 08/16 15:58
zzss2003: 導致寫出來的OS之後要修改必須要砍掉重練 08/16 15:58
Neisseria: 嵌入式裝置我沒有碰,可能問問版上其他高手 08/16 16:12
Neisseria: 基本上,OOP 的作用在協助我們整理程式碼,應該和特定 08/16 16:12
Neisseria: 領域無關,都會有所幫助 08/16 16:13
dou0228: C 寫 Class,寫熟了就算簡單 08/16 16:13
dou0228: 可以多看點 Linux Kernel 程式碼,不少這樣概念寫出來的 08/16 16:14
dou0228: 好的程式碼應該看到 structure 就能搞懂邏輯 08/16 16:15
chuegou: 我也是寫嵌入式 我對於oop in c的感想 08/16 18:56
chuegou: 就是就算不會oop, 但為了維護等原因 08/16 18:56
chuegou: c寫久了你就會自己做一些簡單類似oop的封裝 08/16 18:56
chuegou: 這時候再來看oop in c,會有"阿阿我懂我懂"的認同感 08/16 18:56
chuegou: 然後我認為 rtos重要的是os觀念 08/16 18:59
chuegou: 照著你選的os的framwork來寫即可 08/16 18:59
我現在就是還在初階段XD沒有啊...阿...嘶我懂我懂的感覺QQ
※ 編輯: zzss2003 (60.248.26.157), 08/18/2017 13:11:25

你可能也想看看

搜尋相關網站