PTT推薦

Re: [問卦] C++可以啟發孩子的程式天份嗎?

看板Gossiping標題Re: [問卦] C++可以啟發孩子的程式天份嗎?作者
protoss
(天生散人)
時間推噓 X 推:1 噓:2 →:106

※ 引述《bachelorwhc (積積陰陰德)》之銘言:
: 標題: Re: [問卦] C++可以啟發孩子的程式天份嗎?
: 時間: Sun Dec 26 00:37:33 2021
:
: ※ 引述《Superxixai (洪粉吱已)》之銘言:
: : 小弟小時候第一個接觸的語言就是C++。
: : 雖然過了很久很久,
: : 但是在即將邁入2022的時刻,
: : 教9年級左右的孩子,
: : C++是不是依舊能夠啟發他們的程式天份?
: : 有沒有相關的八卦?
:
: 那要看你怎麼定義程式天份
:
: 如果是講演算法跟資料結構 用C或Python下去操比較快
:
: 如果是講計算機結構 一樣也是用C跟OS下去操
:
:
: 國中時 C++是我第一門接觸的語言
:
: 那個時候要做遊戲的難度不低
:
: C++可以說是最低門檻 自己看書學語法是沒問題
:
: 但是沒人帶很難知道要怎麼開發出軟體還有連結library的觀念
:
: 最多就是寫一些console自娛自樂
:
:
: 也曾經轉而寫PHP跟SQL做網站跟操作資料庫 (當然怎麼設計DB的觀念也是近乎沒有)
:
: 後來在GameMaker上用GameMaker的腳本語言寫遊戲
:
: 才漸漸真正有"寫的東西有用"的實感
:
:
: 新手買語言書自己K 只是習慣程式語言跟熟定義而已
:
: 很容易在"學這個到底要怎麼做出真正能用的程式"的疑問中迷茫
:
: 坊間有不少目的導向 例如以製作遊戲、網站為前提開發的書籍
:
: 是可以跳過純語言的枯燥階段 但新手的瓶頸是在於不知道為何要這樣寫
:
: 最後很多問題還是回到基本功
:
: 其中又以C++跟C為甚 很難讓你跳過基本功
:
: C的基礎是pointer 如果要開發程式 大部分的API 甚至OS提供的library都跳不過
:
: C++雖然用物件導向 還有換個名字的pointer: reference
:
: 但是STL給新手的陷阱更多
:
:
: const char* str = obj.getName().c_str();
:
: 為什麼之後引用str會crash? 這個問題可能有些菜鳥工程師都會犯
:
: for(auto it = v.begin(); it != v.end(); ++it) {
: v.erase(it);
: }
:
: 新手會問 為什麼我按照書上寫的呼叫erase 編譯也能過 為何還會crash?
:
:
: 語言本身也有毛
:
: struct A {
: A(int a, int b) : b_(b), a_(b_ + a + 1) {
: }
:
: int a_;
: int b_;
: };
:
: 為何A(3, 5).a_不是9?
:
:
: 所以建議
:
: 要嘛old fasion寫C
:
: 要嘛寫go或python
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.97.187 (臺灣)
: ※ 文章網址: https://www.ptt.cc/Gossiping/M.1640450256.A.F95
: ※ 編輯: bachelorwhc (36.231.97.187 臺灣), 12/26/2021 00:39:18
: 推 adminc: 組合語言入門 114.43.116.20 12/26 00:41: 噓 XDDDpupu5566: print("Hello world") 172.58.43.13 12/26 00:41: 推 cuteSquirrel: js的毛也很多 114.37.159.253 12/26 00:41
:
: js definitive guide比C++ Primer還有聖經本厚
:
: 毛是真的不少
:
: 推 TRFgee: 你讓代數都不熟的小孩摸C 61.223.88.154 12/26 00:42: → TRFgee: 他指標就跪在那邊了 61.223.88.154 12/26 00:43:
: 指標除了函數指標的宣告方法有點不直覺以外
:
: 其實比較聰明的小孩還是學得會
: ※ 編輯: bachelorwhc (36.231.97.187 臺灣), 12/26/2021 00:46:18
: 推 tanted: 那萬一遇到比較笨的小孩 學不會呢 114.45.198.213 12/26 00:47
:
: 笨小孩可以從腳本語言學起
:
: → freeunixer: 那就跳過去,過兩年再學那部分 60.250.90.238 12/26 00:48: ※ 編輯: bachelorwhc (36.231.97.187 臺灣), 12/26/2021 00:49:52
: 推 DarkIllusion: 那就寫Python 36.239.72.11 12/26 00:49: 推 archon: 比較笨的小孩,沒有程式天份可啟發 114.37.214.96 12/26 00:49: 推 ejnfu: 小孩當然學python就好啦 73.93.112.30 12/26 00:50: 推 nayeonmywife: pointer記憶體位置概念有了就不錯啦 223.26.109.234 12/26 00:54: 推 DerLuna: go真的是很棒的語言 36.225.129.25 12/26 01:31: → protoss: 你是故意亂寫再來說陷阱的吧...這不是書 180.176.130.101 12/26 03:41: → protoss: 上都有叫你不要做了嗎... 180.176.130.101 12/26 03:42: → ILike58: 第一個哪裡會crash?容器經過增刪,itera 111.71.24.150 12/26 08:26
:
: 講完果然馬上來一個菜鳥
:
: https://bit.ly/32uUGyO
:
: 有人跟你講getName的string的生命週期有多長嗎?

