寫在前面:
? ? ? ?我手里這個魔方福贞,任何一個人都可以輕松地把它打亂撩嚼,但要想把它復(fù)原,就不是每個人都能做到的了挖帘。我會還原魔方完丽,而你不會,這能不能說明我比你聰明呢拇舀?并不能逻族。
? ? ? ?還原一個三階魔方是有特定的步驟的,目前最流行的還原方法叫?CFOP?法你稚,就是先在底部完成一個十字(Cross)瓷耙,再分四組完成前兩層(F2L),然后復(fù)原頂層塊的顏色(OLL)刁赖,最后復(fù)原頂層塊的位置(PLL)搁痛。至于高階魔方,則可以通過合并中心塊和棱塊把它變成一個三階魔方宇弛,然后再用上面的方法復(fù)原鸡典。
? ? ? ?我會還原魔方,不過是因?yàn)槲艺莆樟诉@套程序枪芒,而你還沒有掌握彻况,所以無法還原它谁尸,僅此而已。只要你愿意纽甘,完全可以通過各種渠道學(xué)到這套程序良蛮,把它裝到你自己的腦子里,然后你就會還原魔方了悍赢。
Part.1
為什么要學(xué)習(xí)編程决瞳?
? ? ? ?編程的目的就是寫出一個程序,那么我們就要先搞明白一個問題:啥是程序左权?
? ? ? ?程序皮胡,就是流程加順序。以一首歌為例赏迟,歌詞和樂譜其實(shí)都是程序屡贺,分別記錄了歌曲的唱詞和彈奏過程,音樂創(chuàng)作人把音樂寫成歌詞和樂譜锌杀,這就是程序甩栈。歌手按照歌詞來唱,樂隊(duì)根據(jù)樂譜來演奏抛丽,這就是在執(zhí)行程序谤职。而寫歌詞和記樂譜的過程,就是在編程亿鲜。
? ? ? ?當(dāng)你按照別人設(shè)計(jì)好的流程在一步一步執(zhí)行時允蜈,你就是在被編程。比如我們參加一個旅游團(tuán)蒿柳,只能嚴(yán)格按照人家規(guī)定好的行程來饶套,每一步都不能更改,這是被編程垒探。只有當(dāng)程序是我們自己設(shè)計(jì)的時妓蛮,這才是在編程,比如計(jì)劃一次自由行圾叼,詳細(xì)安排出行計(jì)劃中的每一步蛤克,先去哪后去哪,決定在哪吃夷蚊、吃什么构挤、住哪里,這就是編程惕鼓。
? ? ? ?學(xué)習(xí)編程筋现,就是為了讓孩子們以后都能成為編程的人。
? ? ? ?有人問:程序我自己知道就行了,干嘛要寫出來呢矾飞?
? ? ? ?首先一膨,把程序?qū)懴聛碇螅憔筒挥迷儆洃浾麄€流程中的全部細(xì)節(jié)了洒沦,只需要專注于執(zhí)行豹绪。我們在學(xué)習(xí)一道新菜的做法時,都會先在網(wǎng)上或書本里找到食譜微谓,然后照著流程一步步來做森篷。只有非常熟悉的老手输钩,才能只看一遍就掌握其中要點(diǎn)豺型,然后不用看就能做。這樣可以減輕我們大腦的壓力买乃,也會大大減少出錯和遺忘的可能性姻氨。
? ? ? ?把程序?qū)懴聛砗筮€有個好處,就是你可以把這項(xiàng)原本需要自己完成的工作交給別人去做剪验,從而把自己解放出來肴焊。我有個習(xí)慣,就是在每個崗位上都把自己的常規(guī)工作流程寫成文檔功戚,隨時可以交接給別人娶眷,可以讓自己隨時離開,而組織依然能正常運(yùn)轉(zhuǎn)啸臀。相反届宠,很多人認(rèn)為自己在一個崗位上是不可或缺的存在,這樣就能說明自己很厲害乘粒。但我可不這么認(rèn)為豌注,如果這個崗位離了你就不轉(zhuǎn)了,那么你不得累死灯萍?沒人能接手你的工作轧铁,那你還有機(jī)會跳槽或升職么?
? ? ? ?人的價值旦棉,其實(shí)由他所掌握的程序決定齿风。有的人裝的程序多,有的人裝得少绑洛;有的人裝的程序高級救斑,有的人裝的程序低級。打個比方說诊笤,如果給你一臺最新的頂配 iPhone系谐,但不允許安裝任何 APP,那這部手機(jī)就只能做類似打電話、發(fā)短信纪他、看網(wǎng)頁這樣的簡單功能鄙煤,甚至還不如老式的功能機(jī)待機(jī)時間長、耐摔耐用茶袒,對吧梯刚?
? ? ? ?人是不可被復(fù)制的,但程序是可以被復(fù)制的薪寓。人是不靠譜的亡资,而程序是靠譜的。人是不可改變的向叉,但程序是可以改變的锥腻。如果一件事出了問題,找原因找到人頭上母谎,只能解決人瘦黑,卻不能解決問題。任何問題的根源都在程序上奇唤,只有修改了程序里的漏洞幸斥,才能真正解決問題。
? ? ? ?學(xué)習(xí)編程咬扇,就是要讓孩子們理解上面這些道理甲葬。
? ? ? ?如果能把程序用機(jī)器能理解的語言寫出來,就可以讓機(jī)器去完成原本需要人去做的重復(fù)性工作懈贺,從而突破人類的體能極限经窖,做到原本做不到的事情。
? ? ? ?再厲害的舉重運(yùn)動員隅居,也不可能跟叉車比力氣钠至;再聰明的人類棋手,也不可能戰(zhàn)勝充分訓(xùn)練過的人工智能胎源。機(jī)器可以不吃不喝不睡 24 小時運(yùn)轉(zhuǎn)棉钧,不要工資不要福利不請假不偷懶不休息不發(fā)脾氣,性能兩三年就翻一倍涕蚤,成本則降低一半宪卿,干活比人又快又便宜還靠譜。在跟機(jī)器競爭時万栅,人類是永遠(yuǎn)處于劣勢的佑钾。
? ? ? ?女性開始大規(guī)模進(jìn)入社會工作有很多原因,而其中一個重要因素就是以洗衣機(jī)為代表的各種家用電器的普及烦粒,大大減輕了女性在家務(wù)勞動中所花的時間休溶。中世紀(jì)一個典型的家庭婦女每天平均要花 4 個半小時在洗衣服上代赁,正是洗衣機(jī)等電器的普及解放了女性的雙手,這才讓女性有足夠的時間來投入工作兽掰。
? ? ? ?學(xué)習(xí)編程芭碍,就是要培養(yǎng)孩子們的計(jì)算思維,能發(fā)現(xiàn)哪些工作更適合讓機(jī)器去做孽尽,也有能力寫程序來完成這個任務(wù)窖壕。同樣的事情如果能讓機(jī)器做,就最好不要讓人去做杉女。即便只是把工作中的一部分交給機(jī)器瞻讽,也能大大提升工作的效率并降低成本。
? ? ? ?有人又問:編程找專門的程序員不就行了嗎熏挎?干嘛要讓學(xué)生學(xué)呢速勇?學(xué)編程能給孩子帶來什么?
? ? ? ?要知道婆瓜,我們正生活在一個即將快集、甚至已經(jīng)由程序支配的世界。股票交易廉白、地鐵運(yùn)行早已由程序接管,因?yàn)闆]有人能處理如此大的數(shù)據(jù)量乖寒,沒有人能作出如此精準(zhǔn)的操作猴蹂,更沒有人可以承擔(dān)出錯的責(zé)任;全自動流水線和機(jī)器人已經(jīng)席卷全世界的制造工廠楣嘁;我們每天拿出手機(jī)輕輕一點(diǎn)磅轻,百度地圖就幫助你規(guī)劃好了路線,QQ 音樂幫你識別出了馬路上聽到的音樂逐虚,今日頭條推送了你最感興趣的新聞聋溜,抖音刷出了你最愛看的視頻……
? ? ? ?在電器時代來臨之前,那怕是手表這樣復(fù)雜的機(jī)械結(jié)構(gòu)只要拆開了慢慢研究叭爱,總能明白其中的道理撮躁;像臺燈和電風(fēng)扇這樣的簡單電器,具備簡單的初中物理學(xué)基礎(chǔ)后买雾,觀察電路板也可以理解原理把曼;然而在集成電路出現(xiàn)之后,就出現(xiàn)了一個不可觀察的黑盒漓穿;互聯(lián)網(wǎng)時代的軟件和 APP嗤军,用戶更是只能接觸到操作交互界面,對界面后的服務(wù)器和運(yùn)作邏輯完全一無所知晃危;到了人工智能時代叙赚,我們會發(fā)現(xiàn)自己身邊存在著無窮無盡的黑魔法,它們功能強(qiáng)大,簡單易用……但是我們總是難以理解它們到底是怎么一回事震叮。
? ? ? ?如果你不能理解這個世界沿量,又談何去改變世界呢?
? ? ? ?學(xué)習(xí)編程冤荆,就是要教孩子們更好地理解并改造我們生活在其中的這個世界朴则,讓他們能夠在未來更好地生存下去。
Part.2
編程應(yīng)該要學(xué)哪些東西钓简?
? ? ? ?嚴(yán)格來說乌妒,編程只是計(jì)算機(jī)科學(xué)的一個分支罷了。其實(shí)全稱應(yīng)該叫計(jì)算機(jī)科學(xué)課外邓。主要包括下面這三個方面的內(nèi)容:
計(jì)算思維:解決問題撤蚊、理解問題、創(chuàng)造(游戲损话、動畫侦啸、工具……)
信息技術(shù):原理探究、信息檢索丧枪、具體使用
數(shù)字素養(yǎng):數(shù)據(jù)思維(保存光涂、分析、統(tǒng)計(jì))拧烦、效率思維忘闻、安全意識(BUG、病毒恋博、加密……)
? ? ? ?現(xiàn)在大多數(shù)信息技術(shù)課齐佳,其實(shí)是在培訓(xùn)學(xué)生使用幾個典型的辦公軟件的使用,也就是 office 三件套债沮、Flash炼吴、PS。說白了疫衩,就是把使用說明書往學(xué)生的腦子里裝硅蹦。然而,會按照教程使用軟件隧土,但并不理解其背后的原理提针,知其然不知其所以然!
? ? ? ?而學(xué)習(xí)編程則是要讓學(xué)生明白:程序是怎么工作的曹傀?怎么編寫程序來解決問題辐脖?程序出了問題怎么解決?
? ? ? ?在沒有經(jīng)驗(yàn)且找不到可用資料的情況下皆愉,學(xué)生應(yīng)該能獨(dú)立作出理性的判斷嗜价,找到解決問題的方法艇抠。而不是凡事都要問百度,離開了網(wǎng)絡(luò)什么都不會干久锥。不是我們教給學(xué)生可以用什么工具通過什么步驟來解決問題家淤,而是他在面對具體問題時會想到“有可能對應(yīng)的工具”并有意識地去尋找∩桑可以在一堆工具中進(jìn)行選擇絮重,并能理解它們背后的基本原理,知道它們能做什么歹苦,不能做什么青伤。當(dāng)工具出問題時,有能力找到問題的原因并加以解決殴瘦。在找到的工具不能滿足需求的時候狠角,有能力基于開源軟件或通過插件和配置進(jìn)行二次開發(fā),并在必要的時候創(chuàng)造一個新的工具來完成任務(wù)……
? ? ? ?語言是死的蚪腋,而思維是活的丰歌。在打好編程思維的基礎(chǔ),掌握了用搜索引擎查找資料屉凯、閱讀官方文檔立帖、在社區(qū)求助的能力之后,就完全可以去自學(xué)任何一門編程語言神得。
? ? ? ?目前有不少編程課程厘惦,都把教學(xué)的重點(diǎn)放在了“記住解決這個問題的步驟”上,那么很可能最終學(xué)生記住了一堆題目的解法哩簿,但是遇到一個變種就不知道該怎么辦了,因?yàn)樗恢肋@個解法是怎么得出來的酝静,每個步驟為什么要這么做节榜,而不能那么做。
? ? ? ?我認(rèn)為更重要的是教給孩子們一套解決問題的方法論别智,也就是“解法”的解法宗苍,比如逐步?DEBUG(調(diào)試)找出程序的問題、通過“自底而上”和“自頂向下”兩種思路把大問題分解成小問題來解決……這些方法都可以用來解決任何領(lǐng)域的問題薄榛。
? ? ? ?未來需要的是擁抱變化讳窟、面向未來,能創(chuàng)造性地獨(dú)立解決新的問題的人敞恋;只會按已有經(jīng)驗(yàn)去解決舊問題的人丽啡,是沒有競爭力的。我認(rèn)為理想的編程學(xué)習(xí) 硬猫,應(yīng)該能培養(yǎng)出這樣的人:
▏?能系統(tǒng)性整理自己的邏輯补箍,并有條理改执、無歧義地高效表達(dá)自己的想法;
▏?能把一個復(fù)雜問題分解成簡單的子問題坑雅,并分別解決辈挂;
▏?能有效運(yùn)用“試錯、反思裹粤、迭代”循環(huán)终蒂,把失敗與錯誤轉(zhuǎn)化為成長的機(jī)會;
▏?能認(rèn)識到很多事不需要親自去做遥诉,而是可以描述清楚之后交給別人去做拇泣;
▏?能識別出哪些工作更適合由機(jī)器代替人來完成,并找出有效的解決方案突那;
▏?能在不同的解決方案之間進(jìn)行權(quán)衡挫酿,并找出最適合自己的那一種;
▏?能理解日常所用軟件和工具的基本原理愕难,有能力判斷它們能干什么早龟、不能干什么。
? ? ? ?“我是一名從事了10年開發(fā)在退休邊緣垂死掙扎的高齡程序員猫缭,最近我花了一些時間整理了一個完整的學(xué)習(xí)C語言葱弟、C++的路線板惑,項(xiàng)目源碼和工具滥沫。對于想學(xué)習(xí)C/C++的小伙伴而言玩祟,學(xué)習(xí)的氛圍和志同道合的伙伴很重要葫隙,筆者推薦我專欄的C語言/C++編程愛好者的聚集地>>>C語言/C++進(jìn)階之路 - 專題 - 簡書钾虐!
? ? ? ?歡迎初學(xué)和進(jìn)階中的小伙伴畔勤。希望你也能憑自己的努力懂盐,成為下一個優(yōu)秀的程序員北启。工作需要脉顿、感興趣蝌麸、為了入行、轉(zhuǎn)行需要學(xué)習(xí)C/C++的伙伴可以一起學(xué)習(xí)艾疟!”
? ? ? ?喜歡小編的記得動動您的小指點(diǎn)個關(guān)注喲来吩!最后分享一張C/C++編程學(xué)習(xí)路線圖給愛學(xué)習(xí)的小伙伴們~