工程師的缺德行為:叫朋友去學C/C++

尤川豪 发布于 2015/02/08 20:01
阅读 8K+
收藏 13

yo~小弟出社會工作一兩年了,有一些心得想分享給想入門學程式的朋友

小弟的網誌有安裝繁體、簡體中文轉換的plugin,可以在上面逛!

http://blog.turn.tw/?p=1283

----------------------------------------------

常常看到非資訊背景的朋友問工程師:我最近想學寫程式!該怎麼入門?

通常他們會得到很多糟糕的答案:「先了解演演算法」、「先弄懂資料結構」、「先認識物件導向」。

這些答案都夠糟糕了,但最糟糕的答案莫過於「從C/C++開始入門」。

(我看過最扯的建議是「去找C++ Primer Plus來看」。這本磚頭書絕對不適合一般人自學)

照著以上建議去做的朋友,大概會在兩週之內就得到滿滿的挫折感,然後認為自己「果然不適合寫程式」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入programming領域。

這些建議真是害人不淺。

資訊相關科系,是因為要接續到之後的資料結構、作業系統,所以大一從C/C++開始入門會比較連貫、才能完整學一次電腦的基本知識。

而這些想學coding的朋友,大部分只是這兩種情況:

A. 最近覺得寫網站好酷,想試試看自己能否寫個blog、或是個人網頁
B. 對工作上某些人工流程不滿意,想試試看自己能否學寫程式、用電腦解決問題

他們的願望僅此而已,並沒有打算成為電腦專家、駭客,實在沒有必要從C/C++入門。

就像點火一樣,先從零星的火苗開始、小心保護不要讓它熄滅,接著慢慢加東西進去、讓火焰慢慢成為大火。學習,除了知識/技能之外,培養成就感與熱情也是很重要的。而從C/C++入門,會讓正要萌芽的小火苗直接消滅殆盡。

我對程式設計入門的建議很簡單。
如果你是狀況A,去學PHP&MySQL,先弄一個醜醜網頁出來就可以了。
如果你是狀況B,去學Python,先弄一個能執行、能顯示幾個文字的程式就可以了。

一般人想到程式通常只想到「圖形化介面」,如果能寫出一個有介面的小玩意會非常有成就感。
那樣的話,學PHP來寫個網站、直接就是介面,絕對有趣;學Python很快就能把玩內建的tkinter函式庫、做出按鈕做出選單,樂趣無窮。

話雖如此,你到市面上找PHP或是Python的書,大概還是會落得「滿滿的挫折感然後正式放棄」的下場。

別擔心,這不是你的錯,是那些書寫得不夠好。沒有一本是真正的程式設計入門書。
那些書只想著給你知識/技能,沒有想到要培養你的成就感、保護你的熱情。

要找書的話,我只建議兩本。

狀況A,去找歐萊禮的「深入淺出 PHP 與 MySQL」(Head First PHP & MySQL)。
狀況B,去找歐萊禮的「深入淺出程式設計」(Head First Programming)。

已經出社會了嗎?去台灣大學資訊系統訓練班(http://www.csie.ntu.edu.tw/train/ )逛逛吧,看看時間跟課程費用能否負擔(我有經濟系背景的朋友去上過幾堂課程,學得滿開心)。

政府也有推動青年就業讚(http://www.geego.com.tw/青年就業讚/young-course-青年就業讚 )的課程,滿足某些條件還能申請補助(不過,我有朋友上過其中一堂PHP課程,印象很糟糕、覺得是業者要賺政府補助款隨便開設的課程。但畢竟是單一經驗,我還是列出來給各位參考。)

國外的線上開放課程也可以考慮。

Coursera的

人人都懂的編程課(Python)
(https://www.coursera.org/course/pythonlearn)

學習編程:基礎
(https://www.coursera.org/course/programming1)

麻省理工的

Introduction to Computer Science and Programming
(http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/)

A Gentle Introduction to Programming Using Python
(http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-189-a-gentle-introduction-to-programming-using-python-january-iap-2011/)

全部都是用Python入門。

我對程式設計入門的建議就只有這樣。你不需要知道什麼演演算法、資料結構、物件導向。
什麼狗屁名詞都不需要知道。那大多只是工程師下意識地想讓你覺得他們很厲害而已。

你只要想辦法寫出一個會動的程式就可以了。所有偉大的東西都是這樣開始的。

Q1: 但是狀況A還要面對HTML/CSS耶.. 好像很難?
每個技能深入下去沒有不難的。但是HTML/CSS要入門實在不怎麼難。
就從隨便寫幾個表單或按鈕、弄個醜醜的靜態網頁出來開始吧。

Q2: 我是工程師,我能怎麼幫助朋友?
幫他們搞定環境設定吧!幫他們把最基礎卻又最給新手挫折感的環境給設定好!讓他們能用記事本跟幾個小工具就開始寫code!給他們成就感!

Q3: 那寫手機app呢?你怎麼沒提到?
我覺得手機app還滿難入門的,實在給不出有建設性的建議。不知道。不過,上面的連結也許有一些手機相關課程,不妨試試?

加载中
4
中山野鬼
中山野鬼

我就不建议没有基础的人学c/c++,绝对是坑。哈。用几句话说复杂点就是:

我在坑下,希望你别砸着我,喊你别跳,你还是跳下,我只有一闪,让你跌在我原先的位置。你问这是什么,除了shit,还有啥?哈

1
eechen
eechen
动态语言的舒适度哪是C/C++能比的.想做网站博客的用PHP,做科学计算的用Python,其实就算是生手想学3D编程也可以从JavaScript入手,借助three.js这样的WebGL库,相比C/C++,难度小多了.
1
豆浆Melon
豆浆Melon
楼主说的大实话,一些人还是少装些逼,眼光踏实一点
0
m
magiclogy
要说做Desktop,个人感觉C#入门要比其他语言方便一些,至少有一个所见即所得的界面设计工具,表现不错的IDE。而且,编译器在编译期可以给初学者指出大部分错误。
0
FreeBlues
FreeBlues

iOS手机app可以试试ipad上的这个软件 Codea,有免费版本,可以直接在ipad 上编写、运行代码,使用的是 lua,比较适合新手;安卓手机app可以试试 quick-Cocos-2d-x,可以生产跨平台的项目。

尤其是 Codea 试试就知道有多容易上手了。

0
貌似掉线
貌似掉线

照著以上建議去做的朋友,大概會在兩週之內就得到滿滿的挫折感,然後認為自己「果然不適合寫程式」,也不好意思再去跟工程師講自己的狀況,最終再也不想踏入programming領域。
其实这样不是挺好的吗?这才是真正的好朋友啊。所谓一入IT深似海,从此妹子是路人。要是从《XXX入门》的书看起,最后看的就是《颈椎病康复指南》啦。



0
分流砥柱
分流砥柱
如果是深入的学习,C还是少不了的。
0
antipro
antipro
C++ primer的确不适合用来学习,只能是参考书,买了就后悔了。
刘冲
刘冲
初学者用那本c++ primer plus, 不一定好, 但是细, 该有的都有了
返回顶部
顶部