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/cn.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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP