Re: Fw: [問卦] C++到底難學在哪裡

看板Soft_Job (軟體人)作者 (真女主角愛與正義的天使)時間1年前 (2023/03/13 22:21), 1年前編輯推噓6(7114)
留言22則, 11人參與, 1年前最新討論串2/3 (看更多)
本來想上班摸魚回的。我C不敢說記得住標準,至少style沒問題,linux kernel也有些提交 meson, cmake都很熟悉。所以編譯不是問題。 C++比如說我要return 一個object,要利用RVO要確認幾件事? 首先object的class要是movable 的,所以你要實現個移動構造。 然後讓經驗很老道的人都要編譯看看asm,要不要寫std.move() 然後這個move constructor就是個很夭壽的東西,為啥要用RVO和move constructor呢? 就是因為不想用raw pointer,好吧這個class的member多半不簡單。 可能你們有N個class type的member,你要保證自己沒有偷懶, 全部實現好move constructor,不然突然會來一個變copy constructor, memory用完再釋放用fragments 炸死你。 弄了怎麼多,還不如一個raw pointer直接過去。 忘記講了,如果你要return none value,看看c++導入的union和none vlaue的取代。 當然有人講smart pointer好好用,問題是你把lvalue reference看成什麼了? 要改的value不會用這個塞parameter? 再扯到rvalue reference的move constructor還是copy constructor。 這邊都還沒有到他媽的template,我是用的很開心啊。可是事實並沒有那麼多 類似的class可用寫成個template 或者method變function template。 可是不得不用免得被靠北沒有擴展性。 寫了幾天我覺得glib(gnome)怎麼那麼親切,囉哩八嗦的Spring(Java)怎麼那麼一致。 除非沒有時間限制的task,或者和clang, llvm有關的事情,死也不碰C++。 還有種情況是我故意想用複雜的語法堵人嘴,正常的同事是不想研究C++的,會直接放過。 最近開始學rust希望不要又被雷 -- 起初,皇軍進佔滿州, 我沒有反對,因為我要去滿州撈錢。 接著,皇軍發動對支戰爭, 我沒有反對,因為那是支那人自找苦吃。 後來,皇軍發動太平洋戰爭,我沒有反對,因為看鬼畜米英四處奔逃出了一口惡氣。 以後,鬼畜米英來轟炸, 我全力反對,因為我們台灣是無辜的,這是米英的戰爭罪行 最後,天皇宣布無條件投降,我沒有反對。因為我們台灣人是戰勝國國民, 戰爭責任與我無關,我要有跟戰勝國一樣的物資配給好賺錢,也不要坐祥瑞回家! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 154.3.4.179 (美國) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1678717263.A.48C.html ※ 編輯: hizuki (154.3.4.179 美國), 03/13/2023 22:27:10

03/13 23:28, 1年前 , 1F
所以functional又興起了啊
03/13 23:28, 1F

03/13 23:40, 1年前 , 2F
rust 一個 destructive move 直接解決這篇提到一半以
03/13 23:40, 2F

03/13 23:40, 1年前 , 3F
上的問題
03/13 23:40, 3F
另外還有container template,就算是move constructor對非pointer也是有開銷的, 可是我又想避免pointer包括smart pointer這就沒辦法了。 另外shared pointer的開銷很可觀(因為有lock)

03/13 23:42, 1年前 , 4F
高手求教教
03/13 23:42, 4F

03/14 00:07, 1年前 , 5F
rust預設移動語義應該是好很多,但語法也不能說簡單
03/14 00:07, 5F

03/14 00:25, 1年前 , 6F
預設move然後寫parser超麻煩...
03/14 00:25, 6F

03/14 00:26, 1年前 , 7F
移動構造跟複製構造可以講英文嗎?...
03/14 00:26, 7F

03/14 01:00, 1年前 , 8F
rust最近網路上好多人在說
03/14 01:00, 8F
※ 編輯: hizuki (154.3.4.179 美國), 03/14/2023 01:09:22

03/14 01:25, 1年前 , 9F
怎麼感覺你還真的是寫沒幾天就沒碰了
03/14 01:25, 9F
周圍寫的人不多,不過我寫是找了c++頻道一邊寫,一邊review 實際寫的時間大概零零散散加起來有一個月

03/14 02:05, 1年前 , 10F
C++很爛 不過你說的很不到位 不是蘋果比蘋果 歧視鍊出現
03/14 02:05, 10F
是問哪裡難,我就把我用的時候覺得無所適從的地方列出來而已。 ※ 編輯: hizuki (192.147.44.15 美國), 03/14/2023 11:01:24

03/14 19:34, 1年前 , 11F
你到底有沒有想過一個raw能解為何人家要想的那麼復雜?
03/14 19:34, 11F
就是避免有的人記不住嘛

03/14 19:35, 1年前 , 12F
你前面講說自己多厲害,結果見解跟剛學程式的人差不多啊z
03/14 19:35, 12F

03/14 19:35, 1年前 , 13F
xzd
03/14 19:35, 13F
不好意思,那你拿出你的public commit來比比咯,可能你memory比較多 ※ 編輯: hizuki (192.147.44.15 美國), 03/15/2023 10:50:27

03/15 12:50, 1年前 , 14F
原PO提交commit的id可以提供瞻仰嗎?
03/15 12:50, 14F
應該可以明白為什麼我在意效能,沒有什麼非常令人需要的東西。 0d746d1022c7f83bc297584cb4d456cae4697cbf Gstreamer 0f74ab59ce8712e7e2bb1e4517033328e626b27c linux kernel ※ 編輯: hizuki (192.147.44.15 美國), 03/15/2023 15:35:52

03/16 00:19, 1年前 , 15F
沒有用過pimpl嗎?
03/16 00:19, 15F
用來簡化include速度的吧,或者說用來直接unique ptr transfer?

03/16 00:21, 1年前 , 16F
不確定這邊同時提smart pointer和 l reference 是什麼
03/16 00:21, 16F

03/16 00:21, 1年前 , 17F
意思, 要解決的問題好像不太一樣
03/16 00:21, 17F
後者的話是可以,但是你要訪問一個property就要包包一層 ※ 編輯: hizuki (192.147.44.15 美國), 03/16/2023 17:37:13

03/16 20:19, 1年前 , 18F
pimpl是用來降低dependency(intro. by data members
03/16 20:19, 18F

03/16 20:19, 1年前 , 19F
03/16 20:19, 19F

03/16 21:37, 1年前 , 20F
連dereference都不喜歡那真的是多說無益了, 寫C吧
03/16 21:37, 20F
我不是反對pointer派,是很多人不喜歡來評價我用smart pointer大法 然後再丟一個feature告訴我你可以不需要用pointer。例子講正文我提到的東西 ※ 編輯: hizuki (192.147.44.15 美國), 03/17/2023 14:53:34

03/17 20:43, 1年前 , 21F
能接受gobject但是不能接受smart pointer開銷
03/17 20:43, 21F

03/17 20:43, 1年前 , 22F
那C++很明顯不合你的需求, 寫C也很好啊
03/17 20:43, 22F
文章代碼(AID): #1a3p5FIC (Soft_Job)
文章代碼(AID): #1a3p5FIC (Soft_Job)