❶ 美國程序員有中年危機嗎
在美國經常能看到工作二、三十年的程序員,比如:PowerBI上游的Common Data Model的作者,二十多年的程序員;hulu等美國總部崗的一線專家很多也是70後;AWS上Aurora等資料庫開發者也是二十年的選手(有些還不是核心模塊)等,國內這個年齡恐怕要被勸退或者找工作到處碰壁。我們認為原因有以下幾個:
1、基礎軟體比美國落後很多,36項卡脖子的核心技術等待突破:http://www.pinlue.com/article/2019/05/1918/318988000342.html,資料庫、操作系統、瀏覽器、數據分析平台等這些往往需要十年,甚至二十年核心技術的積累,國內這些公司比較少,二十年的技術大牛能去的地方少,也缺少了相應的土壤,用十年多去培養一些這樣的選手。
2、國內加班環境比國外厲害,很多公司之間一旦業務有競爭,往往996,007競爭,搭建業務系統不需要十年的經驗,拼的體力和執行性,年齡大不佔優勢,這一點最近的社區買菜可以看出來。
3、前面幾年國內的人口紅利帶來了工程師紅利,而美國IT技術人員,亞裔佔主體,印裔和華人又佔大頭;土著白人更傾向律師、醫生、精算師等其他工作;黑人在體育和音樂上的天賦,他們又主要從事其他職業;另外,美國的階層更加固化,讀常春藤學生的父母很大一部分也是常春藤畢業,國內因為這幾年的互聯網、部分城市房價等紅利,很多人實現了階層跨越;
4、國內的環境,導致一批技術天賦不錯的年輕選手很早走向管理,項目等橫向的事情,讓他們慢慢脫離技術,或者只能做做脫離代碼的架構師。
5、美國工會和法律相對更健全些,有年齡歧視,會被罰的厲害。國內因為很多企業是納稅大戶,也解決了不少就業,有些地方上也是睜一隻眼閉一隻眼。
對於未來
1、隨著國內人口紅利不再,加上基礎軟體崛起,技術環境持續看好,不想走管理路線,想專注技術的選手回報也會越來越多。
2、美國百億美金的toB技術型公司有50家左右(截止2020年底),國內現在還沒有一家,按照市場以及國內經濟增速,國內未來幾年百億美金市值的toB公司也會越來越多。相信國內不出五年,持續在一個方向深耕多年、40+的技術大牛會越來越多,也會有更好的土壤讓他們安心在那邊十年磨一劍,打磨產品的核心能力,也可以不停的試錯找到產品的爆款功能。
❷ 數字化對人類社會的負面效應是什麼
數字化時代也為人類社會帶來了一些負面效應,主要表現在以下幾個方面:
(1)將在一定時間引發全球性的社會動盪。如前所述,數字技術的發展給人類帶來了新的財富,網路逐漸侵蝕了國家的界限。在數字化時代,一部分人的權力被剝奪了,新一輪的權力分配重新開始,全球文化將吞並弱小文化。同時,全球性的暴力手段並未消失,一些政治團體或民族、種族實體為維護自身利益可能會製造動盪。而且,對比特控制權的爭奪也將加劇這場混亂。因此,在一定時期內,將造成人類社會的不穩定。但是,如果人們能夠為了人類的整體利益攜起手來,這場動盪或許會成為比特時代到來的催化劑。
(2)人群分裂,人際關系冷漠化。網路將把人們分為各個不同的利益群體。隨著國界的淡忘,網路將變得越來越大而且越來越重要,世界也許會分裂為華人網路、印度人網路、環境網路、醫療網路、婦女網路、金融網路等不同的網路群體。網路將改變社會生產和生活方式,加深人與人之間的疏離。社會互動以電腦作為中間媒介,人與人之間的直接溝通減少,人際關系淡化,人情趨於冷漠,世態更加「炎涼」。
(3)高科技犯罪增多。數字技術的發展也為犯罪提供了方便,利用信息網路從事高科技犯罪將成為比特時代的一大社會問題。犯罪分子可以進入網路空間,從事盜竊活動和經濟詐騙,也可以從事色情販賣,或進行電子賭博等。任何利用計算機技術知識作為基本手段的非法活動即稱為計算機犯罪。在發達國家,利用計算機進行犯罪活動始於20世紀60年代,70年代案件惡性膨脹,80年代已構成日益嚴重的社會問題。目前,計算機犯罪主要集中在機密信息系統和金融系統。它對國家安全和防禦、政治經濟、科學技術和社會生活構成了嚴重的破壞和威脅。
1983年5月12日,倫敦的大通銀行接到哥倫比亞中央銀行的計算機指示,將1350萬美元通過紐約的大通銀行過戶到紐約的摩根信託保證銀行,又繼續周轉到蘇黎世的以色列哈普林銀行,再轉至巴拿馬的一家銀行,由於同案犯沒有提取現金的正確文件,這筆款項又一次回轉到歐洲,同年11月案發,涉及12人作案。
星球大戰1986年5月聯邦德國的4名罪犯,利用計算機改變信用卡上的磁帶密碼,騙取10萬馬克。後案發被捕。
1988年聯邦德國漢諾威大學計算機系的學生巴蒂亞斯·斯佩爾,將自己的計算機同美國軍方和軍工承包商的計算機聯網,在2年時間里竊取了大量美國國防機密,其中有美國的「星球大戰」計劃、北美防空司令部的核武器和通信衛星方面的情報。
由於美國國家航空航天局在全世界的數據網的保密系統存在缺陷,被聯邦德國的計算機愛好者鑽了空子,這些人竊取了某些關鍵字,進入美國航天局的數據網,於是通過自己的計算機屏幕就可以看到有關太空梭研究合同系統的安全調查和助推火箭事故等內容,並可接觸這一數據網用戶的電子信件,甚至可以使整個數據網陷入癱瘓。
在我國,1986年深圳發生第一起利用計算機竊取儲戶存款的案件。幾年來,我國銀行系統共發生利用計算機盜竊、貪污、挪用現金等犯罪案件上百起,涉及款項數千萬元,最大一筆竟達1500萬元之多。
1992年底,某證券公司發現一起內部工作人員利用計算機挪用80多萬元公款炒股謀利的特大案件。據有關部門透露,自深圳開通股市以來,各地證券公司已發生多起內部工作人員,特別是計算機程序員和操作員,採用內外勾結的方法,挪用公款炒股案件。
還有目前最為棘手的電信欺詐問題,案犯自空中拉截電波,利用計算機及特殊軟體解譯密碼,再把這些竊取的密碼植入手機空機,炮製與合法用戶同樣號碼的手機無償使用,而通訊費用由原號碼的合法持有者支付。這些利用計算機進行犯罪活動的不法分子,不僅偷取電話錄音,盜竊私人長途電話密碼,非法解密軟體,而且利用先進裝置來進行欺詐及其他犯罪活動。
面對猖獗的計算機犯罪,國務院發布了《中華人民共和國信息系統安全保護條例》。這樣可使我國的計算機安全問題有法可依,有章可循,可以有效地遏制計算機犯罪的勢頭,增加打擊力度,促使我國的計算機事業健康發展。
(4)人性異化。比特時代個人淹沒於信息當中,形成「數字化人」。人們往往對高新技術能作出迅速反應,但逃避現實,不願與人交往,對他人漠不關心,個人主義流行,安全感差;個人隱私雖具有一定匿名性,但傳播受眾面積大,速度快;各種變態行為、心理疾病增多;人與人之間缺少信任感,人性異化。
(5)貧富差距加大、「信息至上主義」流行、信息污染、信息欺騙等種種負面效應對未來社會都將產生不良影響,應當引起足夠重視與研究。
❸ 程序員能在一線城市裡生活一輩子嗎
我是南京渣二本2019年畢業,計算機專業,本科畢業後感覺自己啥也不會,就報了南京半圓學社的java培訓,當時去也沒想太多,反正五個月花一萬多,最後出來包分配,能找到7k工作的話,半年就能掙4萬多了不久回本了嘛,不然在家自學個技能還得一年呢。
最後在半圓學社學習Java五個月吧,現在Java很吃香唉。學完之後,半圓學社就把學院的簡歷內推啥的幫忙找工作。然後簡歷也放在各大網站海投,後來面試去了科藍軟體,老師也有教你一些面試技巧,然後平時做的項目也起了作用,我看面試情況要了個8k的工資,後面就去科藍上班了。後來因為上班時上午總是犯困,經常被小組長逮住,幹了三個月沒轉正就被辭退了。
然後又找了一個月的工作,還是java工程師,工資6500。這份工作幹了一段時間後看不到希望,後來想轉手游開發(那段時間重度手游開始流行)。邊工作邊學cocos2d-x(當時也考慮過入手Unity3D,但自己是做C開發的,轉C++感覺會更好些,所以最終選擇了cocos2d-x開發平台),還順便談了個戀愛,談了兩個月後被分手了,分手後自己又學了一個月的手游開發,但總感覺自己目前的學歷太低,就是干手游開發,頂多也是進個小公司,這樣的小公司又沒法跟騰訊網易這樣的巨無霸抗衡。當年也利用周末時間在CSDN上報名參加了幾場手游的講座活動,主辦方請了幾個當年創業的小公司團隊介紹行業情況,他們自己也說這行沒有大家想像的那麼美好,他們只能天天蹭熱度,開發些卡牌博眼球的小 游戲 來掙錢續命,那些高大上現象級的手游根本沒他們的份,他們也沒有那精力和實力去做。
參加了幾場手游開發活動後,發現這些跟我想像的很不一樣。還有一個熱點引起了我的注意,那就是大數據,是的,那年還不提什麼人工智慧和深度學習,最經常報道的還是大數據,hadoop。當時我覺得這個行業門檻比較高,也許可以渡過碼農最害怕的中年危機。我考慮的更多也是學大數據相比手游開發會更穩定, 游戲 開發早就聽說壓力大,加班熬夜太正常。這個時候我開始考慮要不要考個研究生,提升學歷的同時還能轉大數據行業。
如果考研,就至少是211大學,而且還要是計算機相關專業,因為我在南京上班,所以我的目標是只考慮南京的大學,那麼可選的范圍就基本限定在了南京排名靠後的那幾所211大學,又考慮到考試的難度,選擇了軟體工程專碩這個專業。經過多方打聽,綜合考慮了學校的知名度和開設的大數據相關研究方向和實力,最終在研究生考試報名截止日期那天報上了某某大的軟體學院。
報完名後,距離考試還有兩個月的時間。一切都是那麼臨時的樣子,我自己也沒必勝的信念,中間還考慮過辭掉工作,全身心的投入到考研復習中去,但最終感覺那樣的話壓力太大未必是好事而最終放棄了這一想法。不過幸好的是公司當時項目不忙,我基本不用加班,那兩個月的時間,我每天早上七點多起,早上背英語到九點半,然後吃飯上班,晚上六點半下班後復習數學。最後的一個月開始復習政治和專業課(軟體學院的專業課考試是學校自己命題,相對簡單,所以我是在最後半個月才開始准備專業課)。就這樣,一直堅持到了研究生考試。這期間,我一直沒有跟家裡提起我要考研了,直到研究生考試結束,那天晚上我跟家裡打了電話說我考研了。
也可能是時間緊迫,自己一直是擠時間,態度還算端正。在過年高中同學一塊兒聚會時,聽另一個同學說研究生分數下來了。我還記得當時我們幾個在理發店排隊理發,我自己不敢查分數,讓我那個同學幫我查的,最終考了311分,這個分數考某某大的軟工專碩,基本算穩了。最後也不出我所料,最終進入了夢寐以求的某某大。不管怎樣,我也算是211學校的研究生了。哈哈
考上了研究生,我又面臨的一個現實問題——我歲數不小了。我是農村出身,而且自身也不是多聰明的孩子,從小學我就是墊底的,後來上了初中學習還算稍有出色,小學我留了一級,初中升高中我花錢買的分,高考第一年我又沒考上,復讀了一年,第二年才剛過二本線,報了一家**學院,學了計算機專業。又是留級,又是復讀,又工作兩年,上了這個研究生,還是軟工專碩,我心裡壓力還是蠻大的,所以在研究生這三年,我也是抓住一切可以抓住的機會來努力提升自己,努力在自己身上貼金。
研一上學期,剛過完十一假期沒多久,導師在我們群里說他有個朋友在中科院,做自然語言處理相關研究,問我們誰願意過去幫忙,當時看到這條消息後,我第一個想法就是可以去中科院做科研,是個不錯的貼金體驗,我又科普了下NLP的相關東西,感覺還可以接受(其實那時候我對機器學習還處於懵懂的概念,基本啥也不懂,還一股腦的沒事就在圖書館自學Hadoop,現在想想感覺挺幼稚,挺可笑的)。看到導師的這個消息後,我用了十分鍾看了下相關知識,然後就趕緊給那個中科院的老師打過去電話說我想過去(那個中科院老師只要一個學生,所以我想的就是盡快抓住機會),我是第一個打電話的,而且還有工作開發經驗,那邊老師感覺我還不錯,就接受了我。
到了研一下學期,我就搬到了中科院那邊,那邊老師還給我安排了宿舍。在中科院,我算是對機器學習,大數據這些名詞有了比較明確的概念吧。這個學期,我自學了NLP的一些演算法,在中科院的一些師兄幫助下,做了一些小實驗,臨近暑假時水了一篇論文,算是完成了項目。
這里需要說下自己過來的經驗,實習工作盡量選大公司,因為到了畢業時公司都是看你實習公司的,你在創業公司做的東西再多,也不如一個大公司的名頭。這是我的感受。
在新浪實習這三個月里,做的大多是一些數據的處理,對spark的開發熟悉,文本的分類還基本停留在關鍵詞匹配上。自己做的也很無聊,另外自己已經開始關注聊天機器人這個領域,該領域在2019年底時算是火到了高峰期。在新浪實習了三個月後,我開始自己學習tensorflow和一些深度學習的基本知識,學了一個星期後,我又面試了一家做對話機器人的創業公司。然後在2029年12月我就跳到了這家創業公司,做對話生成模型。
在這家創業公司,我算是接觸到了深度學習,一直用tensorflow做RNN模型,做了有兩個多月,然後在微信公賬號上看到一家日本研究所在找海外實習生,說也是做深度學習的相關研究。我覺得這是個不錯的機會,但我也知道自己的條件,但人生就是這樣,看到了這樣的機會,不管怎樣總要試一試啊,萬一成功了呢?!抱著這樣的態度,我用谷歌翻譯和有道詞典花了一晚上弄了個英文簡歷,又准備了兩三天的基礎知識,害怕突然襲擊的電話面試。然後我就把簡歷投出去了。
大約過了一個星期左右,日本東京那邊來了電話,是個華人,電話里我介紹了自己做的項目,問了我一些專業問題,然後用英語做了自我介紹,就說感覺還行,說這周會給我一篇paper,讓我用一周的時間把它實現出來。沒幾天,paper發來後,我一看是一篇關於對話生成的paper,我之前做了兩個月的對話了,還算熟悉,我就利用周五,周六和周日的三天時間加班加點的搞了出來,不算完全實現,但思路還算說得過去,到了周一上午我就迫不及待的把源碼和文檔發了過去,然後周二那邊給我打來電話說我通過了,讓我准備下護照和簽證,去東京研究所實習。
秋招已經進行的如火如荼,我基本也沒做任何准備,所以我的計劃是找個有轉正機會的實習崗,好好乾,然後轉正。就這樣,我就投了京東金融的演算法崗,實習面試簡單,面了半個多小時,就同意讓我去實習了(這裡面有個坑,就是在面試時我明說了我只考慮有轉正機會的實習崗,然而那個小組長只是笑了笑,然後轉身就走了,過了一會兒HR說我面試通過,我就認為這個實習是可以轉正的)。然後結果並非如此,我進去幹了半個多月後,發現我們組里已經有四個實習生了,而且都是20屆的研究生。其中一個已經實習了大半年,也一直不提轉正的事兒,最後那個人再三提出後,這個leader才說組內目前沒有校招名額,要等年後再看看有沒有。這一說,大家都慌了,我跟大家一樣,開始各種請假,各種面試。那時候已經到了11月份,秋招基本結束,各大公司開始補招了。
補招有個好處就是面試時沒有那麼難了,這期間我也做了一些准備。依次拿到了搜狗和京東商城的SPoffer,因為我已經簽了搜狗,就果斷拒了京東商城(也是京東金融的那次經歷,讓我對京東的印象很差)。再後來就是在搜狗實習時,又看到了BAT的演算法崗的補招,我感覺還不錯,決定再試試,畢竟進BAT是我最好的歸宿,自己已經是爛學歷了,還做了兩年的外包,以後如果能有好的發展,進BAT鍍幾年金還是很有必要的。然後我就請了一個星期的假,好好准備了BAT的面試,在周五下午面了四面後,我拿到了BAT的口頭offer。
年後的3月份,hr打來電話談待遇,我以為拿到了搜狗和京東的SPoffer,BAT會給我提高待遇,可是hr就是這么叼,給了我一個白菜價,愛來不來,最後我還是來BAT了。就是這樣,目前我在BAT實習,2020年6月畢業,拿了BAT的演算法崗白菜價。
在這些公司實習時,我最大的感觸就是我身邊的同事已經不和我同齡了,有時候真的會很羨慕他們的年輕。和我同齡的,一路名校名企走過來的,現在都要比我高兩三個級別了,但事實就是這樣了,自己能做的,就是盡快趕上去吧!
我和樓主的願望一樣,首先是希望在IT行業能幹一輩子(不管是搞技術還是搞管理),所以我當初放棄了二線互聯網的SPoffer,來了BAT;再個是希望能一直呆在一線這樣充滿機遇,好的待遇和高福利的城市。我要做一件能夠讓自己覺得有意義的事,我要保證我有高收入的同時還能有保障的 社會 福利。說實話,如果按部就班的話,這些東西真的太難了。
IT干一輩子:就我自身目前的條件來看,有能力在IT行業干一輩子的概率應該很大了,BAT出來的應該不太會失業了吧。
在一線城市:我現在倒沒有樓主那樣的期望,在國外生活一段時間後,我發現了一個更大的世界,給了我更多想像的空間。想留在一線城市,就是為了高收入,高福利和高機遇,但這些東西在承擔高房價的條件下就不再是三高了。
我這樣的窮屌絲,哪怕攢上三四年夠首付,還要承擔二十年的房貸,說實話,我真的沒有這個勇氣。雖然說,我進了BAT,但我還是面臨著失業的風險。中國的就業繁榮就集中在金融、房地產和互聯網行業,大學各個專業的年輕學生都在學IT,不擠破腦袋往上爬就要面臨被後來年輕人擠下去的危險。那麼20年的房貸能還的起嗎?如果每月一萬左右的房貸,能保證自己的程序員壽命從還房貸起達到20年嗎?工作沒了,房子也就沒了。沒有什麼剛需,哪裡住不是住。我個人認為,後10年不再是前10年了,如果人民幣再那麼放水貶值的話,我覺得我應該多換點外匯,而不是抓緊買房了。所以我真的不敢買房。
相比國內的形勢,國外幾個發達國家的經濟結構則相對平衡(沒有說互聯網行業一家獨大),年輕人沒有說只有搞程序才能拿高薪。這樣的好處是各行各業的人真的可以安穩的干一輩子(再加上發達國家的人口老齡化),至少不需要像國內這樣瘋狂加班,還充滿壓力--以上是我個人見解
我目前的計劃是1、強化自己的技術能力,能夠做到獨當一面;2、報英語培訓班,練習口語交際(我現在也在自學並背單詞,但發現自學確實太難,我底子差,英文發音都不標准,所以我決定還是要報個正規的培訓班)。這是我近兩年的計劃。希望一切能夠順利,謝謝大家的支持。
目前比較高薪的行業無非就是金融和it行業,而it行業對城市的選擇上尤為嚴格,基本必須是在一二線城市才有工作崗位,且稍弱的二線城市都不行。
那麼,題主問的程序員能在一線城市裡生活一輩子嗎?其實換句話說,就是程序員能否干一輩子。其實我覺得是沒問題的。
說實話,早十幾年的那批程序員大部分早就實現了財富自由,相對來說,程序員保持在一線環境,奮斗在一線互聯網,對 科技 各方面的嗅覺,或者是被動環境來說,是比較有活力的。
第二個,程序員行業的相對高薪起點,以及相對高薪奮斗路線清晰,使得只要肯努力就有收獲不至於成為一句空話。很多時候,人們害怕的其實是,我付出了也不一定得到回報。程序員這個行業就不會。你剛畢業5K的程序員也是要寫代碼,你就算成長到月薪30K的架構師也是需要寫代碼。就算你其他方面一直不成長(比如待人處事等,當然各方面都優秀肯定更具備競爭力)只是代碼水平一直上升,不需要做到管理層領導層級別(有些人天生和人打交道就不行,更何談如何轉型成管理。但是不是管理領導級別,其他大部分行業想要拿高薪基本又不可能),也能拿到豐厚的薪資水平(至少30K40K的純程序員也算是一抓一大把,但是你是在傳統行業?總經理都不一定有這個價位)
第三個,關於程序員是吃青春飯的問題。其實是一種過渡放大的問題。你想下,你做餐飲服務行業,你一直不自我提升,不提高自身素質,那你是不是升不到店長?那你升不到店長,你是不是干服務員干幾年就膩了?是不是就想轉行?而且服務員的轉行是相對被動,第一個賺不到錢,第二個升不了職,被逼無奈。而程序員轉行其實是主動轉行。第一個是已經賺到錢了,第二個因為種種原因(比如家庭,比如身體等等)沒法提升自我向高薪進階(高薪指的是25K以上),別以為月薪十幾K又如何,人都是會膩的,那既然有了錢又膩了,自己想轉行想創業那不是分分鍾的事?而且作為程序員也不是保守迂腐之輩,說干就干。
所以其實,題主問的,程序員能在一線城市裡生活一輩子嗎?答案肯定是沒問題的。
程序員這三個字太籠統了,我認識一個老師一個大哥他呢碩士學歷現在在阿里巴巴工作,快30了他和我說過他30就會徹底辭職不幹了做點別的享受生活,對你沒有聽錯,他早就年薪過百萬了,同時在多個平台做課賣課,他也是程序員,而我呢每個月苦逼的拿著到手不到一萬的工資也算程序員,這差別可就太大了,像他那樣優秀的當然可以一直留在一線城市了對吧!!!
我呢其實我本人就不打算留在一線城市,盡管我的實力也不允許,就拿我來說我現在在上海無論我幾點下班十點,十一點十二點或是凌晨兩點我都能看到許多的人同我一樣也就是剛剛下班或是比我還苦逼,還在加班,沒辦法這就是程序員,競爭壓力真的很大像我這種鄉下的孩子想要留在這種地方只能靠自己,這種難度可以想像。
當然這其中不排除一些有志青年,他們真的能吃苦肯掙錢拼了命的留在一線留在北上廣,真的打心眼裡佩服他們是啊這代人拼出來下代人會好過很多 。
所以說啊能不能留在一線城市還要看你意志夠不夠堅定,或是你的家裡能不能提供足夠的幫助,如果家中也是農村鄉下的憑借自己立足在大城市,真的厲害我陶松服氣 加油,打工人。
程序員是從事程序開發、程序維護的專業人員,一般分為兩種類型,第一類是程序設計人員,第二類是程序編碼人員,軟體從業人員分為初級、中級、高級程序員,系統分析員,系統架構師,測試工程師。
上圖就是程序員大致的級別以及對應的工資,所以程序員的工資是絕對不低的。
上圖對於未來的發展前景的相關產業也做出了一個歸納,「大數據」「人工智慧」都是近年來最火的詞語,發展趨勢更是不可估量,所以如果要是從事相關的編程操作的話,發展空間自然是非常大的。
所以要是你會做程序編程的話,並且你能夠順應時代需求的話,在一線城市生活綽綽有餘。
首先還是要看個人定位,如果你的開發工作就是普通的碼代碼,那跟生產線區別也沒多大,互聯網內的螺絲釘,技術層面不能一直突破向上做到管理層的話大多數都要轉崗或者跳槽,基本上離開一線互聯網企業工資水平肯定要下降的,建議買房千萬別買壓力太大的,一旦遇到裁員後面壓力就大了。如果想干一輩子程序員,肯定是要終身學習的,技術更迭速度太快,盡量選擇賽道好的,有人情味的,年輕多存錢,多規劃。程序員的生涯很寶貴,且用且珍惜,平台也非常重要。
目前比較高薪的行業無非就是金融和it行業,而it行業對城市的選擇上尤為嚴格,基本必須是在一二線城市才有工作崗位,且稍弱的二線城市都不行。
那麼,題主問的程序員能在一線城市裡生活一輩子嗎?其實換句話說,就是程序員能否干一輩子。其實我覺得是沒問題的。
說實話,早十幾年的那批程序員大部分早就實現了財富自由,相對來說,程序員保持在一線環境,奮斗在一線互聯網,對 科技 各方面的嗅覺,或者是被動環境來說,是比較有活力的。
程序員能在一線城市裡生活一輩子嗎?
這個問題沒有標准答案。
為什麼這么說呢?因為這個問題本身就不嚴謹。
一線城市包括哪些城市?只有北上廣深?還是包括新晉一線城市?每個城市的生活成本都不一樣,每個城市的氣候也不一樣。有人調侃說廣州深圳比北方城市發達是因為暖和,每年光取暖一項就能人均節約三四千塊錢。
再者,題主所謂的"生活"又是什麼標准?衣食住行,生老病死,子女教育等等各個方面都要考慮。僅僅住房一項,已經把工薪階層"拒之城外"了,即使程序員普遍工資較高,也沒辦法承受如今一線城市的房價。
如果僅僅是待在一個城市討生活,不買房不結婚那我覺得以一個程序員的收入還是可以"生活"一輩子的。
能。但是不能一直當程序員
如果一直做肯定可以立足一線城市,擔心的就是做不了一輩子,又沒更好的替代工作,那就不好說了。在北京找一個可以和程序員薪酬相匹配的工作還是很難的,基本上算是專業行業進行了徹底的轉化。如果可以一直學習不落後從事一輩子程序員也未嘗不可以。
❹ 計算機科學與技術考研
考研方向主要集中在:計算機技術、計算機應用技術、計算機科學與技術、工商管理。
計算機技術是(專業碩士)工程下的二級學科專業。計算機技術領域重點研究得是如何擴展計算機系統的功能和發揮計算機系統在各學科、各類工程、人類生活和工作中的作用。
計算機應用技術是計算機科學與技術專業下設的一個二級學科,是一應用十分廣泛的專業,它以計算機基本理論為基礎,突出計算機和網路的實際應用。
計算機科學與技術培養具有良好的道德與修養,遵守法律法規,具有社會和環境意識,掌握數學與自然科學基枯擾礎知識以及與計算系統相關的基本理論、基本知識、基本技能和基本方法。
該專業畢業生就業面寬、就業前景可觀,能夠在網路通信類科研院所毀敗悶、政府機構、銀行、電力企業、計算機網路公司、通信公司等各類企纖彎事業單位從事計算機網路的科學研究、系統設計、系統防護、系統管理與維護和應用計算機科學與技術學科的系統開發、設計和系統集成等工作。
專業老師在線權威答疑 zy.offercoming.com❺ 程序員客棧app裡面的人是真的嗎
是真的,程序員客棧匯聚了全球優秀華人程序員。我們通過履歷、作品、專業社區影響力、技能幫助程序員立體地展現成就,不被簡歷束縛,讓收入、機遇和夥伴主動來找您。
遠程工作
程序員客棧是遠程工作開創者,企業的遠程技術中心:僱傭BAT級別開發者; 24個小時內啟動項目;成功率翻倍,開發成本減半。
短期僱傭
通過程序員客棧短期僱傭程序員遠程、駐場工作,補齊緊缺人力,順利高質且低成本完成工作目標。
❻ 美歐的程序員不常加班嗎為什麼
現在國內程序員幾乎成為了加班的代名詞,但歐美的程序員瘋狂加班的相對比較少,對於這一點倒是有這種感受,之前曾經外企工作過一段時間對這種有類似的感受,講一個真實發生的事情,曾經和美國總部的程序員一起合作做一個項目,由於項目的周期趕得很緊,周末去加班,結果需要配合的美國程序員的加班申請沒有被批准下來,只好在自家院子里修柵欄種菜,這種情況在國內幾乎是不可能發生的,項目趕得緊加班加點是常有的事情,而且默認是不存在什麼加班費之類 ,項目緊急狀態下也會默認自動加班。
由於當時入行不到兩年,非常不理解,還去找項目負責人說到這個事情,最後這個事情也就不了了之,其實這也反映了中國和美國上的差異,在國內做程序員拿的工資比普通的工種還是要多很多,但在美國這種差異不是很大,主要是各行業整體來講已經比較成熟,即使環衛工作也算正式的工作,各種保險也是正常給上著,整體來講不同職業的收入差異不像國內的那麼大,在歐美正式的工作加班就需要支付加班費,一般情況下不提倡通過加班來完成任務。
就本質而言中國的軟體行業相比歐美還是存在較大的差距,在迎頭趕上的階段加班加點也算是正常事件,再加上國內互聯網進行的如火如荼,這也是難得在互聯網領域趕超歐美的一個好機會,又把程序員加班的氣氛帶動了一番。
為什麼歐美程序員加班比國內程序員少一些?
1.相比來講歐美的產業更加成熟一些,加班基本上都會配套加班費,在這中國幾乎是不可想像的事情,技術工種和別的工種的工資差異也不是那麼大,所以在歐美找一個正式的工作難度要遠高於國內,所以從公司角度效率主要在上班時間提升,加班基本意味著加班費,需要領導審批,不提倡加班。
2.國外程序員的比例不像國內這么失衡,需求量不是那麼迫切,供需關系沒有那麼緊張,而且大部分公司不提倡加班,加班支出費用比正常上班的工資要高,即使加班風氣很濃的日本,都開始對加班說不了。國內軟體行業相比發達國家在積累方面差距還很大,正是需要迎頭趕上的時期,加班加點也屬於正常現象。
行業成熟了,供需關系平衡了,有底子了加班現象自然就會減少。
去年上半年,一位同事去了德國,仍然是從事程序員的工作,然後給我們講述了他的親身經歷,讓我們羨慕不已。
他們一家三口過去的,孩子已經上小學三四年級,去了德國一個不是很有名的城市,據說華人非常的少。工資在5千歐的樣子(估計也是剛過去的原因),不過還要交各類保險,稅後多少我也記得不是很清楚。
讓我印象最為深刻的是,這位同事去了沒多久,媳婦兒就懷了二胎了,於是震撼的消息來了,他現在可以一周只去單位兩天,而且工資不變,其餘時間可以照顧媳婦兒,直到孩子出生或到一定的年齡(有點兒像我們的陪產假,不過人家的陪產假非常長)。大兒子上學自己只需要繳納一點點錢,據他說等老二出生之後,不僅沒什麼開銷,而且每月還有幾百歐的補助。
那麼歐美程序員真的不用加班么?且聽我下面的分析:
最近新東方年會的一個節目火了,歌詞用到程序員身上,也是恰到好處。
「幹活的累死累活,有成果那又如何,到頭來干不過寫PPT的」
「只會為老闆的朋友圈高歌,領導隨口一說,立刻討好跟著,項目馬上啟動不計後果」
說的太好了,我都不禁起立鼓掌了。
我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。
相比於國內動則 996,227 的超強度工作,歐美的程序員是沒有這么誇張的。但不代表歐美程序員就不加班。
本人工作隸屬一世界五百強外企,剛剛帶隊完成了一個大型的IT系統上線項目。涉及到近百人的項目團隊,其中大部分程序員、業務分析師都是老外,有幾個外部關聯的系統是從美國購買的,所有的程序員都是美國人。
我在中國,所以和美國東部有十二小時的時差,這時候無論中國或者美國的項目團隊,都得加班,否則時間上湊不到一塊兒。
要麼美國人早上5-6點就到公司上班,要麼中國人晚上6-7點繼續加班,或者反過來。當然,美國人是不怕起得早的,很多人為了早下班,寧可早上5-6點就到公司上班了,這樣可以下午4點多就下班回家接孩子或者happy,這點跟中國人相反,中國人很少願意早上5-6點就來公司上班。
就算是這樣,我們在項目非常緊張的時候,也給美國的供應商下了死命令,就是中國人在做系統切換的期間(一周),美國人方面的程序員必須按照 中國的工作時間 同步,也就是他們晚上9點到早上9點之間必須隨時待命,這對他們來說是不折不扣的加班。
美國人也沒說啥啊,錢給到位了,還是乖乖的加班了啊。
歐美的程序員,能吃苦的還是很能吃苦的,但是混子也多,一個電話就能分辨出來,對於那些一上來就推三阻四各種繞的程序員,我通常做法就是 一次容忍、二次警告、三次請你走人 。
畢竟上百人的大項目,我沒這個時間和義務來教育你如何做好你的工作。
當然,歐美畢竟還是要輕松一些,很多人給你加班一周之後把任務完成了,是說什麼都要去休假的,只是這時候如果你還非要在他休假的時候去騷擾他,他也會毫不客氣的拒絕甚至立刻投訴的。
只能說,歐美人相對守規則一些,把私人時間看得更重要一些,但不代表他們完全拒絕加班,或者說不願意加班。
希望我們國內的公司,也能多一些這樣的契約精神,不要天天搞什麼「狼性文化」,把員工都榨幹了,最後也不過是涸澤而漁罷了!
國內It最大的問題是許多公司的it從業者素質不高:領導自己對問題都沒徹底清楚。提需求的人沒有成本,無止境地提不靠譜的需求。碼農自己開發時也圖快,代碼極粗糙,連自己都覺得寫的是shi,同時也提高了系統的風險(不少跨專業報名培訓學校,培訓幾個月直接上崗,別指望他們懂更多)總之就是,leader很忙,產品很忙,碼農很忙,測試很忙,就是這樣的惡性循環。
我在美國做程序員第二個年頭了。在剛畢業那會,我會說,放屁!誰說美國程序員不加班,有deadline或出bug的時候都一樣都會加班。
但是後來…好吧,我發現我錯了。在我了解了996之後,好吧,我覺得美國那不叫加班
推薦你看浪潮之巔這本書,就講了上世界美國it行業的發展。
怎麼說呢,歐美的程序員肯定還是會加班的,只不過不像中國企業這么嚴重,這么普遍。
首先明確一點,歐美IT企業加班少,並不是不需要加班。歐美IT企業加班的需求也是非常高的。
但是為啥程序員還是加班少呢。
第一個 原因就是工會
其實中國和美國法律都一樣,都是規定每天8小時工作制。加班需要付加班工資。
但是美國之所以企業不敢越雷池,主要是有一個逆天的工會存在。美國工會強大到誰都敢懟,美國就發生過警察工會發動警察罷工的事情。警察的僱主是政府,工會政府都敢對著干,還怕你個小小的IT企業?
所以,如果一旦加班弄到員工都不滿意,工會真心能讓你吃不了兜著走。讓你再也招不到人都不是問題。
第二 就是美國程序員工資高
如果企業實在忙,要求員工加班,那就必須付高額的加班費。這個實在是肉疼啊,一般來說企業是承受不了的。
那企業不給行不行?恐怕法院會讓你長記性,美國加州某個企業曾經就因為加班,被法院判賠償了1.7億美元。這么一來,誰敢不給加班費。
有的人問了,你不是前面說美國IT企業加班需求也是很大的,那怎麼辦。
是的,任何一個IT企業都有大量的加班需求,但歐美企業又不能強迫員工加班,於是他們想出了幾個辦法。
一 勾引員工自願加班
別笑,這是真的,你現在如果去美國矽谷,一定能看到很多程序員在加班,但是基本上都是自願。
我不是在胡說八道,歐美IT企業勾引程序員加班有很多詔
彈性上班時間
早上不要求你按時到,你自己自由安排上班時間,不知不覺就加了幾個小時班。這是很有效的勾引程序員加班的手段。
用辦公環境來勾引
我們來看一下:
微軟的辦公環境
谷歌的辦公環境
休息倉
你們以為企業給程序員弄這么好的辦公環境是為啥?谷歌甚至還給提供免費理發!這個不是企業錢多燒的,只有一個目的,勾引你加班。
我覺得在這種環境下,員工不自覺的就自願加了好多班。
第二 外包
如果勾引來勾引去,程序員還是不來加班呢?或者小企業,根本沒有谷歌微軟這么好的環境,怎麼辦呢?
這種情況下,美國IT企業會把做不完的活外包給程序員工資相對低的地區,那就是中國和印度了。
中國和印度,法律對加班管的不嚴,程序員工資低,於是美國很多公司都喜歡把活交給中國和印度來干。
我們中國企業就比較慘了,沒辦法再外包了,非洲,中東這些地區根本就沒有多少IT人才。只能自己幹了,反正象徵性的給點加班費就行了,成本也不高。
美歐的程序員不常加班嗎?為什麼?個人認為這是環境決定的,現今國內各行各業都是這樣加班加點幹事情,看看有多少民營私營企業有周六的,每天能夠准時下班的就明白了。良心點兒的企業還給你算加班,有些企業就明確說一周只休息一天,想干就干不想干雙方不再見。
而國內程序員這個職業加班更甚。絕大部分的軟體、互聯網公司基本都是民營私營公司,而且又得趕工期、節約成本,那就只有逼著程序員加班了。雖然看起來名為高工資,可實際上算下來單位時間的工資並不一定比早九晚五的企業高多少。每天10幾個小時,有時周六周日都在加班,這種還是常有的事不稀奇。甚至有些公司明確說明,我們給的工資較高,沒有加班費甚至也沒有換休,干就干不幹拉倒。
而這一切也源於我們的工作生活環境造成,還有相關的法律規定是否執行到位,是否有人來監督,是否有地方去申訴。另外整體收入較低的情況下,大部分程序員為了那份收入與那個職位,也就默認被壓榨而不出聲。你出聲可以,那就另謀高就吧。特別是現在程序員供過於求,更是很多企業毫無顧忌這樣搞。企業為了追逐利益最大化,加班是一種很常用的手段,而且還不用付出什麼成本。
在歐美,市場及管理相對較成熟,程序員與其它行業一樣就是個普通的職位。在整體大環境下不提倡加班,有人監督有投訴地方,自己不願意加班那就不能被逼加班,否則可能被投訴被訴訟,企業會吃虧。所以在做項目計劃時,一般會按照正常工作時間進行詳細預算計劃工作量,如果真正完不成還有可能進行協商,重新預算工作量。不像我們很多企業,有時連周六周日都有可能給你計劃上工作量,完不成?要麼說你能力不行走人,要麼自己往死里加班都要完成工作量,美其名曰為了達到客戶期望一定要保證交貨期。
企業說,不願加班?那就到歐美去吧。
更多分享及互動,歡迎點擊右上角關注【東風高揚】。
這個問題是多方面的,如果了解國內一線外企的工作狀態,可能就很好理解了。
一方面,外企的工作是以效率為導向的,形式化的東西非常少,硬性的規定非常少,從教育上,歐美國家就主張創造性和自主性,更加主張思維獨立和創造性思維。所以在一些矽谷的大企業中,一個普通員工也可以提出一個想法,而一旦被採納,這個項目就可以推進執行。你會發現他們的溝通效率很高,工作效率很高,信息流通性很好,而且員工所在的環境十分自由,可以以自己最舒適的狀態工作。這其實就是 以做事為目的,以效率為導向。
而中國的本土企業習慣了所謂的「管理」,從教育上培養的是應試教育,從小教導要聽大人話,要聽老師話,要聽領導話。卻很少鼓勵學生提出自己的問題和質疑,限制了孩子的創造性思維。等進入了企業以後,官僚氣息嚴重,形式主義嚴重,基層員工完全沒有話語權,埋頭苦幹受累背鍋,領導一句話沒活兒也得加班。
然後就是找一群留學海外,有想法的人,帶著一群本土畢業沒想法的人做事,其實大家都很難受。
第二方面,即便有些時候工作真的做不完,你想加班,在外企也不一定加的成。加班需要申請,因為超過上班時間公司需要嚴格按照加班標准支付薪酬,而一般在國外,加班要支付的加班費非常高。
所以除非十萬火急,國外大部分企業是不可能讓員工加班的,各種法律條文保護勞動者不是開玩笑的,不遵守分分鍾告到你哭。
第三方面,有很多西方人,即便你給他高額的加班費他也不想加班。很多人說中國是最勤勞的民族不是開玩笑的,我們接受著勤勞致富的教育,也確實做著勤勞致富的事情。國內互聯網行業所謂的高工資都是以瘋狂加班為代價的,就這還有多少人削尖了腦袋想進入這個行業,估計在西方人眼中很難理解。
外國人大部分沒那麼勤勞,喜歡享受時光,這跟發達國家本身富裕是分不開的,他們的生存壓力沒那麼大,不太用擔心沒飯吃,所以窮人很多都不願意為了錢而賣命,更別提有知識有學歷的高級人才了。
動輒好幾周去海島度個假的國家人民,怎麼能理解我過有年假都沒法放的痛苦。
美歐不光程序員不經常加班,從管理到基層員工也都不經常加班,因為第一,人工昂貴;第二,勞動法嚴格,加班要付昂貴的加班工資,不付被舉報的話企業要被巨額罰款,所以企業方方面面都高效做事。一個產品,從設計方案開始就講究個環節的完善,實際開始製作的時候各部門要高度同步與協調。各項工作的計劃都是提前一年來安排時間表(這也是生產環節外發海外逼出來的傳統),很少有像我們這里8月開的大會7月才開始各類訂制與協調,各項制度不完善,高管大會摔話筒的事發生。領導也不會今天臨時腦袋一拍在產品里加個功能,明天再取消另一個功能,然後讓員工日趕夜趕。西方的工作看起來節奏很慢,但是實際效率很高;我們的生活工作看起來節奏快,從領導到員工都很勤奮,但是實際效率很低,一個環節可能重復做五六次。其實西方各大公司的操作才是「計劃經濟」,我們的是「野蠻的橫沖直撞經濟」。這跟整個民族的文化氣氛與勞動力訓練方式有關,也就是教育有關。東西方教育的差距,不僅僅是 科技 成果的差距,還是教育的另一個成果,勞動力素質的差距。
❼ 程序員為什麼要學深度學習
費良宏:程序員為什麼要學深度學習?
深度學習本身是一個非常龐大的知識體系。本文更多想從程序員的視角出發,讓大家觀察一下深度學習對程序員意味著什麼,以及我們如何利用這樣一個高速發展的學科,來幫助程序員提升軟體開發的能力。
本文根據費良宏在2016QCon全球軟體開發大會(上海)上的演講整理而成。
前言
1973年,美國上映了一部熱門的科幻電影《WestWorld》,三年之後又有一個續集叫做《FutureWorld》。這部電影在80年代初被引進到中國叫《未來世界》。那部電影對我來講簡直可以說得上是震撼。影片中出現了很多機器人,表情豐富的面部下面都是集成電路板。這讓那時候的我覺得未來世界都是那麼遙遠、那麼神秘。
時間到了2016年,很多朋友可能都在追看HBO斥巨資拍攝的同一題材的系列劇《WestWorld》。如果前兩部電影還是局限在機器人、人工智慧這樣的話題,2016年的新劇則在劇情和人工智慧的思考方面有了很大的突破。不再渲染機器人是否會威脅到人類,而是在探討「Dreamsaremainlymemories」這一類更具哲理的問題。
「記憶究竟如何影響了智能」這個話題非常值得我們去思考,也給我們一個很好的啟示——今天,人工智慧領域究竟有了怎樣的發展和進步。
今天我們探討的話題不僅僅是簡單的人工智慧。如果大家對深度學習感興趣,我相信各位一定會在搜索引擎上搜索過類似相關的關鍵字。我在Google上以deeplearning作為關鍵字得到了2,630萬個搜索的結果。這個數字比一周之前足足多出了300多萬的結果。這個數字足以看得出來深度學習相關的內容發展的速度,人們對深度學習的關注也越來越高。
從另外的一個角度,我想讓大家看看深度學習在市場上究竟有多麼熱門。從2011年到現在一共有140多家專注人工智慧、深度學習相關的創業公司被收購。僅僅在2016年這種並購就發生了40多起。
其中最瘋狂的是就是Google,已經收購了 11 家人工智慧創業公司,其中最有名的就是擊敗了李世石九段的 DeepMind。排名之後的就要數 Apple、Intel以及Twitter。以Intel 公司為例,僅在今年就已經收購了 3 家創業公司,Itseez、Nervana 和 Movidius。這一系列大手筆的並購為了布局人工智慧以及深度學習的領域。
當我們去搜索深度學習話題的時候,經常會看到這樣的一些晦澀難懂的術語:Gradient descent(梯度下降演算法)、Backpropagation(反向傳播演算法)、Convolutional Neural Network(卷積神經網路)、受限玻耳茲曼機(Restricted Boltzmann Machine)等。
如打開任何一篇技術文章,你看到的通篇都是各種數學公式。大家看到如下左邊的圖,其實並不是一篇高水準的學術論文,而僅僅是維基網路關於玻耳茲曼機的介紹。維基網路是科普層面的內容,內容復雜程度就超過了大多數數學知識的能力。
在這樣的背景之下,我今天的的話題可以歸納成三點:第一,我們為什麼要學習深度學習;第二,深度學習最核心的關鍵概念就是神經網路,那麼究竟什麼是神經網路;第三,作為程序員,當我們想要成為深度學習開發者的時候,我們需要具備怎樣的工具箱,以及從哪裡著手進行開發。
為什麼要學習深度學習
首先,我們談談為什麼要學習深度學習。在這個市場當中,最不缺乏的就是各種概念以及各種時髦新技術的詞彙。深度學習有什麼不一樣的地方?我非常喜歡AndrewNg(吳恩達)曾經用過的一個比喻。
他把深度學習比喻成一個火箭。這個火箭有一個最重要的部分,就是它的引擎,目前來看在這個領域裡面,引擎的核心就是神經網路。大家都知道,火箭除了引擎之外還需要有燃料,那麼大數據其實就構成了整個火箭另外的重要組成部分——燃料。以往我們談到大數據的時候,更多是強調存儲和管理數據的能力,但是這些方法和工具更多是對於以往歷史數據的統計、匯總。
而對於今後未知的東西,這些傳統的方法並不能夠幫助我們可以從大數據中得出預測的結論。如果考慮到神經網路和大數據結合,我們才可能看清楚大數據真正的價值和意義。AndrewNg就曾經說過「我們相信(神經網路代表的深度學習)是讓我們獲得最接近於人工智慧的捷徑」。這就是我們要學習深度學習的一個最重要的原因。
其次,隨著我們進行數據處理以及運算能力的不斷提升,深度學習所代表的人工智慧技術和傳統意義上人工智慧技術比較起來,在性能上有了突飛猛進的發展。這主要得益於在過去幾十間計算機和相關產業不斷發展帶來的成果。在人工智慧的領域,性能是我們選擇深度學習另一個重要的原因。
這是一段Nvidia在今年公布的關於深度學習在無人駕駛領域應用的視頻。我們可以看到,將深度學習應用在自動駕駛方面,僅僅經歷了3千英里的訓練,就可以達到什麼樣的程度。在今年年初進行的實驗上,這個系統還不具備真正智能能力,經常會出現各種各樣的讓人提心吊膽的狀況,甚至在某些情況下還需要人工干預。
但經過了3千英里的訓練之後,我們看到在山路、公路、泥地等各種復雜的路況下面,無人駕駛已經有了一個非常驚人的表現。請大家注意,這個深度學習的模型只經過了短短幾個月、3千英里的訓練。
如果我們不斷完善這種模型的話,這種處理能力將會變得何等的強大。這個場景裡面最重要的技術無疑就是深度學習。我們可以得出一個結論:深度學習可以為我們提供強大的能力,如果程序員擁有了這個技術的話,無異於會讓每個程序員如虎添翼。
神經網路快速入門
如果我們對於學習深度學習沒有任何疑慮的話,接下來就一定會關心我需要掌握什麼樣的知識才能讓我進入到這個領域。這裡面最重要的關鍵技術就是「神經網路」。說起「神經網路」,容易混淆是這樣兩個完全不同的概念。
一個是生物學神經網路,第二個才是我們今天要談起的人工智慧神經網路。可能在座的各位有朋友在從事人工智慧方面的工作。當你向他請教神經網路的時候,他會拋出許多陌生的概念和術語讓你聽起來雲里霧里,而你只能望而卻步了。
對於人工智慧神經網路這個概念,大多數的程序員都會覺得距離自己有很大的距離。因為很難有人願意花時間跟你分享神經網路的本質究竟是什麼。而你從書本上讀的到的理論和概念,也很讓你找到一個清晰、簡單的結論。
今天就我們來看一看,從程序員角度出發神經網路究竟是什麼。我第一次知道神經網路這個概念是通過一部電影——1991年上映的《終結者2》。男主角施瓦辛格有一句台詞:
「MyCPUisaneural-netprocessor;alearningcomputer.」(我的處理器是一個神經處理單元,它是一台可以學習的計算機)。從歷史來看人類對自身智力的探索,遠遠早於對於神經網路的研究。
1852年,義大利學者因為一個偶然的失誤,將人類的頭顱掉到硝酸鹽溶液中,從而獲得第一次通過肉眼關注神經網路的機會。這個意外加速了對人類智力奧秘的探索,開啟了人工智慧、神經元這樣概念的發展。
生物神經網路這個概念的發展,和今天我們談的神經網路有什麼關系嗎?我們今天談到的神經網路,除了在部分名詞上借鑒了生物學神經網路之外,跟生物學神經網路已經沒有任何關系,它已經完全是數學和計算機領域的概念,這也是人工智慧發展成熟的標志。這點大家要區分開,不要把生物神經網路跟我們今天談到的人工智慧有任何的混淆。
90年代中期,由Vapnik等人提出了支持向量機演算法(Support Vector Machines,支持向量機)。很快這個演算法就在很多方面體現出了對比神經網路的巨大優勢,例如:無需調參、高效率、全局最優解等。基於這些理由,SVM演算法迅速打敗了神經網路演算法成為那個時期的主流。而神經網路的研究則再次陷入了冰河期。
在被人摒棄的十年裡面,有幾個學者仍然在堅持研究。其中很重要的一個人就是加拿大多倫多大學的Geoffery Hinton教授。2006年,他的在著名的《Science》雜志上發表了論文,首次提出了「深度信念網路」的概念。
與傳統的訓練方式不同,「深度信念網路」有一個「預訓練」(pre-training)的過程,這可以方便的讓神經網路中的權值找到一個接近最優解的值,之後再使用「微調」(fine-tuning)技術來對整個網路進行優化訓練。這兩個技術的運用大幅度減少了訓練多層神經網路的時間。在他的論文裡面,他給多層神經網路相關的學習方法賦予了一個新名詞— 「深度學習」。
很快,深度學習在語音識別領域嶄露頭角。接著在2012年,深度學習技術又在圖像識別領域大展拳腳。Hinton與他的學生在ImageNet競賽中,用多層的卷積神經網路成功地對包含一千個類別的一百萬張圖片進行了訓練,取得了分類錯誤率15%的好成績,這個成績比第二名高了將近11個百分點。
這個結果充分證明了多層神經網路識別效果的優越性。從那時起,深度學習就開啟了新的一段黃金時期。我們看到今天深度學習和神經網路的火熱發展,就是從那個時候開始引爆的。
利用神經網路構建分類器,這個神經網路的結構是怎樣的?
其實這個結構非常簡單,我們看到這個圖就是簡單神經網路的示意圖。神經網路本質上就是一種「有向圖」。圖上的每個節點借用了生物學的術語就有了一個新的名詞 – 「神經元」。連接神經元的具有指向性的連線(有向弧)則被看作是「神經」。這這個圖上神經元並不是最重要的,最重要的是連接神經元的神經。每個神經部分有指向性,每一個神經元會指向下一層的節點。
節點是分層的,每個節點指向上一層節點。同層節點沒有連接,並且不能越過上一層節點。每個弧上有一個值,我們通常稱之為」權重「。通過權重就可以有一個公式計算出它們所指的節點的值。這個權重值是多少?我們是通過訓練得出結果。它們的初始賦值往往通過隨機數開始,然後訓練得到的最逼近真實值的結果作為模型,並可以被反復使用。這個結果就是我們說的訓練過的分類器。
節點分成輸入節點和輸出節點,中間稱為隱層。簡單來說,我們有數據輸入項,中間不同的多個層次的神經網路層次,就是我們說的隱層。之所以在這樣稱呼,因為對我們來講這些層次是不可見的。輸出結果也被稱作輸出節點,輸出節點是有限的數量,輸入節點也是有限數量,隱層是我們可以設計的模型部分,這就是最簡單的神經網路概念。
如果簡單做一個簡單的類比,我想用四層神經網路做一個解釋。左邊是輸入節點,我們看到有若干輸入項,這可能代表不同蘋果的RGB值、味道或者其它輸入進來的數據項。中間隱層就是我們設計出來的神經網路,這個網路現在有不同的層次,層次之間權重是我們不斷訓練獲得一個結果。
最後輸出的結果,保存在輸出節點裡面,每一次像一個流向一樣,神經是有一個指向的,通過不同層進行不同的計算。在隱層當中,每一個節點輸入的結果計算之後作為下一層的輸入項,最終結果會保存在輸出節點上,輸出值最接近我們的分類,得到某一個值,就被分成某一類。這就是使用神經網路的簡單概述。
除了從左到右的形式表達的結構圖,還有一種常見的表達形式是從下到上來表示一個神經網路。這時候,輸入層在圖的最下方,輸出層則在圖的最上方。從左到右的表達形式以AndrewNg和LeCun的文獻使用較多。而在Caffe框架里則使用的則是從下到上的表達。
簡單來說,神經網路並不神秘,它就是有像圖,利用圖的處理能力幫助我們對特徵的提取和學習的過程。2006年Hinton的那篇著名的論文中,將深度學習總結成三個最重要的要素:計算、數據、模型。有了這三點,就可以實現一個深度學習的系統。
程序員需要的工具箱
對於程序員來說,掌握理論知識是為了更好的編程實踐。那就讓我們看看,對於程序員來說,著手深度學習的實踐需要准備什麼樣的工具。
硬體
從硬體來講,我們可能需要的計算能力,首先想到的就是CPU。除了通常的CPU架構以外,還出現了附加有乘法器的CPU,用以提升計算能力。此外在不同領域會有DSP的應用場景,比如手寫體識別、語音識別、等使用的專用的信號處理器。還有一類就是GPU,這是一個目前深度學習應用比較熱門的領域。最後一類就是FPGA(可編程邏輯門陣列)。
這四種方法各有其優缺點,每種產品會有很大的差異。相比較而言CPU雖然運算能力弱一些,但是擅長管理和調度,比如讀取數據,管理文件,人機交互等,工具也豐富。DSP相比而言管理能力較弱,但是強化了特定的運算能力。
這兩者都是靠高主頻來解決運算量的問題,適合有大量遞歸操作以及不便拆分的演算法。GPU的管理能力更弱一些,但是運算能力更強。但由於計算單元數量多,更適合整塊數據進行流處理的演算法。
FPGA在管理與運算處理方面都很強,但是開發周期長,復雜演算法開發難度較大。就實時性來說,FPGA是最高的。單從目前的發展來看,對於普通程序員來說,現實中普遍採用的計算資源就還是是CPU以及GPU的模式,其中GPU是最熱門的領域。
這是我前天為這次分享而准備的一個AWS 上p2的實例。僅僅通過幾條命令就完成了實例的更新、驅動的安裝和環境的設置,總共的資源創建、設置時間大概在10分鍾以內。而之前,我安裝調試前面提到的那台計算機,足足花了我兩天時間。
另外,從成本上還可以做一個對比。p2.8xLarge 實例每小時的費用是7.2美元。而我自己那台計算機總共的花費了是¥16,904元。這個成本足夠讓我使用350多個小時的p2.8xLarge。在一年裡使用AWS深度學習站就可以抵消掉我所有的付出。隨著技術的不斷的升級換代,我可以不斷的升級我的實例,從而可以用有限的成本獲得更大、更多的處理資源。這其實也是雲計算的價值所在。
雲計算和深度學習究竟有什麼關系?今年的8月8號,在IDG網站上發表了一篇文章談到了這個話題。文章中做了這樣一個預言:如果深度學習的並行能力不斷提高,雲計算所提供的處理能力也不斷發展,兩者結合可能會產生新一代的深度學習,將帶來更大影響和沖擊。這是需要大家考慮和重視的一個方向!
軟體
深度學習除了硬體的基礎環境之外。程序員會更關心與開發相關的軟體資源。這里我羅列了一些曾經使用過的軟體框架和工具。
Scikit-learn是最為流行的一個python機器學習庫。它具有如下吸引人的特點:簡單、高效且異常豐富的數據挖掘/數據分析演算法實現; 基於NumPy、SciPy以及matplotlib,從數據探索性分析,數據可視化到演算法實現,整個過程一體化實現;開源,有非常豐富的學習文檔。
Caffe專注在卷及神經網路以及圖像處理。不過Caffe已經很久沒有更新過了。這個框架的一個主要的開發者賈揚清也在今年跳槽去了Google。也許曾經的霸主地位要讓位給他人了。
Theano 是一個非常靈活的Python 機器學習的庫。在研究領域非常流行,使用上非常方便易於定義復雜的模型。Tensorflow 的API 非常類似於Theano。我在今年北京的QCon 大會上也分享過關於Theano 的話題。
Jupyter notebook 是一個很強大的基於ipython的python代碼編輯器,部署在網頁上,可以非常方便的進行互動式的處理,很適合進行演算法研究合數據處理。
Torch 是一個非常出色的機器學習的庫。它是由一個比較小眾的lua語言實現的。但是因為LuaJIT 的使用,程序的效率非常出色。Facebook在人工智慧領域主打Torch,甚至現在推出了自己的升級版框架Torchnet。
深度學習的框架非常之多,是不是有一種亂花漸欲迷人眼的感覺?我今天向各位程序員重點介紹的是將是TensorFlow。這是2015年穀歌推出的開源的面向機器學習的開發框架,這也是Google第二代的深度學習的框架。很多公司都使用了TensorFlow開發了很多有意思的應用,效果很好。
用TensorFlow可以做什麼?答案是它可以應用於回歸模型、神經網路以深度學習這幾個領域。在深度學習方面它集成了分布式表示、卷積神經網路(CNN)、遞歸神經網路(RNN) 以及長短期記憶人工神經網路(Long-Short Term Memory, LSTM)。
關於Tensorflow 首先要理解的概念就是Tensor。在辭典中對於這個詞的定義是張量,是一個可用來表示在一些向量、標量和其他張量之間的線性關系的多線性函數。實際上這個表述很難理解,用我自己的語言解釋Tensor 就是「N維數組」而已。
使用 TensorFlow, 作為程序員必須明白 TensorFlow這樣幾個基礎概念:它使用圖 (Graph) 來表示計算任務;在被稱之為 會話 (Session) 的上下文 (context) 中執行圖;使用 Tensor 表示數據;通過 變數 (Variable) 維護狀態;使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據。
一句話總結就是,TensorFlow 就是有狀態圖的數據流圖計算環境,每個節點就是在做數據操作,然後提供依賴性和指向性,提供完整數據流。
TensorFlow安裝非常簡單,但官網提供下載的安裝包所支持的CUDA 的版本是7.5。考慮到CUDA 8 的讓人心動的新特以及不久就要正式發布的現狀。或許你想會考慮立即體驗CUDA 8,那麼就只能通過編譯Tensorflow源代碼而獲得。目前TensorFlow已經支持了Python2.7、3.3+。
此外,對於使用Python 語言的程序員還需要安裝所需要的一些庫,例如:numpy、protobuf等等。對於卷積處理而言,cuDNN是公認的性能最好的開發庫,請一定要安裝上。常規的Tensorsorflow的安裝很簡單,一條命令足矣:
$ pip3 install —upgrade https://storage.233.wiki/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp35-cp35m-linux_x86_64.whl
如果想評估一下或者簡單學習一下,還可以通過Docker進行安裝,安裝的命令如下:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
TensorFlow有很多優點。首先,目前為止,深度學習的開發框架裡面TensorFlow的文檔做的最好,對程序員學習而言是非常好的一點。第二,TensorFlow有豐富的參考實例,作為參考學習起來非常容易。
第三,開發者社區活躍,在任何一個深度學習的社區里,都有大量關於TensorFlow的討論。第四,谷歌的支持力度非常大,從2015年到現在升級速度非常快,這是其他開源框架遠遠達不到的結果。
參考TensorFlow的白皮書,我們會看到未來TensorFlow還將會有巨大的發展潛力。讓我特別感興趣是這兩個方向。第一,支持跨多台機器的 parallelisation。盡管在0.8版本中推出了並行化的能力,但是目前還不完善。隨著未來不斷發展,依託雲計算的處理能力的提升這個特性將是非常讓人振奮的。
第二,支持更多的開發語言,對於開發者來說這是一個絕大的利好,通過使用自己擅長的語言使用TensorFlow應用。這些開發語言將會擴展到Java、Lua以及R 等。
在這里我想給大家展示一個應用Tensorflow 的例子。這個例子的代碼託管在這個網址上 https://github.com/anishathalye/neural-style。白俄羅斯的現代印象派藝術家Leonid Afremov善於用濃墨重彩來表現都市和風景題材,尤其是其雨景系列作品。他習慣用大色塊的鋪陳來營造光影效果,對反光物體和環境色的把握非常精準。
於是我就找到了一張上海東方明珠電視塔的一張攝影作品,我希望通過Tensorflow 去學習一下Leonid Afremov 的繪畫風格,並將這張東方明珠的照片處理成那種光影色彩豐富的作品風格。利用Tensorflow 以及上面提到的那個項目的代碼,在一個AWS 的p2類型的實例上進行了一個一千次的迭代,於是就得到了下圖這樣的處理結果。
這個處理的代碼只有350行里,模型使用了一個成名於2014年ImageNet比賽中的明星 VGG。這個模型非常好,特點就是「go depper」。
TensorFlow 做出這樣的作品,並不僅僅作為娛樂供大家一笑,還可以做更多有意思的事情。將剛才的處理能力推廣到視頻當中,就可以看到下圖這樣的效果,用梵高著名的作品」星月夜「的風格就加工成了這樣新的視頻風格。
可以想像一下,如果這種處理能力在更多領域得以應用,它會產生什麼樣的神奇結果?前景是美好的,讓我們有無限遐想。事實上我們目前所從事的很多領域的應用開發都可以通過使用神經網路和深度學習來加以改變。對於深度學習而言,掌握它並不是難事。每一個程序員都可以很容易的掌握這種技術,利用所具備的資源,讓我們很快成為深度學習的程序開發人員。
結束語
未來究竟是什麼樣,我們沒有辦法預言。有位作家Ray Kurzweil在2005年寫了《奇點臨近》一書。在這本書裡面他明確告訴我們,那個時代很快到來。作為那個時代曙光前的人群,我們是不是有能力加速這個過程,利用我們學習的能力實現這個夢想呢?
中國人工智慧的發展
人工智慧的時代無疑已經到來,這個時代需要的當然就是掌握了人工智慧並將其解決具體問題的工程師。坦率的說,市場上這一類的工程師還屬於鳳毛麟角。職場上的薪酬待遇可以看得出來這樣的工程師的搶手的程度。人工智慧這門學科發展到今天,就學術自身而言已經具備了大規模產業化的能力。
所以說,對於工程師而言當務之急就是盡快的掌握應用人工智慧的應用技術。當下在互聯網上關於人工智慧的學習資料可以說已經是「汗牛充棟」,那些具備了快速學習能力的工程師一定會在人工智慧的大潮當中脫穎而出。
中國發展人工智慧產業的環境已經具備。無論從創業環境、人員的素質乃至市場的機遇而言完全具備了產生產業變革的一切條件。與美國相比較,在人工智慧的許多領域中國團隊的表現也可以說是不逞多讓。就人工智慧的技術層面而言,中國的工程師與全球最好的技術團隊正處於同一個起跑線上。
時不我待,中國的工程師是有機會在這個領域大展身手的。不過值得注意的是,要切忌兩點:一是好高騖遠,盲目與國外攀比。畢竟積累有長短,術業有專攻,我們要立足於已有的積累,尋求逐步的突破。二是一擁而上,盲目追求市場的風口。人工智慧的工程化需要大量的基礎性的積累,並非一蹴而就簡單復制就可以成功。
中國的科研技術人員在人工智慧領域的成就有目共睹。在王詠剛的一篇文章裡面,他統計了從2013年到2015年SCI收錄的「深度學習」論文,中國在2014年和2015年超已經超過了美國居於領跑者的位置。
另外一讓我感到驚訝的事情,Google的JeffDean在2016年發表過一篇名為《TensorFlow:Asystemforlarge-scalemachinelearning》的論文。文章的22個作者裡面,明顯是中國名字的作者占已經到了1/5。如果要列舉中國人/華人在人工智慧領域里的大牛,吳恩達、孫劍、楊強、黃廣斌、馬毅、張大鵬……很容易就可以說出一大串。
對於中國來說目前的當務之急是人工智慧技術的產業化,唯有如此我們才可以講科研/智力領域的優勢轉化為整體的、全面的優勢。在這一點上,中國是全球最大的消費市場以及製造業強國,我們完全有機會藉助市場的優勢成為這個領域的領先者。
矽谷創新企業
矽谷雖然去過許多回,但一直無緣在那裡長期工作。在人工智慧領域的市場我們聽到的更多是圍繞Google、Apple、Intel、Amazon這樣的一些大型科技公司的一舉一動。但是在美國市場上還有一大批小型的創業企業在人工智慧這個領域有驚艷的表現。僅以矽谷區域的公司為例:
Captricity,提供了手寫數據的信息提取;
VIVLab,針對語音識別開發了虛擬助手服務;
TERADEEP,利用FPGA提供了高效的卷積神經網路的方案;
還有提供無人駕駛解決方案的NetraDyne。
這個名單還可以很長,還有許許多多正在利用人工智慧技術試圖去創造歷史的團隊正在打造他們的夢想。這些團隊以及他們正在專注的領域是值得我們去學習和體會的。