如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。
顯示具有 軟體開發工具 標籤的文章。 顯示所有文章
顯示具有 軟體開發工具 標籤的文章。 顯示所有文章

2023年3月7日

人工智慧會讓程式設計師失業嗎? 人工智慧輔助開發工具(Codex, Copilot)的優點與注意事項

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2023-3-7

人工智慧會讓程式設計師失業嗎? 甚麼人工智慧技術會讓程式設計師失業?  有興趣的可以往下看。

    BCC 2021年9月8日的一篇報導,"人工智能:編程員為何喜愛這些可能令他們失業的新科技?" 文章中訪問了幾個專業程式設計人員,為什麼喜歡人工智慧工具,優點在哪裡,這篇文章也點出人工智慧工具的限制與注意事項。

    今年3/1日openAI公司發布了"chatGPT API"提供個人或企業自行開發對話機器人相關應用。相較chatGPT,更令我感興趣的是OpenAI公司2021年發布名為Codex的"程式碼產生與處理"APIs,以及以Codex為基礎開發出來的GitHub Copilot(需付費)工具。開發軟體的過程中可以運用此些工具協助快速產生程式,大幅提高生產力。

    OpenAI官網提供了Codex Javascript的測試網頁,只要輸入英文(自然語言)就可以幫你產生想要的Javascript程式碼,有網友藉由這個測試網頁單靠英語對話就開發出一個簡單的遊戲。因此Codex與Copilot被認為是讓程式設計師失業的人工智慧技術。

      但是,不需要專業程式設計訓練,就可以完成一套完整的系統嗎? 下面整理AI輔助開發程式的

優點與注意事項 :  

優點
1 透過AI輔助開發程式,相同的時間可以寫更多的程式。
2 減少查詢語法的時間,如正規表示式這些複雜難記的語法等。

注意事項
1 難以發現的錯誤 : 美國紐約大學2021 年研究發現 AI 建議的程式碼並不可靠,試驗了 89 個場景中,約有 40% 以 Copilot 編寫而成的程式碼具弱點[2]。 史丹佛大學電腦科學家研究發現,程式設計師在 Github Copilot 等 AI 輔助下,較容易對程式碼的品質產生錯誤的信任,因此寫出的程式碼相較獨立的程式設計師更不可靠[2]。
 
知名程式設計問答網站 Stack Overflow 官方宣佈,暫時禁止使用者分享由聊天機器人 ChatGPT 產生的回覆,根據官方表示:「由於從 ChatGPT 獲得正確答案的平均比例太低,發表由 ChatGPT 創造出的答案對網站上,不利於詢問或尋找正確答案的使用者。」[3]
 
AI產生的程式碼中的微小錯誤有可能非常難被發現,可能導致非常大的代價。因此Copilot雖然能提供相對好的程式碼,但有時候會需要一些微調。如果你經驗不足,或正在嘗試學習,可能會出一些差錯但是卻沒有意識到[1]。

2 侵權問題 : "使用AI工具「有可能會侵犯一些開源程式碼許可,因為它可能會有些東西是來源於訓練代碼」。而這可能會令你掉進剽竊的漩渦。”[1] -- BCC

3 只是輔助工具 : AI只提供一些短的程式片段,不會編寫完整的軟體程序[1]。

4 覆核與測試的重要性 : 程式碼仍然需要全面覆核,而且要進行完整的測試如單元測試與整合測試[1]。

5 程式語言限制 : 
Codex目前支援的程式語言: Bash, C#, Go, Java, Javascript, Python, Ruby, Rust。
Github Copilot目前支援的程式語言 : C, C++, C#, Go, Java, Javascript, PHP, Python, Ruby, Scala, Typescript。。

由上面幾個事項,可以了解AI輔助工具很好用但還沒有強大到可以取代專業程式設計師。
參考 

由上面幾個事項,可以了解AI輔助工具很好用但還沒有強大到可以取代專業程式設計師。Codex, Copilot背後的人工智慧模組仍持續學習與進步中,值得持續關注,或許有一天上面這些問題都會解決。

人工智慧程式設計輔助開發工具 - GitHub Copilot介紹

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2023-3-7

       今年3/1日因chatGPT爆紅的openAI公司正式發布了"chatGPT API",提供ChatGPT的引擎與應用程式庫給個人或企業自行開發對話機器人相關應用,加上該公司原有的文字產生與處理,程式碼產生與處理,影像產生與處理等APIs,給有人工智慧應用開發需求的個人或企業更豐富的選擇。

    相較chatGPT API我更感興趣的是OpenAI公司在2021年發布的"程式碼產生與處理"APIs,OpenAI公司將這部分命名為Codex。OpenAI官網提供了Javascript的測試網頁,只要輸入英文(自然語言)就可以幫你產生想要的Javascript程式碼

    除此之外,我找到以Codex為基礎建立的開發工具GitHub Copilot,包含許多IDE的插件,可以在開發軟體的過程中運用AI幫助自己快速產生程式,大幅提高生產力。如果這個工具可以運用到自己的工作上,就太好了,很可惜目前支援的程式語言不包含PHP。

    下面是整理自網路的GitHub Copilot介紹。

