一. 為什么要寫(xiě)這個(gè)教程
我是一名程序員 , 從入行以來(lái)身邊就一直有不少朋友對(duì)我的工作特別好奇. 隨著近幾年大數(shù)據(jù),人工智能等一系列的概念被媒體大肆宣傳. 越來(lái)越多的人都有興趣進(jìn)一步的了解編程, 甚至想投身于這個(gè)行業(yè) .但同時(shí)他們也有一些擔(dān)憂,感覺(jué)學(xué)習(xí)編程非常困難,門(mén)檻特別高, 比如需要有很好的數(shù)學(xué)功底, 要有很強(qiáng)的邏輯思維能力...等等. 以下是一位同事的原話,我覺(jué)得非常具有代表性.
以前讀書(shū)的時(shí)候也學(xué)過(guò)C語(yǔ)言, 當(dāng)時(shí)也知道學(xué)好編程以后一定很有用. 但是因?yàn)樽约簩W(xué)的不是計(jì)算機(jī)專業(yè), 所以算法,數(shù)據(jù)結(jié)構(gòu)等課程都沒(méi)學(xué)過(guò), 所以現(xiàn)在也很難學(xué)會(huì)編程了.
聽(tīng)完他的話,我覺(jué)得不少人對(duì)編程還存在一些誤解
誤解一 只有科班出身的人才能學(xué)會(huì)編程
2015 年編程問(wèn)答社區(qū) Stack Overflow 公布了一份程序員調(diào)查報(bào)告,來(lái)自 157 個(gè)國(guó)家的 26,086 名開(kāi)發(fā)者參與了調(diào)查. 其中有兩項(xiàng)關(guān)于學(xué)歷(學(xué)位)背景的調(diào)查, 其中科班出身的程序員比率大致在58%左右(本科生38% 研究生18% 博士生2%), 也就是還有42%的程序員是非科班出生. 所以是否科班出身真的沒(méi)有你想想的那么重要.
誤解二 學(xué)編程需要掌握高深的算法
算法的確是計(jì)算機(jī)程序中最重要的組成部分, 某些場(chǎng)景下不同的算法效率上可能相差千百倍.所以學(xué)好算法絕對(duì)可以提高一個(gè)程序員的能力和視野. 但是并不是所有的程序都需要糾結(jié)算法. 所以一般只有在設(shè)計(jì)一些核心組件或系統(tǒng)遇到問(wèn)題的時(shí)候才會(huì)考慮如何優(yōu)化算法.
我想做點(diǎn)什么
明明對(duì)編程很感興趣,但由于一些誤解,最終沒(méi)能掌握編程這個(gè)技能那真是太可惜了. 所以我就想做一個(gè)課程,,消除這些誤解. 讓大家對(duì)編程有一個(gè)正確認(rèn)識(shí), 每個(gè)人都可以學(xué)會(huì)編程.
二. 學(xué)習(xí)編程的正確方式
傳統(tǒng)的編程語(yǔ)言教學(xué)方法往往是介紹一門(mén)編程語(yǔ)言完整的語(yǔ)法特性. 我認(rèn)為這種教學(xué)方式更適合已經(jīng)有一定編程經(jīng)驗(yàn)的人,因?yàn)樗麄円呀?jīng)了解編程的核心概念,只需要學(xué)習(xí)這門(mén)語(yǔ)言的語(yǔ)法特性即可. 但對(duì)于初學(xué)者來(lái)說(shuō),因?yàn)闆](méi)有編程基礎(chǔ),一下子理解這么多的編程概念,容易產(chǎn)生畏難情緒. 所以我認(rèn)為對(duì)于初學(xué)者來(lái)說(shuō),更好的學(xué)習(xí)方式應(yīng)該是"少學(xué)多做"
少學(xué)多做
- 花最少的時(shí)間了解核心的概念,語(yǔ)法基礎(chǔ)
類似帕累托原則,花20%的時(shí)間,獲得80%的效果.更重要的意義是不會(huì)讓你對(duì)編程產(chǎn)生任何恐懼. - 動(dòng)手做一點(diǎn)東西
編程語(yǔ)言就像我們交流的語(yǔ)言一樣,不說(shuō)不練永遠(yuǎn)都學(xué)不會(huì).所以學(xué)會(huì)編程最好的方式就是"編"程 - 遇到問(wèn)題,尋找解決問(wèn)題的方法
這個(gè)階段就能 了解更多語(yǔ)法特性,及算法.
所以學(xué)習(xí)編程的整個(gè)過(guò)程,就應(yīng)該和嬰兒學(xué)習(xí)母語(yǔ)一樣,學(xué)一點(diǎn),說(shuō)一點(diǎn), 不斷說(shuō),不斷錯(cuò),不斷改進(jìn)的過(guò)程.
三. 總結(jié)
我相信人人都能學(xué)會(huì)編程,使用編程. 并且利用編程協(xié)助解決生活,工作中的問(wèn)題.
課程特點(diǎn)
- 壓縮概念 -- 篩選最重要的編程概念, 避免初期學(xué)習(xí)過(guò)多的概念,產(chǎn)生畏懼.
- 實(shí)例教學(xué) -- 以實(shí)際的例子進(jìn)行教學(xué), 更容易理解
- 邊學(xué)變練.-- 只有自己動(dòng)手寫(xiě)代碼,才能真正掌握編程.
課程目標(biāo)
- 了解編程的核心概念
- 有獨(dú)立寫(xiě)程序的能力
四. 課程目錄
其實(shí)編程的核心概念幾乎可以用任何一門(mén)編程語(yǔ)言進(jìn)行講述,但考慮到本教程的受眾大多是沒(méi)有編程經(jīng)驗(yàn),或者很少編程經(jīng)驗(yàn)的人,所以選擇語(yǔ)法相對(duì)簡(jiǎn)單,且比較容易上手的python進(jìn)行教學(xué)
基礎(chǔ)概念 (已發(fā)布)
- 編程極簡(jiǎn)入門(mén)(python)-01-前言
- 編程極簡(jiǎn)入門(mén)(python)-02-安裝python環(huán)境
- 編程極簡(jiǎn)入門(mén)(python)-03-第一個(gè)python程序
- 編程極簡(jiǎn)入門(mén)(python)-04-變量
- 編程極簡(jiǎn)入門(mén)(python)-05-條件判斷
- 編程極簡(jiǎn)入門(mén)(python)-06-方法
- 編程極簡(jiǎn)入門(mén)(python)-07-批量處理
- 編程極簡(jiǎn)入門(mén)(python)-08-模塊
課后練習(xí)(暫未發(fā)布)