那你也要定義出scope來吧...

照你這樣描述...

書上一堆例子全都crash了...

你這個說明我其實也看不懂他的註解跟嘗試...

照他說的如果getString()的物件存活是到main return...

那根本就不會有印出垃圾這個問題好嗎...

問題在於getString()的物件回傳後就摧毀了...

是他自己用pointer去指向一個被摧毀的物件...

後面那三個嘗試真的沒什麼意義...


:
: → ILike58: tor會失效吧,書上會說,最後幹嘛要跟宣 111.71.24.150 12/26 08:27: → ILike58: 告的順序不同做初始化,還故意有相依性, 111.71.24.150 12/26 08:27: → ILike58: 這樣表達有什麼好處嗎?對調宣告的順序試 111.71.24.150 12/26 08:27: → ILike58: 試。 111.71.24.150 12/26 08:27:
: 業界就是這麼多雷包
:
: 我當然知道對調宣告順序結果是對的
:
: 有些人就是沒在看書的

你提的這些雷說真的對學習也沒啥幫助...

就去找本Introduction的書認份點啃完就都曉得了...

這些都只是規則根本也扯不上什麼天份...

就是認份就夠了...

: ※ 編輯: bachelorwhc (36.231.50.26 臺灣), 12/26/2021 10:44:44
: 推 ko27tye: 有些例子根本太硬要== 36.229.7.85 12/26 10:42: 推 kindaichitom: 函數指標宣告真的不直覺,尤其是當 36.226.140.106 12/26 12:58: → kindaichitom: 你要函數指標回傳函數指標而不使用 36.226.140.106 12/26 12:58: → kindaichitom: typedef的時候,會想殺人 36.226.140.106 12/26 12:59: → kindaichitom: 不過function pointer是進階的用法 36.226.140.106 12/26 12:59

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.130.101 (臺灣)
PTT 網址

xiemark 12/26 15:58leet code

jason276 12/26 16:47你有辦法看到馬上就發現問題嗎?

compile也會跟你講吧... 掛掉也會有log... 但是回傳暫時物件後就銷毀是書上都會寫的...

bachelorwhc 12/26 16:47原文都有寫要讀完書 但有多少小孩認

ILike58 12/26 16:47講到這個scope,以前我主管還真的聽不懂

ILike58 12/26 16:47,明明做安卓framework都十幾年了,也碰