簡介

GitHub Copilot是GitHub和OpenAI合作開發的一個人工智慧工具,使用者在使用Visual Studio Code、Microsoft Visual Studio、Vim或JetBrains整合式開發環境時,可以透過GitHub Copilot自動補全代碼。GitHub於2021年6月29日對開公開該軟體。(維基百科)

GitHub Copilot 由 OpenAI Codex 提供支援,OpenAI Codex 是由人工智慧研究實驗室 OpenAI 建立的人工智慧模型。(維基百科)
OpenAI Codex 是 GPT-3(生成型已訓練變換模型 3) 的修改後生產版本,GPT-3 是一種使用深度學習生成類人類文字的語言模型。例如,當給出一個自然語言的程式問題時,Codex能夠產生解法代碼。它也可以用英語描述輸入代碼和在不同程式語言之間翻譯代碼。Codex的GPT-3僅授權給 GitHub 的母公司微軟。(維基百科)
Copilot的OpenAI Codex接受了一系列英語語言、公共 GitHub 儲存庫和其他公開可用原始碼的訓練。這包括來自 5400 萬個公共 GitHub 儲存庫的 159 GB Python 代碼的過濾資料集。(維基百科)

功能與準確度

GitHub Copilot協助程式設計師的功能,包含 :
一 寫上函數名稱自動補全程式碼
二 將註釋轉換成程式碼(Convert comments to code)
三 自動補全重覆的程式碼(Autofill for repetitive code)
四 自動產生測試案例
GitHub 報告稱,Copilot 的自動完成功能大約有一半時間是準確的; 例如,當使用者提供Python 函式頭代碼後,Copilot 在第一次嘗試時有 43% 的時間正確地自動完成了函式體代碼的其餘部分,而在十次嘗試後有 57% 的時間正確地自動完成了函式體代碼的其餘部分。
GitHub 表示,Copilot 的功能能夠幫助程式設計師減省閱讀軟體文件的時間,快速瀏覽不熟悉的編碼框架和語言。

支援的程式語言

GitHub Copilot目前支援的程式語言有C, C++, C#, Go, Java, Javascript, PHP, Python, Ruby, Scala, Typescript

功能介紹

一 寫上函數名稱自動補全程式碼
例如寫一個函數 calculateDaysBetweenDates(date1, date2),你只要函數名稱語意清楚,Copilot會自動填入程式碼。 

二 將註釋轉換成程式碼(Convert comments to code)
例如寫一段註釋,註釋中描述要處理的邏輯,Copilot就會自動產生程式碼。 

三 自動補全重覆的程式碼(Autofill for repetitive code)
例如: 你寫一個常數集合,內容為各種程式語言的註釋符號,你寫了三個程式語言後,Copilot會自動填入其他程式語言。
四 自動產生測試案例
完成一個函示後,可以讓Copilot針對此函示產生測試案例程式。

費用

Copilot個人版: 每月 10 美元,或每年 100 美元。

Copilot企業版 :每個月19美元


安裝與使用



資料來源 
1 維基百科
4.Github - About GitHub Copilot for Individuals
 

2021年7月6日

Notepad++設定程式語言編輯風格(Style Configurator)只能選到一個主題(themes),如何處理?

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2021/7/6

我喜歡使用Notepad++黑底白字的deep black模式來寫程式。如下 :

變更您編輯畫面的模式,要在選單 "設定 > 設定程式語言"中選取主題。

 

但是昨天,電腦重灌後,安裝完Notepad++發現在 "設定 > 設定程式語言"時,選取主題(themes)時只能選到一個主題,也就是預設的主題 Default(stylers.xml)。上網查了一下,找到解答,成功解決問題了。

原因 : 使用管理者帳號安裝Notepad++,但是在非管理者帳號使用Notepad++時就會有這種現象。


問題:  使用者資料夾 : %appdata%\Notepad++\  內沒有" themes"這個資料夾 .
註 : 在Windows Vista, 7, 8, and 10, 預設%AppData%資料夾在 C:\Users\<user name>\AppData\Roaming


解決方法: 複製您安裝Notepad++管理者帳號的%appdata%\Notepad++\資料夾內的" themes"資料夾到使用者的%appdata%\Notepad++\資料夾內,然後重啟notepad++就可以了。

2018年10月25日

Jupyter Notebook基本操作

