Tech_Job 板


LINE

※ 引述《champdessert (朱安)》之銘言: : 如題 : 小弟唸工程的,之前學C++拿來處理實驗數據、玩arduino或用matlab都覺得還不錯用,因為就那幾個指令,只要靠邏輯就可以慢慢土法煉鋼拼湊出來要的東西。 : 但最近碰到大家說很好學的python,卻覺得它東西都過度包裝所以不好用,正因為都是人「定義」包裝好的東西,一定要照著他的方法寫,反而用起來覺得煩。如果遇到bug因為都是包裝好的指令所以無法用直觀的邏輯去debug或推論,還要上網查一堆資料,還不一定有解。而且這樣就會變成case by case,在不同的應用就要學一系列不同的函式定義,情境稍有不同可能就無法套用,沒辦法用最基礎的一套解決。 : 為什麼大家都說c++比較難python簡單,而我的感覺卻相反呢?是我之前都用得太淺了嗎? : -------------------------------- : 更:感謝大家的回覆,看來真的是我學得太基礎的關係才會這麼覺得。要來努力學習了~ 你肯定是不會C++ C++是一個高度需要理解編譯器運作的語言 隨便舉個例子 template <typename T, typename... Args> constexpr auto add(T&& first, Args&&... rest) { return std::forward<T>(first) + add(std::forward<Args>(rest)...); } template <typename T> constexpr T add(T&& value) { return std::forward<T>(value); } 這是C++11/14 template使用可變參數(...)來處理多個不同型態參數 所以需要遞歸終點<>,確保模板遞歸能正常結束 constexpr就是編譯時期決定 std::forward跟std::move是C++11的 move symantec 是compiler優化的概念 到了C++17 多了摺疊表達式(Variadic Template)可以簡化每次需要定義遞迴終點 template <typename... Args> constexpr auto add(Args&&... args) { return (std::forward<Args>(args) + ...); } 現實情況兩種都要會 不能只會Variadic Template的版本 因為最廣泛是C++11 然後因為早期(C++20以前) 會造成噴大量的compiler error又很難找問題 所以這段C++20會再升級先定義concept來讓compile error問題更明確在哪 template<typename T, typename U> concept Addable = requires(T a, U b) { { a + b } -> std::same_as<decltype(a + b)>; }; template <typename... Args> requires (Addable<Args, Args> && ...) constexpr auto add(Args&&... args) { return (std::forward<Args>(args) + ...); } 以上只是C++少量編譯器針對的feature 其他還有很多是針對編譯時期優化的工具 std::less<> 編譯時期比大小腦包工具 有專門給編譯器看的[[fallthrough]] 強制要求編譯器跳過的神經病Attribute <=>(三向比較運算符或太空船運算符)這也是針對編譯器後端的的智障語法 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.99.2 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Tech_Job/M.1729919600.A.BB3.html
1F:推 Dracarys : 推這篇 10/26 13:16
2F:推 ejnfu : 光lvalue rvalue reference和move semantics 就很煩 10/26 14:02
3F:→ ejnfu : 了,再加上template metaprogramming 讓我想起不好 10/26 14:02
4F:→ ejnfu : 的回憶了 10/26 14:02
5F:推 giantwinter : 他把c當成c++ 10/26 14:18
6F:→ ian41360 : 跟我想的差不多,樓下碼農幫我judge一下 10/26 14:21
7F:推 JustBecauseU: 只能說雖然很難 但是比python酷 10/26 14:25
8F:→ JustBecauseU: 不然這年頭隨便一個人都說自己會python 10/26 14:26
9F:推 johnjohnlin : 所以後來才有if constexpr讓事情沒有那麼糟糕 XD 10/26 14:27
C++白爛之處 還要知道哪些寫法是存活在哪些C++版本...... 甚至還有 (since C++17)(deprecated in C++20) 這種只存活一版的鬼東西=.= https://i.imgur.com/U2lxAXe.png 有圖有真相 std::variant_alternative
10F:推 qwe78971 : 寫C++很想大聲說我看懂了 但實際上不懂 10/26 14:28
11F:→ teddy : 嗯對 跟我想的一樣 10/26 14:33
12F:推 furnaceh : 好難 我第一次看到c++就知道要放棄了 10/26 15:01
13F:→ bigbite : metaprogramming真的走偏了我個人覺得 10/26 15:02
14F:推 NexusPrime : C++語法太繁雜啦,加上很多把c++當c用的,浪費c++ 10/26 15:19
15F:→ NexusPrime : 的OOP特性 10/26 15:19
16F:→ NexusPrime : 單純資料處理用python即可,甚至c#都可以 10/26 15:21
17F:→ donkilu : 完全看不懂 我果然不會寫C++... 10/26 15:38
18F:推 abccbaandy : 好奇deprecated會怎樣? 下版移除? 10/26 15:59
可以看編譯器警告未來不支援 然後看哪時move 到了move的版本就是compile error
19F:→ gn01705529 : 身為C++ 10年+開發者,只能說C++走到有點偏了 10/26 16:08
20F:→ gn01705529 : 開發反應速度完全比不上python 10/26 16:09
21F:→ gn01705529 : 你還在debug template,人家產品都快上線了 10/26 16:09
真的 開發要快都是要用有package mamanger的現代語言 js還支援熱插拔就地改code看結果 Hot Module Replacement (HMR) C++還要先等compile......
22F:推 ko27tye : 我只覺得近幾年的c++一直往python的方向靠 10/26 16:11
23F:→ gn01705529 : 更別說一些奇妙的語法,你係。一個90%的人看不懂的 10/26 16:14
24F:→ gn01705529 : 東西是要搞誰 10/26 16:14
25F:→ gn01705529 : *你寫 10/26 16:14
真的 所以主要還是C++11最為廣泛
26F:推 profiles : 還是C直覺,所見code即所執行code 10/26 16:24
27F:推 zaiter : 全世界應該統一一種語言 那就是python 10/26 17:03
28F:推 Lipraxde : 原 po 就比錯東西啦,把程式語言本身的複雜性,和 10/26 17:09
29F:→ Lipraxde : 外掛 package / 程式庫的複雜性混為一談,他就不是 10/26 17:09
C++ package更是地獄 現在比較好的用CMake 去build 更古老的還要用automake之類的 很難搞 現代語言都有套件管理 加上Dockrefile馬上就可以搬家了
30F:→ Lipraxde : 嫌語法難,是覺得看人家程式、文件麻煩 10/26 17:09
31F:推 Lipraxde : 喔對了,原來 concept 是這樣用啊...說真的覺得他 10/26 17:16
32F:→ Lipraxde : 有點多餘,template error 就 CRTP 寫比較複雜的時 10/26 17:16
33F:→ Lipraxde : 候比較難看懂,所以一直沒想去學 concept 10/26 17:16
34F:推 wei115 : https://i.imgur.com/NDhMBE7.jpeg 10/26 17:16
35F:推 HGD1021 : 什麼啦,亂打一串英文跟數字,害我都看不懂 10/26 17:18
比perl好 perl是號稱加密前後看起來一樣的語言
36F:→ dildoe : cxx 就是永遠都有 modern XD 10/26 17:49
笑死 c++11 modern c++, c++17 more modern, c++20 more more modern
37F:推 wulouise : concept出問題的時候好查很多 10/26 18:29
38F:→ jhengME : 剛學時光virtual就頭暈,結果後面還有C09、C11、C 10/26 18:30
39F:→ jhengME : 17、C21 ,到底 10/26 18:30
40F:推 jimjim951357: 樓上,還有23、26 10/26 18:34
41F:推 youarefat : 真的開發時,絕大多數那些新東西都用不到 10/26 18:48
一個語言開發一堆大部分使用者不使用的功能幹嘛.... 所以我說enum to string哪時要完成
42F:噓 pig2014 : 媽的還一堆人說戰語言沒意義。cpp就是王者,其他人 10/26 18:50
43F:→ pig2014 : 慢慢去旁邊嘴戰語言沒意義,真正了解metaprogrammi 10/26 18:50
44F:→ pig2014 : ng的人誰敢把其他語言跟cpp放同一個等級。py那個me 10/26 18:50
45F:→ pig2014 : taclass是三小,強者隨便看30分鐘doc就能重載__new 10/26 18:50
46F:→ pig2014 : __瞎改行為了。cpp得先花30天K完effective modern 10/26 18:50
47F:→ pig2014 : c++,後面還想成佛還有C++ Templates 2/e可以讓你 10/26 18:50
48F:→ pig2014 : 用半年慢慢細品 10/26 18:50
從入門到放棄
49F:噓 pig2014 : 原po立場太簡單了,就是一個perfect forwarding小 10/26 18:53
50F:→ pig2014 : 品而已,其實還能用CRTP為例來強暴台積板的鄉民 10/26 18:53
51F:推 dou0228 : 這就是torvalds批評C++原因啊 10/26 18:53
重點是還很不穩 三不五時就改版 C++11還做到向下相容 C++17開始採破壞式不相容
52F:→ pig2014 : *例子 10/26 18:54
53F:→ labbat : 開公司是要賺錢,誰有那個時間慢慢學新東西當然是 10/26 18:55
54F:→ labbat : 拿asci c語言硬幹下去 10/26 18:55
55F:推 johnjohnlin : CRTP也是難用,很多子型別的東西不能access 10/26 19:33
56F:→ peter98 : template metaprogramming真的地獄 但我的C++停留 10/26 19:35
57F:→ peter98 : 在C++13就是~ 10/26 19:35
58F:→ peter98 : 但說實話啦~ 我最喜歡的語言是Scala跟Kotlin 10/26 19:37
59F:→ peter98 : 雖然跟c++比 這兩個語言都小眾就是。。。 10/26 19:37
60F:推 id41030 : 我硬體都看無 10/26 19:43
61F:推 CoNsTaR : python 難是難在沒有 static typing,C++ 大部分人 10/26 20:46
62F:→ CoNsTaR : 覺得難卻也是因為它的 static typing 10/26 20:46
63F:→ CoNsTaR : 個人認為如果把 python 拿來寫產品,它根本神難,連 10/26 20:46
我都用js寫產品 可寫前後端 可用docker打包 舒服
64F:→ CoNsTaR : 參數的 type 是什麼都不知道,傳回來是什麼東西也 10/26 20:46
65F:→ CoNsTaR : 不知道 10/26 20:46
66F:→ CoNsTaR : 但如果把 C++ 拿來當腳本語言寫,也是神難,明明就 10/26 20:46
67F:→ CoNsTaR : 簡單直覺只跑一次的垃圾程式也要在那邊搞旁支末節 10/26 20:46
68F:→ CoNsTaR : 的 type checking 10/26 20:46
69F:推 CoNsTaR : 但我個人是很 appreciate C++ 的 template metaprog 10/26 20:48
70F:→ CoNsTaR : ramming 的,讓你不需要用到 coq, idris, agda 之 10/26 20:48
71F:→ CoNsTaR : 類的語言也有類似 dependent types 可以用,雖然只 10/26 20:48
72F:→ CoNsTaR : 有 compile time 10/26 20:48
※ 編輯: KanzakiHAria (36.231.99.2 臺灣), 10/26/2024 21:41:56
73F:→ ccode : python static typing有pyright或mypy可用吧 10/26 21:42
74F:→ shooter555 : 還好我都寫C99 10/26 21:47
搞到現在連C也要喊版號XD C11開始也學C++那樣經常新版 ※ 編輯: KanzakiHAria (36.231.99.2 臺灣), 10/26/2024 21:52:55
75F:→ shooter555 : C的生態就是一堆專案還是用舊的std compile 還要指 10/26 21:55
76F:→ shooter555 : 定舊版 10/26 21:55
77F:→ shooter555 : 還好 不用跟太勤 10/26 21:56
78F:→ shooter555 : 台積版怎麼討論C++ 當然是討論VBA 10/26 21:58
晶片當然是要談Verilog ※ 編輯: KanzakiHAria (36.231.99.2 臺灣), 10/26/2024 22:02:10
79F:→ saxontai : 寫慣C99 or later後,用到有在維護更新卻只堅定支持 10/26 22:02
80F:→ saxontai : C89/C90 的 compiler 真的很想罵髒話… 10/26 22:02
81F:推 profiles : 程度語言是用來開發專案 ,解決現實問題,寫出來像 10/26 22:14
82F:→ profiles : 藝術品的程式語言,只適用於給大神用,然後只有大 10/26 22:14
83F:→ profiles : 神能維護,最後就是慢慢用的人越來越少 10/26 22:14
84F:→ gozule : 放棄cpp改寫rust快樂很多,性能差不多 10/26 22:38
85F:→ MTKer5566 : 想問一句,是賺多少啦 10/26 23:29
86F:→ MTKer5566 : (開玩笑的。。。 10/26 23:29
87F:推 blanka : 其實Intel內部是用Python在Debug IC了 10/27 00:35
88F:推 sustainer123: 新手入門CPP要從那版開始R 學過C 熟悉Python 10/27 01:01
89F:→ leviathen : Python 這麼好寫還能靠北也是奇葩 10/27 01:16
90F:推 ejnfu : my professional life is so much better since I h 10/27 01:37
91F:→ ejnfu : ave abandoned C++ 10/27 01:37
92F:推 BigCockman : 這語言就是歷史共業啦 這種處處是leaky abstracti 10/27 01:58
93F:→ BigCockman : on的東西 除了拖垮開發速度之外實在沒什麼好的 10/27 01:58
94F:推 leviathen : c++樓主說的這類東西真的很麻煩 10/27 03:29
95F:推 wankel : 把C++當C用 code才看的懂.... 10/27 06:33
96F:推 b0920075 : 西家家又沒逼每個寫西家家的人都要深入了解 metapr 10/27 06:39
97F:→ b0920075 : ogramming ,你不會用到的話簡單知道下概念就好了 10/27 06:39
98F:推 schemer : 果然要害一個人就是叫他去學c++ 10/27 08:04
99F:→ kaltu : 所以上篇我才會說嫌C++不夠難的通通去寫一次C++的co 10/27 08:11
100F:→ kaltu : mpiler frontend 10/27 08:11
101F:→ kaltu : 不會compiler根本寫不了C++,太多東西是為了compile 10/27 08:11
102F:→ kaltu : r存在的了 10/27 08:11
103F:→ kaltu : 不過話說回來我覺得Rust學的後面要玩procedural mac 10/27 08:11
104F:→ kaltu : ro其實也沒有比C++的template好到哪裡去 10/27 08:11
105F:→ kaltu : 但如果要從這個角度來看的話,寫Python的寫到這個程 10/27 08:12
106F:→ kaltu : 度也都不是在寫Python了而是Cython 10/27 08:12
107F:推 pot1234 : 剛摸c++的人基本上不會自己寫template, move這些。 10/27 09:18
108F:→ pot1234 : 第一次用python的感覺是資料不好查,會return什麼 10/27 09:18
109F:→ pot1234 : 都不寫… 10/27 09:18
110F:推 dannyer : c的宣告和定義就會讓你感覺python的自主性有多好 10/27 09:57
111F:→ wulouise : gdb也是都用Python輔助script 10/27 10:26
112F:推 chobit199685: 現在直接上Rust/Go即可,頂多補個assembly 10/27 12:44
113F:推 fragmentwing: python不是可以提示type嗎? 10/27 18:56
114F:→ fragmentwing: 不太確定前面幾樓是不是在講傳遞變數的type固定的問 10/27 18:59
115F:→ fragmentwing: 題 但真的很擔心的話就提示+傳進來馬上assert isins 10/27 18:59
116F:→ fragmentwing: tance不就行了?就算這麼龜毛閱讀理解上也不會比C++ 10/27 18:59
117F:→ fragmentwing: 複雜吧 10/27 18:59
118F:推 wcre : 還好我早就放棄C++了 10/28 09:20
119F:→ anenasa : 我也覺得C++困難,別人寫的code常常看不懂 10/28 09:58
120F:推 ji3g4go6 : 可以拿 Python 跟 CPP 比較就很神了,還不夠直譯嗎 10/28 10:27
121F:推 kuan : 推 10/29 08:50
122F:推 stosto : 早日放棄c++, 薪資才會解放 10/29 10:18
123F:推 bkcat2 : 金派捏大家 10/30 09:11







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP