作者查詢 / CoNsTaR

總覽項目: 發文 | 留言 | 暱稱
作者 CoNsTaR 在 PTT [ C_and_CPP ] 看板的留言(推文), 共1276則
限定看板:C_and_CPP
[問題] 用書分析或推薦
[ C_and_CPP ]25 留言, 推噓總分: +2
作者: spong - 發表於 2020/07/15 17:15(5年前)
3FCoNsTaR: primer plus 和 primer 是兩本完全不同的書欸07/15 19:51
4FCoNsTaR: 如果有人推薦給你,他推薦的應該是 primer 不是 primer p07/15 19:51
5FCoNsTaR: lus 哦07/15 19:51
[討論] 該學習C++嗎?
[ C_and_CPP ]203 留言, 推噓總分: +52
作者: Matz - 發表於 2020/07/08 19:13(5年前)
29FCoNsTaR: 系統語言 rust 最讚沒有之一07/10 00:44
50FCoNsTaR: C++ 有所有範式反對一票,光是 fp 就沒有了07/13 07:06
52FCoNsTaR: 這和 fp 說他們有 first class module(或 record)存 co07/13 08:59
53FCoNsTaR: ntext,可以算 OOP 有什麼不同 XD07/13 08:59
68FCoNsTaR: @ray2501 有 lambda calculus 是個什麼說法 orz07/13 11:07
69FCoNsTaR: 可以函數輸入輸出又是什麼說法 orz07/13 11:07
70FCoNsTaR: 你的定義怎麼好像跟別人都不太一樣 XD07/13 11:08
71FCoNsTaR: @Killercat Agda 呢?連 reflection 都是用自己寫的07/13 11:13
75FCoNsTaR: 如果要“成為”一個 FP 語言,最重要的前提是必須是 decl07/13 11:36
76FCoNsTaR: arative 吧,或至少在某些範圍內是 declarative,或者就07/13 11:36
77FCoNsTaR: 算做不到也要有一些 compromise 的產物,例如 rust 的 mu07/13 11:36
78FCoNsTaR: table 之類的07/13 11:36
79FCoNsTaR: 如果只是想要“支援 FP”最重要的就是要有 GADT 去配合某07/13 11:36
80FCoNsTaR: 種 exhaustive check(例如 pattern matching in terms o07/13 11:37
81FCoNsTaR: f pattern calculus,或是 Scott、Church encoding in te07/13 11:37
82FCoNsTaR: rms of lambda calculus),和 first class function07/13 11:37
83FCoNsTaR: *某種類似 GADT 去配合某種 exhaustive check07/13 11:39
86FCoNsTaR: 我不是故意要在 c/cpp 版討論 fp(你可以去 PLT 版開一篇07/13 12:04
87FCoNsTaR: ,我或其他大大可以在那裡回你),只是如果真的是 first07/13 12:04
88FCoNsTaR: class,有可能會不是 higher order 嗎?為什麼要分成兩07/13 12:04
89FCoNsTaR: 個條件?07/13 12:04
90FCoNsTaR: 然後既然是 first class,為什麼 c++ 不能有 flip 和 par07/13 12:04
91FCoNsTaR: tial application?(我知道有 bind)07/13 12:04
92FCoNsTaR: 解釋一下,我說的「類似 GADT 去配合某種 exhaustive che07/13 12:15
93FCoNsTaR: ck」是打造 first class 函數的其中一種方法,只有用這07/13 12:15
94FCoNsTaR: 種方法產生函數的語言才能算是某種 FP07/13 12:15
101FCoNsTaR: 我也是啊(程式架構的方法),所以我開頭就說了必須是 de07/13 12:51
102FCoNsTaR: clarative07/13 12:51
103FCoNsTaR: 後來提的 GADT,pattern matching,和 first class funct07/13 12:51
104FCoNsTaR: ion 都是讓你能夠用「fp 的方法」建構程式的要素,缺一07/13 12:51
105FCoNsTaR: 個就無法獨立運作07/13 12:51
106FCoNsTaR: 所以我才會說 c++ 不支援 fp(不能用 fp 的方法建構程式07/13 12:51
107FCoNsTaR: ),因為三個裡面根本沒有一個支援,最接近 fp 的也只有07/13 12:52
108FCoNsTaR: higher order function 而已07/13 12:52
109FCoNsTaR: if else 是對 boolean 做 induction(elimination),pat07/13 12:57
110FCoNsTaR: tern matching 是對任何 type 的 induction,意思是只要07/13 12:57
111FCoNsTaR: 是 type,就能夠被使用07/13 12:57
112FCoNsTaR: 因為 c++ 的 bool 來歷不明(你找不到 bool 這個 type07/13 13:12
113FCoNsTaR: 的 definition),if else 也來歷不明,你找不到 if els07/13 13:12
114FCoNsTaR: e 的 definition(形式化 if else 的方法),但在 fp,這07/13 13:12
115FCoNsTaR: 些都是可以用程式寫出來的(不是說寫一個編譯器,而是你07/13 13:12
116FCoNsTaR: 要用 bool 你可以自己寫一個 bool,你要 pattern matchin07/13 13:12
117FCoNsTaR: g,你可以自己用 Scott encoding),這個算是 if else 和07/13 13:12
118FCoNsTaR: pattern matching 最大的差別07/13 13:12
119FCoNsTaR: *應該要說「寫出來的 bool 直接可以 pattern matching」07/13 13:32
120FCoNsTaR: (不需要編譯器,你在紙筆上也可以做),這樣講比較好傳07/13 13:32
121FCoNsTaR: 達 GADT 和 pattern matching 之間的關係07/13 13:32
126FCoNsTaR: ...... 我不知道要講什麼了 orz07/13 16:35
127FCoNsTaR: 你真的知道你講的那些名詞是什麼意思嗎?07/13 16:35
128FCoNsTaR: 關於那個 library,等到它不用 macro 的時候再來嘴吧07/13 16:35
134FCoNsTaR: 問題是 TMP 做不到這樣啊,TMP 自己都做不到 FP 很多事07/13 17:12
135FCoNsTaR: 情了,你怎麼會期待用它寫出來的元件可以 magically 把你07/13 17:12
136FCoNsTaR: 的程式“變成” FP07/13 17:12
142FCoNsTaR: 如果能接受英文的話可以看這個07/13 18:39
143FCoNsTaR: https://youtu.be/PLFl95c-IiU07/13 18:39
144FCoNsTaR: 它標題雖然寫 DDD 可是其實是在講 FP07/13 18:39
145FCoNsTaR: lisp 我不會,但不一定非得 GADT,GADT 和 pattern match07/13 18:39
146FCoNsTaR: ing 也都只是語法糖而已,別的類似的東西也可以07/13 18:39
147FCoNsTaR: 如果你接受 untyped 的程式,你也可以完全不要任何類似 G07/13 18:39
148FCoNsTaR: ADT 或 pattern matching 的東西,就完全的 function 也07/13 18:39
149FCoNsTaR: 是可以,但我認為大部分人說的 FP 不是那樣的東西07/13 18:39
150FCoNsTaR: 那要請教一下 L 大 How modern C++ looks like07/13 18:48
161FCoNsTaR: 整理了一下:07/13 19:42
162FCoNsTaR: 1. C++ 是地表最強語言,因為不論什麼功能沒有都只是目前07/13 19:42
163FCoNsTaR: 沒有,什麼功能不好都只是目前不好,以後還是都會有,都07/13 19:42
164FCoNsTaR: 會變好的07/13 19:42
165FCoNsTaR: 2. 要是真的不能有,也是因為相容性和標準化,才不是因07/13 19:42
166FCoNsTaR: 為 C++ 不支援07/13 19:42
167FCoNsTaR: 我是不知道把語言的“狀況”寫在紙上叫它“標準”有什麼07/13 19:42
168FCoNsTaR: 神奇的效果,但就我所知,所有的社群語言誰不是經過很多07/13 19:42
169FCoNsTaR: 年的討論才會讓實作成為語言的一部分,語言的發展哪個沒07/13 19:43
170FCoNsTaR: 有目標和提案,哪個不會考慮相容性07/13 19:43
171FCoNsTaR: 如果有一個人跑來跟你說 Haskell 有 dependent types,沒07/13 19:43
172FCoNsTaR: 有 dependent types 的都是 ancient Haskell 你覺得如何07/13 19:43
173FCoNsTaR: ?07/13 19:43
176FCoNsTaR: enum 的確在有些狀況下可以做 sum type07/13 20:01
177FCoNsTaR: 可以用 struct(product type,and)和 inheritance(sum07/13 20:01
178FCoNsTaR: type,or)兜出來07/13 20:01
179FCoNsTaR: 雖然這兩個東西本意應該也不是給你這樣用的就是了 XD07/13 20:01
180FCoNsTaR: 然後那個影片只是在講用 FP 做 typing 的方法,還是有很07/13 20:04
181FCoNsTaR: 多其他東西是沒有講到的,所以真的用 FPL 寫程式的時候可07/13 20:04
182FCoNsTaR: 能還是會有點陌生07/13 20:04
195FCoNsTaR: 我會在這邊回是因為有人宣揚 c++ 支援 FP,你可能漏看前07/13 20:14
196FCoNsTaR: 因後果了07/13 20:14
197FCoNsTaR: 我不會沒事跑去跟不認識的人說某個語言沒有某個特性/功07/13 20:14
198FCoNsTaR: 能,目前沒那麼無聊,謝謝07/13 20:14
199FCoNsTaR: 而且 fyi,就算你講的那兩個提案都通過了,c++ 仍然離支07/13 20:16
200FCoNsTaR: 援 FP 非常遙遠07/13 20:16
201FCoNsTaR: 至少我想不出有什麼提案的組合能夠讓 c++ 支援 FP 又向07/13 20:19
202FCoNsTaR: 後相容啦,可能我廢07/13 20:19
[問題] 寫大量沒有安全漏洞的C代碼很困難
[ C_and_CPP ]57 留言, 推噓總分: +12
作者: dharma - 發表於 2020/07/05 17:11(5年前)
8FCoNsTaR: rust07/06 04:20
20FCoNsTaR: 聽說之前有人把一個已經廣泛使用超過十年的 c lib(加密07/07 23:29
21FCoNsTaR: 用的 lib),用 Agda 重寫(要證明語意想等性的),結果07/07 23:29
22FCoNsTaR: 還是發現幾十個 bug...07/07 23:29
25FCoNsTaR: 應該都有問題吧 樓上07/11 21:29
26FCoNsTaR: 這就像問走路跌倒是你的問題還是鞋子的問題一樣07/11 21:31
27FCoNsTaR: 非得只能是其中一邊的問題嗎?07/11 21:31
32FCoNsTaR: 樓上這麼說意思是對於所有問題,一定可以找到至少一種完07/13 07:15
33FCoNsTaR: 全合適的語言囉?07/13 07:15
34FCoNsTaR: 在我看來反而是因為都當成語言來學習「能溝通(用)就好07/13 07:31
35FCoNsTaR: 」,才會這樣07/13 07:31
36FCoNsTaR: 語言(有限符號的集合)只是一個程式語言的很小一部分,07/13 07:31
37FCoNsTaR: 只是那個形式系統的長相而已07/13 07:31
41FCoNsTaR: ... 身為開發者不懂自己寫的東西的意思,會比專案管理選07/13 11:20
42FCoNsTaR: 錯鞋還要好嗎,我是不太懂啦07/13 11:20
[分享] EA 終極動員令部分開源
[ C_and_CPP ]27 留言, 推噓總分: +2
作者: mmmmei - 發表於 2020/07/07 21:13(5年前)
1FCoNsTaR: 重點應該是 ra2,雖然十幾年前就已經有 XCC 了07/07 23:17
2FCoNsTaR: 抱歉,重點誤07/08 10:00
17FCoNsTaR: EA 的 code 就不用太認真了吧,以前做過 ra2 的模組,光07/10 01:02
18FCoNsTaR: 是從設定檔就已經可以看出整個疊床架屋了,新舊系統混在07/10 01:02
19FCoNsTaR: 一起,而且同一個單位(兵種、建築)有各種不同實作,根07/10 01:02
20FCoNsTaR: 本不知道最後用的是哪個,數千個參數之間互相干擾,還可07/10 01:02
21FCoNsTaR: 以看出整個系統是直接從別款遊戲改來的,連內部名稱都沒07/10 01:02
22FCoNsTaR: 有換,原本的遊戲機制也直接晾在那裡,就直接加 ra2 的07/10 01:02
23FCoNsTaR: 機制...07/10 01:02
24FCoNsTaR: 雖然 ra2 是真的經典啦...07/10 01:03
[問題] function 中的 function
[ C_and_CPP ]14 留言, 推噓總分: +5
作者: gowrite - 發表於 2020/07/06 11:51(5年前)
10FCoNsTaR: clang 記得也可以有 closure,不過也是 extension07/08 09:57
11FCoNsTaR: 在 clang 叫做 blocks,-fblocks07/08 09:58
12FCoNsTaR: 想要用 clang 編 gcc 的 source 應該可以用 -std=gnu1107/08 09:59
13FCoNsTaR: 之類的?07/08 09:59
[問題] 在副函數的副函數中跳回main function
[ C_and_CPP ]40 留言, 推噓總分: +9
作者: ponwar87123 - 發表於 2020/06/28 21:45(5年前)
13FCoNsTaR: option, result06/29 04:37
[問題] union 的undefine behavior
[ C_and_CPP ]37 留言, 推噓總分: +1
作者: lovejomi - 發表於 2020/06/16 00:35(5年前)
35FCoNsTaR: 想要有保障就用 inheritance,不要用 union 啊06/21 11:02
36FCoNsTaR: 要用 union 就要自己人腦生成 induction principles 和06/21 11:07
37FCoNsTaR: 檢查所有 introduction/elimination06/21 11:07
Re: [問題] 新增object時候,自動新增執行
[ C_and_CPP ]3 留言, 推噓總分: +2
作者: loveme00835 - 發表於 2020/06/19 00:56(5年前)
2FCoNsTaR: 應該可以用 member reference?reference 到陣列元素06/21 10:55
3FCoNsTaR: 這樣你就可以保留變數名稱,同時也有陣列的優點06/21 10:55
[問題] main()和main(void)的差別
[ C_and_CPP ]39 留言, 推噓總分: +11
作者: pandaren0905 - 發表於 2020/05/27 19:54(5年前)
28FCoNsTaR: 認真建議你先寫 Agda 或 Coq 來熟悉一下直構邏輯(types05/29 05:19
29FCoNsTaR: )和 pattern calculus(lambda calculus)05/29 05:19
30FCoNsTaR: 如果你選的是 Agda,應該可以無痛直接接上 Haskell05/29 05:19
31FCoNsTaR: 在 Haskell 裡就有對電腦程式各種東西做數學的抽象05/29 05:19
32FCoNsTaR: 掌握了 Haskell 的 GADT 之後就很容易可以掌握 OO 語言了05/29 05:19
33FCoNsTaR: 語法從 Haskell 跳到 OO 不習慣的話,可以先寫 rust 找一05/29 05:19
34FCoNsTaR: 下對應05/29 05:19
35FCoNsTaR: 啊... 我說的對程式的東西做數學的抽象指的就是像你講的05/29 05:28
36FCoNsTaR: void、IO 之類的東西05/29 05:28
[討論] 對於同事的coding style感到很感冒
[ C_and_CPP ]99 留言, 推噓總分: +13
作者: lovejomi - 發表於 2020/05/11 01:38(5年前)
17FCoNsTaR: 不影響架構的東西都隨便啦05/11 09:57
18FCoNsTaR: 沒定 convention 你管他那麼多05/11 09:57