Re: [閒聊] C++ Stateful Metaprogramming

作者: CoNsTaR ((const *))   2017-09-23 04:05:43
原文恕刪
文章被推太長很難回覆單一推文
還有討論的內容其實也和原文無關了,所以新開一串,保留所有推文
作者: CoNsTaR ((const *))   2016-09-17 14:23:00
XDD
作者: LPH66 (-6.2598534e+18f)   2016-09-17 15:15:00
推一個, 不過我還滿好奇這要怎麼改...
作者: jimfan (jimfan)   2016-09-17 16:48:00
可能我差勁吧,覺得C++變得複雜到不行
作者: windows2k (程式宅 <囧>)   2016-09-17 18:44:00
不只C++啊..所有程式語言都越變越複雜, 需求越來越高C#8, Java9, PHP7..幾十年前程式語言哪有版號的觀念
作者: uranusjr (←這人是超級笨蛋)   2016-09-17 18:46:00
C++ 的問題一直都是太多東西大雜燴, 不是複雜是主題太多
作者: stucode   2016-09-17 19:46:00
C++ 威力強,可是涵蓋層面廣,難以駕馭精通。
作者: Lordaeron (Terry)   2016-09-17 21:21:00
加了這一堆東西,會比較強? 哪之前的人有什麼寫不出來?不明著沒事找事.
作者: uranusjr (←這人是超級笨蛋)   2016-09-17 21:37:00
其實新東西大體上還是不錯, 是舊包袱甩不掉舊的語法實在是太多雷再不改真的要被取代了
作者: Lordaeron (Terry)   2016-09-17 23:43:00
新的語法雷有比較少?
作者: holydc (のヮの)   2016-09-17 23:58:00
組語有什麼東西寫不出來?要高階語言做什麼
作者: xam (聽說)   2016-09-18 00:26:00
我覺得難的 template 已經很複雜了,但C++11/14裡那只是基本
作者: steve1012 (steve)   2016-09-18 00:38:00
更expressive 有啥不好 你可以選擇不要用啊
作者: Ommm5566 (56天團)   2016-09-18 06:39:00
會比較強 c++11以來多了很多強力工具move semantics/auto/lambda/shared_ptr......程式碼可以選擇跑更快or比較好讀or好維護不想用這些東西就寫成c like阿 if+while+pointer+struct
作者: ronin728 (浪人)   2016-09-18 08:03:00
C++就是洪拳啊,虎形鶴形蛇形螳螂形南少林花拳全加一塊
作者: CoNsTaR ((const *))   2016-09-18 08:41:00
有這個東東可以用 我都對tmp重新燃起希望了 拜託不要修掉啦 QQ
作者: sppmg (sppmg)   2016-09-18 10:31:00
holydc +1 ,我直覺也是asm XD
作者: Lordaeron (Terry)   2016-09-18 11:46:00
鬼扯ASM,就已經不是在討論問題了。C++多了一大堆,然後有人說,你可以C like 啊哪沒問題啊,何苦搞哪麼多?一來雷沒變少,二來反而變多各家的實作又不盡一致,何不修正舊有的問題?什麼lambda, auto的,又不是沒它們就不能寫,不好寫.
作者: Caesar08 (Caesar)   2016-09-18 12:10:00
長知識囉
作者: lc85301 (pomelocandy)   2016-09-18 12:39:00
我已經看不懂這是什麼東西了(yay
作者: steve1012 (steve)   2016-09-18 12:45:00
沒 auto 要多打字的確是很不好寫啊 lolmove semantic 跟 shared pointer 也的確更好維護又不是叫每個人實作這些功能 只是拿來用還能嫌 lol愛用 c 可以用 c啊
作者: Bencrie   2016-09-18 13:14:00
更炫炮
作者: Sidney0503 (Sidney0503)   2016-09-18 13:29:00
不爽不要用 每個語言都有自己的毛和邊界問題不同語言適用範圍也不一樣你自己也說沒auto一樣可以寫程式 沒人拿槍逼你用auto事實上就是除了C++沒有語言可以做到move semanticRvalue Reference就是只有C++11才有 這種效能上的掌控 是比其他語言強的 所以追求極致效能調教不會使用C語言而是C++你不需要這麼細微的效能處理 就不要用c++所以沒有C++11 可以用asm寫出類似&&的想法提asm沒有錯啊 並不是鬼扯C語言也有undefined behavior 不少還被C++規範來C++主場戰C++ 你也是蠻幽默的
作者: Lordaeron (Terry)   2016-09-18 14:23:00
不爽當然可以不用啊,但有人提到雷了,就當然得提啊。致於你扯的效能,我就等你一篇C++11 VS C的大作了,戰吧
作者: Sidney0503 (Sidney0503)   2016-09-18 14:32:00
地表上就是除了C++沒有語言可以玩Rvalue-ref地表上就是沒有語言可以做到比C++更細微的調教戰不起來
作者: grayStone (灰色石頭)   2016-09-18 15:02:00
c++ > c
作者: Lordaeron (Terry)   2016-09-18 15:06:00
就等你的測試大作啊,戰不戰得起,不會是用嘴吧。C++ VS C, PERORMANCE COMPARE!! 等待中。
作者: bibo9901 (function(){})()   2016-09-18 15:08:00
move semantics 是特色沒錯, 但要說是"優點"可能不適合有 gc 或 jit 的語言幾乎是不需要move semantics
作者: Sidney0503 (Sidney0503)   2016-09-18 15:14:00
有GC就是慢 比如像java 但是java有一種情況可以有接近c/c++效能的狀況 就是custom Collector
作者: bibo9901 (function(){})()   2016-09-18 15:20:00
其實用 C 做分解動作也可以有move semantics同樣的效果
作者: Sidney0503 (Sidney0503)   2016-09-18 15:20:00
成立的原因也很簡單 效能可以取決於釋放空間的時機
作者: bibo9901 (function(){})()   2016-09-18 15:21:00
但c++還多了一堆負擔: rule-of-five, universal ref. 等
作者: Sidney0503 (Sidney0503)   2016-09-18 15:28:00
那是因為不同狀況下 move和copy成本不一樣所以c++11提供了選擇複製或搬移兩種手段選擇語言本來就是針對問題選需要的工具追求極致調教的3A遊戲引擎核心幾乎都是用C++刻的然後接口成python這類手稿語言方便快速開發當然快的代價就是不穩 C++本身又包山包海 自然是會有不少行為會讓compiler錯亂 現在C++的精神就是提供大量的選擇 每個選擇都會有優缺點
作者: Bencrie   2016-09-18 15:34:00
亂七八糟
作者: Sidney0503 (Sidney0503)   2016-09-18 15:34:00
樓上這個說法我還真無法反駁 XDDDDD
作者: jimfan (jimfan)   2016-09-18 15:53:00
話說回來constexpr就是為了在編譯時間預先找出陳述式的值用以減少runtime的運算,說到底還是為了讓程式跑更快,代價係語言、編譯器變複雜(我這不是廢話嗎)用心良苦 :-)
作者: Lordaeron (Terry)   2016-09-18 17:27:00
@Sidney0503,別再嘴了,只講performance就好了。越來越多雷這件事,本來就是成立的。無可否認。
作者: holydc (のヮの)   2016-09-18 20:29:00
就已經認定新語法都是雷了,人家講什麼當然看起來都像鬼扯嘴砲囉
作者: yoco (眠月)   2016-09-19 00:03:00
...C++ 又發瘋了...
作者: Lordaeron (Terry)   2016-09-19 11:50:00
舊語法就一堆雷了,要說新語法沒雷,要怎麼講?
作者: final01 (牛頓運動定律)   2016-09-19 13:43:00
坐等yo 神開戰XD
作者: holydc (のヮの)   2016-09-19 20:03:00
連舊語法都雷了哈哈哈
作者: steve1012 (steve)   2016-09-20 00:30:00
到底是什麼雷啊 雷來雷去打高空 好像幾萬個雷一樣
作者: bibo9901 (function(){})()   2016-09-20 00:34:00
most vexing parse 就可以雷到你跳起來
作者: steve1012 (steve)   2016-09-20 00:34:00
這個"本來"是不是該有點根據啊
作者: CoNsTaR ((const *))   2016-09-20 02:03:00
不是啊 自己不會寫當然要怪語法雷啊 這樣自尊心才舒服嘛
作者: bibo9901 (function(){})()   2016-09-20 08:56:00
只有語法雷? exception 雷不雷? 多載消解雷不雷?各種implicit conversion雷不雷?
作者: CoNsTaR ((const *))   2016-09-20 09:49:00
期待樓上哪天設計出一個對任何面向都沒有缺點的語言到底是你該配合、學習怎麼駕馭一門語言和發揮它的優點還是語言應該做到讓你隨便寫都不會有問題?充分瞭解如何對付一門語言的缺點、最大限度發揮它的優點不就是「程式設計師」和別人不同的地方?要不然就寫寫程式、沒事嘴砲一下我妹也會啊
作者: steve1012 (steve)   2016-09-20 10:38:00
的確是挺不雷的啊…
作者: Killercat (殺人貓™)   2016-09-20 10:54:00
MVP我前陣子才被雷到一次 orz不過MVP比較偏向是因為相容性而無法補齊的洞不過現在已經有搭另外一座橋給你就是另外其實compile time都是小雷 runtime才是大雷....
作者: shadow0326 (非議)   2016-09-20 11:33:00
我記得在板上也看過幾次被MVP雷到的問文 XD
作者: caras   2016-09-20 12:27:00
妹妹躺著也中槍 QQ
作者: CoNsTaR ((const *))   2016-09-21 06:23:00
幫妹妹QQ XDD
作者: firejox (Tangent)   2016-09-21 09:14:00
只要能減少開發維護成本都很好:D
作者: Ommm5566 (56天團)   2016-09-22 07:22:00
universal ref是負擔? 直接可以搬rvalue的方法說慢我還真不知道哪個語言可以處理Lvalue比Rvalue快請bibo9901大大說一下 順便說一下哪個有gc和jit的語言效能贏過c++另外說C++雷的 麻煩說一下哪個語言不雷這邊有很多會各種語言的可以和你討論連特性都不懂還可以大放厥詞 真的很好笑
作者: Lordaeron (Terry)   2016-09-22 21:10:00
既然有雷不排,放新雷? 另外,沒人說慢哦,是看有多快而已而且,從沒有人說過任何面向都沒缺點,只有說排雷而已.程式寫久了,中文邏輯會變不好.CPU本身就一堆雷了.用:不然不要用啊? 或是, 哪有沒雷的語言, 這種人根本沒理性討論的空間.充分瞭解如何對付一門語言OOXX 的,叫compiler寫程式是為了解決問題,而不是要發揮語言的OOXX.你發揮得多好都好,問題沒解決,一樣是一點價值都沒有.
作者: steve1012 (steve)   2016-09-22 23:09:00
感覺根本沒講清楚怎麼雷啊 隨便丟個 mvp exception overloading implicit conversion 就說這語言很雷 沒寫篇文章說服大家為啥算雷 為啥沒辦法避免 我是不太信服有多雷
作者: chuegou (chuegou)   2017-09-23 04:22:00
戰! 以前的板風是不是就這樣阿?
作者: Ommm5566 (56天團)   2017-09-23 08:49:00
真的覺得雷 就是語言開發社團發issue 順便提一下這個問題在實作compiler過程如何改進阿XD現實就是有一好沒兩好 通常雷都是為了達到某種好處存在的副作用 Stroustrup說了這世界上分成兩種語言the ones people complain about and the ones nobody use.我說使用語言有兩種人 去理解它的人 和不去理解它的人
作者: Lordaeron (Terry)   2017-09-23 09:36:00
有什麼雷,自己GOOGLE不就有了?你連PERFORMANCE都要代答,就快回一篇比較吧!!而assembly我只會x86的x64的沒在看C++的雷怎麼找,教你用google找英文c++ traps或用c++ pitfalls來查, 也一堆.
作者: Ommm5566 (56天團)   2017-09-23 10:23:00
悲哀 一開始說多這些東西有比較厲害嗎 真的回答了就說雷很多使用指標指向配置空間以外記憶體操作會壞掉算不算雷?你先回答這個問題 這個問題算雷 不算雷的判斷方式說出來 才能討論其他東西是不是雷如果在你眼裡這個是雷 那就是語言特性的你不能接受而已如果這個不算雷 那什麼我覺得不雷的你覺得雷?什麼我覺得雷的你覺得不雷?我覺得效能慢叫雷 C++可是最不雷的語言如果你不能接受效能的說法 那請說出哪個語言可以把Lvalue可以讓user叫compiler當Rvalue處理另外Lordaeron在上一篇推文說到什麼事都有辨法避免啊請問如何在操作memory的時候如何讓人避免使用錯誤記憶體區間的同時不要使用檢查以免降低效能?你說不出這個問題的解答 那麼雷的就不是語言而是自己別人已經回答你第一個有比較厲害的問題嗎 你卻不回答別人問你甚麼是雷而且雷確實有變少 C++有對未定義行為做規範你的第二個問題也回答了沒auto確實比較不好寫 當要用一個變數接function回傳值如果要改type 以前要改兩個地方 有auto就少改一個地方同時回答你有沒有比較好 雷有沒有比較少了然後一開始說c++雷 又跑去說cpu雷事實上誰在跳針很明顯 你的問題都被回答了你卻避而不答別人的問題
作者: steve1012 (steve)   2017-09-23 11:02:00
好啦我幫妳查了 http://www.programmingincpp.com/a-list-of-traps-and-tips.html還有幾篇其他的 這些就是你說很雷的地方嗎?
作者: Lordaeron (Terry)   2017-09-23 13:51:00
如果才查到幾篇,哪你的該好好回去再查了.致於有哪些雷,請自行查,別自札草人自己打.
作者: steve1012 (steve)   2017-09-23 14:01:00
先說雷的應該要舉吧…又不是我說是雷的 問老半天也講不出來哪裡雷
作者: Ommm5566 (56天團)   2017-09-23 14:08:00
你提出的所有問題都被回答了 說別人不理性自己卻講不出任何一個東西 別人說performance你要求一篇文章比較別人要求你說哪裡雷卻叫別人自己查 如果你的思考方式只有這種程度那你還是多上FB或D卡文 那邊比較適合你
作者: Lordaeron (Terry)   2017-09-23 14:56:00
咦? 浪費力氣? 我說雷的,不就舉了? 不會去查來怪我?既然有人說performance會比較好, 我查過沒人提,當然得要,不然你查出來給我也可以.至於講不下去, 鬼扯什麼分帳號的, 閃一邊涼快去就好了.這等程度,還可以扯分帳號的,有多少解決問題的能力可見一斑!!
作者: Ommm5566 (56天團)   2017-09-23 15:34:00
是喔 我都查不到有人說C++雷耶 隨便查都說C++棒棒棒你查不到來怪我? 這等程度 有多少解決問題的能力可見不然你查出來給我也可以至於講不下去閃一邊涼快去就好了這種言論真的是既理性又有助於討論 受教了既然你google能力不太好我查給你http://lmgtfy.com/?q=c%2B%2B+performance我已經查給你了 不用謝順便建議你 如果連查資料都不會還是不要碰語言好了對你而言看起來真的太困難 連這都查不到順便建議可以去做麵包 不用查資料也可以做不過照你連這都查不到來推論 大概也不會使用食譜吧?我個人做麵包是會查網路資料啦 因為我會使用google不過你大概也會抱怨麵包製作過程很雷 烤箱很雷所以我建議你還是不要做麵包好了
作者: Lordaeron (Terry)   2017-09-23 16:14:00
笑死人了, c++ performance問題是C++出來時就有的了.跟現在在扯的哪個何關? 你會下關鍵字嗎?如果你連自己都找不到, 就別出來搞笑了.剛無聊又查了一下, C++ auto type pitfalls,第一頁就..
作者: steve1012 (steve)   2017-09-24 01:12:00
原來你覺得 auto 很雷啊 我隨便看了搜尋前幾篇 沒搞懂規則算 c++雷?那弱型別語言不就宇宙最雷
作者: sa074463 (壘包)   2017-09-24 09:15:00
他的ID風格看習慣了,原PO太認真了
作者: Lordaeron (Terry)   2017-09-24 09:37:00
@sa074463,原來你這麼熟我? @steve1012搞懂?該不會是要人去K SPEC 的吧?
作者: steve1012 (steve)   2017-09-24 09:42:00
不然你說一下 auto到底哪裡雷 或是貼一篇文章啊 我是真的不知道你在說哪裡雷還是你根本不太會 c++
作者: Lordaeron (Terry)   2017-09-24 09:47:00
我真的不太會C++,但你在唬爛有看GOOGLE的結果.
作者: steve1012 (steve)   2017-09-24 10:37:00
google 第一篇是 stackoverflow 問說是否 dangerous第二篇問為啥要選 auto 當關鍵字你到底是在拿那篇當佐證 你貼出來不就行了
作者: shadow0326 (非議)   2017-09-24 12:18:00
有在逛軟工板的話應該都還滿習慣這ID風格的
作者: Lordaeron (Terry)   2017-09-24 18:47:00
@steve1012,咦?你不是不知我在說什麼的嗎?哪既然你有看到,不就是了?
作者: CoNsTaR ((const *))   2017-09-25 01:19:00
某 L 要嗆來嗆我啊 怎麼柿子挑軟的吃一直找 s 大的麻煩勒?
作者: Lordaeron (Terry)   2017-09-25 13:09:00
嗆你什麼? 誰在嗆人呢? 你憑啥代回?
作者: steve1012 (steve)   2017-09-25 14:09:00
你根本啥都沒回答啊 只有跳針 反正你連佐證都講不出來我是懶得戰了 我可不想被水桶
作者: wtchen (沒有存在感的人)   2017-09-25 16:11:00
L先生我再警告你一次,你不爽用C++可以不要用,但是請不要來亂。不然就浸水桶。
作者: ggBird (ggBird)   2017-09-25 18:43:00
直接桶了啦
作者: sunneo (艾斯寇德)   2017-09-25 22:25:00
已經快10年了 版上大大們各有專精 相信只是各方面理解不同
作者: Lordaeron (Terry)   2017-09-26 22:16:00
版工是吧.我亂哪一條了? 你是版工就隨你爽是吧?
作者: s25g5d4 (function(){})()   2017-09-26 22:17:00
挑釁版主囉
作者: Lordaeron (Terry)   2017-09-26 22:17:00
@steve1012,哦,查了又變看不到?哪些都不是證了?是版工挑釁!! 請搞清楚方向.整串下來,哪些人只在對人,不對事,很清楚的,別刪文哦.
作者: wtchen (沒有存在感的人)   2017-09-27 02:22:00
好了,L現在浸水桶了,不要理他了

Links booklink

Contact Us: admin [ a t ] ucptt.com