ILike58 12/26 16:47了快一年的Python,報個python都報的2266

有這麼爛? 安卓不是用C++寫的嗎? 不過做系統的本來就不需要懂啥語言阿... 亂做讓人看到你有動作就好了啊 XD

bachelorwhc 12/26 16:47份讀完 你還在跳痛

這跟跳痛有啥關係? 你就這樣一句話說會crash... 這同事被找來看不噴你才怪... 不懂的人還以為c_str()回傳的字串指標根本不能用...

ILike58 12/26 16:47,活到快五十歲了,真服了台灣的公司。

bachelorwhc 12/26 16:48js那麼多人學 就是因為很難遇到這些

jason276 12/26 16:49而且C++的地雷還不止這個 累積起來到底

jason276 12/26 16:49你的codebase有多少看不見的地雷

bachelorwhc 12/26 16:49雷 把definitive guide嗑完才來寫

bachelorwhc 12/26 16:49你看看有多少人撐得下去

需要那麼麻煩嗎? 去買本入門書乖乖啃完剩下的等踩雷再說...

jason276 12/26 16:50處理complexity是軟體工程的基本 把comp

jason276 12/26 16:50lexity變得那麼高的語言真的只有C++

jason276 12/26 16:51python的scope rule比較特別吧? if裡面

jason276 12/26 16:52的變數會跑出來

bachelorwhc 12/26 16:53python的scope rule是因為他的模型

※ 編輯: protoss (180.176.130.101 臺灣), 12/26/2021 17:04:12

bachelorwhc 12/26 16:54你只要觀察globals、locals就能懂

bachelorwhc 12/26 16:55不少interpreter based都有這樣的特

bachelorwhc 12/26 16:55

jason276 12/26 17:13需要 因為這個語言踩到地雷你不一定會

jason276 12/26 17:13知道 事實上你沒辦法一眼看出問題就是

jason276 12/26 17:13這個語言的問題

先念完本入門書再說吧... 不然等到知曉所有的雷後棺材都進一半了...

※ 編輯: protoss (180.176.130.101 臺灣), 12/26/2021 17:15:44

bachelorwhc 12/26 17:54你的理解能力可能真的有問題

bachelorwhc 12/26 17:54當你同事應該滿辛苦的

bachelorwhc 12/26 17:56我原文就寫"其中又以C++跟C為甚

bachelorwhc 12/26 17:57很難讓你跳過基本功" 你就得要鑽牛角

bachelorwhc 12/26 17:57尖跳針狂回叫新手買入門書來看

bachelorwhc 12/26 17:58入門書不就是基本功的一部份嗎?

bachelorwhc 12/26 17:58不如你列幾本能讓九年級生讀完的"入

bachelorwhc 12/26 17:58門書"來看看好了

bachelorwhc 12/26 18:00有經驗的C++工程師看到我舉的第一個

bachelorwhc 12/26 18:00例子 馬上就猜到是scope問題了

bachelorwhc 12/26 18:00你還在要人說清楚XDDD

ILike58 12/26 18:04還有cts跑不過去改cts的,然後自以為很屌

ILike58 12/26 18:04完全沒在聽美國工程師建議的,搞到對方板

ILike58 12/26 18:04起臉兇,真的很奇葩,天大地大出了鬼島才

ILike58 12/26 18:04知道沒多大。

台科喔~標準華人黑手技術水平... 解決不了問題就解決提出問題的人 - -; 你們進commit是都沒人review的嗎?

ILike58 12/26 18:12to bachlorwhc: 其實你並沒有交代清楚,

ILike58 12/26 18:12不然我也不會問哪裡crash了,並不是getNa

ILike58 12/26 18:12me()的scope問題,是obj的才對,而且如他

ILike58 12/26 18:12所說,說明連結裡的三個嘗試既然知道暫存

ILike58 12/26 18:12物件回存就會消失,那樣作法只是說明clas