作者: Fred F.M. Wang (FW知識瑣記) 日期:2018/10/25

Jupter Notebook是整合Julia,Python、R、Java、C#、Go、Ruby、JavaScript等超過50多種Jupyter kernels的整合性開發環境,,可讓您編寫程式時利用其直譯式的特性,達到高互動執行結果,並且很容易呈現資料視覺化的執行。

瞭解了一下Jupyter Notebook的操作環境,並整理下面筆記,分享給大家

Jupyter Notebook基本操作
File(檔案) : 都是針對筆記本檔案操作的。
File > New Notebook > Python3  打開一個新筆記(Notebook)for Python3程式
File > Open...    打開一個新工作視窗
File > Make a Copy 複製目前的筆記至一個新工作視窗
File > Rename... 重新命名目前的筆記
File > Save and Checkpoint     儲存與紀錄(Checkpoint是一個記錄點),
每次儲存可以產生一個紀錄點,透過Revert to Checkpoint可以返回某個紀錄點。
File > Revert to Checkpoint    返回到某一個記錄點
File > Print Preview 列印預覽
File > Download as > (不同的格式) 如下
   ipynb:Jupyter的工作檔,py: Python程式(會將%%(Jupyter命令)和!(Unix命令)轉換為Python), 
md:Markdown標記語言檔(Markdown是一種類似HTML的標記語言), html:網頁檔,pdf:大家都知道的
File > Trust Notebook 幹嘛要有信任記事本的程序? 查了一下jupter-notebook官網的說明,
原來是未經用戶同意,禁用從不受信任的筆記本執行任意代碼的安全功能。
"隨著Jupyter筆記本在共享和協作方面越來越受歡迎,惡意用戶試圖利用Jupyter筆記本執行惡意目的
的可能性也在增加",因此增加這個確認功能。(Jupyter平台的信任機制請見https://jupyter-notebook.readthedocs.io/en/latest/security.html)
File > Close and Halt 關閉筆記本與該視窗

Edit(編輯)
: 都是對Cell操作的,包括複製、剪貼、刪除、合併、分割、移動、尋找取代等,看英文應該很容易
懂的。

View(顯示) : 設定哪些要顯示,哪些不顯示
View > Toggle Header 是否顯示標頭資訊區,包括文件名和上次保存時間
View > Toggle ToolBar 是否顯示工具列(建議顯示)
View > Line Numbers 顯示程式的行號(建議顯示)
View > Cell ToolBar 是否顯示Cell工具列, View > Cell ToolBar > Slideshow : Cell工具列顯示
Slide Type的設定, Slide Type也就是當工作簿要用投影片方式放映時,呈顯的方式(如果Slide Type是
橫線- 則該Cell不會呈現在投影片中), 投影片放映請按按鈕列中的[Enter/Exit RISE Slideshow]

Insert : 插入空白的Cell

Cell : 執行Cell內的程式碼, 例如, 您在一個空白的Cell內敲1+2, 選Cell > Run Cells 就會顯示
Out[] : 3

Kernel : 重新啟動或關閉該筆記本

Data: (待了解)

Widget: 可以用在Jupyter Notebook的小物件,如滑動桿,可以建立互動式的圖形化介面(GUI) 
(參考: https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Basics.html)

Help : 輔助說明 (註: 鍵盤快捷鍵,也就是慣用的功能,可以設定特定按鈕組合,如Ctrl+Shit+[Y],方便操作)

可參考的中文資料:

2012年3月7日

Java重構工具(Refactoring Tools)整理

作者: Fred Wang (FW知識瑣記) 日期: 2012/3/7, revised 2012/4/5

網路上許多重構工具版本都相當老舊,也沒有新板產生。早期一些重構工具的網站也已經關閉了。下面是一些現存Java重構工具的整理 :

1. Eclipse提供的20多個重構功能
image
2.RefactorIT : 自動化重構, 原始碼衡量, 稽核與修正。可以單獨安裝或作為Eclipse與NetBeans開發環境的插件(Plug-in) ,Open Source :
http://sourceforge.net/projects/refactorit/

3.JFactory : 提供15種重構能力的工具,可以單獨執行,直接下命令列或作為JBuilder, NetBeans與Elixir IDE的插件。 Open Source : http://jrefactory.sourceforge.net/

4.Transmogrify : Java程式碼分析與重構工具
. Open Source :
http://transmogrify.sourceforge.net/

5.DPT(Design Pattern Transformer) : 研究用途的工具,提供prototype工具,以利對Java程式碼重構的設計與了解。 Free : http://dpt.kupin.de/

6.JavaRefactor : 小型的Java程式碼重構工具,為JEdit的插件。(http://plugins.jedit.org/plugins/?JavaRefactor)