[翻譯]A Coder, a Programmer, a Hacker, a Developer, and a Computer Scientist walk into a Venn Diagram

原文來自於Scott, 取得他的同意後, 由MLab翻譯.

http://www.hanselman.com/blog/ACoderAProgrammerAHackerADeveloperAndAComputerScientistWalkIntoAVennDiagram.aspx

 

Learning to code and shopping at Ikea

 

有個朋友最近說道「我想學寫程式, 該從哪裡開始? 又該如何開始?」

我想學寫程式-我應該去IKEA還是先自己種樹?

就像做木工一樣, 你可以在做桌子之前, 從種樹開始, 然後把樹砍了, 再來修磨拋光. 或者呢, 你可以去IKEA. 很有可能你做的事就介於這兩者之間.

修改WordPress的佈景主題就像是直接殺去IKEA. 自己開發web framework就像是種樹, 因為你就是不喜歡別人種的樹. 你必須決定你要在這光譜的哪一端, 是要做個從木料行取材來做特製家具的人, 還是做一個拿別人做好的現有零件來組裝的人.

 

OK, 那我從哪裡開始?

很好. 有人想學程式都讓我很開心. Facebook的討論串有這些建議:

然後呢, 比較有趣的問題回到了根源.

Coder Developer Hacker Programmer Venn
[Mlab譯註]

Programs DVR應該是指可以對DVR錄影機寫程式.

Talks to Humans 是諷刺有些人不會跟別人講話.

Roots Phone是指對手機做root取得管理權限的動作.

右下角那個是指理論.

Neil De Grasse Tyson是這一位:

 

圖片來源: http://upload.wikimedia.org/wikipedia/commons/f/f7/Tyson_-_Apollo_40th_anniversary_2009.jpg

他很有趣, 指正鐵達尼號的星空錯誤, 還客串過The Big Bang Theory.

Guys who thinks a Venn Diagram was the best idea for this 是說有人覺得用凡氏圖來表示這些概念是最好的方法, 但其實這是尤拉圖….詳見: http://blog.visual.ly/euler-and-venn-diagrams/

Coder、Hacker、Programmer、Developer跟Computer Scientist有什麼不一樣?

對你來講可能全都是同一種東西. 可能你還聽過 geek、nerd跟 dweeb之類的, 但我們都知道他們有很大的差異. 明白其中的差異可以讓你大概明白, 在程式設計的路程中你要探險到多深的地方.

  • Coders – 可以明白問題, 寫出來的東西會動, 但長得不怎麼樣.
  • Hackers – 通常是低階的、有技巧的, 對某些領域有深入的了解, 通常蠻嚇人的.
  • Programmer – 不只寫程式, 而且了解演算法, 通常獨自安份的工作.
  • Developer – 最強的通才, 會多種系統跟語言並且讓它們溝通, 具有真才實學, 可以與人合作而且有溝通技巧.
  • Computer Scientist – 必須要能夠用理論來證明電腦如何工作, 通常是數學家.

如果你早就有很熟的人恰好是上面的其中一種, 你大概知道你的方向是什麼了.

我們說的是Web Programming嗎?

每個人在這個討論串或多或少都提到某些web programming的東西, 這是很合理啦, 畢竟2013年幾乎每個人都掛在網上了. 但是呢, 就在幾年之前, 我們可能會請朋友坐好, 然後用控制台寫個Hello World, 或是打開Visual Basic, 拉個按鈕出來, 然後用MessageBox顯示Hello World.

標記語言算程式語言嗎? 很多人都會說「學HTML跟CSS」, 但我不覺得這種程式設計是傳統我們在講的程式設計. 做為通往JavaScript跟Web Service的入口, 我覺得學HTML跟CSS是個很好的開始. 但是呢, 問題在於不是每個應用程式都是在瀏覽器中產生HTML的web應用程式. 大部份的應用程式多少都是connected application (就是跟別的應用程式會連結運作的). 應用程式從service取得資料, 送出提示、文字、郵件跟tweets. 幾乎每個應用程式或多或少都有分散式的性質, 即使它只是個為了某些資料呼叫web伺服器的簡單程式.

時至今日, 如果你想當個coder, 或者, 我們看遠一點, 如果你想當個有效率的coder, 你會想要了解web, 會想要了解你在瀏覽器中輸入 twitter.com 的時候發生了什麼你看不到的事. 就如同當你想當個木匠時, 你會想了解樹是怎麼長大的, 你想當個賽車手時, 會想了解引擎怎麼運作, 你想當個水電工, 會想了解水從哪裡流過來. 靠, 如果你想當個有效率的人, 你應該真的去了解剛才講的這些事情 😉

 

「我要學寫程式」的真正意義是啥?

這個問題背後的問題是什麼? 他想要架個網站? 設計網站?  還是他想設計一個手機應用程式帶著跑? 他想設計一個 gadget , 會在他車庫門開太久的時候發簡訊通知他? 這些東西有差非常多的終點, 而如果我們深入一點, 有很多好方法可以開始.

你大可到網路上去學一些JavaScript然後開始做web應用程式, 你也應該去做. 但是呢, 如果你有更深入的興趣, 有許多不同的路可以走. 對你做得到的寬廣可能性做一點小研究, 你就會找到一條稍微有些不同的路.

RELATED LINKS

 

 

Leave a Reply

你的電子郵件位址並不會被公開。 必要欄位標記為 *