ILike58 12/26 18:12sic c++和modern c++效能上的差別,這和c

ILike58 12/26 18:13rash其實是兩件事。

bachelorwhc 12/26 18:16有經驗的工程師能猜到 你猜不到 就醬

bachelorwhc 12/26 18:17你還是聽不懂 跟obj無關

bachelorwhc 12/26 18:17是obj return的string

bachelorwhc 12/26 18:18我貼的連結 stackoverflow解說已經很

bachelorwhc 12/26 18:18詳細 你看不懂的話 確實說明一些事

bachelorwhc 12/26 18:21而且那跟modern還有classic根本無關

bachelorwhc 12/26 18:22解答的三個例子中 c++03除了rvalue

bachelorwhc 12/26 18:22reference完全都做得到

你去看一下他嘗試的那三個例子是用啥接的... 你是用pointer接的ㄟ... 所以指向一塊無效的記憶體... 你都講到了rvalue reference那不就是把值保留下來了...

ILike58 12/26 18:25為什麼你覺得我看不懂那個連結?你舉的例

ILike58 12/26 18:25子跟那連結是一樣的嗎?很可惜的你沒說明

ILike58 12/26 18:25getName()傳回了什麼,只能就c_str()得知

ILike58 12/26 18:25是個string物件,然後你到底對這個回傳的

ILike58 12/26 18:25const char*做了怎樣的操作造成了crash也

ILike58 12/26 18:25沒說。

bachelorwhc 12/26 18:26很簡單 你現在的回文更讓我確信你看

bachelorwhc 12/26 18:26不懂

bachelorwhc 12/26 18:27getName()有可能回傳string或string&

bachelorwhc 12/26 18:27如果是後者 就是依賴obj的生命週期

bachelorwhc 12/26 18:28如果是前者 就是stackoverflow的原問

bachelorwhc 12/26 18:28如果這個str被傳到外面來用 就算obj

bachelorwhc 12/26 18:29的生命週期是到程式結束 但temp stri

bachelorwhc 12/26 18:30ng早就解構

bachelorwhc 12/26 18:31這時你去操作這個str 是UB

ILike58 12/26 18:34你要不要比對你的寫法跟連結裡的寫法?他

ILike58 12/26 18:34是有清楚交代使用情境的,你只有一句描述

ILike58 12/26 18:35,我不認為這兩者是一樣的,而且真有必要

ILike58 12/26 18:35回傳stack裡的物件,那就加上static並回

ILike58 12/26 18:35傳reference。

※ 編輯: protoss (180.176.130.101 臺灣), 12/26/2021 22:25:40

ILike58 12/27 14:51其實只是跑完cts後要解一些fail項,美國

ILike58 12/27 14:52的工程師人很好,他好像就是該項目的owne

ILike58 12/27 14:52r,他看了是video codec在performance的l

ILike58 12/27 14:52og直接跟你講那就是高通在codec那邊有更

ILike58 12/27 14:52動,所以請他們處理就好,還幫我直接comm

ILike58 12/27 14:52ent在系統上,因為我的主管要我去夾兩百

ILike58 12/27 14:52條進版的patch,別的同事又是那種求神拜

ILike58 12/27 14:52佛的解法,後來主管把issue切給他那掛的

ILike58 12/27 14:52人解,就異想天開的要去改cts的code,一

ILike58 12/27 14:52開始美國的人還好好問問我們做案子的poli

ILike58 12/27 14:52cy,我們這邊只想趕快進code賺credit,接

ILike58 12/27 14:53著美國人就火了...

那是你主管的問題吧... 哪有解CTS在那夾patch的... 很會打patch build image喔 - -; 不過大部分的人也不知道CTS到底是在幹嘛... 反正就資深的教你跑你就跑... 系統廠就是這樣做中學... 你做我學 XD 那種東西就只是種單元測試... 代表規格最好是你可以自己去改規格... 要不是搞不清楚狀況就是沒人管... 不過會把公司從一千三做到剩十三我想大概剩下的也都這種貨色... 就以前有經歷過什麼看過什麼就當秘招了... 結果錯的作法做到公司收了他也不知道錯在哪...

