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

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

新聞 開(kāi)發(fā)工具
解放程序員,F(xiàn)acebook是認(rèn)真的。這一社交網(wǎng)絡(luò)巨頭在其官方博客上宣布,推出面向程序員的工具Aroma。

本文經(jīng)AI新媒體量子位(公眾號(hào)ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)聯(lián)系出處。

解放程序員,F(xiàn)acebook是認(rèn)真的。

這一社交網(wǎng)絡(luò)巨頭在其官方博客上宣布,推出面向程序員的工具Aroma

直擊程序員想實(shí)現(xiàn)功能,而不知道如何寫(xiě)代碼的痛點(diǎn)。

它能幫助程序員輕松地找到可以“參考使用”的代碼,節(jié)省他們?nèi)粘i_(kāi)發(fā)工作流程中的時(shí)間和精力。

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

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

然后,Aroma會(huì)給出一些代碼推薦:

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

這段代碼來(lái)自與五個(gè)實(shí)現(xiàn)類(lèi)似功能的代碼,但是去除了相關(guān)細(xì)節(jié),以便程序員更好地參考。

除此之外,Aroma也能夠集成在編碼環(huán)境中。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

Facebook表示,使用這一工具,程序員再也不用像原來(lái)那樣,自己手動(dòng)瀏覽幾十個(gè)代碼搜索結(jié)果了。

哪怕代碼庫(kù)非常大,它也能在幾秒鐘內(nèi)給出推薦,并且不需要提前進(jìn)行模式挖掘。

現(xiàn)在,F(xiàn)acebook已經(jīng)將其用到了自己內(nèi)部代碼庫(kù)中,并為其一些開(kāi)源項(xiàng)目創(chuàng)建了Aroma版本。

這一工具亮相之后,便引發(fā)了巨大的關(guān)注。

甚至有人在Twitter上評(píng)論稱(chēng),可以重新定義程序員這一職業(yè)。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

Facebook是如何做到的?

給程序員推薦代碼

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

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

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

首先,Aroma會(huì)解析語(yǔ)料庫(kù)中的每個(gè)代碼,并創(chuàng)建其解析樹(shù),并將代碼集索引為稀疏矩陣。

然后,從每個(gè)代碼的解析樹(shù)中提取一組結(jié)構(gòu)特征。這些結(jié)構(gòu)特征都是經(jīng)過(guò)精心選擇的,可以捕捉每個(gè)代碼的用法、調(diào)用方法和結(jié)構(gòu)信息。

進(jìn)而根據(jù)每個(gè)代碼的特點(diǎn),為其創(chuàng)建稀疏向量。

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

當(dāng)一個(gè)程序員編寫(xiě)新的代碼時(shí),Aroma會(huì)以上述的方式創(chuàng)建一個(gè)稀疏向量,并將該向量與包含所有現(xiàn)有代碼的特征向量的矩陣相乘。

點(diǎn)積***的前1000個(gè)代碼會(huì)被檢索出來(lái),作為推薦代碼的候選。

盡管代碼語(yǔ)料庫(kù)可以包含數(shù)百萬(wàn)種代碼,但由于稀疏向量和矩陣的點(diǎn)積能夠非常高效的實(shí)現(xiàn),這種檢索的速度會(huì)很快。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

第二,重新排序和聚類(lèi)。

通過(guò)檢索得到推薦代碼的候選集之后,接下來(lái)就是對(duì)其進(jìn)行聚類(lèi)。為了做到這一點(diǎn),Aroma要先根據(jù)候選的各個(gè)代碼和查詢(xún)代碼的相似性來(lái)對(duì)它們進(jìn)行重新排序。

因?yàn)橄∈柘蛄恐话P(guān)于存在哪些特征的抽象信息,所以點(diǎn)積分?jǐn)?shù)低估了代碼之間的實(shí)際相似性。

因此,Aroma對(duì)方法語(yǔ)法樹(shù)進(jìn)行修剪,去掉方法主體中不相關(guān)的部分,只保留與查詢(xún)片段最匹配的部分,并根據(jù)候選代碼片段與查詢(xún)的實(shí)際相似性對(duì)其重新排序。

在獲得了***的排序列表之后,Aroma會(huì)運(yùn)行一個(gè)迭代的聚類(lèi)算法來(lái)尋找相似的代碼片段,并在創(chuàng)建代碼時(shí)推薦額外的代碼語(yǔ)句。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

第三,用交叉算法創(chuàng)建代碼進(jìn)行推薦。

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

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

