Re: 常見的 C++ 錯誤觀點
追加一發,這一發很重要,因為這是 C++ 非常自古以來就被誤會的點。
推
03/06 21:11,
03/06 21:11
→
03/06 21:14,
03/06 21:14
推
03/06 21:22,
03/06 21:22
事實上的確不是,
因為 C++ 是 Simula 跟 Algol 的混合體在 C 語言上面的實作品。
C++ 的主要概念都是來自於 Simula 跟 Algol 兩種語言,
但是當時這兩個語言都有些缺點,比方說執行效能跟移植問題。
C++ 當時的目標是融合這兩個語言的優點,
然後希望能作到非常方便的可移植性以及高效能。
如果事情不是在 1979 年,是在 2009 的今天,
你想要發明一個語言,到處都可以跑,請問你會怎麼作?
你會想要在每一種機器上面都實作你的語言的編譯器?
當然不是,這樣太要命了,
最簡單的作法是在 JVM 上面跑,因為 JVM 到處都有。
時間回到 1979 年,當初還沒有 JVM,
那最普遍的平台是什麼?是 C。
最初的 C++ 是以 C 為載體,
「把 C 語言當作一個平台」,一個高效能,高移植性的平台,
使用一個 preprocessor,把 C++ 程式碼轉成合法的 C 語言程式碼,
這樣就可以透過本來就已經高效能且存在於很多平台的 C 編譯器直接被使用。
另外,如果是在今天,
你想要你的新語言能儘快被大家接受,你會怎麼作?
開發一個語言的語法跟現在常見的完全不同(像是 FORTH)?
還是把語法設計成 C-like?當然是後者。
C++ 當初的考量也是這樣,
但是他做的更極端,他選擇幾乎 100% 跟 C 相容(還是有不相容的地方),
於是程式設計師可以快速的接納 C++,不用重新學。
事實上當初 C++ 有考慮以別的語言為載體,但是最後選定的 C。
也就是說,當初 C++ 發展時所蘊含的「觀念」,跟 C 沒有關係,
那是一個全新的語言,只是選擇用 C 當載體,在「語法」上刻意設計的跟 C 相容,
事實上也有把 C++ 編成 P 語言(一種簡單,容易移植的語言)的編譯器唷~
事實上,C++ 發展時也有考慮過跟 C 不相容的語法,
但是使用者的反彈非常明顯,你知道的,
程式設計師都很懶,大家都懶得學新東西,
大家都希望我本來就會的東西,到了新的地方還是可以完全套用。
幾乎所有跟 C 不相容的嘗試最後都被使用者打回來,
不然 C++ 理想上的語法會比現在更精練許多。
而 C++ 這個名字,
其實是 C++ 已經發展好一段時間才取的,
原因是因為「語法上跟 C 很像」,
請千萬不要再誤會 C++ 是從 C 來的了。
PS. 「C++擴充C 但不代表 C++比C優越」
這句話姑且不論實際上正確不正確,
但是 Linus 講話一點都不中肯,他的偏見是有名的,加油好嗎。
「Linus 講話一點都不中肯」
這句話才是公認的中肯。
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.106.19
→
03/13 23:33, , 1F
03/13 23:33, 1F
→
03/14 00:47, , 2F
03/14 00:47, 2F
推
03/14 00:57, , 3F
03/14 00:57, 3F
推
03/14 10:15, , 4F
03/14 10:15, 4F
→
03/14 10:16, , 5F
03/14 10:16, 5F
→
03/14 10:16, , 6F
03/14 10:16, 6F
→
03/14 10:18, , 7F
03/14 10:18, 7F
→
03/14 10:35, , 8F
03/14 10:35, 8F
→
03/14 10:38, , 9F
03/14 10:38, 9F
→
03/14 10:47, , 10F
03/14 10:47, 10F
→
03/14 10:48, , 11F
03/14 10:48, 11F
→
03/14 10:48, , 12F
03/14 10:48, 12F
→
03/14 10:49, , 13F
03/14 10:49, 13F
→
03/14 10:50, , 14F
03/14 10:50, 14F
→
03/14 10:51, , 15F
03/14 10:51, 15F
→
03/14 10:52, , 16F
03/14 10:52, 16F
→
03/14 10:52, , 17F
03/14 10:52, 17F
→
03/14 10:53, , 18F
03/14 10:53, 18F
→
03/14 10:55, , 19F
03/14 10:55, 19F
→
03/14 10:55, , 20F
03/14 10:55, 20F
推
03/14 11:07, , 21F
03/14 11:07, 21F
→
03/14 11:08, , 22F
03/14 11:08, 22F
推
03/14 11:43, , 23F
03/14 11:43, 23F
推
03/14 11:47, , 24F
03/14 11:47, 24F
推
03/14 11:49, , 25F
03/14 11:49, 25F
→
03/14 11:50, , 26F
03/14 11:50, 26F
→
03/14 11:50, , 27F
03/14 11:50, 27F
→
03/14 12:53, , 28F
03/14 12:53, 28F
→
03/14 12:54, , 29F
03/14 12:54, 29F
→
03/14 13:12, , 30F
03/14 13:12, 30F
→
03/14 13:13, , 31F
03/14 13:13, 31F
→
03/14 13:13, , 32F
03/14 13:13, 32F
→
03/14 13:15, , 33F
03/14 13:15, 33F
推
03/14 13:32, , 34F
03/14 13:32, 34F
→
03/14 13:33, , 35F
03/14 13:33, 35F
還有 53 則推文
推
03/14 19:57, , 89F
03/14 19:57, 89F
→
03/14 19:57, , 90F
03/14 19:57, 90F
→
03/14 19:57, , 91F
03/14 19:57, 91F
推
03/15 03:26, , 92F
03/15 03:26, 92F
推
03/15 11:13, , 93F
03/15 11:13, 93F
推
03/15 13:41, , 94F
03/15 13:41, 94F
→
03/15 13:42, , 95F
03/15 13:42, 95F
→
03/15 13:45, , 96F
03/15 13:45, 96F
→
03/15 13:46, , 97F
03/15 13:46, 97F
推
03/15 18:51, , 98F
03/15 18:51, 98F
→
03/15 18:51, , 99F
03/15 18:51, 99F
推
03/15 18:57, , 100F
03/15 18:57, 100F
→
03/15 18:57, , 101F
03/15 18:57, 101F
→
03/15 18:57, , 102F
03/15 18:57, 102F
→
03/15 18:58, , 103F
03/15 18:58, 103F
推
03/15 19:04, , 104F
03/15 19:04, 104F
推
03/15 19:06, , 105F
03/15 19:06, 105F
推
03/15 19:26, , 106F
03/15 19:26, 106F
→
03/15 19:26, , 107F
03/15 19:26, 107F
→
03/15 19:26, , 108F
03/15 19:26, 108F
推
03/15 19:33, , 109F
03/15 19:33, 109F
推
03/15 19:35, , 110F
03/15 19:35, 110F
推
03/15 19:45, , 111F
03/15 19:45, 111F
推
03/15 19:46, , 112F
03/15 19:46, 112F
推
03/15 21:17, , 113F
03/15 21:17, 113F
→
03/16 00:37, , 114F
03/16 00:37, 114F
推
03/24 02:24, , 115F
03/24 02:24, 115F
推
04/13 15:50, , 116F
04/13 15:50, 116F
→
04/13 15:52, , 117F
04/13 15:52, 117F
→
04/13 15:53, , 118F
04/13 15:53, 118F
→
04/13 15:54, , 119F
04/13 15:54, 119F
→
04/13 15:54, , 120F
04/13 15:54, 120F
→
04/13 15:56, , 121F
04/13 15:56, 121F
→
04/13 15:57, , 122F
04/13 15:57, 122F
→
04/13 15:58, , 123F
04/13 15:58, 123F
推
04/13 16:02, , 124F
04/13 16:02, 124F
→
04/13 16:03, , 125F
04/13 16:03, 125F
→
04/13 16:04, , 126F
04/13 16:04, 126F
→
06/29 22:39, , 127F
06/29 22:39, 127F
推
03/23 21:21, , 128F
03/23 21:21, 128F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 4 篇):