※ 編輯: protoss (180.176.130.101 臺灣), 12/27/2021 21:36:55

ILike58 12/27 22:42他就自己拉他那掛的整天神神秘秘的,我是

ILike58 12/27 22:42後來才加入的,所以也不清楚那部門的情形

ILike58 12/27 22:42,基本上就分兩群,另一群被分去做手機,

ILike58 12/27 22:42他就跟他那掛的整天忙他們自己的,會看手

ILike58 12/27 22:42機這邊的問題也都是要有機會進code他們才

ILike58 12/27 22:43會碰,基本上也不會跟你討論,看起來很瞧

ILike58 12/27 22:43不起另一群做手機的,反正就花蓮台中那邊

ILike58 12/27 22:43來的,你知道的,他自己都說了,做手機有

ILike58 12/27 22:43什麼價值?真正有價值的是留code在安卓裡

ILike58 12/27 22:43,拼命飛mtv跟美國那邊串交情拉事情跟他

ILike58 12/27 22:43那掛的分,大概是打算萬一到時約滿留不下

ILike58 12/27 22:43來,去外頭還可以秀那些commit給下一個公

ILike58 12/27 22:43司看,就整個很會算,搞得氣氛很差根本就

ILike58 12/27 22:43是當他那掛的墊背吧。

七二一方針喔... 可以~這很華人所以我誤會了你主管對CTS這類測試的理解了 XD 反正什麼地方出來的就那種水準... 成天拉幫結派玩弄規矩... 最近台中顏家不是報出來全都是那批家臣在那玩... mtv是啥?飛美國唱歌應酬?

※ 編輯: protoss (180.176.130.101 臺灣), 12/28/2021 00:54:45

ILike58 12/28 12:59mountain view谷歌總部。

喔喔~ 反正喔什麼地方出現名人大概就代表那個地方的人是什麼德性... 最近被爆的顏家你認為那種人有可能事事都自己跑嗎? 當然就是背後有群靠他吃飯的髒東西在幫他運作... 所以你部門這種拉幫結派鬥另一群的其實就是縮影... 基本上那種地方出來的道德良知特別不一般... 所以行為也就跟一般人不太一樣... 就像生小孩人家先看前面有沒有帶把... 他們先看後面有沒有開孔之類的 XD

※ 編輯: protoss (180.176.130.101 臺灣), 12/29/2021 00:47:52

ILike58 12/30 21:46反正喔,就案子要怎麼做只有以前他們做過

ILike58 12/30 21:46知道,但是換了公司之後呢,就不做案子了

ILike58 12/30 21:46,用點話術騙你去做,但交接也都沒有,不

ILike58 12/30 21:46曉得怎麼做是你自己都問題,怪你不問,事

ILike58 12/30 21:46實上留下來的文件也是都五六年前亂寫一通

ILike58 12/30 21:46,連基本的窗口是誰也都不講就當你自己應

ILike58 12/30 21:46該知道,滿腦袋就是趕快升等加薪拼績效留

ILike58 12/30 21:46在google,的確如你說的721方針一樣。

系統廠不就是這樣... 上游廠商幫你做的測試差不多都做完了... 你替代料換成比較差的規格一樣又怎麼會出現問題... 頂多就是壓力測試可能比較有機會出錯... 多的是一堆也沒真的有跑過測試就跟你回報在他手上測都沒問題... 等著解issue的大有人在... 沒issue就當沒事就好了... 你有問題就是跟大家過不去 XD 刷公司咖啡抽抽菸聊聊還有多少福利跟人生的安排就可以下班了... 身心健康快樂比較重要啊 XD

※ 編輯: protoss (180.176.130.101 臺灣), 12/31/2021 01:57:56