***段代碼:

  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會(huì)對(duì)***段代碼和第二段代碼進(jìn)行比較,來(lái)找到公共代碼。***段代中關(guān)于ImageView的代碼,沒(méi)有出現(xiàn)在第二段代碼中,因此將被刪除。結(jié)果如下所示:

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

然后,將得到代碼與第三段代碼,第四段代碼進(jìn)行比較……

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

其他被推薦的代碼,也是以這樣的過(guò)程創(chuàng)建出來(lái)的。

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

程序員們的擔(dān)憂(yōu)

雖然這一工具受到了不少程序員的好評(píng), 但也有一些程序員表達(dá)了不一樣的觀點(diǎn)。

有人在Hacker News上表示,這也許就是自己作為程序員職業(yè)生涯結(jié)束的開(kāi)始。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

也有人說(shuō),這個(gè)工具似乎是試圖強(qiáng)迫機(jī)器學(xué)習(xí)解決實(shí)際上沒(méi)有人有問(wèn)題的例子。

他說(shuō),很多人搜索習(xí)慣用法的主要用例,就是知道如何進(jìn)行高級(jí)別的重構(gòu),而不是獲得相似的代碼。

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

此外,也有人擔(dān)憂(yōu)有人寫(xiě)錯(cuò)了代碼,它會(huì)不會(huì)在其他代碼庫(kù)中大肆傳播……

重新定義程序員職業(yè),F(xiàn)acebook推出代碼推薦工具Aroma

你覺(jué)得呢?這一工具,對(duì)于程序員來(lái)說(shuō),影響幾何?歡迎在評(píng)論區(qū)給出你的看法。

傳送門(mén)

Aroma論文鏈接:

Aroma: Code Recommendation via Structural Code Search

https://arxiv.org/abs/1812.01158

 

責(zé)任編輯:張燕妮 來(lái)源: 量子位
相關(guān)推薦

2016-02-17 09:56:37

職業(yè)程序員

2012-12-11 09:31:19

程序員職業(yè)素養(yǎng)

2009-03-05 10:31:35

程序員IT行業(yè)職業(yè)規(guī)劃

2019-04-23 13:51:43

程序員技能開(kāi)發(fā)者

2019-02-26 09:55:52

Java開(kāi)發(fā)工具

2020-08-17 07:00:00

混合云云計(jì)算技術(shù)

2012-12-04 10:08:25

程序員

2013-07-25 09:47:40

程序員職業(yè)發(fā)展

2009-02-23 13:00:17

程序員職業(yè)習(xí)慣

2017-10-13 22:18:53

物聯(lián)網(wǎng)

2020-02-25 22:41:41

程序員技能開(kāi)發(fā)者

2015-07-30 11:29:07

Web程序員CSS工具

2009-11-05 11:42:45

Unix專(zhuān)家

2014-06-03 09:15:17

融合數(shù)據(jù)中心華三

2019-06-20 08:13:33

物聯(lián)網(wǎng)IOT技術(shù)

2016-12-05 14:42:01

創(chuàng)造型職業(yè)程序員

2015-08-04 09:03:27

數(shù)據(jù)中心hyperconver超級(jí)融合系統(tǒng)

2018-03-04 22:41:04

區(qū)塊鏈互聯(lián)網(wǎng)信息傳遞

2018-11-29 09:30:04

區(qū)塊鏈教育

2024-08-19 12:37:06

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费视频二区 | 91精品国产色综合久久不卡98口 | 国产a级黄色录像 | 日韩一区在线播放 | 在线观看的av | 久久综合一区二区三区 | 99热热 | 欧美一二三| 日本黄视频在线观看 | 91亚洲精品久久久电影 | 亚洲男人的天堂网站 | 91成人精品 | 91精品久久久 | 久久天堂| 国产精品jizz在线观看老狼 | 久久久久久久久久影视 | 成人在线小视频 | 国产一区二区三区四区 | 日韩人体在线 | 国产高清91 | 日韩高清电影 | 欧美不卡 | 色黄网站 | 午夜视频在线观看一区二区 | av中文在线 | 国产成人在线视频播放 | 一级视频黄色 | 狠狠色综合欧美激情 | 久久精品成人 | 久久丝袜| 国产成人精品一区二区三区网站观看 | www.se91 | 伊人色综合久久天天五月婷 | 日韩精品一区二区在线观看 | 美女日批免费视频 | 久久一视频 | 亚洲国产精品99久久久久久久久 | 日韩高清中文字幕 | 伊人99 | 婷婷成人在线 | 日本成年免费网站 |