IT行業到底是怎麼一回事,是否能科普?如果可以如何科普?

問題是這樣的:

作為一個外行,我們也經常可以看到許多學科的科普,比如很多人雖然不是物理專業人士,但也有人會寫關於引力波,對撞機,暗物質等等的科普;很多人雖然不是心理學專業人士,也會有許多科普條目介紹各種心理學效應,等等。

但是作為一個什麼領域都想圍觀一下滿足好奇心的普通人,印象中(或許是我孤陋寡聞),並未見到一些比較面向大眾的IT行業的科普。

我試過搜索一些IT行業的概念,比如github等,卻發現所有的概念基本是在用一些專業的概念去解釋另一些專業的概念,或者就是在玩只有行內人看得懂的梗。感覺上,IT領域相比其他一些領域,似乎是一個對外行人更加陌生與隔絕的領域。

提這個問題沒有任何惡意,只是想了解一下一直比較好奇的問題:

  1. IT這個行業是怎樣運行的?一個程序或網站是怎樣被製造出來的?會經歷哪些流程,需要哪些人員?
  2. 一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?
  3. 一個程序員的成長過程是怎樣的?衡量一個程序員能力的標準是什麼?
  4. 這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?還有哪些角色,他們的分工是什麼?
  5. 類似GitHub的網站是做什麼的?這些類似的網站或論壇在流程中扮演了什麼角色?
  6. 為什麼會有不同的編程語言?程序員是怎樣編寫一個程序的?會用特殊的工具甚至是特殊的系統嗎?比如Linux是怎麼一回事?
  7. IT行業缺乏通俗易懂的科普嗎?為什麼?
  8. 人們對IT行業有哪些經典的誤解?

我知道可能這些問題問得有些大,以及很小白,懇請各位大牛高抬貴手,多多包涵,只要能用通俗的語言解釋其中一小部分問題就感激不盡了(求不要玩外行人看不懂的梗),題主在此謝過。


這個問題好大,不過既然題主把問題1、2、3、4列出來了,就讓我一一道來,一個問題都不漏。

IT這個行業是怎樣運行的?

和其他行業一樣,也是靠人來運作的,只是從業者具有相關信息技術知識。

一個程序或網站是怎樣被製造出來的?

由程序員寫出代碼,然後經過測試,最後發布。

會經歷哪些流程,需要哪些人員?

各個組織的流程都會不同,但是大體類似,需要開發者、測試者還有產品經理。

一個程序員的一天是怎樣的?

上班,寫代碼,開會,吃飯,扯淡,下班(順序不一定,而且可能會交叉)

他們通過哪些途徑工作以及學習交流新的知識?

他們會看書寫書,看博客寫博客,也會有面對面的技術交流,他們對於技術的分享熱情可能比人很其他行業從業者都要高漲。

他們會用什麼特殊的工具去工作?

他們會用一種統稱為「代碼編輯器」的工具,但是這種工具種類太多,而且對於孰優孰劣經常引發他們的爭論。

一個程序員的成長過程是怎樣的?

一個程序員會成長為資深程序員,或者變成管理者,或者換一個行業。

衡量一個程序員能力的標準是什麼?

解決問題的能力。

這個領域有哪些分工?

分工很細,以建設一個網站為例,就可以分前端工程師、後端工程師、運維工程師。

經常聽說的前端工程師,全棧工程師是做什麼的?

前端工程師負責網站的網頁開發,就是用戶看到的那部分。

全棧工程師就是前後端都做的工程師。

他們互相如何配合?

前端工程師需要和後端工程師配合,因為一個負責前,一個負責後,需要橋接,不過配合不好東西也做不好,所以誕生了全棧工程師,前後都一個人做了,就不存在配合的問題了。

還有哪些角色,他們的分工是什麼?

還有很多角色,比如運維工程師,負責把程序員的代碼部署到真正的伺服器上,保證伺服器持續服務。

類似GitHub的網站是做什麼的?

github是一個存放開源代碼的網站。

這些類似的網站或論壇在流程中扮演了什麼角色?

類似github的網站成為了程序員的社交網路。

為什麼會有不同的編程語言?

因為沒有一種語言適合解決所有的問題。

程序員是怎樣編寫一個程序的?

用上面提到的「代碼編輯器」編寫。

會用特殊的工具甚至是特殊的系統嗎?

會。

比如Linux是怎麼一回事?

Linux是一種操作系統。

IT行業缺乏通俗易懂的科普嗎?

很缺。

為什麼?

因為IT行業的知識很複雜,而這行業只有幾十年積累,較其他行業還不夠成熟。

人們對IT行業有哪些經典的誤解?

最大的誤解,就是以為上面這些問題真的能夠一句話解釋清楚。

謝謝! @程墨Morgan


30年前,計算機是只能存在於機房的東西,進去就得換拖鞋,穿大褂。

20年前,計算機已經開始出現於部分家庭,但只有少數人會操作。

10年前,計算機已經隨處可見,大部分人知道怎麼用,怎麼上網。

現在,誰都能掏出個手機發微信,搜索,玩遊戲。

這就是IT業的科普。不用勞什子名詞,不用讓你發出雖然看不懂但是很NB的驚呼。就花短短的30年,讓計算機從少數幾個機房走到每個人的口袋。

你現在能隨時隨地從兜里掏出手機,上知乎裝逼,還不是因為IT的科普?


1. 為什麼IT的科普少

IT不是科學而是工程 CS才是科學

並且由於IT全是抽象 一般人沒有相對應的直觀感受 所以也沒興趣了解

而物理概念 速度 質量 光 都有直觀感受

2. 信息課已經做了科普了

不過講道理中學裡的信息課已經對IT有個總體的介紹 還有編程教學

3. IT中更基礎的部分有很多科普

門電路 內存條結構 CPU製作過程 這些都有很棒的科普文 貝葉斯 資訊理論的科普也相當常見

4. 我們來嘗試下給軟體工程做科普

假定已經知道了編程 程序 程序員的基本概念

前端工程師: 製作app中用戶能看到的部分

如遊戲的畫面 app的界面 網頁的界面

後端工程師: 製作遊戲、app的行為邏輯 管理數據 (賬號密碼 知乎提問 回答點贊 好友關係)

測試工程師: 測試應用是否正常

運維工程師: 保障後端正常運行

產品經理/遊戲策劃: 決定要做什麼遊戲/應用 做成什麼樣

這就是大概的分工 小公司不會分那麼細

一般 前端、後端、策劃/產品經理 為最常見配置

編程語言: 用來編譯成給計算機的指令的語言

一般會說編程語言就是計算機的語言 但這會帶來很多誤會

編程語言的例子:

C:

int main(){

printf("hello world");

}

Python:

print("hello world");

JavaScript:

console.log("hello world");

這樣看來是不是這三種語言幾乎沒啥區別

所以會有為什麼有這麼多不一樣又那麼像的語言的困惑

簡單來說 歷史不同 設計取捨不同 適用範圍不同

簡單來講從底層到高層來排:

彙編 C C++

JAVA C#

Python JS

簡單不準確的講你記住越底層 對性能要求越高 越偏向於應用層(用戶看得到的) 高層語言用的越多

因為高層語言提供更多方便 提高編碼速度的特性

Linux 是Linus Torvalds在1991年開始開發的操作系統 現在承擔著世界約3/4的伺服器

要注意Linux到今天的規模早已不是Linus一個人的項目了 而是全球最大的開源項目

詳見: https://www.youtube.com/watch?v=GGBlBIFAKmAt=262s

源代碼: 以某種編程語言寫成的文本

開源: 公開源代碼 任何人都可以編譯 使用 修改 傳播

Git: 在Linux開發過程中為了讓遍布全球的開發者能夠共同開發Linux而製作的源代碼版本控制軟體 用來跟蹤記錄每個修改

Github: 提供Git託管 和開發者交流 管理項目的平台

*課外內容

如何偽裝成程序員

提到MySQL要說"垃圾玩意 引擎不支持hash index 還好意思在語法上兼容 不報錯 假裝支持 比Postgresql差遠了 被Oracle收購後一步步走向閉源 藥丸"

提到Postgresql要說"垃圾玩意 代碼質量極低 時不時搞個bug讓你分分鐘丟數據"

提到MongoDB要說"垃圾玩意 面向benchmark編程的典範 營銷騙子"

見面先問對方主什麼語言

分別回應如下:

c: 做嵌入式還是?(用看原始人的驚訝表情)

cpp: 你對cpp17怎麼看 對方批判你就支持 社區還在尋求進步 有希望 對方支持你就批判 歷史包袱甩不掉還搞那麼多花里胡哨沒人用的東西

JAVA/c#: 露出同情的眼神 gc pause搞定了沒

JS: 露出鄙夷的神情 回調地獄解決了沒 最新的庫跟進了沒

Python: 露出不屑的神情 就能用來做些小玩意 做不了大工程

Lisp: 哈哈大笑 說他們一頁代碼半頁括弧

Haskell: 笑它是phd刷論文的工具

Rust: 笑學Rust的90%要死在和編譯器鬥爭的過程中

Golang: 嫉妒和不屑的說全靠有個好爸(Google)

然後如果你沒被打死的話

你就可以成功在半桶水心中樹立起高手的形象

以及在內行心中被貼上半桶水的標籤


因為就算有人寫科普文章,讀者也看不下去,太枯燥了。


之所以沒有科普,是因為這些東西很沒勁,說了想聽的人的規模也不能產生經濟效益。

IT這個行業是怎樣運行的?一個程序或網站是怎樣被製造出來的?會經歷哪些流程,需要哪些人員?

不斷的打字和重複運行,大概就像你每焊好幾個電阻就要用電錶測試一下有沒有把翔焊進去的感覺。

一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?

