※ 引述《zxvc (眾生都是未來佛)》之銘言:
: 這討論主要是接續C_AND_CPP板的這系列文章作討論:
: "[閒聊] 這裡將近兩萬篇的文"
<cut />
: 試回想以前邏輯學學的"if p then q"真值表是這樣嗎?不是!
: p->q的真值表應該是這樣:
: if p then q
: p q p->q
: 0 0 1
: 0 1 1
: 1 0 0
: 1 1 1
C 的 if 意思確實是這樣子. 對同一個事實q而言,p是true,q就跟著是true.
p是false,q就跟著是false. 而且 p 是false, q 真的被逼得變成 true.
至於 p true 而 q false 的情況,從來不可能發生.
(不過,目前我有個通信的對象,寫出一段程式說:
if (true) printf("I\'m a function.\n");
if (true) printf("I amn\'t a function.\n");
如此假裝它跑出來的結果一下子是又一下子不是.
你說說看,這種式子是否能證明 "if不是函數" ? )
對照到C語言, q 可以是一列不限數目的敘述,不管 q 敘述是多少,
你永遠找不到一種 if p then q 對應情況不符合邏輯上的 p -> q.
另外,我們可以來看看,照邏輯真值表來看,是否指出 -> 不是函數.
要說不是函數,其中一項證明是舉出有某個 p 同時 -> q 又 -> q'.
將您所貼的真值表抄下一半下來看:
: p q p->q
: 1 0 0
: 1 1 1
這二行看起來好像是一個 p 會對應到 q 又對應到 not q, 但是,
你還要看在第一行 p->q 欄位說,關於 p 1 q 0 這條規則,沒這回事.
於是,我們知道 p 為 1 的時候, q 只會對應到 1.
接著再看上面一半:
: p q p->q
: 0 0 1
: 0 1 1
哎呀,好像是一個 0 對應到二個. 這我不知道到底像我這樣子解釋對或不對:
p 為 0 的情況,代表函數的底. 我們只講 p 為 0 是函數的底.
而不是說 p 究竟使 q 為 0 或 1.
通常會說 p -> q 就等於 not p or q. 當不是 not p 情況時,我們看得到 q.
但是 not p 的時候,就看不到 q. 所以,我覺得這意思是說 not p 是 if 這種函數
的底.
如果你要認為它不是,請你提出證明.
先提出證明,再取笑; 而不是先取笑, 後來卻無法提出證明.
(愛麗絲夢遊仙境有一段她與紅皇后的對話,紅皇后說:"先宣判,然後再審議."
愛歷絲馬上大喊:"竟然先宣判!!!?")
: 而前者這種if在邏輯學上並沒有這樣的定義,
: 邏輯學只有定義"if p then q"。
: 如果有人硬是要把前者定義為"程式語言裡講的if",
: 而不是"邏輯學的if p then q",那的確還有討論下去的空間。
: 只是"程式語言裡講的if"如果真是一個function,
: 請問是在什麼概念下來看是個function呢?
: 若以C/C++ compile成ASM的角度來看,if真的不會compile成function。
: 不過yauhh大也強調,他並不是以這種角度去詮釋if是個function。
: 他似乎想用更高度抽象(abstraction)的方式去詮釋if是個function。
: 如果他的說法不能自生矛盾,我是能尊重他的學說。
: 有人可能會覺得幹麼尊重一個無用的學說?
: 但很多學問當初被發明也沒有什麼實用目的,
: 是到後來人們才發現它有實用目的。
: 搞不好改天yauhh大發明個更高階的yauhh程式語言
: 影響了程式語言的發展,變成一個大家不得不學的語言也不一定XD
不要閒扯. 你最後這樣寫,反而看起來是你來這裡貼個戰文,公然批評我這個人而已.
那你就該想一下,你有沒有資格這樣子點名處理??