Quantcast
Channel: 工程師 – TechOrange
Viewing all 585 articles
Browse latest View live

工程師揭秘滴滴出行演算法!為什麼你叫車總是叫到比較遠的那一台?

$
0
0

【為什麼我們要挑選這篇文章】共享租車配對車輛絕非哪台車離用戶最近,就直接進行配對。這其實在某些狀況下,是沒效率的作法。

滴滴出行工程師拍影片解釋,中國最大共享租車軟體之一,是如何演算出最適合所有人的匹配模式。(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

滴滴出行(以下簡稱滴滴)現在成為了中國乘客的日常通勤工具。但它是怎麼派單的?為什麼明明附近就有車,滴滴卻給人派了更遠的車?一直以來,司機和乘客都對滴滴的派單方法表示不解。最近,滴滴內部工程師錄了個影片,講述了滴滴的派單模式。

破除迷思:滴滴出行怎麼常叫到「距離遠」的車?

當用戶叫車時,往往都希望叫到離自己最近的司機。滴滴工程師也表示,為乘客叫就近的車也是滴滴派單的最大原則。每 1.5 — 2  秒,滴滴會為乘客尋找周圍實際離乘客出發地距離最短、花費時間最少的車輛。目前,滴滴平台上 90%  訂單的派單距離都不超過  公里。

但乘客有時還會感覺到滴滴派了一個較遠的車。滴滴工程師解釋了其中的原因。一種情況是,乘客叫車時遇上了節假日、上下班高峰期、特殊天氣等叫車需求較多的時候,他/她附近  公里的車已經都被別人提前叫走了。這個時候,滴滴也只能從遠處給乘客叫來一個距離更遠的車。

運用賽局理論,找出車人匹配「最優解」

另外一種情況是,滴滴採用了「全局最優模式」。採用這種方式雖然讓更多的人叫到了車,但對於個別乘客來說,就不一定被派了一輛離自己最近的車。

在通勤場景中,車輛是高速移動的,乘客和司機的相對位置一直在實時變動。滴滴派單時會綜合考慮周邊的實時供需信息,同時還會基於歷史數據對未來做出預測,結合兩方面的信息來搜索所有可能的司乘匹配,然後找出來對當前和未來最優的方式。這種派單方式被稱之為「全局最優」。為了讓大家更直觀的瞭解這個情況,在影片里,滴滴工程師舉了個例子:

場景解決方案一:就近分配車輛

在上圖的情況下,如果滴滴就近分配車輛,雖然  號乘客能夠乘坐  號車輛快速出發,但  號乘客則需要等待  號車輛一段時間才能成功上車。在日常生活中, 號乘客甚至還可能因為  號車輛距離自己較遠出現叫不到車的情況。

場景解決方案二:根據所有乘客需求 協調分配車輛

所以,出現這個問題時,滴滴會嘗試通過其他的叫車方案,讓  號乘客和  號乘客都享受到更短的等待時間。比如:把  號車輛分配給  號乘客,讓  號車輛去接  號乘客。

這個時候,儘管  號乘客的等待時間多了  分鐘,但是  號乘客的等待時間卻足足減少了  分鐘,兩個人的總等待時長縮短了  分鐘。用了這種模式,在叫車比較緊張的情況下能夠更好的保障更多的乘客順利打上車。

每分鐘處理破 6 萬訂單,每秒匹配上千用戶

現在,滴滴每天為乘客匹配千萬量級的通勤訂單。在高峰期時,滴滴每分鐘要處理超過  萬的叫車訂單,每  秒計算就要匹配成百上千的乘客和司機。目前滴滴對車輛的分配模式每天能夠幫助平台上的司機與乘客節省共 30  萬小時的通勤時間。

滴滴發展不過  年,成為了眾多乘客的日常通勤工具。但和眾多的網路公司一樣,數據和演算法和背後的邏輯並不為公眾所知,因此也產生很多誤解。通過影片等方式來解答疑惑, 也是滴滴推進對外溝通透明化的一個方式。

最近,滴滴在嘗試通過更透明的溝通來重獲公眾信任。為了更加透明公開,滴滴還推出過公眾評議會和有問必答平台,廣泛徵求用戶意見以及正面回復用戶的關心的問題。開放、透明才是消除公眾誤解的最好的辦法。

品玩原文內有影片: 傳送門

(本文經合作夥伴 品玩 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈算法工程师揭秘滴滴派单模式:每日帮助司乘节省 30 万小时 〉。)

延伸閱讀

中國共乘巨頭「滴滴打車」再爆姦殺案,對司機把關的漠視成幫兇

川普策士葉望輝:蔡政府對新創外資不友善,Uber 爭議阻礙美台經濟對話

中國不用現金的行動支付,是給「外國人」的專屬歧視

緊咬 Uber,傳滴滴打車也要揮軍來台加入叫車市場


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

6 週練出血洗星海爭霸的超強 AI!DeepMind 推出簡單、好學的機器學習新手菜單

$
0
0

【為什麼我們要挑選這篇文章】機器學習免費資源又來了。曾訓練 AI 在星海爭霸血洗玩家的 DeepMind 將公開訓練內容,也會從基礎開始傳授機器學習重點知識。這麼棒的機器學習課程,各位工程師們還不趕快存起來~(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

今天,文摘菌(本文作者)給大家推薦一個絕無僅有的課程,這個課程的特點就是——好玩!

大家都知道,很長時間以來,因為星海爭霸這個遊戲包含非常多的狀態和動作空間,以及只有部分可觀察和多玩家的特點,這個遊戲一直被機器學習界認為是人工智慧的下一個「大挑戰」。

從「星海爭霸」學「機器學習」

於是,一個由澳大利亞開發人員、機器學習工程師和研究人員組成的團隊——StarAi 就 基於星海爭霸開發了一個機器學習課程 ,聽起來就很有趣想學有沒有。

StarAi 團隊成員合照

大多數強化學習課程都是採用高度數學化的方法學習的,但是這個課程使用更加人性化工具——「故事」,來解釋基本的強化學習概念。

不能自己動手創造的東西你是不會明白的,所以課程提供了易於實際操作的練習,與步驟詳解,以幫助學習。

機器學習正在改變世界,台灣該如何把握 AI 關鍵十年,儲備未來戰力?

8/10(六) 【科技報橘 2019 年度論壇】CONNECT 2030 What’s The Future,破解台灣 AI 小國大戰略的重要核心。

只要有 Google 帳號和 Chrome 就能練習

所有練習都在 Google 實驗室中執行,直接在瀏覽器中就可以操作,而與硬體無關。所以你所需要的只是一個 Google 帳號和 Chrome 瀏覽器。

學習的步驟就是先觀看演講材料,然後嘗試進行練習。

當然課程官方就像高中老師一樣,也是要求你在自己實際操作很多遍之後如果還不能解決再看答案,不要直接看答案。

而對於基礎較好的技術人員,如果想深入瞭解的話,課程還提供了 Sutton & Bartos 的優秀教科書《An Introduction for each week’s material》中相關章節的連結。

6 週免費課程:示範影片、PPT 還有練習題

課程一共六周,每一部分都包含影片講解、PPT、課後練習和答案,非常完善,趕緊上手進行學習吧!

課程傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈DeepMind 把之前打星际争霸的强化学习开发了课程,只用浏览器就能学!〉。)

延伸閱讀

成功預言!DeepMind AI 能提早算出未來「一天半」的風力發電總量

【AI 版國定殺戮日】DeepMind 將直播 AI 血洗人類玩家、稱霸《星海爭霸 II》!

DeepMind 之父自曝:每天工作至凌晨 4 點,帶領 400 位博士鞏固 AlphaGo 霸主地位


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

美國工程師自製真實 Iron Man 裝:你以為只是耍帥,其實會飛還能擋子彈!

$
0
0

每個看過鋼鐵人迷,看著鋼鐵人帥氣的飛上天,一定會默默的希望自己有一件鋼鐵裝。如今知名電視節目《流言終結者》的主持人亞當薩維奇(Adam Savage),最近在 Discovery 開了一個《Savage Builds》的新節目,第 1 集他運用自己的工業設計與工程師的背景,在 節目中與專家聯手打造的「鋼鐵裝」馬克 2 號。

Adam Savage 打造真正可以飛又防彈的鋼鐵人盔甲

Adam Savage 找來了 Gravity Industries 公司的理查徳布朗寧(Richard Browning)合作,並且 利用 3D 列印配合鈦合金材質, 印下整個鋼鐵人 Mark II 裝,並在手部配置 4 個推進器加上噴射背包,便能成功在空中盤旋與飛行。

除了飛行外,還 Adam Savage 測試了防彈效果,最後完成了他打造鋼鐵人的夢想。

以下是飛行成果影片:

參考資料來源:
1.《ETtoday 新聞》:〈 成為鋼鐵人不再是夢!工程師打造可實際飛行的「馬克 2 號」
2.《theverge》:〈Watch Adam Savage make a flying Iron Man suit in his new show, Savage Builds
3.《WIRED》:〈How Gravity Built the World’s Fastest Jet Suit
4.《CNET》:〈How Adam Savage built a real Iron Man suit that flies
(本文提供合作夥伴轉載。首圖來源:Tested

延伸閱讀

英雄夢成真!AI 換臉加入《復仇者》,動動手指幾秒就可以成為鋼鐵人啦
【人工智慧冷知識】為什麼除了鋼鐵人的賈維斯以外,大部分的語音助理都是女生?
平價「鋼鐵人系統」問世:Leap Motion 推出開源 AR 眼鏡,成本不到 3000 台幣


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

台灣駭客開發「韓總遮臉器」,自動擋掉你不想看到的韓總臉!

$
0
0

隨著總統大選之日的靠近,韓國瑜的曝光度節節高升,被韓總洗版的新聞版面,正考驗著網友們的 EQ。然而,你可以不用再痛苦了,因為台灣有一組名為 nevikw39 的駭客團隊,開發了自動遮蔽韓總臉部的 Chrome 擴充功能

駭客開發 Chrome 擴充套件,直接遮掉韓總的臉

根據 Chrome 商店上面的 介紹 ,它可以遮蓋所有「韓總」的臉。安裝步驟是:先去 Chrome 商店下載擴充,接著去他們的 GitHub 或是 Google Drive,下載 zip 檔後將它解壓縮;最後進入開發人員模式,載入封裝項目後就大功告成了。

該 Chrome 用的是機器學習技術;開發團隊表示,訓練的樣本數只有 60 組,所以判別準度還有待加強。正面照片沒問題,但低頭的就無法遮蔽。據說有些郭台銘的照片也會被遮蔽。(但筆者測試時沒看到郭台銘被遮蔽)

實測畫面

此外,開發團隊建議,要打開硬體加速,並建議配備獨立顯卡,以加快機器學習與判別的速度。因此實際的執行狀況,視硬體性能與網路速度而定。筆者使用 ASUS ZenBook 13 測試,內裝 Intel® Core™ i5-8265U 處理器與 1.6GHz 四核心處理器,記憶體 8GB,但跑起來卡卡的,不是很順。或許要高階的電腦才可以順暢運作,一般的電腦反而會被拖慢速度。

Chrome 套件 傳送門

韓國瑜去年挾著龐大聲量,成為高雄市長當選人。然而政見跳票,選總統耽誤市政等行為引發多人反感,而高強度的媒體曝光與洗版讓不少網友「不勝其擾」。今年四月有工程師寫「韓總計數器」,計算韓國瑜在媒體的曝光次數;五月的時候則更進一步,有工程師寫出了「韓總過濾器」,直接擋掉 FB 上的韓國瑜新聞。現在則是「韓總遮臉器」登場,讓你完全看不到他的臉。看著這些作品,我只能跪著說:

工程師太酷了!

參考資料來源:
1.《INSIDE》:〈 不想看到韓國瑜?台灣駭客開發 Chrome 套件自動遮掉他的臉
(本文提供合作夥伴轉載。)

延伸閱讀

工程師寫出 FB 韓國瑜過濾器,擋掉所有你不想看到的韓總新聞!
北漂工程師設計「韓總計數器」,用程式碼追隨韓國瑜的發財腳步!
【高雄拚經濟 100 分】韓國瑜急 call 郭台銘,邀請鴻海赴高雄設廠


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫

$
0
0

【為什麼我們要挑選這篇文章】好用的 Python 資源又來啦!GitHub 上有神人將 Python 程式語言分門別類,工程師們不用全部重寫,直接複製貼上就好,堪稱 Python 小抄。想知道去哪下載?怎麼使用?本文介紹給你。(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/ 乾明

哪裡不會,查哪裡。

GitHub 上出現一份對 Python 用戶非常友好的資源:Python Cheatsheet。

內含超全程式碼範例,只需「Ctrl+C」+「Ctrl+V」「Ctrl+F」就可以快速上手使用。

內容覆蓋容器(Collections)、類型(Types)、語法(Syntax)、系統(System)、數據(Data)、語料庫(Libraries)等等 Python 編程的主要類別,以及 Advanced Python 內容。

而且還有文本文件可以下載。

目前,這份資源已經獲得 4600+ 顆星,登上了 GitHub 熱門榜。

工程師乾貨:好用的 Python 程式碼大放送

這份資源中,核心是程式碼,基本沒有廢話。

比如說,在類型方面,只是簡單地介紹了相關背景:

任何東西都是一個對象。

每一個對象都有一個類型。

類型和類是同義的。

然後就直接放程式碼了。

其他一些重要訊息,也會提上一兩句,對初學者也比較友好。

比如:

某些類型沒有內置名稱,因此必須導入它們。

然後就是程式碼示例:

from types import FunctionType, MethodType, LambdaType, GeneratorType

更多情況下,直接就是程式碼,比如 Operator 模組:

比如 Curses 語料庫:

乾脆利落,絲毫不拖泥帶水。

建立 Python 小抄數據庫的人是誰?

打造這份資源的,是一位名為 Jure Šorn 的東歐小哥。

小哥說,這份資源基於 Python 3.6 打造,未來將會進一步豐富,添加 Asyncio 等內容。

GitHub 傳送門

文本下載傳送門

在他的部落格中,不僅僅只有這份 Python「小抄」,還有關於 Linux 的「小抄」,內容也是非常全面。

Linux 傳送門

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈超全 Python 速查表登上 GitHub 热榜,标星 4600+ | 资源 〉,首圖來源:unsplash, CC Licensed。)

延伸閱讀

AI 工程師最佳入門資源!史丹佛公布「自然語言理解」免費課程,新手們趕快存起來

衝上 GitHub 熱門第四名!Python 機器學習最強教學資源,新手工程師快存起來

顛覆熱力學第二定律!物理學家用 IBM 量子電腦讓「時間倒回」了


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

【12 點真心建議】這位機器學習工程師在入職一年後,寫了這封信給初學者

$
0
0

【為什麼我們要挑選這篇文章】機器學習初學者,要做到哪些事情,才能成為一名優秀的機器學習工程師呢?這位入職一年的工程師,在這封信中提出了 12 點建議。(責任編輯:藍立晴)

「做自己的懷疑論者,不斷試錯,有時,溝通比技術本身能帶來更大的價值。」——佚名

親愛的讀者:

你們好!我是 Daniel Bourke,一位來自澳大利亞的機器學習工程師。我在這個崗位上從業有一年之久了,好吧,可能很多讀者對這個崗位不太熟悉,可以隨我看下一天的工作流程:

一位機器學習工程師的一天是這樣展開的

早上 9 點,我會走進公司,問同事早安,把我的食物放進冰箱,倒一杯汽水,然後走向我的辦公桌。我坐下來,看著我昨天的工作筆記,然後打開 Slack,接著我會閱讀訊息,打開團隊分享的每一篇論文或是部落格,每天都會有一些要看的消息,因為這個領域的更新發展很快。

訊息讀完後,我會瀏覽論文和部落格,並且會著重閱讀那些讓我困惑的內容。通常,那裡面會有一些內容能幫到我現在的工作。我會用一個小時進行閱讀,有時會更多,這取決於我看的內容,閱讀是最基礎也是最關鍵的能力,如果我現在做的事有更好的方法,那麼我會學習並運用這個方法,這可以節約我的時間和精力。

早上 10 點,如果工作任務的截止日期快要到了,我會縮減閱讀的時間來趕任務,這是我一天中花時間最多的地方。我會回看我昨天的工作內容,並且查看我寫下的後續工作步驟,我的筆記本記錄了我一天的工作流程。

在後續操作數據的過程中,如果我已經把數據處理成正確的形式了,那麼我就需要用模型跑數據,一開始我會把訓練時間調得很短,如果有了進展,我會把時間加長,如果我遇到問題,數據不匹配的問題出現了,那麼接下來,我會解決這個問題,然後在嘗試新模型前,先獲得一個基準。我絕大多數的時間是用來確定數據是不是處理成了模型所要求的形式。

下午 4 點就快到了,馬上可以放鬆一下了。我說放鬆,指的是清理我寫出的 code,讓它變得清晰易讀。我會加上一些註釋,重新調整 code 的結構,萬一別人要讀我的 code 呢?我會這麼問自己,通常,閱讀我 code 的人都是我自己,因為我經常會很快忘記那些寫 code 時產生的想法。

怎麼成為優秀的機器學習工程師?需要注意這 12 點

以上是一天工作最理想的樣子,但不是每天都這樣,有時候,一個美妙的想法在下午 4 點 37 分的時候迸發出來,那麼我會繼續我的工作,現在你已經對我每天的工作有了大致的了解,接下來我們聊聊機器學習的那些事。

人工智慧的浪潮不斷推進,相信很多讀者和我一樣加入了機器學習的隊伍,我的工作內容很全面:從數據收集、數據處理、建模、實施服務,業務範圍涉及你能想到的每一個產業。

當人工智慧發展進入關鍵十年,台灣人才與產業該如何自處才能在 2030 站穩國際腳步、培養 AI 國力?

8/10(六)【TechOrange 科技報橘 2019 年度論壇】CONNECT to the Future,帶你看見 2030 年的科技趨勢
一人早鳥 75 折、雙人早鳥 6 折優惠票全面開賣!

在這個崗位上呆久了,發現很多事情做起來都是有規律可循的,以一個前人的經驗,總結了一名優秀的機器學習工程師需要注意的 12 個方面,希望讀者在閱讀後,能對機器學習的從業和學習有所幫助!

把時間花在刀刃上:數據很重要!

如果你熟悉數據科學的一些基本原則,就會發現解決實際應用問題,處理 coding 問題,本質上是和數據打交道。可令人驚訝的是,我時常忘記這一點,很多時候,我著眼於建立更好的模型,而不是去提高數據的質量。

建立一個更大的模型、使用更多的運算資源可以在短時間內給你一個很好的結果。然而,出來混總是要還的,接下來你會遇到很麻煩的事。

當你參與第一個項目時,請花很多很多的時間去熟悉數據。之所以說很多很多,是因為你通常需要把你預計花的時間乘以 3。長遠上看,這會幫你在接下來的工作中節約不少時間。

當你拿到一個新的數據,你的目標應該是成為最了解這個數據的專家,你要檢查數據的分佈,找到不同類型的特徵,異常值在哪裡,為什麼它們是異常值?如果你不能把你的數據描述清楚,那你又怎麼能建立模型呢?

不要低估溝通的重要性

我遇到絕大多數的問題都不是技術問題而是溝通問題,的確,技術難題一直都有,但是那是工程師應該去解決的問題。永遠不要低估溝通的重要性,無論是公司內部的還是公司外部的。最糟糕的事莫過於解決了一個本不該被解決的技術問題。

為什麼會發生這種事呢?
對外來看,這種事發生的原因大多是因為客戶的期望和我們所能提供的服務出現了不匹配,雖然客戶的期望能夠用機器學習實現。對內來看,因為我們每個人在公司都負責很多方面事務,所以我們很難為了同一個目標而做到步調一致。

三省吾身  

回到問題的本質。請經常這樣做。請問一問你自己,你的客戶是否明白你們能提供的服務?你是否理解客戶的問題?他們知道機器學習帶來什麼和不能帶來什麼嗎?什麼樣的交流方式能讓你很輕鬆地去展示你的工作成果?

針對公司員工內部  

為了解決內部溝通的問題,人們設計了很多軟體。從它們的數量上,你便可以明白解決內部溝通問題有多困難。這些軟件包括 Asana、 Jira、Trello、Slack、Basecamp、Monday、Microsoft Teams。

對我而言,一個最有效的辦法是,每天工作結束時,在項目相關的頻道上更新我的信息。

更新內容包括:

  • 3-4 點 ideas
  • 關於我的工作內容
  • 為什麼
  • 根據上面的內容,我接下來要做的

這樣很完美對嗎?不。但是它看上去是有效的,它讓我可以展示我已經做的工作和準備去做的工作。

把自己的計劃公開有一個額外的好處,如果你的工作方案不成立,別人會指出來。你是多好的工程師這並不重要,重要的是你有能力告訴別人你的技術是什麼、你的技術可以帶來什麼,這一點和你維持現有業務並開拓新業務的能力密切相關。

穩定性>前瞻性

我們曾經有一個有關自然語言的問題:把文字內容歸為不同的類別。任務目標是幫用戶向服務中心發送一段文本,並且自動把文本歸為兩類中的其中一類,如果模型預測的不夠準確,那麼把文本交給人工處理,工作量大概是每天 1000-3000 次請求,不多也不少。

BERT 成為了今年最受矚目的名詞。但是如果沒有 Google 的規模化計算工具,想要使用 BERT 訓練模型來完成我們的需求則非常麻煩,而且這還僅僅是把模型用於生產前所需要的工作,因此,我們找到了另一種方法——ULMFiT。

這個方法雖然不是最前瞻的,但是它能產生足夠好的結果,並且這個方法也很容易使用。

與其將某個方法改進到完美,不如借鑒已有的模型,在這基礎上進行遷移學習,這樣能帶來更多的價值。

機器學習中的兩大難點

將機器學習付諸實踐存在兩個瓶頸:從課程成果到項目成果的瓶頸、從理論模型到生產模型(模型部署)的瓶頸。

網路搜索機器學習課程返回了大量的結果,我用了其中許多課程創建自己的 AI 碩士學位課程。

但即使在完成了最好的幾門課程,當我開始擔任機器學習工程師時,我的技能還是建立在課程的結構化主幹上,在現實問題中,項目並不是結構化的,我缺乏具體的知識,線上的互聯網課程中無法教會你一些技能,比如:怎麼質疑數據、探索與開發模型。

如何改進? 

我很幸運能和澳大利亞最優秀的人才在一起工作,但我願意學習也願意做錯。當然,錯誤不是目標,但為了正確,你必須弄清楚什麼是錯的。

如果你正在通過一門課程學習機器學習,那麼繼續學習這門課程,同時要將學到的知識應用到自己的工程項目中,這樣才能使自己具備專業知識。

如何在工作中提升能力?

我在這方面的知識依舊很匱乏,但我注意到了一種趨勢——機器學習工程和軟件工程正在融合。隨著 Seldon,Kubeflow 和 Kubernetes 這些開源平台的發展,很快機器學習將成為其中的另一部分。

在 Jupyter 筆記本中構建模型是一回事,但是如何讓數千甚至數百萬人使用該模型就是另一碼事了。根據最近在 Cloud Native 活動上的討論情況來看,大公司以外的多數人並不知道如何做到這一點。

把 20% 時間花在學習上

機器學習中也有一個二八定律,我們有一個 20% 的規則,這個規則的意思是我們要把 20% 的時間花在學習上。

事實證明,這段學習時間是寶貴的。比如說 ULMFiT 的使用率超過 BERT 就源於 20% 時間的規則,20% 的時間用來學習,意味著剩下 80% 的時間將用於核心項目。

  • 80% 的核心產品(機器學習專業服務)。
  • 20% 與核心產品相關的新事物。

如果你的工作優勢在於你能將現在做的事情做到最好,那麼未來的工作同樣取決於你繼續做你最擅長的事情,這意味著不斷學習。

精讀論文

這是一個粗略的指標,但是在你探索過一些數據集和實驗現像後,你就會明白它是一種客觀事實。

這個概念來源於 Zinf/Price 定律,即在同一主題中,半數的論文為一群高生產力作者所撰寫,這一作者集合的數量約等於全部作者總數的平方根。

換句話說,在每年數以千計的提交中,你可能會發現 10 篇開創性的論文,在這 10 篇開創性的論文中,有 5 篇可能來自同一所研究所或作者。

如何緊跟時代的潮流?你無法跟上每一個新的突破,你最好紮實掌握和運用一些基本原理,這些基本原理經受住了時間的考驗,新突破需要依靠原創性的突破,然後便是需要新的探索與開發。

做自己的懷疑論者

您可以通過懷疑自己來處理探索與開發問題。探索與開發問題是嘗試新事物和復用已有模型成果之間的兩難選擇。

開發自己的模型

運行你已經使用的模型並獲得高精度結果然後將其作為新基準報告給團隊是很容易的。但是如果你得到了一個好的結果,記得反覆再反覆地檢查你的成果,並讓你的團隊也這樣做,因為你是一名工程師、科學家。

探索新的事物

20% 時間的標准在這裡也有用武之地,但是時間分配如果是 70/20/10 會更好。也許你在核心產品上花費 70%,在核心產品的構造上花費 20%,在探索上花費 10%,不過探索的東西可能不會起作用,我本人從來沒有試過這個方法,但這是我正朝著這個方向發展的。

先積跬步,後至千里

不積跬步無以至千里,先建立一些小事,這樣就能快速理解一個新的概念,你可以使用自己的數據集或者不相關的小數據,在一個小團隊中,成功的訣竅是先成功一小步,然後快速迭代。

跟橡皮鴨解釋每行 code

很多工程師可能知道一種小黃鴨調試法(也稱橡皮鴨)調試法,這個概念說的是在調試 code 的時候隨身攜帶一隻小黃鴨,然後詳細地向它解釋每行 code。

可能很多讀者會覺得好笑,這是有原理依據的,類似有一種叫做 cone of answer 的常見現象,比如:你的朋友向你諮詢問題,等說到一半的時候他已經找到問題所在,徒留一臉茫然的你… 總的來說,當你試圖向別人表述自己的問題的過程中,自然地也在促使自己去調整思路,這種方法對工程師同樣適用。

橡皮鴨方法是同事 Ron 教會我的,遇到問題的時候,坐下來盯著 code 可能會解決問題,但也有可能不會,此時,不如用隊友的語言重述,就像你的橡皮鴨。

「Ron,我正在嘗試遍歷這個數組,並通過循環另一個數組以及跟跟蹤它的狀態來嘗試跟踪這個數組的狀態,然後我想將這些狀態組合成一個元組列表。」

「循環中的循環?你為什麼不把它矢量化呢?」

「我能這樣做嗎?」

「讓我們來看看。」

「…」

遷移學習很重要

你不需要從底層重構模型,這個問題來自於機器學習工程與軟件工程的融合。除非您的數據問題非常具體,否則許多主要問題非常相似,分類,回歸,時間序列預測,推薦系統。

Google 和微軟的 AutoML 等服務,只需要上傳數據集並選擇目標變量,就可以輕鬆使用機器學習。

但是這些事情還在初始階段,尚未成形。如果你是開發人員,只需要 fast.ai 這樣的庫,就可以在幾行 code 中使用最先進的模型,以及各種模型的預建的模型,例如,PyTorch hub 和 TensorFlow 提供相同的功能。

這意味著什麼?雖然機器學習已經如此方便,但是仍然需要了解數據科學和機器學習的基本原理,更重要的是要知道如何恰當的運用他們。

Math or Code?It is a problem

對於我處理的客戶端問題,code 優先,所有的機器學習和數據科學程式都是 Python。有時我會通過閱讀論文並進行複現來涉足數學,但 99.9% 的情況下,現有的框架已經包含數學的庫。

雖說在現實生活中,數學並沒有想像中的那麼重要,畢竟機器學習和深度學習都是數學的應用。但是知道最小矩陣相乘,一些線性代數和微積分,特別是鍊式法則依舊是重中之重。

請記住,我的目標不是發明一種新的機器學習算法,而是向客戶展示機器學習對他們的業務是否有幫助, 有了堅固的基礎,你就可以建立你自己的最好模型,而不是重複使用已有的模型了。

軟體行業的快速迭代

你去年所做的工作明年可能就沒用了哦!這是客觀事實,由於軟體工程和機器學習工程的融合,這種情況越來越嚴重。

但是你既然已經加入了機器學習的大家庭,我來告訴你什麼保持不變——框架會變化,庫會變化,但基礎統計,概率論,數學永遠不會變。最大的挑戰仍然是:如何應用它們。

說了這麼多,希望以上建議能對與機器學習的入門者和從業者有所幫助,最後玩的開心,開啟你的數據之旅吧!

原文傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈入职一年后,一位算法工程师给初学者的一封信 〉。首圖來源:Daniel Bourke。)

更多關於機器學習的消息

衝上 GitHub 熱門第四名!Python 機器學習最強教學資源,新手工程師快存起來
和 Google 頂尖工程師一起研究機器學習一整年,這是我的精華筆記
工程師挑戰機器學習極限,用 CoreML 成功把 AI 塞進一台 iPhone 裡!


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

給自學機器學習的工程師:沒有學歷光環卻想找到工作,千萬注意履歷十大雷區!

$
0
0

【為什麼我們要挑選這篇文章】自學機器學習的工程師們沒有博士學位的光環,他們該如何在面試中脫穎而出?履歷怎麼寫?什麼又是企業真正在乎的重點項目?(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/栗子

做機器學習工程師,通常都要讀過博士。

即便沒有寫成職位的必要條件,卻也慢慢變成了自然規律。

那自學成才的人類,要寫怎樣的經歷,才能讓面試官相信,自己也是有同等能力的呢?

一個叫做 AdditionalWay  的網友,在 Reddit  提出了這個直擊靈魂的問題,引發了大量討論,兩天熱度已經超過 500

討論版上,有許多人提出了中肯的建議:

99% ML 博士生有個致命弱點

有位叫做 po-handz  的網友,他發表的意見收穫了 80  分的高度認可,佔據了評論區的頂樓:

把自己的項目投入生產環節(launch into production),就能超越 99% 的應屆生,也能超越大部分在位的 ML  工程師了。

對此,有人 (moravak) 表達了強烈贊同:

這個「大部分」,其實就是 ≥99.9%

頂樓又補充說,很多人就算讀到博士畢業,可能也沒有自己把一個項目做到生產環節的經驗。

那麼,怎樣才算有這樣的經歷呢?

沒有讀博士的你,唯一優勢就在「業界經驗」

網友(BernieFeynman)簡約地解釋了一下:

搭些模型,不用非常厲害。但要讓人能看到,模型在哪跑起來的樣子,比如有個 API  可以調用之類的。

當然,做起來並不是一句話的事,頂樓詳細描述了,一整個過程究竟能有多難:

比如,一般你不會只有一個模型,是有一組。所以,需要讓這些大模型,加載在服務器的 RAM  上。

還要接受新輸入的數據。這些數據,要和測試數據的格式保持一致,還要 scale,該怎麼 scale  呢?

推理要用 GPU  麼?那樣的話在 AWS  上每月可能要花 1000  人民幣(約 5000 台幣),預算能支持麼?

時序數據怎麼辦呢?你需要一個連續更新的模型,還要一直跟蹤調整參數。

除此之外,你需要一個實時的、可維護的數據管道(data pipeline)。搞這個,比處理一個清晰乾淨的數據集要難多了。

最後的最後,你還需要一整套 UI,網站,nginx  推疊,要做成用戶友善的樣子。

別說是剛畢業的博士,許多有經驗的數據科學家也對這些東西一竅不通,因為他們可能只在自己專業的領域里工作,都是別人把乾淨的數據集交到他們手上。

你如果在這點上打贏他們,對企業來說就有更高的價值了。

機器學習是 2019 熱門題目,那 2030 機器學習可能變什麼樣子?

8/10(六)【TechOrange 科技報橘 2019 年度論壇】CONNECT to the Future,帶你看見 2030 年最重要科技趨勢

一人早鳥 75 折、雙人早鳥 6 折優惠票 全面開賣

ML 工程師履歷,千萬注意這十大雷區

訓練實用技能,只是一方面。

如果不想在履歷篩選環節見光死,網友(rudiXOR) 在一家「正在招聘 ML  工程師的中型企業」,總結了十大雷區,供大家參考:

第一,拿著一大堆 MOOC  證書。沒用,我試過,quiz  一路點下去誰都做得到。

第二,對 Kaggle  成績過於自豪。許多大學生都參加過 Kaggle  比賽,他們也知道這種比賽和 ML  工程師的工作,基本沒什麼共同點。

第三,去了  個月訓練營,從 PCA  到 LSTM,幾乎所有 ML  技術都修煉到了。真的沒人相信。

第四,GitHub  項目都是只提交過一次程式碼的那種。根本看不出是不是自己做的。

第五,GitHub  主頁是新的,一個項目都沒有。

第六,模型只在 toy datasets  上測試過,沒有再嚴肅點的項目了。

第七,每種語言都說「精通」。比如 C++PythonJavaC#……

第八,對照職位要求精心匹配履歷(Buzzword optimization for HR algorithms」

第九,沒有證明自己的數學 / 統計學知識水平。

第十,沒有軟體開發的經歷。

就算前九條你都忘了,也可以嚴肅地參考第十條。網友在細數了雷區之後強調:

如果你是自學的,不要一上來就投數據科學家,或者 ML  工程師。

可以先申請數據分析師,或者軟體工程師。

如果是自學 ML,又沒有軟體開發的經歷,我是不會請你的。

參考前文,如果沒有讀過博士,就要比博士多點業界的經驗才更有利。

不過,自學什麼時候都不晚。

比如,谷歌大腦的研究員 David Ha,在投入機器學習的懷抱之前,已經做到高盛的董事總經理(MD) 了。

那麼,各位也要加油啊。

Reddit 討論版傳送門

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈自学机器学习,怎么才能找到工作啊?至少要避开十大雷区 | Reddit 高热 〉,首圖來源:unsplash, CC Licensed。)

延伸閱讀

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫

AI 工程師最佳入門資源!史丹佛公布「自然語言理解」免費課程,新手們趕快存起來

衝上 GitHub 熱門第四名!Python 機器學習最強教學資源,新手工程師快存起來


【科技報橘 2019 年度論壇】CONNECT to the Future 早鳥售票中!

2030 年全球進入一個由科技主導發展的世界局勢,而台灣無法置身事外。

儘早抓穩世界科技趨勢,儲備十年 AI、能源與製造的科技戰力,才是台灣小國大戰略的重要核心。

8/10(六)【TechOrange 科技報橘 2019 年度論壇】CONNECT to the Future,帶你破解 2030 產業趨勢。 手刀購票 >>>  一人早鳥 75 折、雙人早鳥 6 折優惠票全面開賣!

史上最完整 PyTorch 資源來了!工程師不能錯過的中文教程、精選書單全在這

$
0
0

【為什麼我們要挑選這篇文章】PyTorch 在程式語言熱門榜上越來越前面,想要快速掌握 PyTorch 的工程師們,趕快把資源存起來啊~(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/方栗子

PyTorch 新手們,請注意。

有一大波學習資源向你撲過來了。

這是 GitHub  上的一個新項目,簡介如是說:史上最全的 PyTorch  學習資源匯總。

裡面有教學,有影片教學,有實作項目。幫你從萌新一點一點變成老司機。

還有論文推薦,以及優質的中文書籍,可以拿來補充養分。

那麼,來仔細感受一下這份資源吧。

中英詳盡教學外,再推兩份 GitHub 萬星的閱讀資料

開始的開始,作者說要從官方手冊學起,最好是英文。裡面的教學各式各樣,從基礎知識到搭建深度網路,帶你走每一步。

如果真的有英文障礙,就用中文文檔。各種函數都有詳細介紹,也可以作為速查工具。

除了官方資源,也推薦了 GitHub  萬星的偏實戰類教學,以及 GitHub  四千星的開源書:

比較偏算法實戰的 PyTorch 程式碼 教學(PyTorch Tutorial):在 GitHub  上有很高的 star。建議大家在閱讀本文檔之前,先學習上述兩個 PyTorch  基礎教學。

開源書籍(PyTorch Handbook):這是一本開源的書籍,目標是幫助那些希望和使用 PyTorch  進行深度學習開發和研究的朋友快速入門。但本文檔不是內容不是很全,還在持續更新中。

每一條資源,都寫明瞭適用人群,或者說使用前該擁有怎樣的基礎。

文字版教學推薦之後,還有 PyTorch  影片教學。中文的英文的,任君選擇。先粗略掃過一下:

每條都附帶了垂涎欲滴的推薦語,「深入淺出」「十分精彩」「很簡單很形象」。讀到這樣誘人的句子,你一定可以開始努力的。

教學過後,進入實戰模式。

練習素材一應俱全,練起來超有實感

這裡有視覺研究必備的 Torchvision  包,常用的圖像操作都可以在這裡完成。

又有人臉檢測庫 OpenFacePyTorch ,風格遷移庫 pt-styletransfer;還有視覺框架 TorchCV 等等。

至此,裝備就基本齊全了。

接下來,NLP  實戰。

這裡,依然先推薦了好用的庫,叫 Torchtext,它可以幫大家輕鬆做好預處理。

然後是 Seq2Seq BERTOpenNMT 等等著名語言模型的 PyTorch  實現。

除此之外,還有一個叫做 Quick-nlp  的庫,基於 FastAI  框架,用於快速運行各種 NLP  模型;序列建模工具包 Fairseq  也在推薦之列,研究人員可以用它為翻譯、總結、語言建模等等任務做自定義模型。

有這樣豐沃的營養,小夥伴們可以盡情修煉了。

精選論文與中文書,幫你點滿 PyTorch 技能

在成為老司機的路上,你可能還需要一些額外的營養補充,更好地瞭解 PyTorch,才能更好地支配它。

從文底傳送門前往,看看項目里精挑細選的論文吧。

或者,還有幾本強力推薦的中文書。

《深度學習入門之 PyTorch》★★★
PyTorch 深度學習》★★★
《深度學習框架 PyTorch 入門與實踐》★★★★
PyTorch 機器學習從入門到實戰》★★★

總之,已經有很多友好的資源,排著隊支持你玩轉 PyTorch  了。

所以,快點開始吧。

GitHub 傳送門

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈“史上最全 PyTorch 资源汇总”:教程、实战、必读论文、中文教材一应俱全 〉,首圖來源:pxhere, CC Licensed。)

延伸閱讀

AI 工程師最佳入門資源!史丹佛公布「自然語言理解」免費課程,新手們趕快存起來

給自學機器學習的工程師:沒有學歷光環卻想找到工作,千萬注意履歷十大雷區!

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

工程師殺手級工具!一秒自動補齊後續程式碼,還支援 23 種程式語言

$
0
0

【為什麼我們要挑選這篇文章】你是否寫程式也想要電腦自動補上後面程式碼?現在有個殺手級應用就可以做到如此,而且還支援高達 23 種程式語言,菜鳥、老手都適用!(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/邊策 安妮

GPT-2,一個來自 OpenAI 的逆天程式語言模型,現在能用來補全程式碼了。

一位來自加拿大的大四學霸,開發了一款「Deep TabNine」程式碼補全工具,實現了這一大膽的想法。

它支持 23 種程式語言、5 種編輯器,使用簡單,效果驚艷。

不少使用過的網友說:TabNine 是他們用過的最好的程式碼補全工具,這是屬於工程師的殺手級應用。

在 VS Code 的擴展商店裡,TabNine 已經被下載 1.3 萬次,獲得全 5 星好評。

支援 23 種程式語言,依照 Coding 習慣給出建議

Deep TabNine 支持 Java:

Python:

C++:

Haskell:

不同於各種其他程式碼補全外掛,Deep TabNine 是根據工程師過去的習慣自動補全,並在後面給出幾種選項的概率

如果有類似程式碼出現在之前的項目里,TabNine 還會在補全候選框中直接給出地址,方便用戶點擊進去查閱。

除以上幾種語言之外,Deep TabNine 還支持 JavaScript、C、PHP、Go、C#、Ruby、Objective-C、Rust、Swift、TypeScript、OCaml、Scala、Kotlin、Perl、SQL、HTML、CSS 和 Bash。

主流程式語言幾乎都囊括在內。

5 種編輯器安裝懶人包

TabNine 支持 VS Code、Sublime Text、Atom、Emacs、Vim 五種程式碼編輯器。

對於使用 VS Code 和 Sublime 來說,安裝 TabNine 非常方便,用自帶的擴展包管理工具即可。

VS Code

VS Code 用戶按 下 Ctrl+P(Mac 用戶按下⌘+P),黏貼以下命令,然後按 Enter 完成安裝。

ext install TabNine.tabnine-vscode

Sublime

Sublime 用戶安裝分為兩步:

1、按下 Ctrl+Shift+P(Mac 用戶:⌘+Shift+P),選擇 Install Package Control;

2、再次按下 Ctrl+Shift+P(Mac 用戶:⌘+Shift+P),選擇 Package Control:Install Package,然後選擇 TabNine 來安裝。

Vim

Vim 使用 Vundle 外掛管理器進行安裝:

1、添加 Plugin ‘zxqfl/tabnine-vim’ 到 .vimrc;

2、輸入 :PluginInstall,按下 Enter 完成安裝。

其他編輯器的安裝方法就不一一贅述了,有需要的用戶可以參照文末的連結進行安裝。

一分鐘內省下一秒鐘,不滿意 30 天內能退款

項目超過 400kb 需要購買許可證:個人用戶 49 美元(約 1,470 台幣),商業用戶 99 美元(約 2,970 台幣)。

由於 Deep TabNine 用到機器學習補全程式碼,因此需要大量的算力(超過 100 億次浮點運算),在筆記本上運行模型,無法獲得低延遲的體驗。

因此,軟體開發者推出了 TabNine Cloud 雲服務器,用雲端 GPU 加速。付費用戶不需要再加錢即可使用。

所以聽起來很划算吧?

軟體開發者自己就說,這個價格其實不貴,有了 TabNine,一分鐘裡能幫你節省一秒,咱們再算算工程師的時薪,每個小時能節約 1.4 美元,不到一年時間就能回本了。

如果你對效果不滿意,TabNine 開發者還提供 30 天退款保證。

神器來自 OpenAI 的架構

TabNine 是在 GPT-2 的基礎上構建的,這是一種 Transformer 架構,原產自 OpenAI,是個「逆天」語言模型。

GPT-2 的參數高達 15 億個,數據量比一代擴大了 10 倍,使用了包含 800 萬個網頁的數據集,共有 40GB。

逆天之處就在於,GPT-2 寫起文章來毫無違和感,無需針對性訓練就能橫掃各種特定領域的語言建模任務,還具備閱讀理解、問答、生成文章摘要、翻譯等等能力。

AI 已被證明能自動化許多繁瑣的人類工作,甚至能應用在 coding 的世界。
面對 AI 構築的智慧未來,台灣怎麼抓住關鍵機會?

8/10 跟著科技報橘一起 CONNECT 台灣 to the Future,破解 AI 未來地圖。
65 折佛心雙人套票開賣中,手刀搶票!

就 GPT-2 而言,它的訓練目標很簡單:根據所有給定文本中前面的單詞,預測下一個單詞。雖然本來是解決 NLP 問題,看似與寫程式碼沒什麼關聯,但建模程式碼也算是用一種獨有的方式在理解英文。

比如,可以讓模型用 if/else 語句否定單詞:

具備「自動補完」後續程式碼功能

項目主頁顯示,在大約經過 GitHub 中 200 萬個文件訓練後,TabNine 具備了自動補全程式碼的能力。

在訓練這個模型期間,模型學習了例如動態類型語言中的類型推斷等複雜行為,用這樣的訓練方式預測 token。

作者表示,TabNine 可以很好利用傳統程式碼補全工具難以獲取的瑣碎細節。

例如,假設 app.get_user() 的返回類型是一個帶有 setter 方法的對象,而 app.get_users() 的返回類型是一個列表,兩個名稱之間只有細微的差別:

這個模型還能以自然語言編寫的文檔來推斷函數名稱、參數和返回類型:

Deep TabNine 加入了之前用戶強烈要求加入的功能:用預先存在的知識,解決在創建新項目時的程式碼補全問題

例如,它知道當一個類擴展 React.Component 時,它的構造函數通常會調用一個名為 props 的參數,並且通常在其內部用 this.state 賦值:

Deep TabNine 甚至可以做不可能的事情,並記住 C++ 可變參數轉發語法:

工程師網友狂讚!直稱:「殺手級應用」

TabNine 問世後,不斷收穫好評,甚至還有工程師激動得爆粗口:

臥槽,這種軟體多來點就好了。(Fuck yeah. This is the sort of software I want to see more often: TabNine)

有網友表示, 沒有它都不知道該怎麼面對寫程式碼這件事了。

還有人稱之為開發者應用中的第一個「殺手級應用程序」:

「令人印象深刻」、「感到神奇」「太酷了」……推特上的評價,頗有電視廣告上「用了都說好」的畫風。

在各大科技論壇上,也有網友提出了建議和改進的方向。

有用戶反映,也有美中不足的地方,比如這個工具會干擾自動括號完成。

作者表示,TabNine 還在不斷更新完善中,正在改進這些 bug。

作者是一位大四學霸

想不到吧,這款好評如潮的程式碼工具,出自一名大四學生之手。

Jacob Jackson,加拿大人,目前在滑鐵盧大學主修電腦科學與組合優化專業,輔修數學。大四在讀,今年 8 月份畢業。

Jackson 此前在 Reddit 上發文稱,這是自己在大學階段開發的第一款商業軟體產品。

但 Jackson 並非無名之輩,年少有為,曾在 2014 和 2015 連續兩年獲得 IOI 金 牌。

因此,大學一入學,便成為加拿大 Michael and Ophelia Lazaridis Olympiad Scholarship 獎學金的獲得者,免除了 8 個學期學費書費和生活費。

除了自動補全程式碼的 TabNine,Jackson 還開發了很多有意思的應用,比如一個名為 jellies 的益智遊戲,和使用蒙特卡羅樹搜索的國際象棋引擎 Sashimi 等。

傳送門

TabNine 網站
Jackson GitHub
Jackson 履歷

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈杀手级 AI 补代码工具问世,支持 23 种语言及 5 种主流编辑器,程序员沸腾了 〉,首圖來源:Pxhere, CC Licensed。)

延伸閱讀

史上最完整 PyTorch 資源來了!工程師不能錯過的中文教程、精選書單全在這

給自學機器學習的工程師:沒有學歷光環卻想找到工作,千萬注意履歷十大雷區!

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫

AI 工程師最佳入門資源!史丹佛公布「自然語言理解」免費課程,新手們趕快存起來


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

扎實你的 AI Coding 基礎!GitHub 大神整理了一份新手易懂的學習課程

$
0
0

【為什麼我們要挑選這篇文章】大數據時代下,AI 工程師的地位水漲船高。 你是否聽到 AI 兩個字就覺得門檻高?別怕,GitHub 神人幫你推薦了 AI 菜鳥工程師的學習菜單。(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至 jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/魚羊

自從有了強化學習(RL),AI 上能星海爭霸,下能雅達利(Atari)稱王,讓內行人沈醉,讓外行人驚奇。

這裡恰有一份標星過萬的強化學習資源,既有教程推薦,又有配套練習,網友學了都說好,並且還在實時更新。

入學要求並不高,只需要一些基礎的數學和機器學習知識。

紮實學習 AI 強化學習,大神推薦這兩個資源

想要入門強化學習,一份優質的課程必不可少。

強化學習資源千千萬,項目作者 Denny Britz 大力推薦這兩個:

David Silver 的強化學習課程

以及 Richard Sutton 和 Andrew Barto 的《強化學習:簡介(第二版)

Denny Britz 表示,這兩本書幾乎涵蓋了入門強化學習需要瞭解的大部分研究論文,基礎決定高度,理論知識還是要扎扎實實學起來。

理論有了,可書裡並沒有演算法練習。

別擔心,幫人幫到底,送佛送到西,Denny Britz 親自動手,用 Python,OpenAI Gym 和 Tensorflow 實現了大多數標準強化演算法,並把它們都共享了出來,方便大家配合教材使用。

簡直太貼心。

在這份萬星資源里,每個文件夾都對應著教材的一個或多個章節。除了練習和解決方案之外,每個文件夾下還包含了一系列學習目標,基礎概念摘要,以及相關連結。

以基於模型的強化學習:使用動態規劃的策略迭代和值迭代這一章為例。

這一章配套的是 David Silver RL 課程的第三講,動態編程規劃。

首先是學習目標:

瞭解策略評估和策略改進之間的區別,以及這些流程如何相互作用

理解策略迭代演算法

理解值迭代演算法

瞭解動態規劃方法的局限性

設定好學習目標,這份教程還替你划了重點概念。

最後,奉上實戰演練。

大框架已經搭好,只需專注重點思考如何填空:

文後附標準答案:

循序漸進的學習課綱,新手老手都適合

這份教程現在涵蓋了以下演算法實現。

動態規劃策略評估

動態規劃策略迭代

動態規劃值迭代

蒙特卡洛預測

Epslion-Greedy 策略的蒙特卡洛控制

具有重要性抽樣的蒙特卡洛非策略控制

SARSA(策略 TD 學習)

Q 學習(非策略 TD 學習)

線性函數逼近的 Q 學習

雅達利遊戲的深度 Q 學習

雅達利遊戲的雙重深度 Q 學習

優先經驗回放的深度 Q 學習(施工中)

策略梯度:基線強化

策略梯度:基線 Actor-Critic 演算法

策略梯度:具有連續動作空間的基線 Actor-Critic 演算法

連續動作空間的確定性策略梯度(施工中)

DDPG(施工中)

異步優勢 Actor-Critic 演算法(A3C)

學習路徑如此清晰,這樣的優質資源,不存起來嗎?

GitHub 傳送門

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈GitHub 万星资源:强化学习算法实现,教程代码样样全,还有详细学习规划 〉,首圖來源:Unsplash, CC Licensed。)

延伸閱讀

工程師殺手級工具!一秒自動補齊後續程式碼,還支援 23 種程式語言

給自學機器學習的工程師:沒有學歷光環卻想找到工作,千萬注意履歷十大雷區!

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

【由淺入深】開箱台灣人自製的高中 AI 教材,從演算法到深度學習一次打底

$
0
0

AI 趨勢引領下,台灣這幾年掀起一陣討論熱潮:「學校是否應該加設 AI 課程?」

去年 9 月,行政院科技會報辦公室執行秘書蔡志宏 提到 ,行政院正和教育部計劃推動從國小到高中的 AI 教育,教材預計將在 2019 年正式出版。

「教育部從小學到高中都有計劃引入 AI 教育。」教育部資訊及科技教育司副司長劉文惠 強調

而時候到了,教育部配套編製的《和 AI 做朋友》教材及教案套書電子版,於 13 日正式上線。

開箱台灣自主研發的高中 AI 教材

教材中一共分六章節,從 AI 的基礎概念開始,到監督式學習與非監督式學習的差別,最後再到深度學習。除了介紹邏輯深入淺出,其中也介紹了不少演算法與必備知識。

Posted by 楊明翰 on Tuesday, 13 August 2019

Epic 創業筆記的創辦人楊明翰讚嘆到,教育部協助編制的高中 AI 教材,「對於演算法細節操作有很棒的數值計算個案,不黑箱,很棒!」

若有任何可以更好的地方,他建議「高三應該有教找極值的計算,其實可以進行整合,把數學和人工智慧啟蒙教育的知識點連繫起來,會更有感覺。」

Posted by 楊明翰 on Tuesday, 13 August 2019

於介紹頁面下方,作者也附上了設備需求、學生分組練習最適當的每組人數以及適用年級:高二到高三、高職 2 年級到高職 3 年級。

高中生與大學生參與製作

這個計畫的由成功大學的黃仁暐與臺南第二高級中學的涂益郎製作,由國立臺南大學 資訊工程學系的李建樹教授指導。

仔細一看發現,作者中竟然有高中生與大學生的參與!

如此新型態 AI 世代下,教育部的《和 AI 做朋友》教材不僅讓台灣學生從小就初步了解 AI 演算法是什麼?補充新世代必備的 AI 基礎知識,更替台灣學生從小備戰新時代的 AI 市場挑戰和提升國家與國民的整體競爭力。

想下載給高中生的 AI 教材給你家孩子嗎?快點選 傳送門

參考資料來源:

  1. 楊明翰臉書
  2. 《教育大市集》:〈和 AI 做朋友-相知篇:從 0 開始學 AI(教材)
  3. 《社企流》:〈人工智慧將納入課綱!給台灣學生的「AI 科普教科書」,預計明年正式出版

(本文提供合作夥伴轉載,首圖來源:Unsplash, CC Licensed。)

延伸閱讀

工程師殺手級工具!一秒自動補齊後續程式碼,還支援 23 種程式語言

扎實你的 AI Coding 基礎!GitHub 大神整理了一份新手易懂的學習課程

摩根大通:AI 比真人更會寫廣告文案,點擊率還高出一倍以上!


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

正在「北漂」的矽谷科技業:工資低、沒有川普,科技巨頭紛紛前往加拿大設點

$
0
0

【為什麼我們要挑選這篇文章】矽谷科技業正掀起一股「北漂」風潮!加拿大的多倫多是北美第 4 大城,具有許多技術人才,但是工資較矽谷的工程師低,文化與美國相近,而且不需要面對川普政策的不穩定性,因此科技巨頭紛紛前往多倫多設點。

近年也有不少矽谷企業,因為人才、中美貿易戰等因素,前來台灣設點,台灣人大多樂觀看待。那麼加拿大人是如何看待矽谷的「北漂」?(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com

「華爾街日報」報導,加拿大多倫多挾帶大量技術勞工和與美國高文化相似度等優勢,吸引許多大型科技公司前來設點。但部分加拿大人卻不看好這波「矽谷北漂」趨勢。

英特爾、Uber、Alphabet 紛紛前往多倫多設立據點

華爾街日報(WSJ)報導,英特爾公司(Intel Corp.)宣布要在多倫多設立新的繪圖晶片設計據點;美國線上叫車服務商優步科技(Uber Technologies Inc.)將在此建立工程中心;Google 母公司 Alphabet Inc. 提議在安大略湖(Lake Ontario)沿岸興建新大樓,作為推動「智慧城市」的據點;微軟公司(Microsoft Corp.)則表示,將擴增加拿大員額逾 20%。

多倫多的經濟活動蓬勃發展,促使加州聖克拉拉郡(Santa Clara)矽谷銀行(Silicon Valley Bank)3 月到這裡開設辦公室。矽谷銀行專門為全球大型風險投資公司和新創公司提供商業服務,過去 19 年來都由西雅圖和波士頓負責加拿大業務。

低工資、高文化相似性、躲川普風險,美國科技業前往多倫多設廠

多倫多地區擁有 640 萬多元人口和許多技術勞工,且與美國舊金山、紐約和芝加哥等大城的文化相似度高。因此,科技公司正積極在這裡招募新員工。

身為北美第 4 大城,多倫多的勞工成本也較便宜。根據人力招募平台 Hired Inc. 的統計,多倫多電腦工程師和程式設計師的年薪,平均比舊金山低 7 萬 1000 美元(約新台幣 223 萬元)。此外,在多倫多雇用員工,公司還可以避開美國總統川普政府嚴苛的移民政策,這些政策使企業更難聘僱外籍員工。

加拿大人擔憂:美國企業擠壓加國公司的生存機會

亞馬遜公司(Amazon.com Inc.)在挑選設立北美第 2 總部的城市時,多倫多是唯一進入決選的美國以外城市。雖然多倫多最終沒能得標,亞馬遜仍在去年 12 月於多倫多下城區核心地帶設立占地約 1 萬 500 平方公尺的辦公室,並表示將在此聘用 600 名新員工。

不過,許多加拿大人擔心科技巨擘入侵多倫多帶來的影響,有些人認為,美國企業擠壓加國公司的生存機會,並挖走了加國最有價值的高階人才。

黑莓公司(BlackBerry Ltd.)前共同執行長巴西利(Jim Balsillie)說:「我們正在揮霍自己的未來。」他表示,加拿大研究人員近期在人工智慧、聲音和影像辨別裝置與自動駕駛汽車上取得創新成果,卻無法嘉惠母國,因為他們被外國公司雇用,智慧財產權也歸外國公司所有。

(本文經合作夥伴 中央社 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈矽谷向北移動 科技巨擘紛進駐多倫多 〉。首圖來源:Pxhere CC Licensed)

更多關於矽谷的消息

中國留學生掀起返國熱潮,原因居然是「沒有 996」的矽谷太慢了
他用「FBI 辦案精神」開了矽谷最夯的咖啡廳,科技投資人還掏 23 億要求加開分店!
「手機」是科技時代的貧民標誌,矽谷工程師正將自己的孩子送到無科技學校!


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

超省時 GitHub 新功能!點選函數就能看定義,記憶差的工程師不用再苦苦尋找了

$
0
0

【為什麼我們要挑選這篇文章】你是否曾有過程式碼「看過即忘」的經驗,每次忘記都要往前翻閱是否讓你覺得浪費時間?GitHub 新功能即將拯救金魚記憶的你,讓你更無痛的了解整個資源。(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息 
快將你的履歷自傳寄至  jobs@fusionmedium.com」

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/曉查

看程式碼和看書最怕的就是:看到後面,忘了前面。

在後面看到一個函數或方法,但是已經記不清它的定義了怎麼辦?這就像看小說忘記了人名一樣讓人頭大。

沒關係!現在 GitHub 加入了新功能,不僅可以看到函數原本的定義,還能看到同一數據庫其他哪些地方使用了同樣的函數。

只要把滑鼠停在函數名稱上,如果變成一隻手的形狀,就可以點擊查看它的定義啦。

雖然很多程式碼編輯器都有這一功能,但是能直接在 GitHub 上查看還是更方便。有 Twitter 網友表示:GitHub 是要做一個完整的 IDE 嗎?

在 GitHub 上,程式碼裡函數和方法的導航通過使用開源語義庫 semantic 實現。目前這項新功能支持的語言有:Go、JavaScript、Python、PHP、Ruby、TypeScript 等。

兩種方式,不再忘記學過的程式碼

GitHub 網頁上現在支持兩種跳轉:

第一種:跳轉到函數或方法的定義

對於公共數據資料庫的子集,可以通過點選文件中的函數或方法調用,來跳轉到同一數據資料庫中的函數或方法的定義。

第二種:查找函數或方法的所有引用

對於公共數據資料庫的子集,可以通過點選文件中的函數或方法調用,然後點選「引用」選項卡,就會顯示同一程式碼數據資料庫中所有該函數或方法的引用。

如何知道某個數據庫是否支持這項新功能呢?在源程式碼文件的開頭可以看到有提示字樣:

點擊「Try jump to definition」,就可以開啓跳轉到定義的功能了。開啓後,網頁的上方還會有這項新功能的示意圖:

因為「跳轉到定義」現在還是一項 beta 功能,支持的項目比較少,你可以去下面這個網址試試: 傳送門

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈GitHub 现在已支持函数定义跳转,妈妈再也不怕我记性差了 〉,首圖來源:Unsplash, CC Licensed。)

你還會想看

【大騙局】《華爾街日報》拆穿 Engineer.ai 假面具!AI 服務背後全是「印度工程師」

工程師殺手級工具!一秒自動補齊後續程式碼,還支援 23 種程式語言

工程師好用資源來了!超完整 Python 查詢表,程式碼複製貼上不用自己寫


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

自學 Python、JavaScript 總是卡?破解學習程式語言 3 大「欠矯正」的心態

$
0
0

【我們為什麼挑選這篇文章】程式語言於科技時代下的重要性水漲船高,而學習資源因為網路的普及變得觸手可得,人人都可以自學成為工程師!

不過自學的工程師中並非每個都成功,AppWorks School 校長田育欣統整三大自學者的誤區,曝光應該矯正的問題心態。(責任編輯:陳伯安)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至   jobs@fusionmedium.com

作者:AppWorks School 校長 田育欣

近年來線上課程蓬勃發展,不少學習平台如 Udemy、Udaciy、Khan Academy 等,都提供多元豐富的軟體開發課程,引領「自學程式」風潮。若是應用得當,半年以內就可以學有所成,讓沒有相關背景的新手,踏上軟體開發之路,現在,想要轉職到程式開發相關的工作,其實不需要再念四年大學或兩年研究所。

儘管如此,在 AppWorks School 過去三年多來,輔導上百人轉職成軟體工程師,其中有不少申請者都是在自學途中,遇到難以獨自突破的瓶頸,所以選擇報名參加 AppWorks School 為期 16 週的免費程式課程(目前有 Android、iOS、Web 專班)。因此,我們想從實際的觀察中,分享我們認為 程式自學者應該校正的三個心態 ,希望能幫助更多人跨過學習障礙,早日成為心目中的軟體工程師:

心態一:別人云亦云,先釐清自己的學習目標

首先,軟體開發新手在一開始接觸程式開發時,很容易迷失在廣大的 CS 知識中,不知道該從哪裡下手。也經常會有各種道聽途說:「聽說 Python 很適合新手」、「聽說前端比較好入門」、「聽說 Java 的工作機會最多」,在各種資訊轟炸之下,許多初心者經常會一下學 Python,一下學 JavaScript,但都侷限在很初階的程度,且往往學到一半,才發現跟自己預設的目標沒有直接相關,花費了大把的時間跟精力,卻徒勞無功。

我們建議,新手在程式開發上可以採取「目標導向式學習」, 先設定一個清楚的目標,再去安排自學計畫與步驟 。例如,如果想要做網頁應用,那麼應該直接從 HTML /  CSS / JavaScript 入門;如果想要開發手機 App,則依開發的平台 iOS 或 Android 來選擇學習 Swift 或 Kotlin,減少繞遠路的時間成本。

如何安排自學路徑?實際上, 網路上已經有不少軟體工程師的過來人,分享從事各種工作應學習的技能樹(如下圖),新手在學習的過程中,可不時確認自己正在學習的內容,是否與目標相關,若發現偏離目標,才能即時喊停,將學習的效益發揮到最大。

前端開發技能樹(部分擷取),清楚描繪新手的學習路徑。資料來源:GitHub

心態二:碰到學習瓶頸,先檢核「時數」、「知識深度」兩大項目

選擇要專注的領域後,另一個新手常見的誤區,就是 經常反覆學習「已知的知識」。變成一直在新手圈裡跨不出去 ,我稱之為「新手舒適圈」。舉例來說,許多 Web 開發新手,經常反覆學習各種 HTML 標籤,卻遲遲做不出想要的網頁畫面;Android 開發新手,則持續練習處理靜態的畫面、簡單的按鈕互動,卻不知道怎麼串接後端資料、處理用戶的網路行為。

之所以會有這個現象,背後通常來自兩個原因。第一,許多新手都是透過影片或短期課程兼職學習,若投入練習的時數不夠,很容易學了就忘,可能前一晚看了影片,隔天有事情沒練習,後天就忘記了,只好重看一次複習,若這次又來不及複習,過幾天可能又得重來一次,就這樣無限循環,卻遲遲無法突破。

這種情形通常是練習與實作的時間不足,必須重新安排學習計畫。我們建議, 若想兼職學習有成,每週至少需花 15-20 小時 ,一次至少安排連續兩小時的時段,例如,平日晚上需有 2-3 天晚上,投入 2-3 小時,週末兩天則需各投入 6-8 小時,才能有所累積。

第二個原因,則是當新手想挑戰較進階的題目、感到困難時,很容易會想「一定是我的基礎不夠好,才會不知道要怎麼做」。所以會反覆的觀看已經看過的影片,花時間重複學習基礎知識,但往往只能加深原有的記憶,對眼前的問題仍然一籌莫展。

在實務上, 進階的問題,很可能需要進階的知識才能解決 ,原本的學習資源或許未能涵蓋。因此,建議這時新手該做的事情,是搜集、閱讀更多「進階知識」,甚至在這個階段,還需要觀摩前人的做法,先模仿、再理解,才有機會突破瓶頸,讓自己更上一層樓。

這不代表基礎不重要。而是要提醒,如果發現自己總是一樣的東西學了又學,或同樣的影片看了三次,卻說不出自己的成長、做不出想要的東西時,就該檢視到底是投入的時間不足,或者該學習更深入、更進階的內容。

8/31 參加 CONNECT 論壇 掌握未來十年需要注意的科技走向!

心態三:學會技能唯一大招:有問題別怕多問

通常初心者都有 1-2 個工程師朋友,當初也可能是受到他們的啟發所以想學習程式。但是在自學的過程中,卻往往不敢開口請教,以為是自己讀得還不夠多,所以不好意思麻煩別人,卻導致在一個問題上花費了過多的時間,累積不必要的挫折感,終至放棄學習。

舉例來說,許多開發環境都有系統 Bug,若待機久了運作上會失常,即使是沒有缺失的程式碼,也有可能跑不出應有的結果。此時有經驗的工程師,會試著「重新開機」或著手解決系統的問題,不到 10 分鐘問題就解決了,但缺乏實務經驗的初心者,通常不會想到原來不是程式碼的問題,糾結許久卻苦無頭緒,可能要等到兩、三天後,意外將開發環境關掉重開,問題才突然解決。

這種心態,與其說是「怕麻煩別人」,通常往往是「怕自己問了笨問題」。但問題本身其實是中性的, 越是去評價問題的優劣好壞,越容易讓自己陷入不敢提問的困境 。反之,若能將每一個問題單純視為學習的機會,越快解決問題,就越快累積經驗值,才越有機會成為合格的軟體工程師。

當然,靠自己的能力解決問題,會有很大的成就感,但若發現自己已經困在同一個問題好幾個小時了,不妨開口向工程師朋友請教,透過他們的經驗,幫助自己更快速成長。如果真的覺得朋友很忙,網路上的技術討論社群如 Front-End Developers TaiwanAndroid TaipeiiOS@Taipei 等,都很歡迎新手張貼問題,也會有熱心的工程師前輩幫忙解答。

總結來說,拜網路產業開源風氣之賜,程式開發相比於其他技能,有非常多的網路學習資源,卻也容易讓新手迷失,希望以上三點提醒,能夠幫助初心者檢視自己的學習問題,進而有所突破。

作者簡介:

Team AppWorks 原生成員,2011 年起以實習身份加入,畢業後升格為投資分析師,而後轉任 AppWorks School。台大財金系畢,輔 AIESEC 與國標拉丁舞,熱愛舞蹈與所有美的事物。

(本文經投稿作者 AppWorks 授權刊登,並同意 TechOrange 編寫導讀與修訂標題,原文標題為《校正 3 個心態,跨越自學程式門檻》。意投稿者可寄至:edit@fusionmedium.com,經編輯檯審核並評估合宜性後再行刊登,首圖來源:Unsplash, CC Licensed。)

AppWorks 深度好文

【2018 年度趨勢回顧】AppWorks 培養的 328 家新創,哪八家表現最出色?

衝擊區塊鏈新創血淋淋的現實!COBINHOOD 創辦人:區塊鏈應用充滿希望,但太少人使用

盾心科技創業 4 年經驗談:AI 創業選擇太多,該如何避免「走馬看花」的燒財困境?


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

【工程師界的創世神】近 50 年來最有影響力的 10 種程式語言,到底是誰發明的?

$
0
0

【為什麼我們要挑選這篇文章】每個厲害的程式背後,都有一個偉大的發明家!Java、C 語言和 Python 都是我們耳熟能詳的程式語言,它們促成人類科技與科學研究的進展,那們發明這些程式語言的「神人」是誰?透過下文,我們將認識 10 個程式語言的發明者;此外,如果有去學習這些程式的話,下文還附上資源供你參考。(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com

前不久文摘菌(本文作者)曾報導過 4 分鐘看盡 Top 15 程式語言 15 年來的沉浮史,評論中就有網友留言:為什麼 Ruby、Lisp 這些語言沒沒無聞?

軟體世界中有各種各樣的程式語言,每年還會有新的語言出現,最近發佈的程式語言就有 Scala、Kotlin、Go 和 Closure,但歷史車輪滾滾向前,浪花淘盡英雄,它們當中只有少數才能夠存活下來。

程式語言是軟體開發中最重要的東西,多年來隨著人們的討論和批評不斷改進,沒有最好的語言,只有更合適的語言。儘管大家都很熟悉那些比較流行的程式語言的發展歷史,如 James Gosling 是 Java 之父,但並不是每個開發人員都知道是誰發明了 Perl、Pascal、Lisp 或 Erlang。

今天文摘菌帶大家看一看,過去 50 年在軟體開發領域被列為最具影響力的十大程式語言及它們背後的開發者,希望可以站在巨人的肩膀上一睹各種程式語言的風采,在每種語言文末都有免費課程推薦給大家學習。

以下排名不分先後,只是為了讓我們瞭解並記住那些在程式語言和軟體開發領域中做出巨大貢獻的程式大師們!

Java:James Gosling

Java 是最流行和最成功的程式語言之一, James Arthur Gosling 博士因發明 Java 而被譽為 Java 之父,Java 最初由 Sun Microsystems 開發和支持,在 2010 年 1 月 Sun Microsystems 被 Oracle 收購後轉由 Oracle 繼續開發支持。Java 的使命是 WORA(Write Once Run Anywhere)(一次編譯,到處運行),Java 平台的獨立性是它在企業領域取得成功的重要支柱之一。至今,它仍是最流行的程式語言之一。

如果你對學習 Java 感興趣,那麼 The Complete Java Masterclass 課程無疑是極好的選擇。

C:Dennis Ritchie

美國電腦科學家 Dennis MacAlistair Ritchie 於 1967 年至 1973 年間,在 AT&T 貝爾實驗室發明了 C 語言。至今 C 語言還是非常流行並廣泛用於程式設計,它比 Java 的歷史更久遠,但它仍在程式語言中佔據一席之地,另外,Dennis Ritchie 還與他的老搭檔 Ken Thompson 一起創立了舉世聞名的 UNIX 操作系統。他的知名度雖遠不及比爾.蓋茲或史蒂夫.賈伯斯,但其對軟體世界的貢獻幾乎無人能及。

每個工程師都應該了解 Dennis Ritchie 以及他對程式世界的貢獻。如果你想學習 C 語言,你可以加入 Coursera 的 Introduction to Programming in C Specialization 課程。與其他 Coursera 認證課程一樣,所有課程都是免費的,但你需要支付認證證書的費用。

此外,如果你想學習數據結構,那麼可以參考一下這些免費的 C 語言數據結構和演算法課程。

課程 傳送門

C++:Bjarne Stroustrup

Bjarne Stroustrup,1950 年 12 月 30 日生於丹麥奧胡斯(Aarhus Denmark),是一名丹麥電腦科學家,因其發明了廣泛使用的 C++ 語言而聞名天下。顧名思義,C++ 是在 C 流行的時候,作為 C 的下一代語言開發出來的。與偏重結構化的 C 語言不同,它的顯著特性是面向對象,C++ 仍然是最流行的語言之一,並且在高頻交易系統中有著廣泛應用,因為它兼容本地系統並具有面向對象的特性。

如果你想學習 C++,那麼可以參加 Udemy 上的 Beginning C++ Programming——From Beginner to Beyond 課程。它的理論與案例組合十分棒。

如果你不介意學習免費資源,那麼就盡情享用這些免費的 C++ 課程吧。

資源 傳送門

Python:Guido van Rossum

Python 由 CWI 的 Guido van Rossum 設計,是一種通用的高級程式語言,其設計理念強調程式碼可讀性,語法清晰而且通俗易懂。在美國,Python 在學術層面上幾乎取代了 Java。與上一代不同,如今的學生已經開始用 Python 而不是 C 或 Java 寫程式。

如果你還在猶豫用 Python 還是 Java 開啟你的程式之旅,這個 資訊圖 可能會對你有所幫助。

Python 廣泛用於 Web 應用程式開發、軟體開發和資安。谷歌、雅虎、Spotify 等科技巨頭已經廣泛使用 Python。如果你想學習 Python,那麼 Jose Marcial Portilla 的 The Complete Python 3 Bootcamp 無疑是最好的入門課程之一。

課程 傳送門

如果需要更多學習資源,你可以參考這份適合初學者及中級工程師的 Python 資源列表。

資源 傳送門

JavaScript:Brendan Eich

如果你問我哪種語言是過去 5 到 10 年裡的最大贏家,我會說那必須是 JavaScript,它借助 jQuery 這樣的庫,統治了客戶端開發領域,現在正憑藉 NodeJS 這樣的庫,進軍伺服器端開發領域。

JavaScript 是由 Brendan Eich 設計,Netscape Communications Corporation 開發的一種基於原型的腳本語言,具有動態弱類型的特點,其功能十分強大。JavaScript 廣泛用於客戶端腳本編寫、驗證、動畫、事件捕獲、表單提交和其他常見任務。它在瀏覽器中運行,幾乎各大網站都有所使用。

我強烈建議所有工程師都學習一下 JavaScript,Introduction to JavaScript & jQuery 是最好的入門課程。

如果你更傾向於從免費資源起步,這裡就是一些不錯的 JavaScript 課程。

課程 傳送門

更多資源可參見這些網站。

資源 傳送門

PHP:Rasmus Lerdorf

無論你多麼討厭 PHP(Personal Home Page),你都不能忽視這樣一個事實:一半的網路都運行在這一美妙的網路語言上。

PHP 最初由 Rasmus Lerdorf 於 1995 年發明,PHP 借助於 PHP 組生成實現,並以此作為對 PHP 語言的正式引用。PHP 是微軟的 Active Server Pages(ASP)伺服器端腳本引擎,以及其他類似語言(如 Java Server Pages(JSP))的競爭對手;但 PHP 在與這些語言的競爭中脫穎而出,現在已被安裝在 2000 多萬個網站和一百多萬台 Web 伺服器上;PHP 也是開源的,被例如 Facebook、Wikipedia、Wordpress 和 Joomla 等網路巨頭所使用,PHP 廣泛用於建構動態網頁和伺服器端開發。

網上有很多 PHP 的課程,如果你想學習,我強烈推薦 jorge edwin diaz prado 的 PHP for Beginners。

課程 傳送門

如果你需要免費的 PHP 學習資源,這裡列出了一些 PHP 和 MySQL 的免費課程。

課程 傳送門

Perl:Larry Wall

Perl 是一種高級的、通用的、解釋型的動態程式語言,Perl 由 LarryWall 在 20 世紀 80 年代中期設計和開發,因其出色的文本處理能力而聲名鵲起。至今它仍是在 Unix 系統上開發報告和腳本的主要語言,Perl 以解析和處理大型文本文件而聞名,廣泛用於 CGI、數據庫應用程式、網絡程式和圖形程式,Perl 也被 IMDB、Amazon 和 Priceline 等公司廣泛使用。

如果你想學習 Perl,那麼我建議你看看 Udemy 上的 Perl Programming for Beginners 課程。

對於 Java 開發人員來說,Perl 或 Python 是一個很好的補充,因為開發人員通常需要腳本語言來執行維護和支持等特定任務。

Ruby:Yukihiro Matsumoto

Ruby 最初是由日本的 Yukihiro Matsumoto 在 20 世紀 90 年代中期設計和開發的。如果你曾嘗試過 Ruby 和 Rails,你就會發現使用 Ruby 是一件很有趣的事。Ruby 受 Perl、Ada、Lisp 和 Smalltalk 的影響,致力於讓寫程式更加高效有趣。Ruby 主要用於 Web 應用程式開發,被 Twitter、Hulu 和 Groupon 等各大網站所使用。

如果你想學習 Ruby,那麼 Alex Korban 在 Pluralsight 上的 Ruby Fundamentals 無疑是最好的入門課程。

Lisp:John McCarthy

Lisp 是列表處理器(List Processor)的縮寫,由 JohnMcCarthy 開發,是第二古老的高級程式語言,它是像 Haskell、Erlang 或 Scala 這樣的函數式程式語言之父,主要用於軍事開發和防空系統。

教授 Lisp 的課程不多,特別是好的課程,但是 Nikoloz 的 Learn Lisp Programming Basics 課程還不錯。

Pasca:Niklaus Wirth

Pascal 是一種極具影響力的命令式和過程式程式語言,設計於 1968 – 1969 年,由 Niklaus Wirth 於 1970 年正式發佈。Pascal 是一種小型高效的語言,旨在鼓勵使用結構化程式和數據結構,從而帶來良好的寫程式體驗。

與 Lisp 類似,Pascal 因其年代久遠而沒有什麼好的課程,但是如果你想學習 Pascal,你可以在 Udemy 上學習 Learn to Program with Pascal 課程。

原文報導 傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈近 50 年来最具影响力的 10 种编程语言,都是谁发明的?〉。首圖來源:Flickr CC Licensed)

更多關於程式語言的消息

自學 Python、JavaScript 總是卡?破解學習程式語言 3 大「欠矯正」的心態
【Python 的誕生故事】覺得其他程式語言不好用,超狂荷蘭工程師花三個月打造自己的程式語言
【初學者也能輕鬆上手】MIT 推出「超越深度學習」的新 AI 程式語言,無須數學專業知識就能寫出 AI!


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

【學歷、能力哪個重要】flv.js 開源作者月薪不到 22K 新台幣,因為他只有高中學歷?

$
0
0

【為什麼我們要挑選這篇文章】對工程師來說,是學歷重要,還是技術重要?在中國,有位名叫謙謙的工程師開發了 flv.js,在中國相當受歡迎,GitHub 標星高達 1.5 萬,還被評為「中國工程師在 H5 影音領域的一項傑出成果」。然而,他的薪水連 22K 新台幣都不到。

有人說,可能是因為謙謙只有高中學歷;有人說,可能是他花時間維護 flv.js,沒顧好工作;也有人說,這是因為他的職級較低,或是公司制度問題。真相是什麼?工程師是學歷重要,還是技術比較重要?(責任編輯:郭家宏)

日前文摘菌(本文作者)向大家介紹了在美國當數據科學家的年薪水準,發現科學家們的整體薪資走勢雖然有所下降,但是年薪中位數保持在 12 萬美元(約新台幣 372 萬元)左右。

TO 相關文章:
工程師海外薪資情報:跑去美國當數據分析師,年薪可以拿多少?

同一時間,知乎上一個很老的話題忽然被重提,也和開發者的薪酬有關。B 站三年前開源的 flv.js 專案大紅,標星超過 1.5 萬,但是專案的開源作者謙謙(網名)被曝月薪竟然還不足 5000 人民幣,(換算成新台幣,就是傳說中的 22 K)年薪不到 6 萬人民幣(約新台幣 27 萬元)?對比一下簡直是天壤之別!

那麼當年工程師的薪資情況到底如何呢?根據「2017 年一線城市程序員工資大調查」顯示,一線城市的工程師薪資平均數和中位數均上 10K(約新台幣 4.5 萬),最低只有 3K(約新台幣 1.35 萬),最高則有 25K(約新台幣 112.5 萬),差距較大。

如果只看薪酬的話,謙謙(flv.js 開源作者)只能算是工程師裡的「低收入戶」了?那麼問題來了,flv.js 到底是什麼,為什麼有人說這個專案十分牛逼,但開源作者遭受到的卻是如此冷清的待遇?

高中學歷工程師開發出 flv.js,GitHub 標星 1.5 萬薪資卻不到新台幣 22 K

如果只用一句話介紹,flv.js 就是一個使用純 JavaScript 編寫的 FLV(HTML5 Flash Video)播放器。

具體來說 flv.js 到底厲害在哪裡?根據作者謙謙介紹,flv.js 做了三件事:

1. HTML 5 原生僅支持播放 mp4/webm 格式,flv.js 實現了在 HTML 5 上播放 FLV 格式影片。
2. 使 Bilibili 網頁端平滑過渡到 HTML 5 播放器,歷史遺留不再是障礙。
3. 對於影片直播,在 HTML 5 上支持了延遲極低 HTTP FLV 播放,解開網頁端直播對 Flash 的依賴。

還是不太懂?別急,知乎網友 @飛翔的蝸牛 補充道,如果要解決在手機網頁端用 H5 播放的問題,除了有時候會帶來 18 秒延遲的 HLS,目前來說只有 flv.js,它能將延遲控制在 1 秒內,因此知乎網友 @王平 認為,flv.js 是「H5 上實現直播的目前已知的最優解決方案」。

其次,@王平 還說,flv.js 不僅能實現高質量的影片解碼,還支持 H5 富媒體標準 mse,稱讚說,「這是中國工程師在 H5 影音領域的一項傑出成果」。

flv.js 不僅在國內獲讚無數,其在 GitHub 上的開源項目也有相當高的關注度。

到這裡,大家是不是都開始腦補 flv.js 背後的工程師,到底是何方神聖?

答案揭曉:

其實,flv.js 的開源作者謙謙只是個 95 後(96 年出生,今年才 23 歲),最高學歷居然也只到了高中。

據本人在微博的回覆,對程式語言的學習是基於即時需求。不得不說,大牛就是大牛!

然而,根據謙謙在微博上曬出的工資入帳截圖,顯示只有 4389.32 元(略低於新台幣 2 萬),不到 5K,謙謙自己也感慨「比 star 還少」。

不得不說,在這項突破性成果面前,5K 月薪(約新台幣 22 K)顯得有點 low 了。

到底是什麼原因使得 flv.js 的開源作者的月薪如此之低?有網友直接感嘆 B 站自己親手送走了一個技術大神,並質疑目前大廠的管理制度,認為他們都不重視底層技術員,只重視那些熱門應用的技術人員。也有網友認為,或許是謙謙本人在維護 flv.js 上花費了太多時間而沒能完成領導交付的任務,亦或者是因為謙謙在公司的崗位類型與職級較低,才導致現在的結果。

從謙謙的微博截圖上看,他在公司「三次績效評級拿了三個 C」,或許也是原因之一。

更多的網友則是在為謙謙鳴不平,認為就 flv.js 在 GitHub 上的標星量來看,謙謙完全能找到一個薪資與本身能力相匹配的工作,他早就「應該跳槽」了。

工程師不好當,但薪資是會隨技術增加的

不管是國內還是國外,像謙謙這樣學歷不高技術卻很好的工程師不在少數。在知乎上將關鍵字「程序員」(中國用語,意指工程師)和「學歷」、「高中」、「專科」等詞隨機組合搜尋,能看到不少年輕人在學歷和技術面前糾結掙扎。

工程師這條路終點或許會有高薪等待,但是當中艱辛又有誰知道呢?

加布里埃.戚魯利:2048 背後的少年

提起《2048》,想必大家都會有熬夜刷遊戲過關的「黑歷史」,但是小遊戲背後其實還藏有一段艱辛史。

加布里埃.戚魯利開發出小遊戲《2048》的時候才 19 歲,他也只是抱著試試自己是否能獨立做出一款遊戲的心態,就參照著自己喜歡的遊戲《1024》製作出了《2048》,將其發佈在了 GitHub 上。

沒想到第二天,推特、臉書等社交軟體上全都在討論《2048》,遊戲頁面的訪問人數也是指數級地增長。不少遊戲開發人員找到他,希望能將這個遊戲植入到手機中獲利。但是,考慮到《2048》是基於其他遊戲製作而成,加上當時戚魯利手上還有其他專案,就拒絶了邀約。

於是,各種版本的《2048》相繼出現在手機商店裡,各大開發商想必都賺了個盆滿鉢滿,而開發者戚魯利只能望梅止渴。

直到後來戚魯利改變想法,他說自己不是為了金錢,而是不想讓自己錯失良機,遊戲開發之後也會儘可能地保持初心,他說:「唯一不後悔的方式,就是擁抱它。」

現在,戚魯利已經離開了遊戲行業,在荷蘭一家企業管理軟體公司做著前端開發和設計師的工作,因為懂得設計和寫程式,他成為了公司的重要員工。

阿里工程師:學歷不夠努力湊

現今在阿里工作的一名工程師曾在匿名社區發文,講述自己的奮鬥史。

他說,因為高中成績太差,大學是靠關係才進去的,到大二才發現學制是網路教育。畢業之後第一份工作月薪只有 3 K(約新台幣 1.3 萬),住的是 5 平方米(不到 2 坪)的隔斷房。後來陸續換了兩家外包公司,月薪分別漲到 5 K 和 7.5 K(分別是新台幣 2.2 萬 和 3.4 萬)。

2014 年在某二線大廠遇到了他的伯樂,技術能力得到提升,離開的時候月薪達到 15 K(約新台幣 6.8 萬)。

2016 年加入阿里,剛開始是 P6 級別,現在經過自己的努力升到了 P7 級別,年薪已達到百萬(新台幣 450 萬等級),總包 100+。

學歷只是敲門磚,技術才是硬道理?

從上面的例子中我們看到,只有高中學歷的謙謙進入 B 站開發了 flv.js,19 歲的戚魯利開發出紅遍全球的《2048》,三本院校畢業的阿里工程師現年收入過百萬,他們的學歷都不夠耀眼,但與此對比而言,他們的寫程式能力都十分強悍,也都取得了非常不錯的成就。

那麼對於工程師而言,如果硬技術能力過關,學歷是不是就不那麼重要了呢?公司在招募工程師時更看重什麼,學歷?還是能力?有人說,學歷只是敲門磚,真正決定後期升職加薪走上人生巔峰的還是過硬的技術,但是如果沒有敲門磚,這個門是進不去的。

現實情況真的如此嗎?文摘菌特意去採訪了幾位工程師和網路公司的 HR,來看看他們是怎麼說的吧。

工程師 Y:在深圳做 Java 開發

Y 所在的是深圳某上市公司,公司對工程師學歷的基本要求是本科及以上,沒有例外情況出現過。工程師的工作量需要視情況而定,專案期間的工作量比較大,會經常加班,平時是普通的上班族時間,以及週末雙休。

公司給應屆生的月薪是稅前 7 K(約新台幣 3.2 萬),沒有績效考核。Y 抱怨說有同齡人的薪資水平已經超過 10 K(約新台幣 4.5 萬)了,當被問到為何不跳槽到薪資更高的公司時,Y 表示想先等漲薪,下家的薪酬會適當考慮上家標準,而且「能力越高的人越好跳槽」。

工程師 Z:在重慶做網路

Z 現在在重慶某大學任職,主要做一些網路、雲端平台、虛擬化,還有一點通信和資訊安全方面的工作。學校對工程師的學歷要求也是本科及以上,如果要編製的話就得 985(意指中國頂尖名校)或者海外博士級別。工程師平時的工作量不大,作息也是朝九晚六,只有開學和期末比較忙,但都沒有遇到過加班的情況。

學校給他們的薪質問題與學校職工一樣,會「定級定崗評職稱」。Z 表示目前還不想去網路公司,主要是考慮到華為去年淘汰了一批 35 歲之後的研發人員,現在很多網路公司在效仿,Z 想「為 35 歲之後謀條出路」,Z 還感慨道「IT 始終是一個吃青春飯的行業」。

Z 認為,對於工程師來說,前期能力更重要,後期就主要看學歷了。

網路公司 A:北京某大廠

HR 介紹道,現在公司的工程師有 2000 多人,占比 20% 左右。

公司在招工程師的時候更看重選手的公司背景、教育背景、是否有亮點的專案經驗等。本科學歷是公司對工程師的硬性要求,公司成立初期可能有找過專科畢業的工程師,現在基本沒有了。就以往的面試經驗而言,很少能碰到學歷很低但是專業很強的人,如果有,履歷上還需要多下功夫,比如利用特別優秀的比賽或者知名網路公司經驗做背書,這樣才可能考慮他。

網路公司 B:上海某技術公司

根據 HR 介紹,現在公司規模在 500 到 1000 人左右,工程師占了 70%。

相對於學歷,公司更看重工程師的技術能力和工作能力,相較而言學歷沒有那麼重要,現在公司裡也有專科學歷的工程師,而且後續發展與升遷全看個人能力,「與學歷的關係不是很大」。

HR 還表示,工程師的入職薪酬跟很多因素有關,主要是看崗位類型和職級,與源碼貢獻率等沒有太大關係;後期薪酬的調整也都是按照公司規定來,每年會調整一次,如果對專案貢獻大,漲薪幅度也會相應加大。

希望技術大神們都能得到值得的尊重

儘管有網路公司 B 這種更看重工程師技術能力的公司,但更多公司在招募工程師的時候還是會把學歷放在首位,學歷只是敲門磚的話看來不無道理。

但是回過頭來我們不禁還是會疑惑,為什麼不少像謙謙這樣的技術大神竟會在公司內遭此冷遇,好像不僅和學歷掛鉤,也不僅和公司制度有關。

當今社會給予了工程師群體很多關注,似乎工程師的高薪是理所當然,工程師群體在接受這種注視的同時,對所處的社會身份也就會產生比較高的期待,但在與現實的落差對比中難免被注入不公平因素,謙謙就是一個典型的例子,他的能力與收穫呈現出極端不平衡的態勢。

而在更早的時候,謙謙在微博上就已經表達出了想要遠離 js 圈的想法。

目前,謙謙的微博更新停留在 2018 年 11 月,內容是系統自動發送,在未更新的這段日子裡,或許他在重新學習 C++,或許他已經在某家薪資不錯的公司任職。

不管怎樣,我們都希望國內像謙謙這樣的技術大神們能得到應得的尊重。

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈GitHub 上标星 1.5w,被 B 站使用,flv.js 开源作者月薪还不到 5k!学历对程序员有多重要?〉。首圖來源:大數據文摘

更多關於工程師的資訊

工程師海外薪資情報:跑去美國當數據分析師,年薪可以拿多少?
【工程師界的創世神】近 50 年來最有影響力的 10 種程式語言,到底是誰發明的?
超省時 GitHub 新功能!點選函數就能看定義,記憶差的工程師不用再苦苦尋找了


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

「宅在家狂練程式,為什麼成長的只有身材?」盤點高級開發者與一般碼農的 5 大差異

$
0
0
圖片來源:Alvar C.H. Freude

【為什麼我們要挑選這篇文章】優秀開發者和一般碼農的差異是什麼?一般的碼農是執行者,根據主管、客戶的要求,寫出相對應的程式;但優秀開發者會理解需求與程式內部架構,找出最適合的程式碼,持續優化程式並向同事分享。想讓自己職涯更上一層樓的工程師,必須要了解以下 5 點優秀開發者所具備的特質與能力。(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com

不久之前,文摘菌(本文作者)曾報導過,Python 之父 Guido Van Rossum,一位荷蘭工程師邊看電視邊寫程式,歷時三個月開發出了現今廣泛應用的 Python 語言,就有人在後台問了:「同樣是工程師,我也喜歡宅在家裡,為什麼收穫的只有身體的橫向發展?」

那些號稱「程式碼教科書」、「程式不透過編譯器都會道歉」的高級開發人員和在搬磚邊緣苦苦掙扎的碼農有什麼不一樣呢?難道真如學習一個樂器,例如管樂,老師會看你嘴唇薄厚,或是絃樂,可能會看你指節長度一樣,寫程式也需要有天賦嗎?

開發人員的技能範圍是很廣的,不能僅根據工作年限來評價一個人的才能,五年、十年甚至十五年所謂的「工作經驗」並不一定是有能力、高效率開發人員的佐證,有些人往往年齡大而能力低,那麼是什麼讓有些人能在同類中脫穎而出呢?

文摘菌透過觀察周圍一些高級開發人員,發現他們身上都有相同的特質,到底是什麼樣的特質使得他們開發出來的程式碼使用性好,漏洞低呢?可能他們都具備以下的 5 個特質吧。

理解程式碼的內部架構,優化程式碼的運作模式

程式化面向對象、功能編寫與面向對象設計、清晰編碼技術的 SOLID 是編程模式的「三重奏」,它們很大程度上決定了程式碼創建背後的思維模式。

大多數初級開發人員在寫程式過程中並沒有意識到,寫程式是一種超越了語法規則的問題,可以把它看作可以多種方式完成的通信工具,好的程式模式有助於優化程式碼間的通信方式。

任何人都可以寫程式,正如任何人都可以在豆瓣上發短訊和寫書評一樣,當然這肯定不能與史蒂芬金的小說比擬。程式模式作為高級開發人員程式碼背後的指導力量,就像小說結構對於其整體情節的反映一樣,所有的語言都是有其內部架構的,高級開發人員可以在內部層面理解並應用,這是許多初級和中級開發人員做不到的。

創造力:整理思路,知道自己的程式要解決的問題

當我們在 for 循環和 if else 語句中開始寫程式時,我們往往更喜歡用複製和貼上的方式解決程式碼問題。然而,理解程式碼的方式決定了你是低級還是高級開發人員。

走一步,再走一步,更進一步,可能會發現另外一番風景,與其複製貼上程式碼,倒不如整理好自己的思路,創造出有靈魂的程式。

高級開發人員之於普通開發者,是他們有創造力,而不只是依靠 Google 的幫助。他們知道自己的程式碼要解決的問題,看得到風險,或者說至少預測得到程式碼運行時的問題,能看得到程式碼中的潛在漏洞並想好如何改進它們。如果發現知識方面的盲點,他們不單單會看表面,而是對工具箱中的所有內容進行更深入的瞭解,總之,高級開發人員的眼中能看到一個更加深邃的程式碼世界。

保持客觀:沒有絕對正確的程式碼,只有適合的程式碼

每個人是用自己已有的知識來看待現有的問題,這也是初中級開發人員的共同點,他們更傾向於根據個人經驗而不是程式碼本身的問題來解決問題,他們的個人偏好、風格、命名慣例和思維方式是他們提供評估和建議的出發點。這是成長過程的一部分,沒什麼不對的,但是沒有絶對正確的程式碼,只有適用於情境和場景合適的程式碼。

高級開發人員能意識到這一點,接受他們的程式碼可能不是最好的,永遠還有改進的空間,面對不同的處理任務和問題時都能夠保持樂觀,整理和改進出不同的程式碼以解決不同的問題。同時他們也是有效的程式碼管理員,能指出同行所做架構中的弱點和邏輯思維混亂之處,能高瞻遠矚,不受任何一種編碼或規範的束縛,從突發事件中看到問題,同時根據實際情況做出最優選擇。他們著重點在於解決問題而不是選擇工具。

追求卓越,知道「能用」和「優良」程式碼之間的差別

作為開發人員,寫程式碼是本職工作,一些人寫完即止,打卡下班,不會考慮程式碼復用性和簡潔性,而高級開發人員則會追求完美。

多數老闆只關注軟體是否能正常運行,專業的開發人員知道優秀的軟體和能用的軟體之間的差別,在寫程式碼時會考慮到重構問題,他們更關注技術和程式碼風格等隱性成本,能在專案的準時交付和與老闆的洽談這兩者之間做平衡。

廣博的知識面和對框架和語言的精準理解,不僅使得他們知道如何創建優秀軟體和能用軟體,也使他們能夠在必要時提出創造性的解決方案。

教的能力:樂於激勵並幫助經驗不足的同事

「平庸的老師教導,一般的老師解釋,優秀的老師展示,偉大的老師啟發。」
—— 威廉亞瑟沃德

真正的高級開發人員對工作充滿熱情,樂於激勵並幫助經驗不足的同行。

寫程式本身就是一種思想,有經驗的人能夠化繁為簡,根據實際需要在不同界面和媒介之間交流,就像任何教師都需要精通一定的領域一樣,雖然「經驗」能以履歷上的專案數量和在不同公司的任職時間這些標準來量化,但會啟發的高手屬於那些真正瞭解程式內部藝術的人。

寫在最後的話:養成「整理」和「反思」程式碼的習慣

上述特徵存在於他們的個性和知識的深度中。使他們能比普通工程師更快地探索未知程式碼區域,通常能夠顧及全局並以開明的心態審視程式碼。高級開發者提倡並引導同行養成「整理」和「反思」程式碼的習慣,旨在形成思維的正向回饋,是真正問題的解決者和思考者。

這些品質都是在平時開發過程中思考、積累得到的,誠如「哪有什麼天賦異稟,誰不是在苦中作樂」這句話所描述的一樣,程式開發是一門藝術設計,而不是單純的寫程式碼,需要我們在開發過程中多做總結,思考是比單純地複製貼上要難的多,但是正如電影《三個傻瓜》中的經典台詞:「追求卓越,成功自然會追著你跑」,寫程式碼的習慣、程式碼的風格、簡潔性這些方面都是一名優秀的開發人員應該考慮的問題,在追求卓越的過程中,這些品質都會積累下來,成為後續開發的財富!

相信具備了這些品質和自我反省的能力,你也可以修正自己開發過程中的 bug,在寫程式的過程中少走彎路。

原文 傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈一个码农的自我修养:5 个高级开发人员应该具备的品质 〉。首圖來源:Alvar C.H. Freude

更多關於寫程式的技巧

寫程式不再崩潰!介紹 5 個 Google 工程師都在用的好習慣
台灣正缺軟體工程師!新鮮人年薪中位數破 70 萬台幣,但他不能只會「寫程式」
【工程師實用外掛】開啟 Cython,讓你的 Python 運算速度提升 36 倍!


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

網友大哉問:我今年 28 歲,應該從普通工程師轉行 AI 工程師嗎?

$
0
0

【為什麼我們要挑選這篇文章】AI、機器學習工程師跟普通的工程師有所差別,儘管 AI 正在世界熱潮上,但要轉行還是會碰到多樣阻礙,更重要的是,因為 AI 工程師少,所以難以窺探實際在做什麼?Reddit 有網友發問題,一起來看他們的討論。(責任編輯:陳伯安)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請聯繫出處

作者:量子位/安妮

求助。

28 歲的物理工程師,想轉行做 AI 到底值不值?機器學習工程師在企業中的現狀又是什麼樣子的?

一則求助帖,在 Reddit 論壇上迅速發酵:

我是一名物理工程師,對目前的工作不那麼感興趣,甚至有點想回學校稍微逃避下現實和責任。

在沒畢業前,有人建議我去搞機器學習,也激勵我去做電腦視覺方面的實習,去做更多的項目等。目前我已經有一份工作了,我想「重新考慮」這條路。

目前的工作能看到數據處理的重要性和繁瑣性。

基於上述原因,我原來越傾向參加一個 AI 方面的一年制專業碩士課程。但是,我想知道數據/機器學習工程師在中大型企業中的工作到底是怎麼樣的?

我不打算成為一名工程師了,因為我不那麼年輕已經 28 歲了,並且知識背景中大多數與物理相關。我想這樣的話,自己沒有搞電腦的那群人有競爭力。

所以,我應該棄工作選擇讀書嗎?

我知道求助陌生人似乎不太明智,但我希望從別人的故事中找到對自己的幫助。

一時間,這則貼子下眾說紛紜,網友從不同的角度,拼湊起當下機器學習工程師的真實工作全貌。

不當工程師卻想進攻機器學習,有點癡人說夢

網友 mimighost 表示,首先應該擺正對機器學習工程師的認識,可以說這個崗位本身有些矛盾。

他認為,將機器學習工程師首先應該是一個合格的工程師,你的編程技能應該超過你所掌握的所有科學知識。

所以,此前即使是非科班出身的物理工程師,也應該先把提升點放到編程本身上。

mimighost 認為,在工程師行列中留給機器學習工程師的崗位非常有限,崗位本身就是矛盾的。但可以考慮向機器學習研究員或者研究科學家方向發展。

要是想這樣發展,只讀個一年碩士怕是遠遠不夠,怎麼著,也得是個博士了吧。

年齡會是轉行工程師的一個門檻嗎?

一位網友和樓主有著相似的困惑,表示年齡 28,在於年輕人競爭同一崗位時,會不會沒有優勢反倒是劣勢啊。

這個問題倒是不難理解,「35 歲的工程師該何去何從」也是國內工程師們擔心的問題之一呀。

網友 fakemoose 認為,在這個年齡段無論如何也不應該申請非常入門的崗位了,應該利用已經積累起來的經工作技能。

也有網友不服,表示在數據科學領域,即使是入門級別,其收入也已超過美國 90% 人口了。

還有更多不同的聲音:

如果年齡超過了 40 歲,則可能是一個限制因素。
——analyst___apu

我是從 30 歲開始從物理過渡到機器學習的,所以這個年紀轉行是可能的,我是自學。
——amnezzia

大多數認為,28 歲依然年輕。大部分人讀完博士也老大不小,大有資本去探索新領域。年齡不是門檻,行業經驗才是。

轉行必須抓穩的兩大技能:數據科學、Python

不少過來人的建議是,數據科學技能是轉行之後的最大挑戰。

而物理學轉到 AI?其實很加分。

網友 i_love_FFT 表示,自己是一個樂觀主義者。如果能在現在地區找到一個高科技公司,則物理學的背景是個加分項,是個必須的技能。

如今,幾乎每家科技公司都在建立機器學習團隊。儘管對於那些做過大量在線編程課程和有某網站的 AI 證書的人來說很容易,但最大的挑戰始終是找到能夠理解數據本身的人!

如果具備物理工程背景,那麼能夠很好地理解基於物理的數據,包括傳感器數據,物理系統模型等。這種技能與對機器學習的興趣相結合,就是求職過程中的閃光點。

除了數據科學,請一定學好 Python 啊。網友 Heartomics 表示,自己最大的阻礙就是接受一種 Pythonic 的做事方式。

推薦學習資源 ,成為 Python 專家需要什麼

機器學習工程師的一天長什麼樣子?

那麼,工程師的一天是怎麼過來的?

一位機器學習工程師總結了自己在一家全球員工數過 10 萬的系統集成商工作的時刻表。

他表示,理論上來說,他們的工作是設計模型、調整模型、設置 NLP pipeline,重構數據科學家編寫的程式碼,並做一些雲端的任務,對吧?

但事實上,他需要做的是任何客戶想要的東西。自己的身份也是多變的:

可以是 Python 開發人員、數據工程師、數據科學家和數據分析師。雖然在自己看這些都差不多,但在客戶看來,區分這些崗位會顯得這個任務多樣化。

大概就是:我是一塊磚,哪裡需要哪裡搬。

目前正在同時處理三個項目:一個與銷售相關,一個是需要重構程式碼的成熟項目,還有從 PoC 遷移到 NLP 項目。

一天的時刻表大概是這樣的:

09:00 電話會議

09:30 開展 NLP 項目(Python)

11:00 電話(1 小時)討論銷售項目

12:00 午餐

12:30 電話演示時間

13:00 項目工作(Python)

15:00 討論項目

16:00 查看同事模型的文檔設置和超參數。

17:00 回家。

誒?朝九晚五的工程師?

相關討論傳送門

Reddit 原貼文

知乎相關問題:
非電腦資訊專業學生如何轉行 AI,並找到演算法的 offer?

(本文經 AI 新媒體 量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈我,28 岁,应不应该从从普通工程师转行到 AI?〉,首圖來源:Pixabay, CC Licensed。)

延伸閱讀

超省時 GitHub 新功能!點選函數就能看定義,記憶差的工程師不用再苦苦尋找了

【大騙局】《華爾街日報》拆穿 Engineer.ai 假面具!AI 服務背後全是「印度工程師」

工程師殺手級工具!一秒自動補齊後續程式碼,還支援 23 種程式語言


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

給新手的 7 條學程式建議:多探索開源碼,至少要學會一個框架

$
0
0
圖片來源:twitter

【為什麼我們要挑選這篇文章】很多人想要學程式,但能持之以恆練下去,成為頂尖工程師的少之又少。之所以會失敗,很可能是因為學習的方式與心態錯了,導致事倍功半,最後放棄。

以下,是給新手的 7 個學程式語言的建議,不需要快,但是已穩定的步伐向前,往頂尖 programmer 邁進。(責任編輯:郭家宏)

背英語單字,背到「abandon」就放棄了?學程式語言,寫到「hello world」就沒興趣了?

其實大家在學習程式語言時,寫的第一段程式碼通常都是「Hello World」,然而「hello world」並不代表你已經入門了,當你可以用程式碼建構有意義的模型時,那才是真正的入門。

下面是 medium 上一位網友提出的 7 條學習程式語言的基本建議,或許能幫你輕鬆掌握一門程式語言。

原文 傳送門

不要只看影片教學,實際去測試每一行程式碼

只看影片教學而不親自實踐無異於紙上談兵,無論你看的多麼認真。複製你遇到的每一行程式碼,並測試其能否運行出預期的結果,這個很重要,然後還要嘗試著修改程式中的變數,並觀察運行結果的變化,這將有助於你深刻的理解這段程式碼。

找到應用程式碼的實例

僅僅理解程式碼本身是不夠的,要做到學以致用。

例如,在學習 JavaScript 的 Array map() 時,如果你會用這個方法實現數組疊代或是數組修改,那才算是真正掌握了。

從簡單的程式開始,慢慢增加複雜度

如果你能做到前兩步,那你應該已經基本掌握了編寫一個應用程式所需的基礎建構模組。但是不要迫不及待的想要研究複雜的程式,從最簡單的程式開始,有條不紊的讀程式、寫程式碼、跑程式、修 BUG,最後自然水到渠成。

要做到這樣,你可以把待辦事項都羅列出來,完成簡單的基本架構後再添枝加葉,就會使你能夠編寫更複雜也更實用的程式。

實際上,即使是最簡單的程式,你也會遇到從拼寫到語法的各種錯誤,這也就是為什麼你需要在最開始的時候從簡單的程式著手,定期檢查修復,並在下一次做得更好,因為這樣至少會減少那不可避免的挫敗感。

學習至少一個框架

學習一個框架,對你來說將是一個考驗,每個框架都有自己的世界,它們以一種更結構化的方式來實現程式碼。

其內部的複雜結構,解決了一些你作為一個初學者沒有意識到的問題。

目前,框架的數量已經超過了程式語言的數量。因此,你可能需要根據你希望使用該語言實現的目標,來確定要學習哪個框架。

例如,我想要用 React-Native 建立移動應用程式,於是我選擇了 React.js 框架,簡單明瞭沒毛病。當然,還是不要忘記從簡單處著手。

探索開源程式碼,學習他人的技術

寫程式的奇妙之處在於,總有更好的方法來做你喜歡做的事情。

訂閲博客、關注遊戲中的大玩家、在 GitHub 上探索開源程式碼,我保證,只要瀏覽一下別人的程式碼,你就能學到新方法。

累積實戰經驗,嘗試用程式解決問題

生活的本質是複雜的,我們應該面對現實,做一些複雜的工作。

只要環顧一下四周,你就能發現一個你能解決的問題,如果別人已經做了你想做的,也不失為一個良機,你可以重新發明一種方法並解決現有方法中的漏洞。

不要每個浪潮都跟,找到屬於自己的領域

在這個急劇動盪的時代,萬物的新陳代謝都加快。潮流會迅速成為歷史。我們應以謙虛的態度,包容和接納新的潮流。

不必每股浪潮都跟,不斷瞭解和嘗試,你就知道你屬於哪股浪潮了。

重點是,不能虛度了時光要做有意義的事情。

如果有空,也可以去 Stack Overflow 等平台上解答別人提出的問題,或者在 GitHub 上貢獻開源程式碼,用你的智慧去幫助他人。

最後是一條不變的真理:你付出的越多,收穫就會越多。

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈7 条经验法则,助你从小白进阶优秀程序猿 〉。圖片來源:twitter

更多關於學程式的方法

網友大哉問:我今年 28 歲,應該從普通工程師轉行 AI 工程師嗎?
只會用 Excel 還不夠!七大主題,教你如何用 Python 優化數據分析效能
自學 Python、JavaScript 總是卡?破解學習程式語言 3 大「欠矯正」的心態


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我

會寫程式只是基本,「懂得刪程式碼」的工程師才是企業要的人才!

$
0
0

【為什麼我們要挑選這篇文章】工程師會寫程式是基本,但能寫出精簡的程式碼,懂得整理並刪除冗餘程式碼的工程師才是真的強。在專案中,工程師常會有期限壓力,因此交出表面上可以運作的程式,但程式碼卻很雜亂,隱含後續的 debug 成本。優秀的工程師,就會花時間去整理程式碼,而這種工程師更應該得到獎勵。(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 jobs@fusionmedium.com

對於開源專案來講,寫新程式碼的貢獻者不一定是好工程師,但不會刪程式碼的工程師一定不是合格的工程師——因為「刪程式碼」才是讓開源軟體程式碼簡潔高效的關鍵所在。

MongoDB 的工程師 Dj Walker-Morgan 就在推特中這樣說道:「依我看,刪程式碼才是償還技術債的絶殺技能。」

對於軟體工程師來講,只有其本人對整個專案瞭然於心,才能知道哪行程式碼是冗餘的,刪除這些程式碼才能確保程式在保證功能完整性的情況下高效運作,真正達到去蕪存菁的目的。

另一位資深工程師 CharityMajors 曾發推文表示:「在曾與我共事過的資深工程師中,最優秀的那批人一直在想盡辦法,避免在專案中添寫新程式碼。」

那麼,對於這些刪除程式碼,或以最小的程式碼量完成更多功能的軟體工程師,我們是否有合適的獎勵方法呢?

降低技術債成本,工程師需要花時間刪除冗餘程式碼

前文提到,刪除程式碼是償還「技術債」的必殺技,那麼到底什麼是「技術債」呢?

在軟體開發過程中,如果工程師為趕在最後期限之前交差而採用了一種較為簡單但未達到最佳標準的解決方案,那麼專案就會背上技術債,潛在的風險會像利息一樣,使債越積越大。

Dormain Drewitz 曾發表過一個非常有趣的觀點:「所有寫下的程式碼都是技術債。」此話怎講呢?

由於「馬後砲效應」的存在,人們的後見之明使得分辨一段程式碼是正確的決策還是垃圾的產出變得十分容易,但在實際的開發過程中,工程師可能沒辦法找到一個更好的解決方案,甚至可以說,目前的程式碼在當時來看可能就是最佳選擇。

但我們要知道,這些當下的「最佳選擇」並不意味著要長久保留。不管你喜歡與否,「技術債」都會越積越重。

來自 ThoughtWorks 的 MatrinFowler 便對處理技術債提出了以下建議:

「通常解決金融債務的最佳途徑就是一點點地償還本金,『技術債』亦是如此。在搭建第一個功能時,我就會開始花額外的時間刪掉一些冗餘程式碼。這就好比減少了技術債未來可能產生的利息,雖然會花費一些額外的時間,但這讓最終的技術債變得可承擔。像這樣逐步改進程式碼,那些經常被我們經常修改的程式碼塊便會隨著時間的推移變得越來越精煉,而這些程式碼塊也恰好是程式碼庫中最需要定期清理的部分。」

工程師 SarahMei 將技術債稱為「混亂體」,一個雜亂的房間。正因如此,嘗試用微服務架構(MSA)來解決技術債的想法是不切實際的。

她認為,這樣做會使得專案最終只剩一個飽和微小的空間和一堆雜亂無序的儲存單元。同樣的,你無法在這樣一個狹小、擁擠又混亂的房間中找到你想要的東西。

因此,降低技術債的理想方案是從那些擁有最多所謂貢獻量的程式碼入手。於是,眼下要解決的問題變為——如何透過合適的方法標定那些被刪除的程式碼?

負責整理、刪除程式碼的工程師應該得到獎勵

如果你去看 Kubernetes 或其他專案的貢獻排行榜,你很容易找到那些提交開源程式碼的工程師,但排名指標的下拉選單中並沒有出現與「刪除程式碼行數」相關的數字。依照前文 Majors 對優秀的資深軟體工程師的定義,儘管記錄那些提交新程式碼的人是有意義的,但這些新程式碼能為開源專案帶來多大價值就不太好說了。

相較於統計程式碼量,對程式碼效率的計量是一件並不那麼客觀的事情,儘管這一指標十分重要,但實際上很難對其下一個準確統一的操作性定義。而正因為如此,我們反倒可以重新體會到「刪程式碼」的藝術魅力。

曾任職 MongoDB 的 HenrikIngo 告訴作者:「在 MongoDB 工作的 3 年裡,我刪掉的程式碼比我寫的要多。」他還自嘲道:「但遺憾的是,這注定是以場失敗的戰役——這只會激發更多的同事編寫更多新的程式碼進去。」

在這樣的評判標準下,優秀的工程師可能不會在排行榜中名列前茅,因為他們的貢獻在於巧妙地刪除冗餘程式碼,就像 Henrik,他們刪除的程式碼可能比寫的新程式碼還要多。

幾年前,Yelp 的團隊開發了 Undebt——一個旨在自動化實現大量程式碼重構的專案,但至今沒有見它有過後續的維護和更新,也沒見它被成功使用。

那麼,你所在的團隊是如何發現和鼓勵會刪程式碼的工程師呢?為開源專案刪程式碼的工程師是否也可以透過同樣的方式得到鼓勵和回報呢?

至少目前來看,人們所關心的排行榜或許是基於不完美甚至是沒有價值的指標——那些致力於在茫茫程式碼的海洋中消除一個個技術債的「清道夫」工程師應該受到更大的重視和嘉獎。

原文報導 傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈开源社区的技术债:写代码的“码农”VS 删代码的“清道夫”,谁更该被嘉奖?〉。首圖來源: 大數據文摘

更多關於工程師的消息

網友大哉問:我今年 28 歲,應該從普通工程師轉行 AI 工程師嗎?
工程師海外薪資情報:跑去美國當數據分析師,年薪可以拿多少?
【工程師界的創世神】近 50 年來最有影響力的 10 種程式語言,到底是誰發明的?


我們正在找夥伴!

2019 年我們的團隊正在大舉擴張,需要你的加入跟我們一起找出台灣創新原動力! 我們正在徵 《採訪社群編輯》、《助理編輯》,詳細職缺與應徵辦法 請點我
Viewing all 585 articles
Browse latest View live