坐在椅子上打字,一邊打字一邊學習新知識,特殊的工具你聽都沒聽過光講個名字也沒什麼意思(逃

這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?

前端工程師就是僅做網頁的,全棧工程師就是什麼都做。說到配合,大部分公司的配合就是撕逼,互相推卸責任,沒有什麼配合的。

類似GitHub的網站是做什麼的?這些類似的網站或論壇在流程中扮演了什麼角色?

同性交友網站

IT行業缺乏通俗易懂的科普嗎?為什麼?

因為無聊


IT工程師=加班狂+程序員+測試工程師+實施工程師+網路工程師+電工+裝卸工+搬運工+超人

假如生活欺騙了你,找50個程序員問問為什麼編程;

假如生活讓你想死,找50個程序員問問BUG改完了沒有;

假如你覺得生活拮据,找50個程序員問問工資漲了沒有;

假如你覺得活著無聊,找50個程序員問問他們一天都幹了什麼!

//程序猿的逗逼日常

程序員幽默:66條讓你笑爆肚皮的程序員段子_IT幽默_酷勤網


其他人的答案都解釋的比較詳細了,

我就針對 「為什麼IT行業科普那麼難」這個問題,說一下我的粗淺理解。

為什麼科普那麼難?門檻那麼高?

!!! 是因為我們的母語不是英語 !!!

簡單舉幾個栗子,

外國的十多歲的小盆友,可以在沒有人指導的情況下自學各種技術,

而中國的小盆友一般都做不到,有些小盆友可以做到,因為他 懂英語 !!

比如讓小盆友自學linux,

首先學習創建文件目錄mkdir,這不是一個單詞,全稱是make directories,

外國小朋友看來一眼文檔就知道了,這個是用來創建文件目錄的,

然後就不會忘記了

然後下一課,學習rm,刪除一個文件,這就是remove的縮寫啊,

你讓不懂英語的小盆友死記 rm -rf * ,鬼記得住,

但是歪果小盆友眼裡就是rm --recursively --force * , 然後簡寫成 rm -r -f *

比如讓小盆友在linux上用vim(一個文件編輯器)寫一個文件,

告訴他,按「 i 」表示「insert」,你就可以輸入了,

複雜一點的,按「 c a w 」表示「change around word」, 你就可以修改一個單詞了,

我擦,你tm聽一遍還不會,回去學說話去。

一個更加直接一點的例子。

中國小盆友恰好知道了一個硬體設備叫 「集線器」

歪果小盆友也恰好知道了一個硬體設備叫「hub」

然後他們同時看到一個網站叫 「github.com」

歪果小盆友一看就知道這不是一個單詞,於是先查了一下git,

發現原來是個版本控制工具,然後猜測一下 「git - hub」 為 git 的「集線器」,

然後看了一眼github的logo,好TM形象啊~~,什麼意思已經可以才出來了,

然後經過一段時間,

又恰好看到一個網站叫「dockerhub.com」,「docker - hub」 不要猜了,

我看名字就知道這個網站幹嘛了。

然而中國小盆友還在糾結,為啥這個東東要叫「docker」 --- 碼頭工人

說了那麼多,結論已經挺明顯了,

你以為老師們為啥要苦口婆心得講,

學好英語很重要,學好英語很重要,學好英語很重要,

既然說到了github,那麼接下來可以自行感受一下,

外國小盆友在沒有任何人幫助的情況下

是如何學習是用 git的?

歪果小盆友:很簡單啊,你和電腦說 「救命!」,他就會告訴你怎麼用了

==== 更新 ====

==== 嘗試性科普(安利)一點好玩的乾貨 ====

1. 由於人們都比較懶,很多新生代技術都是專為懶人設計的,

(試試把下面的代碼直接當做英語來讀)

比如蘋果的AppleScript,門檻超級低的腳本語言,幾乎就是自然語言

tell application "Finder"
empty the trash
beep
end tell

告訴那個叫「Finder」的應用,

-- 清空垃圾箱,

-- 然後響一聲,

說完了。

我靠,還能再直白一點么?

不過applescript的自然語言編程始終只是個噱頭,

大的工程不肯能用,不過可以搞些小工具,

比如我經常開很多窗口,有想快速地讓控制台執行些東西,就可以寫個小腳本,

按一個按鍵,【告訴「iTerm」,讓「iTerm」告訴它當前窗口的當前頁簽,寫上命令「emacs ./」】

tell application "iTerm"
tell the current session of current window
write text "emacs ./"
end tell
end tell

推薦非計算機專業的朋友嘗試嘗試,反正學習成本低,

就當是蠢萌的Mac醬辭彙少,和她說話要先了解了解她會些啥,

。。。囧,歪果的非軟體專業小白領,看看文檔,就能寫一些簡單的應用了。

2. 古老的偷懶藝術

新的東西一般都簡單易用,不過功能上肯定就是有閹割了,

然而老的東西就厲害了。比如vim和emacs,

絕對不是30年前的東西,而是更新了30年的東西。

無數的「懶惰」的程序員都共享過力量,絕對的懶人福音,

我們的口號是,更快,更懶,更直觀,(懶到滑鼠都不想動)

下面用vim給個引子:

剛接觸vim的童鞋,可能會覺得很詭異,尤其是hjkl的移動方式,

但其實精髓之處不那裡,大可以把h按鍵和i按鍵換一下,上下左右就正常了,

vim的精髓之處,在於很多常用命令都是有語法,可以組合的,

舉幾個栗子

請記住下面這幾個單詞

動詞 d = delete,介詞 i = in, 名詞 p = paragraph

於是乎,我們把游標移動到一個段落的任何位置,

按3個按鍵「 d i p」 --- "delete in paragraph",這個段落就被刪除了。

有童鞋舉手問,有其他動詞嗎?

好的,接下來我們學習 動詞 c = change ,和動詞 y = yank

舉一反三,

「 c i p」 ---- "change in paragraph",

替換段落。就是刪掉這個段落,進入輸入模式,

「 y i p」 ----- "yank in paragraph",

複製這個段落到剪切板,別管這個yank怎麼翻譯,反正emacs 和 vim都用這個詞。

囧,辭彙量不夠,沒有返三,

趕緊看一眼課本,發現有個 名詞 w = word

於是乎,試一試 「d i w」 ---- 「delete in word」, 握草,這個單詞被刪了

「y i w」 ---- "yank in word" , "c i w" ----- "change in word",握草,和想的一樣啊。

有個比較懶的童鞋舉手,為什麼我輸入「d w」 --- "delete word" 和 "d i w"效果一樣啊。

好的,現在開始學習一個新的介詞 「a」 -- 「around」

「d a w」,--- 「delete around word」 不光刪了單詞,還刪除了單詞前後的空格。

童鞋們可以猜測 「d a p」, --- 「delete around paragraph」是什麼效果,

並不想動腦,試了一下,around就是包括了段落的前後空行。

小結,命令都用動詞開頭,比如當獨輸入 「p」 就是 「paste」,把剪切板第一個張貼出來,

也可以用數字開頭,表示重複次數

"2 p" --- 兩次 「paste」

"2 d a w" --- 兩次 「delete around word」

接下來寫幾個命令猜猜看:

「 d i ( 」 ------ "delete in ( "

" y a { " ------ "yank around { "

" v a w" ------ "view around word"

" y s a p ( " ------ " yank surround around paragraph ( " , 用括弧吧段落括起來

上面這些單詞可以組合的語法很多,很直觀,很符合直覺

當然還有其他的語法,簡單介紹一下

「V j」 --- 「VIEW down」 大寫V選中一行,向下移動,所以最終選中了兩行

「V 9 j」 ---- 選中一行後,向下移動九次,於是選中了10行。

選中之後,直接按 「y」 -- 「yank」, 則複製了選中內容。

去找個高手用vim寫代碼的視頻,簡直是和彈鋼琴一樣。

所以還是那句話:

學好英語很重要,學好英語很重要,學好英語很重要,

===== 有一個很囧的事 ======

有個童鞋問我,vim的寫代碼有幾個坑,一是中文的詞不是按空格分,要裝插件才能分詞,二是vim輸入狀態和中文輸入法切換起來很麻煩。

額,我只想說,你以為我是為啥要用英文寫代碼注釋的。╮(╯_╰)╭ 每個用vim寫代碼導致被迫用英文寫注釋的天朝子民上輩子都是折翼的天使。

或者妥協一下用evil的混合模式,輸中文的時候用emacs快捷鍵可以完美兼容輸入法。

===== 免責聲明 (︶﹏︶) ======

評論去有位同學的指出的問題非常好。此處我也有必要強調一下,

以上內容,僅涉及一些非常入門級的內容,

僅用於證明「英語國家的小朋友入門容易」。

各位沒入門的朋友,不要看了後留下英語好編程就好的錯覺,後面要踩的坑還有很多,英語好少走彎路而已。

各位入門了但英語不好的同學,也不要覺得我危言聳聽,你看,你們連最難的骨頭都先啃了,回頭順便啃啃英語,也沒有壞處啊。


收到這個邀請的時候,想著總算有機會來扭倒大家對於「IT=電腦=修電腦」或者「IT=苦逼程序員」的認識誤導了。

IT中文名叫信息技術,有三個層次:

第一層是硬體,比如內存、硬碟、CPU、傳輸的主機和網路通信設備;

第二層是指軟體,軟體可分為系統軟體和應用軟體,系統軟體是管理各種獨立的硬體,比如Windows系統。應用軟體是用於解決一類問題的,比如word主要是編輯存儲文字的;PS是用於處理圖像的;

第三層是指應用,指搜集、存儲、檢索、分析、應用、評估使用各種信息。作中的ERP(企業資源計劃)、CRM(客戶關係管理)、SCM(供應鏈管理)等商用管理軟體,是企業運營過程中用於管束和輔助工作流程的,也適用於收集整理數據的。這期間會用到DW/DM等技術手段來進一步提高分析的質量,輔助決策者作決策。

這裡每一層都可以是一個細分產業,比如第一層硬體的生產研發(Intel、華為)、組裝銷售(聯想);第二層的軟體生產銷售(Adobe、微軟、智能機問世後各大APP);第三層比如SAP、IBM、Oracle甲骨文、金蝶、用友、浪潮。

IT這個行業是怎樣運行的?

說說我所在的軟體行業,屬於二、三類。整體的運營除去人力財務後勤這些,就是產品經理程序員測試+市場營銷公關+銷售、售前、顧問+項目+技術支持。

通俗理解就是生產產品——推廣宣傳產品——銷售產品——溝通指導如何使用產品——安裝實施產品——售後技術服務——產品更新維護。

和大多數行業一樣,IT行業也是普遍生產和銷售佔據最大的人力,於是乎需要大量的程序員/高新產業的腦力工作者(是不是程序員懂網路愛吐槽,博得廣泛網友的關注,才有了上述的誤導?)程序員的工作也是普遍辛苦的。

一個程序或網站是怎樣被製造出來的?

程序員寫代碼單元測試開發出來的,但是要先搭好框架。

程序就是你用高級語言(比如C)寫代碼,然後又編譯器幫你翻譯成機器聽得懂的彙編語言,然後彙編語言轉成010101010這樣的二進位機器碼,調用計算機硬體。


IT經常自比為工程師,一切你可以想像成跟建房子的工程師類比,不同之處在於軟體工程師既設計房子也搬磚。

IT這個行業是怎樣運行的?一個程序或網站是怎樣被製造出來的?會經歷哪些流程,需要哪些人員?

參考建房子。

一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?

主要工作是搬磚砌牆,少部分工作是設計。泡論壇。沒什麼特殊工具,就計算機以及一些開發軟體的軟體。

一個程序員的成長過程是怎樣的?衡量一個程序員能力的標準是什麼?

參考工程師。這個問題可大了。

這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?還有哪些角色,他們的分工是什麼?

你可以直接去看IT類招聘網站的分類列表。這些問題太具體。

類似GitHub的網站是做什麼的?這些類似的網站或論壇在流程中扮演了什麼角色?

github是一個「大家一起建房子」的網站,每個人都可以參與到具體的房子的建設中來,也可以把別人的房子直接拿來自己用。作用可大了,可以說開源文化是計算機世界的靈魂。

為什麼會有不同的編程語言?程序員是怎樣編寫一個程序的?會用特殊的工具甚至是特殊的系統嗎?比如Linux是怎麼一回事?

語言就是磚塊,不同磚塊適用不同房子。工人是如何砌牆的?不會。

IT行業缺乏通俗易懂的科普嗎?為什麼?

缺乏。因為這是工程學科,沒啥好科普的。

人們對IT行業有哪些經典的誤解?

程序員錢多。


可能是因為大家都忙著賺錢吧(逃)


信息技術行業嘛,可以簡單的總結下歷史的東西,知道怎麼來的,就能知道很多了。。。

首先是電氣化革命,電子管時代,簡單來說,現代的三極體,二極體和真空電子的三極體二極體功能上基本是相同的,比如三極體簡單來說就像個繼電器,不過速度快,可以線性使用。

然後這些東西就可以組成邏輯門,比如非門就是一組電路,輸入電平和輸出電平高低相反,還有與,或,異或,同或等邏輯,再加上更加複雜的觸發器,比如輸入一個脈衝就改變並保持輸出狀態的幾種簡單的觸發器,就可以存儲數據了,然後加上運算和控制電路(同樣由門構成),就可以計算了,比如這時。

所以計算機最開始(ENIAC)算是有計算器存儲器控制器外存和輸入輸出設備(全電子管和繼電器邏輯門,再加上開關控制,燈泡輸出),基本全了,輸入要算有的話,當年好像是直接在外存上按開關和接線解決(外存就是個接線板,編程就是改外存的接線方式,相當於現在往單片機裡面寫彙編程序能達到的功能,想像一下這個過程:控制器就是一直往後讀外存里的位(0和1),這些位分指令和數據,指令就是改變控制器的行為,數據就送到存儲器里,然後控制器行為改變,讓存儲器里的幾個數據接通計算器,就得到了輸出,然後把接通到下一個存儲器···最後接通燈泡顯示結果),算手刻系統吧。。。那個時代的電子計算機放到現在就是國家級的燒錢項目,類比現在的航天就知道了。那個時代不叫信息技術,叫計算機。

可以通過自製4位加法器帶繼電器存儲來實踐以上內容,懶得做的把教程認真看完基本就懂了。

直到集成電路這個殺手級應用的出現,信息技術這個行業就開始了。

集成電路使得計算機成本下降到大型商業公司能接受的水平,當年的產品如IBM的S360,PDP等。

一直以來大家都是手工管理數據,比如一位客戶的訂單就是手抄的,增刪查改非常麻煩,公司就要雇上一大堆人處理數據,然後,突然就可以用一套系統加幾個專家來存儲和處理數據了,想像一下,面對幾個房間的紙求今年利潤容易還是直接把這活交給機房裡的幾個專家,他們塞幾張程序卡片進去,財務報表就從印表機裡面出來了。

這個時候的計算機已經有操作系統了,而且比起原始的計算機有了長足的發展,輸入輸出有了印表機和程序卡片,外存用了磁帶達到Mb級別,內存得益於集成電路能達到Kb級,那個時候只有批處理操作系統,你現在用的類UNIX,windows都是互動式操作系統,簡單來說操作系統也是一個程序,這個程序負責把其他的程序先後放到硬體上運行,批處理就是操作系統最原始的一種形式,要求程序和數據 整體輸入,然後處理完成後整體輸出,程序處理的過程對用戶是不可見的。

此時執行一個計算需要2種東西,程序和JCL(作業控制語言),簡單的編程就是先用高級語言寫程序,然後,用JCL寫編譯和運行的控制,然後把他們寫在一起,最後手工在卡片上打孔,送進計算機,等著結果從印表機里出來。

這個時候已經有了高級編程語言,使得寫程序更接近於人的思維而不是機器的執行過程,比如COBOL,B,C語言就是這個年代的產物,UNIX就是一個操作系統,用C語言寫的,但是那是貝爾實驗室的商用操作系統,並不能便宜用,但是確實是個好系統,然後linus這個人就把它山寨了,就變成了linux,然後把源代碼開放了,很多人也來參加這個軟體的開發,然後發生了很多故事。

操作系統是幹什麼的:詳見任何一本《計算機操作系統》

UNIX系統的特點:互動式分時多用戶。

這個系統比那個原始的批處理系統更強大,這個時候已經有了容量能看的磁碟存儲器(硬碟),字元顯示器和鍵盤,通過「啞終端」,一個公司裡面的許多人就能用一台UNIX系統的工作站進行工作了,那個時候的計算機操作被簡化成一堆簡短的命令,直接用鍵盤按進去,抬頭或者不低頭就能看到及時的顯示,如vi,more,cat,ls,大部分在計算機上工作的時間其實是瀏覽和編輯文本。

用一台純命令行方式的計算機也不是普羅大眾能做到的,後來美國軍方想把國內的計算機連在一起,就算是爆發核大戰也能訪問其他的計算機,這就是計算機網路的雛形ARPAnet,以前大家都是「玩單機」。

計算機的網路基於分組交換,就像快遞一樣,數據被分割並統一打包成一致格式的包,貼上目的地和來源(IP地址)(便於對方回發),然後通過網路中相連的另一台或多台計算機,送到這個數據包的終點,就像快遞網路一樣,當然這裡涉及什麼路由,bgp選路,tcp/udp,ip等等一堆東西。

瀏覽網頁本質上就是從另一台計算機獲取了網頁這個文件(通過URL,就是一種遠程文件的地址表示方式,本地地址就是(/……)遠程地址就是(協議://主機名或者ip/……)),然後在本地顯示出來,原始的網頁就是加上了html標籤的格式化的文檔,是靜態的,後來出現了把帶有功能的程序在本地執行的瀏覽器,網頁才動態了起來。

以上內容可以純命令行使用linux系統實踐。

圖形界面使普通人也能使用計算機,滑鼠使更普通的人能使用計算機,便宜的個人計算機開始普及,操作系統廠商和硬體廠商分離,計算機接入網服務開始。。。

然後就到了現在,普通人一看,哇,計算機真神奇,其實這和會跑的鐵殼(機動車),人造石頭(混凝土),插進去就有能量的面板(電網),上天的鐵鳥一樣,是技術和工程積累的結果,不過嘛,軟體的封裝(隱藏自己的具體實現,向外提供服務)使得本來就看不見的電與磁更加撲朔迷離,這個「計算機的歷史」知識體系被整理的太少,不夠系統,以後可能會有「計算機考古」這門專業吧。

------

以上內容純手打,憑記憶,要詳細解釋那可以寫本教科書了,要保證準確需要查找的資料也太多,有人贊再完善這個答案吧。

注意:現階段這個答案純憑記憶,不能保證準確。


(嗨呀,你們看,一個程序員在知乎抖機靈,竟然還有其他程序員來點贊,你說程序員得多無聊多可悲?!)

程序員就是那些整天坐在小黑屋裡,上身格子襯衫,下身大褲衩,人字拖,不洗頭的那群人

It行業就是工作包括但不限於裝系統,盜qq,配電腦,修手機的一種職業

網站或者程序的產生就是靠一個人只用鍵盤絕不用滑鼠的一直啪啪啪的打出來的,一般屏幕上是一個黑黑的背景,而且絕對不能看鍵盤,對,就是電視上那些電腦高手那樣的。打完之後要大力的敲一下回車,以顯示自己跟厲害

一個程序員的成長大概就是從幼兒園就精通電腦,小學就能黑進各種政府網站,盜號猶如探囊取物,沒事就寫個木馬黑別人,最主要的還得是要成績不好,說自己對什麼數學英語沒興趣,就喜歡學計算機

衡量一個程序員的標準是他頸椎的損傷程度


我算IT行業嗎?

算吧,雖然我只是個人站長罷了。

對於題主的問題,我看了看,能夠準確回答這一個:一個程序或網站是怎樣被製造出來的?

當然,網上有很多關於「一個網站是如何製作出來」的流程說明,但是答案千篇一律。無所謂註冊域名、購買空間/伺服器、設計界面、開發程序、上線...太簡單。

我拿我最新做得一個網站舉例。

任何網站,建設之初都少不了調查研究一番。小到企業網站,大到知乎、網易。

你這個建設這個網站,其目的是什麼

是為了賣產品,如普通機械站點;還是為了聚流量,如小說電影網站;或者是為了解決網友們的其他問題,如知乎或者百度。

但是,無論如何,你都要深刻理解你網站潛在訪客的需求,並給出解決辦法,並體現在網站的設計上。

以下實例。

網站是年前就定下的。

網站是做淘寶優惠券的,網址不寫了,免得又被舉報打廣告。

首先選擇關鍵詞

第一 確定主關鍵詞:淘寶優惠券

第二 發掘長尾關鍵詞:淘寶內部優惠券、淘寶優惠券怎麼用、淘寶優惠券怎麼領取...

第三 發掘相關關鍵詞:天貓優惠券、天貓購物優惠券...

如上,可見主關鍵詞最能全面的代表擁有同一屬性的人群;而長尾關鍵詞,則把這一人群再一次細分;至於第三種所謂的相關關鍵詞,或者稱為「別名」等其他稱謂,是指的與主關鍵詞擁有同一屬性,文字卻不同的詞或片語。

但你要知道,無論關鍵詞怎麼劃分,都要保證其屬性一致。換句話說,所有關鍵詞潛在內涵是一致的。

關鍵詞的發掘,可以通過5118、愛站、金花站長工具、百度下拉框和百度相關搜索等獲得。

關鍵詞的抉擇,則需要日積月累的經驗,當然一般能夠理解「關鍵詞」的朋友,大多也不會差的太多。

網站模板設計

網站模板是展現於瀏覽器的前台頁面,是能夠被普通網友直接瀏覽的頁面。而網站程序,一般指的是網站中具有內容編輯、欄目設定等功能的後台,一般只有網站管理員能夠接觸到。

一頁網站模板的設計,需要根據網站訪客的需求來確定。

比如我做的這個淘寶優惠券的網站,網站訪客的關注點在哪裡?

1、商品名稱 2、商品圖片

3、商品原價 4、優惠額度

5、店鋪級別 6、領券URL

......

等等,當然還有店鋪名稱、賣家旺旺、商品銷量之類的東西。但是,我們需要知道,一個「淘寶優惠券」的網站,用戶最關注的是什麼?

是淘寶商品的優惠額度。

所以,我在這個網站的前台頁面的設計上,什麼店鋪名稱、商品銷量等都刻意刪除,商品圖片盡量縮小。著重展現了商品原價、優惠額度、領券URL等。

突出用戶關注點,便是網站前台模板設計的重中之重。

網站程序選擇

國內個人站長圈,若說自己開發網站程序,九牛一毛。大部分使用的是諸如織夢、帝國、ZBLOG等開源程序。

我選擇的是織夢程序DEDEcms 5.6 utf-8最新版本。

原因如下:

1、個人熟悉 2、操作簡單 3、使用率高,有問題容易解決 4、二次開發簡單

當然,正因為織夢使用廣泛,所以針對性的黑客比較多,很容易被黑掛馬。

當然,解決之道在於伺服器安全設置,和網站程序的處理上。

網站欄目設計

1、淘寶優惠券發布頻道,包含商品名稱、圖片、價格、折扣、領券URL等欄位

2、新聞資訊頻道,提供網購相關資訊內容

3、幫助頻道,提供淘寶優惠券所有相關問題的解答

4、其他欄目

在以上工作的進行過程中,可以進行如下工作。

域名註冊

註冊什麼域名?

.com?.cn?.net?.org...

一般來說,域名註冊首選 .com,幾十年來,國內網友對於.com熟知度比其他域名要高的多。然後域名與自己的網站內容、品牌越相符合越好,網友越容易記憶越好。

因為是做的淘寶優惠券,我的域名是一枚五字母的 .com域名,是品牌+優惠券首字母的結構。

空間選擇

一個網站,如果前期訪問量不大,可以選擇虛擬主機。所謂虛擬主機,簡單的說,就是把一塊電腦硬碟放置於機房中,在這塊硬碟上給你劃分一塊固定的容量,作為你網站程序的存儲之用。

要知道,這一塊硬碟,賣家可以分成上百份哦。

相對的,虛擬主機比較便宜,一年一兩百塊錢,甚至幾十塊的也有——一半企業網站大多是這種。

但是考慮到網站訪客的屬性,我選擇的是一款香港VPS。

所謂VPS,是指的把那塊硬碟分成十來份,比虛擬主機少的多。相對來說,VPS要比虛擬主機空間大,性能好。價格一般是一百元一個月。

至於為什麼選擇香港的VPS?是因為我的網站沒有備案。

當初起這個站的時候剛過春節,俗事紛雜,便只能選擇香港的空間。因為香港的空間不用備案,而你若把網站放置於國內,根據工信部的要求,必須備案。

而香港,是非備案里國內訪問速度最快的空間之一了。

網站上線

OK,前期工作準備的差不多了,網站就可以上線了。

網站在本地經過測試,沒有了問題,可以上傳到網站空間/VPS之中。先使用二級域名瀏覽一番,沒有問題即可解析綁定主域名。

具體先使用flashfXP等工具鏈接到網站空間,上傳網站程序,並在網站空間管理地址綁定域名,然後登陸域名管理地址解析域名指向網站空間IP。

至此,網站即可正常瀏覽。

然後,設置網站404、301,攥寫robots文檔,提交搜索引擎...

從第二天開始,持續性填充網站內容和引流等工作,將成為網站運營的範疇。

以上。


說白了,數學物理這些基礎行業不直接產生經濟效益,研究者們資金大部分來源於各類基金,本質上是納稅人交錢。因此,公眾對這些方面了解足夠多,才能感受到其必要性,才願意把錢交給研究者們"糟蹋"。研究者因此有動力進行科普活動。

it行業是直接產生經濟效益的行業,知道內情的從業者都在悶聲發大財,沒人有空給公眾做科普。這與其他許許多多的行業一樣,你也沒見過有哪些搞機械加工的、搞紡織的人去給人科普這行業是幹什麼的吧?從這個意義上說,it和其他行業並沒有不同。

如果你對此有興趣,通過各種途徑了解就是。

另,it是非常龐大的產業,裡面也細分為不同的領域,涉及的東西實在太多,你不如說說你想具體了解哪個方面?

啊,更新一點內容。

人們總覺得,自己日常使用這麼頻繁的電腦手機,看起來也不複雜。人們經常忽略一點,電腦這玩意是上世紀美國幾個頂尖大學的頂尖實驗室的人搞出來的東西,其底層的複雜程度遠超大部分人的想像。之所以現在人們用起來這麼方便,是因為這幾十年來,大量學生和工程師做了大量的封裝和優化而已。指望幾句話講清這一切是很難的。


這就是為什麼這些人只會做 不會教

沒有理解提問者要問什麼

也說明都是模仿速成,沒有紮實的基礎

樓主要問的,是代碼到底怎麼變成所謂的結果,每天寫這些是幹什麼

以一個最簡單嗯代碼,比如你打開一個程序,需要顯示一行字,怎麼做?

繼續更新


我只回答一個問題:IT行業缺乏通俗易懂的科普嗎?為什麼

答案是:IT行業不缺「通俗易懂」的科普,但行內外對「通俗易懂」的定義,很可能有極大的差距。

這個差距大到什麼程度?大到普通的、沒受過中等以上教育的人,和專業工程師之間的知識差距那麼大的程度。

但這真的只是IT行業(特指軟硬體開發這個領域)的起點。後面的一切東西,如果你想真正理解,這個起點是必不可少的。

————————————說的好像很神秘?裝,你就接著裝————————————

先思考一個問題:汽車發動機的工作原理是什麼?一句話說得清嗎?

不加思索的話,這個問題太好回答了,一句話說的清清楚楚:汽車發動機是把燃燒汽油得到的熱能轉換為動能的機械裝置。

別急。

燒水的熱得快也能產生熱能,它怎麼不能拿來開車?

為什麼不能點蠟/燒柴禾驅動汽車?

不是有蒸汽機嗎?怎麼不用蒸汽機造汽車?

唉呀你們別討論這些老古董了行不,我聽說現在的發動機有缸內直噴能電腦控制點火時機,這怎麼回事?

現在,假如你需要給一位還停留在「為什麼不能點蠟/燒柴禾驅動汽車?」的小朋友解釋「缸內直噴」技術——你還覺得「汽車發動機是把燃燒汽油得到的熱能轉換為動能的機械裝置」這句話,算是說清了問題嗎?

它連「為什麼不能點蠟/燒柴禾驅動汽車?」這個最最初級的問題都回答不了!

你看,「汽車發動機的工作原理是什麼」這個問題,不好回答吧?

————————————就是很簡單嘛,裝不下去了吧————————————

那好,我現在來回答一個問題,一個你想理解碼農的工作,就必須首先理解的問題:碼農是幹什麼的?

很簡單,一句話:碼農就是把類似汽車發動機工作原理的一切一切,巨細無靡的"說"給電腦聽的一幫子人。

嗯,財會軟體是什麼?就是把會計師每天的工作,從必需的小學知識(加減乘除)到大學知識(各種記賬法、審核法等等),每一個操作都有條不紊的「說」給電腦「聽」——然後通過測試軟體證明電腦確實學成了一名合格會計師,可以代替人來工作了。

——經常看到一些人憤憤不平:怎麼談起任何問題,都有碼農喜歡來插一腿?你們碼農怎麼就這麼狂妄,覺得天下沒有你們不懂的領域不是?

很遺憾惹您厭了。然而,學會任何行業解決問題的手段、並把它「教"給電腦,這正是碼農們每天的工作啊。

既然現在這個時代,任何行業都在嘗試「自動化」;那麼理所當然的,任何行業都必須把自己的工作流程甚至工作原理教給碼農、然後他才可能正確的把這些知識「教」給電腦啊。

如此一來,很多東西就容易理解了:

什麼是程序?

程序是碼農寫給電腦看的一篇說明文,電腦看了它,就會知道怎麼代替人做這方面的工作了。

什麼是程序bug?什麼是debug?什麼是版本管理系統?什麼是github?什麼是測試?

程序bug就是碼農自己學藝不精,把說明文裡面的某個步驟搞錯了;電腦照這個錯誤的說明文來做,自然就會出現錯誤的結果。

debug就是發現電腦做錯事時,根據錯誤表現,從洋洋洒洒幾千、幾萬甚至幾十上百萬行的、寫給電腦的說明文裡面,找出寫錯的那行的過程。

版本管理系統嘛,是因為寫給電腦的說明文實在太長太複雜了——前面說過,汽車發動機每個部分的原理,巨細無靡——而且任何一個字甚至一個標點的錯誤都會導致故障。

不僅如此,如果碼農自己對發動機某個部分的原理都理解錯了、或者比較含糊呢?

那麼,他可能只好來回試:如果理解A正確,那麼文章應該這樣寫;然後B受A的影響就應該是這樣……

很明顯,大段大段的文章需要修改。

可是,如果其實理解B才正確呢?怎麼回到按理解A胡搞的那個時間點之前?

如你所見,碼農這個說明文實在太長太複雜了,而且往往伴隨著碼農自身的學習/進步過程——所以,我們必須有個系統,幫我們記住「這些東西是我如此理解原理A時寫的」:如果將來學到系統D,發現原理A其實得如此如此理解才更精確,那麼就可以循著這個標記,返回來把它改對。

不僅如此。

碼農們的說明文實在太過複雜,一個人經常是忙不過來的。所以就需要分工,你寫氣缸,我寫活塞,他寫飛輪……寫完湊起來,就是個完整的發動機。

這樣的話……這一塊塊之間的銜接……能不出問題嗎?會不會昨天還能用的,今天碼農A興沖沖添加了個新特性,但理解卻是錯的……然後整個系統就趴窩了?

甚至於……唉呀我花了20天才碼完的代碼啊,腦子一抽居然給覆蓋了!不活了,沒法活了!

版本管理系統就可以幫助碼農把自己的文章管理起來:這是碼農A前天寫的,測試沒問題;這是碼農B昨天寫的,加了個xx特性……

如此一來,就管的井井有條,不容易出現「昨天還好好的今天就沒法用了還毫無頭緒怎麼都不知道哪裡錯了後天就要交貨了怎麼辦啊讓我死了算了」的悲劇了。

github是一個網站,它提供了一個免費的版本管理服務。碼農們可以把自己的「說明文」委託給它管理起來——代價嘛,你這說明文也自然而然被公開給別人參考了(當然,你可以聲明自己支持gpl還是apache或是其它開源協議,想「參考」你代碼的人就必須受這個協議約束)。

在碼農們的世界裡,把自己的勞動成果(自以為寫的很漂亮的說明文)貢獻出來供大家參(chao)考(xi),被公認為是一種美德……

自然而然的,測試就是檢查電腦的工作,看它有沒有做錯事——尤其是,我們知道,實際情況千變萬化:燒一壺水都可能出現停電這種異常情況呢;那麼設計個燒開水的智能杯子,400ml的20度涼水定時10分鐘燒開。可如果燒7分鐘時停電半小時,那麼再來電時,47度400ml的水定時幾分鐘合適呢?

你都回答不了這個問題,電腦怎麼才能做對呢?

所以,測試人員要絞盡腦汁給電腦製造難題,確保碼農的確事先把所有稀奇古怪的狀況都考慮到了、回答好了——如果碼農有一點考慮不到,將來電腦肯定會把事情搞砸的……

———————————————事情正在起變化———————————————

等等,你敏銳的發現這裡有點東西和自己猜想的不同:你們的工作不是「教會」電腦做事嗎?可燒開水這麼簡單的事,電腦顯然沒「學會」啊。水響了或者到100度就是開了,為什麼要「定幾分鐘合適」呢?

絕大多數碼農會這樣回答你:溫度探測不夠准,水的沸點受氣壓影響,沒有聲音探測器,聲音探測器容易受干擾……與其面對燒乾水燒壞設備的風險,不如用定時這樣的低成本的可靠方案……

可是,這些回答,你當然不會滿意:真會燒開水的電腦,居然不知道什麼是「水開了」?我發覺,你們說的「會」,和我理解的「會」,似乎有著巨大的差別……

思索良久,你顯然抓住了關鍵:能說說,你們具體是怎麼「教」電腦做事的嗎?電腦是如何「理解」人類語言的?

壞了……

如果說不清楚這個問題……我前面這一大坨或者就又成了「用術語解釋術語」,或者嘛……又成了玩梗的……

最最起碼,也是一些浮於表面的廢話以似乎淺顯易懂實則看完還是丈二和尚摸不著頭腦的……一堆廢話。

好吧,解釋起來也不難……唉呀是這樣,電腦這玩意兒壓根不懂人類語言……不不不,連編程語言它都不懂,它只知道高低電平……不不不,前面說的不是在忽悠你,只是……

好吧其實是這樣,其他行業的人把他們的工作用人類語言告訴我們,我們再把它翻譯成高級語言(比如c、java等等)寫的程序,然後我們再用一個專門的程序把高級語言程序翻譯成CPU指令碼……CPU本身是非常非常笨的,它只會很簡單的一些操作;哪怕通過高級語言/庫把經常用到的一些功能直接「封裝」出來,它仍然笨的不可思議……所以程序員就不得不遷就這麼笨的CPU,把和人說話時壓根用不著提的東西都說的清清楚楚——而且是按CPU執行程序的思路說的清清楚楚……

什麼?你問CPU怎麼執行程序的?那得先從操作系統說起……唉呀想說操作系統,得先從CPU原理說起……而CPU的原理呢,和汽車發動機差不多,它是這樣這樣的一套機器結構,通過如此這般的一坨邏輯……

唉呀其實你不用懂這麼多。這樣想吧,我們做數學題的時候,是這樣讀題的,然後……用演草本記錄中間狀態……腦子按一定的解題步驟處理問題……更新中間狀態……最後就得到了答案。

然後,圖靈就搞了個裝置模擬這個過程,這就是圖靈機……當圖靈機的「大腦」能支持這些這些操作時,它就可支持所有計算任務……啊?喂?你怎麼睡著了?

也是。這一套一套的要說清楚,不僅比汽車發動機工作原理複雜了許多倍,抽象程度也高了許多倍——廢話,一個是實物,一個是看不見摸不著的抽象概念,能一樣嗎?而且,和汽車發動機原理有夾生飯並不耽誤你理解「直噴」可不一樣,僅僅字面上理解圖靈計算原理是完全不夠用的,你需要……舉一反三級別的理解

也就是說,你不能簡單的「理解」圖靈機的原理就算了,而應該是看完圖靈機原理,你一拍腦袋恍然大悟:「啊,原來掃雷遊戲是這麼一回事啊」。ok,你這才算真理解了。

只要你沒拍這一下腦袋,那麼碼農的東西,就沒人能給你徹底說明白——努力說到你閉嘴就夠了。

反之……一旦你拍過了腦袋……你就會想:這人怎麼這麼啰嗦,這麼簡單點事這麼長篇大論的……我告訴你啊,你這都是廢話。懂了的自然懂,用不著你說;不懂的,你再來二十萬字,他也一樣不懂

很多人看著實物都還搞不明白汽車發動機原理呢,何況抽象的計算原理……

這麼說吧,如果你能搞懂計算原理、然後還能舉一反三,其實你已經可以做程序員了——如你所見,計算原理只是一道門檻而已;過了這個門檻,再掌握一門編程語言(沒錯,過計算原理門檻才可能掌握一門編程語言,否則背熟100門編程語言的所有咒語/考題,都算不得掌握),要麼就去學其他行業知識了(應用軟體方面),要麼……就去探索更為抽象更為神秘的世界去了(軟硬體其他基礎領域的研究)。

這點和開汽車不一樣。開車你用不著「開發動機」;而程序員呢,那可是每時每刻都在就著計算原理無限發揮……汽車發動機一旦設計定型就多年不變,而程序員每天的工作,就是自個發明一個新的「發動機」,讓它「牽引」用戶數據,完成過去需要專業人員才能完成的工作。

這就是IT行業最大的特殊之處:要麼搞懂計算原理成為行內人;要麼……繼續聽天書吧

沒有中間狀態。

換言之,一切表面上的「通俗易懂」,到真正意義上的「懂」,中間必然隔著「計算原理」這樣一隻大老虎。

計算機科學方面的一切,歸根結底,都是由「可計算」「不可計算」「計算複雜度」主導的。

不懂計算原理,幾乎一切的一切,都是用術語(計算原理)去解釋術語。

「計算原理「其實並不難。很多小學生都能學會寫程序;「計算原理」也難的不可思議,接近一半的大學生都沒有半點學會編程的可能。

這個分界線,就畫在你能不能理解汽車發動機工作原理上(最基本的原理,只需理解單缸四衝程的玩具發動機即可;但至少要理解到能自己把這個玩具發動機設計出來並自行改良的地步)——能,那麼再經過一步抽象,就過了「計算原理」這關;不能……這科普沒人能做給你。

—————————————GNU is Not Unix—————————————

為什麼沒人做IT行業的科普?

因為,要麼那不是IT行業本身的科普,而是其它行業的科普——於是鬧得怨聲載道:你們碼農啊,在你自己的領域發言就行了,敢不敢少摻乎點你們不懂的話題(碼農:……

要麼……太過基礎於是必須和計算原理拉到一起——你們這幫笨蛋,除了玩別人都不懂的梗除了用術語解釋術語還會什麼?怪不得都說碼農語死早(碼農:…………

要麼……其它碼農有意見了:三句話就能說完的問題,你扯來扯去這麼多,最後還不是三句話(旁觀者:前一個傢伙啰里啰唆打了半天比方,說的全是三歲小孩都知道的知識;後一群嫌他話多的傢伙是不給小學生講課了,但卻只會重複三句「術語解釋術語」的無聊冷笑話。一群無聊的geek吵了一年,最簡單的一個問題都沒說明白,怪不得說程序員都是些三棍子打不出個響屁的獃子……(碼農們:啊?我們真說明白了啊。就那三句話啊,真沒必要再多了……

為什麼會這樣呢?

因為碼農的話都含有「魔力」,它必須先「喂」給計算原理,然後經計算原理「吐」出來的,才是真正要表達的意思。

換句話說,它是「動」的,不是「靜」的。不先用計算原理把它「活化」起來,那就不可理解。

而計算原理又太過小兒科——說白了,它不過是「電腦的思維方式」而已——理解了,你不過是用更啰嗦的話把早已說透的問題重述一遍罷了;沒理解,你仍然不過是用更啰嗦的話把說的雲里霧裡看起來很簡單但非要裝的很難的問題重述一遍罷了。

但這個東西又是如此基本。不理解它,你絕無法搞明白,碼農們為什麼非要曲線救國,非要把個普通的「水開了」的概念搞的玄玄乎乎的。

舉例來說,碼農說,冒泡排序很簡單,依次比較兩個相鄰數字的大小,如果前大於後,就交換兩者,否則繼續;如此反覆若干次,沒有發生交換就說明數據已經有序了。

這段話,不存在「術語解釋術語」問題吧?你看得懂嗎?

除非受過專業訓練(或自己寫過程序),這段話你絕對沒有正確理解。

怎麼理解這段話呢?

1、找一副撲克牌,隨機抽出若干張,隨便的把它們排成一排

2、假設a<2<3……<J<Q<K;數字相同則黑桃>紅心>梅花>方片

3、從這一排的開頭開始,1~2 2~3 3~4的兩兩比較點數大小,前一張大於後一張就交換,否則保持原位

4、這樣反覆操作幾次,撲克是不是剛好按大小排列起來了?

切,碼農的老毛病又犯了。這麼簡單的事,用得著說這麼細?還大言不慚別人「絕對沒有正確理解」。這是讀者我智商太高呢,還是你智商太低?

——唉呀人當然用不著這樣排序;但電腦必須這麼做。因為CPU的能力只有這麼高。我們得先把事情徹底搞明白,然後再把問題分解到電腦能懂的程度……

切,我真沒見過這麼笨的電腦。我在word/excel里只要滑鼠一拉再一點……比這高級幾百倍的功能都出來了。

不騙你,電腦真就這麼笨;能讓這麼笨的電腦變的能讓你玩excel——這就是開發一套office,每個版本光發給碼農們的薪水都夠建幾座迪拜塔的原因。

扯吧。如果電腦真這麼笨……那它怎麼什麼問題都能解決呢?

這又回到計算原理上了……比如xxx問題……你看其實很簡單,這樣這樣這樣就解決了……

不明白?唉呀你別靜態看那幾句話,動態執行一下啊……

懵逼的懵逼次方!怎麼動態執行啊你們說!

計算原理……

敢耍我?揍他!鬧了半天這貨還是在玩那個GNU is Not Unix的梗!

——所以你看,我們真的已經科普的不能再科普、淺顯的不能再淺顯了啊;可哪怕真把冒泡排序給你解釋到撲克牌的程度,你還是過不了計算原理這個坎兒啊……

——還敢嘴硬!還在玩梗!往死里打!

(旁觀的碼農偷偷拉了拉姬友的小手:走,別出聲。只要計算原理這層窗戶紙捅不破,這事就說不明白的。這幫子悶騷男怎麼到現在還是明白不了這一點。別管他,還是讓我們愉快的搞姬吧。

(姬友:可是,也經常有人這樣問我啊。只說冒泡倆字人家嫌術語;說到撲克牌人家覺得你把人當幼兒園小朋友;再提計算原理人家覺得你玩梗……萬一遇上脾氣暴的……你看多慘,你就不怕嗎?

(碼農:別那麼笨啊,非要和人解釋。咱賣個萌不就過去了……

填個亮色的結尾吧:

小弟X:等等,等等,我好像忽然抓到點什麼……(啪!一拍腦門……

小弟X:別打了!別打了!他真沒耍我們,他真的在科普!啊,那真的不是梗……再沒有比這種美妙的遞歸更意味深長的了。全明白了……唉呀這傢伙真啰嗦,其實他只說「冒泡」倆字就夠了……

老大:那你說說,究竟怎麼回事?

小弟X:計算原理……

老大:天吶,這小子也入GNU教了!一起打!

註:GNU計劃是Richard Stallman在1983年9月27日公開發起的。有人問GNU這個縮寫是什麼意思,回答是GNU就是GNU is Not Unix的首字母縮寫。這在碼農世界裡叫做「遞歸」定義——如前所述,碼農們說出去的話是有魔力的,它是動的,不可以靜態理解。


  • IT這個行業是怎樣運行的?一個程序或網站是怎樣被製造出來的?會經歷哪些流程,需要哪些人員?

說到行業,一般都需要區分國內外。國內在2005年左右之前,是犧牲信息從業者的利益反哺其他行業,結果只有硬體才有利潤,軟體和服務通常是賣不出價的。盜版橫行,純軟體廠商艱難生存,集成商日子相對滋潤。05年往後,隨著網商站穩腳跟建成氣候,互聯網從業人群作為行業在國民經濟中終成一角,版權意識得到發現、進步,IT行業才逐步與國外情況慢慢如同(還在進程中)。

IT這個縮寫的語義可以認為是「信息處理技術」,「技術」又可以分為硬體、軟體、知識。類比影視行業,硬體相當於電影院、放映機、電視機、機頂盒等等,軟體相當於是電影拷貝、錄像帶、視頻流等等,知識則相當於影視劇從業者的客串、走穴、慰問演出等等。

中國IT行業起步於上世紀80、90年代,那是一個IBM、DEC、Sun、HP等少數高端伺服器製造商各領風騷的時代,國內IT從業者不是在賣這些公司的產品,就是在基於這些產品提供服務或者在這些產品上編寫軟體。90年代中後期,PC廠商開始漸漸成為市場上的競爭角色,世界也進入了計算機普及時代,從商業公司進入普通家庭。IBM、Compaq、HP等PC製造商漸漸握有市場話語權,國內IT從業者開始不僅僅買國外公司的產品,而且進一步基於進口元器件拼裝自己的產品,比如聯想、方正,各種攢PC的電子市場。軟體行業也漸漸開始有了自己的獨立產品,比如著名的WPS、一眾殺毒軟體廠商,具備了成為ISV(Independent software vendor)的資格。整個80、90年代,IT行業中還有一大撥靠提供系統集成及應用軟體開發的企業,為垂直行業提供業務支撐系統,比如為銀行提供賬務系統(從伺服器到網路環境搭建再到軟體開發以及後期維護服務),這樣的公司在IT行業版圖中一直到2005年左右勢力達到頂峰,隨後行業話語主動權開始被互聯網公司頂替。進入新世紀2000以來,隨著互聯網逐步普及,行業中還出現了一股新的重要力量,基於開源或免費軟體獲得商業利益的玩家(有個人也有公司),如今甚至已經成為推動行業技術進步的不可或缺的角色。同樣可以以2005年作為分水嶺,國內IT從業人員從單純的開源受用者向積極貢獻者轉變。

微觀上,網站也可以視作程序,運行於伺服器之上,通過與瀏覽器的通信來提供「網站」信息。因此,本質上,「網站」這個詞,可以看做是「網」——通過通信來傳輸信息、「站」——通過伺服器來存儲那些想要被傳播的信息,這兩部分程序功能構成的。

「製造流程」……[汗]只說「站」的部分:想做個網站(想講個故事)--&>組織素材(故事梗概)--&>網頁框架設計(故事雛形)--&>導航設計、平面設計(劇本)--&>編寫HTML(分鏡頭)--&>編寫網頁上的交互功能的程序(拍攝)--&>集成測試(剪輯)--&>部署到伺服器(製作)--&>提供網站訪問訪問(發行)。是的,跟拍電影有許多類似的地方,也因此需要網頁製作人員、美工(現在又細分為UI/UE)、腳本開發人員、伺服器系統管理員、運維人員等等。

(果然很容易寫疲,下面問題先簡答)

  • 一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?

寫代碼、運行代碼、發現錯誤、寫代碼……循環往複。自己寫代碼、上網看別人如何寫代碼、跟同事開會討論怎樣寫代碼,循環往複。

  • 一個程序員的成長過程是怎樣的?衡量一個程序員能力的標準是什麼?

這個跟繪畫類似。想像一幅畫、畫出來、發現跟想像的差別,修改畫作或者重畫一幅。這個過程中,不斷學習使用不同的技法、練習技法、嘗試新技法。所以,衡量程序員能力的標準也可以類比繪畫,對於畫家而言,「表現力」是非常重要的指標,對於程序員也類似。同樣一個功能(意境),誰能用最少的代碼(筆墨)精確地實現(表達),誰就越是高手。

  • 這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?還有哪些角色,他們的分工是什麼?

IT行業的分工是個大話題,先不展開。結合上面對「網站」的意會,前端工程師相當於是編寫「站」的部分中你在瀏覽器上能看得見的部分的代碼,其他看不見的可以認為是「後端工程師」的活兒。全棧工程師則可以認為是從前到後都一個人搞定。「網」的部分可以認為由ISV提供,現在大部分都是用開源的。再有什麼角色,就是讓網站更好看、更好用的設計人員了,可以認為是輸出「感覺」的。比如圖標設計人員、圖片實際人員、音效設計人員,等等。

  • 類似GitHub的網站是做什麼的?這些類似的網站或論壇在流程中扮演了什麼角色?

搞開源的人多了,就出現了「在哪裡可以方便地共享開源代碼、一起完善開源代碼」的需求,GitHub就是為了滿足這類需求出現的。他們已經成為行業中非常重要的資源供給方,你可以認為是一大批土地特別肥沃氣候特別怡然的共有之地,勤勞而聰明的人自己主動在哪裡終止各種轉基因莊稼,總會出現幾個特別高產且營養豐富的品種,大家都願意去採摘回家自己加工出各種副產品,也有直接張嘴就囫圇吞棗的,嗯,還有不少人順帶還干點農活。

  • 為什麼會有不同的編程語言?程序員是怎樣編寫一個程序的?會用特殊的工具甚至是特殊的系統嗎?比如Linux是怎麼一回事?

為了「能用最少的代碼(筆墨)精確地實現(表達)」,發展出各種獨具表達能力的語言。程序員編寫程序很像給一個外國人寫情書:編寫代碼(寫信),編譯代碼(找人翻譯),運行代碼(郵寄)。有沒有回信,全看你信的內容是不是寫對了,打動了對方心弦,就有互動(回信),否則一堆出錯信息(好比信封裡帶顆子彈,嗯,你必須開始猜測對方要表達什麼意思,是讓你像子彈一樣飛過去找ta,還是別的什麼意思)。

會用特殊工具。比如寫網頁的人就經常使用「Chrome Developer Tools」之類的調試工具。如果你用谷歌的瀏覽器,可以用右鍵彈出菜單中的「檢查」項調出來。也會用特殊系統,比如手機app的開發工程師經常用模擬器。

你可以認為,Linux就是我上面說的一堆投身於「開源免費軟體」的人製造出來的類似微軟Windows操作系統的軟體。只不過,現在這個軟體更多被用在網站的伺服器上,提供上述「網」一側的功能。

  • IT行業缺乏通俗易懂的科普嗎?為什麼?

國內各個行業,普遍缺乏通俗易懂的科普。不只是IT行業。過去(1980-1995)是因為無法靠此維持生計,後來(1995-2010)是因為有太多更賺錢的機會,實在顧不過來。現在則是具有科普技能的人實在太少了。

  • 人們對IT行業有哪些經典的誤解?

2010年之前,我最經常遇到的誤解就是:你搞IT的居然不會裝電腦。再有就是「IT=高科技」,其實你看,《阿凡達》是高科技,日本愛情動作片就不是。IT行業也類似。


更新:看了很多答案,大家都在說,不好科普,專業問題,想知道去補習班啊等等.我不知道該說什麼好,一個國家的所謂專業人員原來就是這樣的素質,我為這些程序員感到悲哀.什麼是大師?大師就是可以將自己所擅長的事物以淺顯易懂的道理說給別人聽,讓別人覺得行業很簡單有趣.而又可以將自己所理解的知識運用到極致,讓人驚嘆於他對知識的理解之深.

而為什麼這些"程序員"都喜歡挖苦別人,嘲諷別人呢?其實也有源頭,《黑客,計算機革命的英雄》裡面提到過的黑客精神裡面就有提到,對於一些技術非常高的熱愛編程的黑客來說,他們有時候有些蔑視不懂技術的人.但絕非說這是專業問題,因為他們同時蔑視專業.不過,我想黑客的其他能力他們可能不佔一條了.

以下是原答案:

===

我的信奉是,萬物可至簡.

首先說幾個大觀點.

1.所有的問題實際上都可以轉換為數學問題.

2.所有的數學問題都是加法問題.

3.程序員的工作就是把實際問題抽象為數學問題.

4.計算機的本質是做加法,這是靠電路實現的.

5.IT行業旨在信息傳遞.

===

從題主提的第一個問題來看,IT行業這個範圍稍微有些大,不過題主後面提出的問題卻又主要是針對程序員,所以在這裡我首先做個解釋.IT是信息技術Information Technology的縮寫,主要是指信息技術,而從事IT行業的人們從大體上說可以分為四個方向:軟體工程、通信工程、網路工程以及計算機科學.為什麼這麼說呢?

我們不防用qq作為例子.題主首先得有個平台(電腦或手機或ipad)才能使用qq,而這個平台就是計算機平台(無論是智能手機或電腦),專門研究計算機方面的,就叫計算機科學.

其次有了計算機,題主還需要一個qq的程序才可以發送信息,編寫這個程序的人一般都會是程序員,所以這一行我們稱為軟體工程.

你寫好了消息還需要wifi或者寬頻才能發出去,我們說要有網,那麼負責網路的就叫做網路工程.

最後,網路分為有線和無線,不管是什麼線,都需要發送數據,傳遞數據,接收數據.傳輸數據都是為了通信,此乃通信工程也.

這樣的話題主明白了嗎?在IT行業中,不只是程序,還有很多別的技術,它們的宗旨都是用來進行信息傳遞.無論是淘寶,百度還是騰訊,無論是手機,電腦還是ipad,無論有線,無線還是藍牙,通通旨在"信息傳遞".

另外就是上述四種分法只是偏重的大方向,其實這四個方向都是相同的,學習任何一個專業也必須需要學習其他的專業內容.比如說一個程序員不僅僅要會寫程序,程序是在計算機上面運行,程序需要利用網路發送,這些都是相互影響的,就導致大家覺得學科交叉性很大,這是正常的.

===

接下來要弄清楚程序員在幹什麼?我們首先應該弄清楚他的平台——計算機能幹什麼?說白了,計算機就是由算術器,存儲器,控制器和輸入,輸出五大板塊組成,而算術器和控制器合稱CPU(中央控制處理單元).這是計算器的最主要的幾個部分.

首先輸入和輸出這兩塊我們應該非常熟悉,輸入主要以滑鼠,鍵盤為設備.而輸出主要以屏幕為設備.有了輸入和輸出,你才能對計算機寫入命令,才能從計算機中獲取回答.

接下來我們來看看算術器,控制器和存儲器是什麼回事呢?計算機其實是以二進位數據為基礎.而我們人類通常以十進位為我們的使用數據,這是為什麼呢?因為二進位的處理非常的簡單,它只有0和1兩種可能,而十進位我們知道有0-9十種可能.所以二進位的數呢便於存儲也便於計算.大家想想,就加法而言,二進位只要記住三個公式就可以了,0+0=0、0+1=1、1+1=0(向前進一).十進位得記多少個?另外我為什麼只說加法呢?因為減法可以用加法來轉化,這個計算機科學裡叫做補數方法.為了更加簡便一點我就不講的太過複雜,有興趣的朋友自己去百科搜索"補數".另外乘法和除法同樣也可以用加法和減法來代替.所以總而言之,加法是一切的基礎.二進位的加法無疑是最簡單的.而計算機怎麼去計算二進位呢,這就要用到電路了.在數字電路中首先有最基礎的與、或、非三大基礎電路,而二進位加法電路就可以由三大基礎電路組成.有興趣的朋友可以去百科搜索"二進位加法電路",這些都比較簡單的內容,大家只需要有基礎的串並聯知識就能弄懂.這也是算術器主要乾的事情,"記住"這三條運算.

另外只能計算還不行,還要存儲數據呀,比如你要計算1+1,那你至少要存儲兩個加數與和的值吧.由於存儲也是由電路實現的,有興趣的朋友可以搜索"鎖存器",這部分內容比較難.我也不講具體的數據存儲.大家只需知道計算機里有很多個單元,每個單元有一個地址和數據.經常有人將存儲比做住房.單元就是房子或者街道.地址好理解,數據就是房子裡面的內容.很多這樣的"街道"就組成了存儲器.

那麼最後,控制器又是啥玩意?存儲器裡面我們說了,每個存儲單元有地址和數據,當我要用兩個數相加的時候,是哪兩個數呢?計算機不用知道是哪兩個數,知道地址就可以了,控制器會到存儲器的相應地址中取出這兩個數,然後算術器進行計算,最後的結果可以選擇用輸出設備顯示到屏幕或是存儲到另一個地址的存儲單元去,下次要用了再去這個地址裡面取出來.

所以這一段就是告訴大家,計算機這玩意只能做加法,還是靠電路來完成的,可見它也並不比我們聰明,也並不那麼複雜.接下來我們講程序.

===

說到程序,大家就覺得很高級了,又是什麼c++,又是什麼java,好多好多,搞不清楚.那我們還是從簡單說起,剛開始的時候我們有這些語言嗎?沒有!只有一門語言,叫做機器語言,這是啥玩意呢?其實也簡單,它裡面有一百多條命令,比如說相加,用11001100(實際不是11001100)來表示,這種指令,我們稱之為操作碼.另外要對哪個地址的數進行操作,比如說是00001111這個地址的數.這個叫操作數.機器指令主要就是由操作碼和操作數以及地址碼組成.這種機器指令就類似下面這樣的代碼:00110011 11001100 10100101 11000011.這就是最早的編程語言,複雜吧,頭暈吧.可是計算機好處理呀,計算機就認這種代碼.所以當時程序員們寫代碼就是在卡片上打孔,寫一個程序呢帶著一麻袋的卡片...要是錯了一個的話...大家想想那崩潰的心情.

可是一直用二進位作代碼,人類就不願意了,後面就出現了彙編語言,這也是非常基礎的語言,不過它至少不用二進位了,用一些簡單的單詞,比如add表示加法,並且也不用二進位了,用什麼呢,用二的指數次進位,比如十六進位(2的4次方),三十二進位(2的5次方),甚至現在的六十四進位(2的6次方).大家的電腦說什麼32位,64位就是指存儲單元的基本單位.那麼彙編的加法就好做些了,大家能看懂了,比如說add ax 0xff就是說把0xff的值加到ax這個存儲單元里.0x表示十六進位.

然後彙編以後就開始出現高級語言了,最開始兩種代表語言就是FORTRAN和C語言.這些語言的特點就是出現了"變數",而不再需要手動控制存儲單元.比如說C語言的加法怎麼寫啊?很簡單,int a = 1+1; int表示變數是個整數,a表示變數的名字,1+1叫做表達式.所以我們看不到內存地址了.不過c語言的一些比較高級的運算還是需要管理內存的.一旦涉及管理內存,語言就比較複雜,容易放錯.

再後面的語言就多種多樣了,而不同的語言有的能夠干相同的事,有的干不同的事,這就使得語言開始複雜起來,不過有一點,它們都是用來解決某個特定的問題.之所以有不同的語言,在於不同的效率,平台和功能.當你想用計算機做什麼,就去學習相應的語言就好.我們可以這麼看,不同的平台就好比是不同的國家,你在不同的國家,就得講不同的語言.但是編程就好比是說話,跟你用什麼語言沒太大關係,你會語法就行,跟你說話的水平最有關係.

而所有的語言,它們又有一些共同特點.就是有三大控制語句,這是由於它們的屬性主要是用來計算導致的.有順序、循環、條件三大控制語句決定,這三大控制語句幾乎可以做所有的運算.除此之外,還有一個跳轉語句非常重要.這些就留到題主需要編程的時候我們再談.

===

更新:這裡又會有人問了,你前面說計算機只能做加法計算,可是我的計算機能玩遊戲,聽音樂,發郵件,做各種事啊.

這就涉及到一個問題了,"任何問題都可以轉換為數學問題",而任何數學問題都可以用加法解決.這其實就是程序員們乾的事情.將具體問題轉化為計算機能夠處理的數學問題.就以遊戲為例好了.比如飛機大戰這類遊戲,其實就是定義一個變數,給它賦生命值,移動時的速度和方向以及坐標等等,都是把事物抽象出來.比如子彈撞到飛機,這就叫做碰撞檢測,想想看,子彈有坐標,大小.飛機有坐標大小.用數學方法計算一下兩個有沒有發生碰撞還是做的到吧.那又有人說遊戲有圖像啊.那圖像也很簡單,把製作好的圖像以及動畫載入到遊戲里去就行了,實際遊戲的邏輯還是抽象出來的程序,換了架飛機的樣子又有什麼關係呢?關於圖像在計算機中的存儲和載入方式下次有時間我再更新.所以,以後千萬別說數學沒用昂,說到底,整個IT行業就是由數學支撐起來的.

===

講到這裡,我還是一一回答一下題主的問題.

  1. 一個程序或網站是怎樣被製造出來的?會經歷哪些流程,需要哪些人員?[網站其實也是程序,程序的製作過程基本上是編寫、調試、執行、反覆這三條. 需要哪些人要看程序的大小和程序員的水平.]
  2. 一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?[程序員的一天當然跟所有的人一樣,熱愛生活,熱愛解決問題,就是優秀的程序員.途徑與所有人一樣,工具主要是計算機]
  3. 一個程序員的成長過程是怎樣的?衡量一個程序員能力的標準是什麼?[成長過程就是不斷的學習,寫代碼,讀代碼,會調試,會測試.標準就是是否熱愛生活,是否熱愛解決問題]
  4. 這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?還有哪些角色,他們的分工是什麼?[分工見四大專業]
  5. 類似GitHub的網站是做什麼的?這些類似的網站或論壇在流程中扮演了什麼角色?[github只有一個,它是代碼託管伺服器,可用來託管代碼,或是團隊協作.]
  6. 為什麼會有不同的編程語言?程序員是怎樣編寫一個程序的?會用特殊的工具甚至是特殊的系統嗎?比如Linux是怎麼一回事?[見程序那一段.Linux和Windows以及Mac都是指操作系統,安卓和IOS也都是不同的操作系統]
  7. IT行業缺乏通俗易懂的科普嗎?為什麼?[不缺乏科普,缺乏一顆擁有平靜和熱愛的心去了解的人]
  8. 人們對IT行業有哪些經典的誤解?[最大的誤解我想第一條就是"黑客",有空可以去讀《黑客與畫家》以及《黑客,計算機革命的英雄》.黑客不是大家想的攻擊別人電腦的程序員,那種人叫做駭客.黑客恰恰相反,他們是計算機程序的設計師和建築師.維護著計算機的安全,可以去谷歌"黑客精神".不過黑客們一點也不在乎這些.]

東莞高級技術服務人員認為所有事情在一起躺著的時候就能解決了;

理論物理學家認為所有的事情在躺椅上面打盹兒的時候就能解決了;

實驗物理學家認為所有的事情在瓶瓶罐罐搖一搖的時候就能解決了;

外交官用嘴讓世界變得更加美好;

足球員用腳讓世界變得更加美好;

女主角用臉讓世界變的更加美好;

I T 人用手讓世界變得更加美好;

大家只是分工不同,沒什麼神秘或者解釋不清的,說相聲是多數IT人的附身技能點。

問問你周圍的IT人:「你是不是經常用手解決問題?」你就明白了。

IT人是狂妄自大的!

他們幼稚的以為只要十根手指加一把鍵盤,他們就能改變世界;

他們發明了RPC調用,解決了空間距離問題;你在燕京,大都,Peking都能上淘寶,空間不是問題;

他們發明了Daemon,解決了時間跨度問題;你在早上,中午,子夜都能上京東,時間不是問題;

具體到閣下的問題:

2)一個程序員的一天是怎樣的?他們通過哪些途徑工作以及學習交流新的知識?他們會用什麼特殊的工具去工作?

答:一個程序員的一天:

00:00 - 01:30 通過在線教育平台,獲取到 勃多夜皆遺 老師及其同事布置的作業材料,仔細研讀,動手實操;
01:31 - 07:00 休息睡覺;
07:01 - 09:30 起床洗漱,雙肩包,眼鏡,手機,擠公交地鐵,刷知乎,刷遊戲,進公司;
09:31 - 21:30 正常上班,在程序員安慰師的鼓勵下元氣滿滿;
21:31 - 22:30 下班回家,
22:31 - 23:59 在各社交平台抱怨寫代碼太累,抱怨完了在自己的機器上面一邊碼代碼一邊更新博客;

途徑以及學習交流:

IT人最喜歡自己鑽研,自主學習,不斷提高自身知識廣深度,至於交流嘛,他們僅僅與搜索引擎交流;

特殊的工具:

迅雷;
電驢;
磁力鏈接;

4)這個領域有哪些分工?經常聽說的前端工程師,全棧工程師是做什麼的?他們互相如何配合?還有哪些角色,他們的分工是什麼?

答:分工與其他你了解的領域幾乎沒有區別,僅僅是叫法上面有區別。類比於服務行業的高級技術服務人員:

前端設計 相當於化妝師;
產品經理 相當於造型師;
項目經理 相當於領班;
測試團隊 相當於舞台上坐在前面的三位評委老師;
運維人員 相當於你購買服務時最開始見到,中間也要見到,最後也要見到,扯皮也要見到,結賬時也會見到的光頭強

他們互相如何配合

他們之間從來就沒有配合,有的只有互相撕*,互相推諉,對於任何一個角色,其他人都統統稱之為「相關部門相關人員」;
如果他們之間真的開始配合了,說明這個產品快黃了

全棧工程師

就是說你突然到了一家店:

門童,大堂,收銀,廚師,保潔,財務,出納,技術員,促銷員,往門縫裡面塞小卡片的都是同一個人。

8)人們對IT行業有哪些經典的誤解?

答: 人們對IT行業沒有誤解,相信我,你聽到的那些都是真的!

1)IT行業吃的青春飯。

很多IT從業人員不願意麵對現實,自己從事這行就非要為這行洗地,神侃112歲還要學習如何寫Hello World;我國舉足輕重的重要企業已經非常明確的為這個模糊的「青春飯」的

「青春」

作出了量化:

34歲

2)IT人沒有女朋友。

很多有女朋友的人說自己是IT人,這是謬論,門規有言在先:

代碼與女友不可兼得

凡是選擇女友的,自動被IT行業逐出門牆,他們頂多是「前IT人」!他們讓這個行業蒙羞,因為我們的理想就是所有的事情經過我們的努力:

!!!自己動手解決!!!

3)Github是同性交友網站

如果IT人有女朋友,你提到的Github這個全世界最大的同性交友網站就不會如此火爆了,只有IT人才是Github的真正主力用戶,Github與其他網站完全不兼容,IT人之外的其他用戶都會去:

真愛網;
司機加援網;
非常無聊;


咱們日常接觸的IT沒有什麼值得科普的,網站,軟體,手機app這些都是實踐應用層面的東西。科普科普,科學才需要普及。所以有物理的科普,化學的科普,自然也有計算機科學的科普,但是首先科普講的都是故事,計算機說到底還是沒有那麼多故事可以講;第二科普普及都是科學而不是工程實踐,你啥時候見過機械製造科普?化工工藝科普?因為這些都大部分屬於實踐或者工程的範圍,不適合科普,我們日常接觸的IT產品例如軟體網站app也都是一樣


推薦閱讀:

Unity3D如何有效地組織代碼?
程序員平常加班嚴重,是怎樣兼顧自己個人能力提升的?
有哪些迅速提升編程技術的方法或途徑?
印度的軟體產業為什麼發達?

TAG:互聯網 | 編程 | 信息技術IT | 計算機科學 | IT行業 |