成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

新聞 開發工具
解放程序員,Facebook是認真的。這一社交網絡巨頭在其官方博客上宣布,推出面向程序員的工具Aroma。

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

解放程序員,Facebook是認真的。

這一社交網絡巨頭在其官方博客上宣布,推出面向程序員的工具Aroma。

直擊程序員想實現功能,而不知道如何寫代碼的痛點。

它能幫助程序員輕松地找到可以“參考使用”的代碼,節省他們日常開發工作流程中的時間和精力。

比如,一個安卓程序員想要了解其他人如何解碼手機中的bitmap,他可以使用下面的這些代碼直接進行搜索:

  1. Bitmap bitmap = BitmapFactory.decodeStream(input); 

然后,Aroma會給出一些代碼推薦:

  1. final BitmapFactory.Options options = new BitmapFactory.Options(); 
  2. options.inSampleSize = 2; 
  3. // ... 
  4. Bitmap bmp = BitmapFactory.decodeStream(is, null, options); 

這段代碼來自與五個實現類似功能的代碼,但是去除了相關細節,以便程序員更好地參考。

除此之外,Aroma也能夠集成在編碼環境中。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

Facebook表示,使用這一工具,程序員再也不用像原來那樣,自己手動瀏覽幾十個代碼搜索結果了。

哪怕代碼庫非常大,它也能在幾秒鐘內給出推薦,并且不需要提前進行模式挖掘。

現在,Facebook已經將其用到了自己內部代碼庫中,并為其一些開源項目創建了Aroma版本。

這一工具亮相之后,便引發了巨大的關注。

甚至有人在Twitter上評論稱,可以重新定義程序員這一職業。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

Facebook是如何做到的?

給程序員推薦代碼

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

用Aroma給程序員推薦代碼,主要分為3個階段:

***,基于特征的搜索。

首先,Aroma會解析語料庫中的每個代碼,并創建其解析樹,并將代碼集索引為稀疏矩陣。

然后,從每個代碼的解析樹中提取一組結構特征。這些結構特征都是經過精心選擇的,可以捕捉每個代碼的用法、調用方法和結構信息。

進而根據每個代碼的特點,為其創建稀疏向量。

***,所有代碼的特征向量構成索引矩陣,用于搜索檢索。[[262075]]

當一個程序員編寫新的代碼時,Aroma會以上述的方式創建一個稀疏向量,并將該向量與包含所有現有代碼的特征向量的矩陣相乘。

點積***的前1000個代碼會被檢索出來,作為推薦代碼的候選。

盡管代碼語料庫可以包含數百萬種代碼,但由于稀疏向量和矩陣的點積能夠非常高效的實現,這種檢索的速度會很快。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

第二,重新排序和聚類。

通過檢索得到推薦代碼的候選集之后,接下來就是對其進行聚類。為了做到這一點,Aroma要先根據候選的各個代碼和查詢代碼的相似性來對它們進行重新排序。

因為稀疏向量只包含關于存在哪些特征的抽象信息,所以點積分數低估了代碼之間的實際相似性。

因此,Aroma對方法語法樹進行修剪,去掉方法主體中不相關的部分,只保留與查詢片段最匹配的部分,并根據候選代碼片段與查詢的實際相似性對其重新排序。

在獲得了***的排序列表之后,Aroma會運行一個迭代的聚類算法來尋找相似的代碼片段,并在創建代碼時推薦額外的代碼語句。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

第三,用交叉算法創建代碼進行推薦。

交叉算法的工作原理,是將所有推薦代碼中的***個代碼片段作為“基礎”代碼,然后與其余的代碼進行對比,迭代地對其進行“修剪”。

比如下面的這幾段代碼,每一個都有特定于其項目的代碼,但都包含公共的代碼。

***段代碼:

  1. InputStream is = ...; 
  2. final BitmapFactory.Options options = new BitmapFactory.Options(); 
  3. options.inSampleSize = 2; 
  4. Bitmap bmp = BitmapFactory.decodeStream(is, null, options); 
  5. ImageView imageView = ...; 
  6. imageView.setImageBitmap(bmp); 
  7. // some more code 

