close

如果將Python代碼自動轉成其他編程語言,你會嘗試嗎?

今天給大家分享一個有意思的項目,它能將Python代碼自動轉成C++代碼。這或許對搞算法的同學有點幫助。

1. 如何實現

該項目是 GitHub 開源項目,使用非常簡單,下載後安裝依賴,運行對應的Python腳本即可。

python3python2cppconverter.py

以下面的 Python 代碼為例

defadd_something(x,y):print("casuallyaddingsomestufftogether")z=x+yreturnzif__name__=="__main__":print('Okay,letsgo')print(add_something(5,2))

轉換成 C++ 代碼如下:

//C++CodegeneratedfromPythonCode:#include<iostream>usingnamespacestd;intadd_something(intx,inty){cout<<"casuallyaddingsomestufftogether"<<endl;intz=x+y;returnz;}intmain(){cout<<"Okay,letsgo"<<endl;cout<<add_something(5,2)<<endl;return0;}

python2cppconverter.py實際上是調用OpenAI的API來完成代碼轉換。核心代碼如下:

openai.Completion.create(engine='code-davinci-002',prompt=input_prompt,temperature=temperature,max_tokens=num_tokens,stream=STREAM,stop='===================\n',top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0)

本質上就是一個函數調用,其中engine參數是代碼轉換模型。

介紹code-davinci-002之前,先來了解下GPT-3模型。

GPT-3是OpenAI在 2020年 5 月發布的一個模型,這個模型包含1750億的參數,比GPT-2多了兩個數量級,比GPT-2有了極大的改進。

GPT-3 在許多 NLP 數據集上實現了強大的性能,包括翻譯、問答和完形填空任務,以及一些需要即時推理或領域適應的任務,例如解讀單詞或執行算術運算。

code-davinci-002模型是GPT-3的後代,它的訓練數據包含自然語言和來自 GitHub 的數十億行公共代碼。因此,它可以理解和生成代碼,精通十多種編程語言,最擅長Python。

所以,code-davinci-002模型不止能實現編程語言之間相互轉換,還可以與自然語言互轉、找代碼中的BUG、根據代碼編寫文檔等。

比如下面的例子就是為代碼功能生成文字性描述

代碼轉自然語言

是不是以後就不用愁寫注釋了?

再看看下面這個例子,可以為Python代碼生成docstring

docstring

其他例子大家可以看OpenAI官網。

2. 一個壞消息

上面說得很美好,然而現實很殘酷。

我自從下載了這個項目,從開始運行就一步一個坑。

上面用到的OpenAI API,並不對國內開放,國內的朋友申請使用時會看到下面的提示

國內無法使用

上來就被卡脖子了!

當然,國內有團隊提供了解決方案,花 18 元可以買一個現成的國外賬號,有效期將近 3 個月,賬號內自帶 18 美元。所以,OpenAI的模型是收費的,一點不清真。

當你買了賬號,獲取了API key,把它配置到項目中,運行項目,準備見證時刻的奇蹟時,會發現如下報錯:

Nosuchmodel:code-davinci-002

這是因為code-davinci-002模型處於私有測試中,需要提交申請,通過後才能調用。

最後,我不建議大家運行code-davinci-002模型,對國內朋友來說,成本太高了。如果想看效果,可以到OpenAI官網看看文檔、在線運行一些example即可。

雖然項目沒有成功運行起來,但這並不妨礙我們學習技術,這波強行不虧。

項目地址:https://github.com/alxschwrz/codex_py2cpp

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()