第二段代碼:

  1. BitmapFactory.Options options = new BitmapFactory.Options(); 
  2. while (...) { 
  3.  in = ...; 
  4.  options.inSampleSize = 2; 
  5.  options.inJustDecodeBounds = false
  6.  bitmap = BitmapFactory.decodeStream(innull, options); 

基于上述的方法,Aroma會對***段代碼和第二段代碼進行比較,來找到公共代碼。***段代中關于ImageView的代碼,沒有出現在第二段代碼中,因此將被刪除。結果如下所示:

  1. InputStream is = ...; 
  2. final BitmapFactory.Options options = new BitmapFactory.Options(); 
  3. options.inSampleSize = 2; 
  4. Bitmap bmp = BitmapFactory.decodeStream(is, null, options); 

然后,將得到代碼與第三段代碼,第四段代碼進行比較……

修剪之后剩下的代碼,就是所有方法中常見的代碼,它將成為***被推薦的代碼。

其他被推薦的代碼,也是以這樣的過程創建出來的。

此外,Aroma的算法也可以確保這些推薦彼此之間有很大的不同,因此程序員可以看到幾個不同的代碼,來學習各種各樣的編程模式。

程序員們的擔憂

雖然這一工具受到了不少程序員的好評, 但也有一些程序員表達了不一樣的觀點。

有人在Hacker News上表示,這也許就是自己作為程序員職業生涯結束的開始。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

也有人說,這個工具似乎是試圖強迫機器學習解決實際上沒有人有問題的例子。

他說,很多人搜索習慣用法的主要用例,就是知道如何進行高級別的重構,而不是獲得相似的代碼。

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

此外,也有人擔憂有人寫錯了代碼,它會不會在其他代碼庫中大肆傳播……

重新定義程序員職業,Facebook推出代碼推薦工具Aroma

你覺得呢?這一工具,對于程序員來說,影響幾何?歡迎在評論區給出你的看法。

傳送門

Aroma論文鏈接:

Aroma: Code Recommendation via Structural Code Search

https://arxiv.org/abs/1812.01158

 

責任編輯:張燕妮 來源: 量子位
相關推薦

2016-02-17 09:56:37

職業程序員

2012-12-11 09:31:19

程序員職業素養

2009-03-05 10:31:35

程序員IT行業職業規劃

2019-04-23 13:51:43

程序員技能開發者

2019-02-26 09:55:52

Java開發工具

2012-12-04 10:08:25

程序員

2013-07-25 09:47:40

程序員職業發展

2009-02-23 13:00:17

程序員職業習慣

2020-08-17 07:00:00

混合云云計算技術

2020-02-25 22:41:41

程序員技能開發者

2017-10-13 22:18:53

物聯網

2015-11-12 10:32:13

程序員FaceBook

2016-12-05 14:42:01

創造型職業程序員

2015-07-30 11:29:07

Web程序員CSS工具

2017-03-01 20:31:35

程序員

2017-03-06 09:06:13

2023-08-07 11:03:58

數字化戰略首席信息官

2009-11-05 11:42:45

Unix專家

2014-06-03 09:15:17

融合數據中心華三

2019-06-20 08:13:33

物聯網IOT技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产精品一区二区 | av日韩高清 | 国产精品久久久久久久久免费丝袜 | 蜜桃一区 | 久久激情视频 | 四色永久| 97精品超碰一区二区三区 | 激情黄色在线观看 | 9久9久| www.国产 | 久久av一区二区 | 丝袜一区二区三区 | 一级片免费在线观看 | 久久久久久久久久久91 | 黄色日批视频 | 中文字幕高清av | 欧美视频第二页 | 亚洲国产精品久久 | 亚洲高清视频一区二区 | 欧美不卡视频一区发布 | 久久久精品一区 | 欧美国产精品一区二区三区 | 成人av网页 | 精品国产91| av大全在线 | 国产精品视频久久 | 国产精品久久久久免费 | 午夜寂寞网站 | 一区二区三区在线免费观看 | 四虎影院美女 | 99自拍视频 | jav成人av免费播放 | h片在线免费看 | 久久精品| 亚洲三区视频 | 亚洲国产成人精品女人久久久 | 中文字幕乱码一区二区三区 | 成人性视频在线播放 | 激情小视频 | 国产成人精品一区二区 | 97偷拍视频|