你好,我是三橋君。
自從 ChatGPT 問市以來,AI 將取代開發者的聲音不絕于耳,至今還是互聯網異常火熱的問題。
在軟件開發領域,生成式人工智能(AIGC)正在改變開發者的工作方式。無論是代碼生成、錯誤檢測還是自動化測試,AI工具正在成為開發者的得力助手。
比如在代碼生成方面,可以讓大模型生成游戲代碼。
“請幫我生成一個可以直接在網頁運行的貪吃蛇游戲的代碼”
我將這段代碼復制到一個HTML文件中,然后用瀏覽器打開這個文件,試試能不能運行貪吃蛇游戲。
<!DOCTYPE html>
<html>
<head><title>貪吃蛇游戲</title><style>canvas {border: 4px solid black;}</style>
</head>
<body><canvas id="gameCanvas" width="400" height="400"></canvas><script>var canvas = document.getElementById("gameCanvas");var ctx = canvas.getContext("2d");var box = 20;var snake = [];snake[0] = { x: 10 * box, y: 10 * box };var food = {x: Math.floor(Math.random() * 20) * box,y: Math.floor(Math.random() * 20) * box};var d;document.addEventListener("keydown", direction);function direction(event) {if (event.keyCode == 37 && d != "RIGHT") {d = "LEFT";} else if (event.keyCode == 38 && d != "DOWN") {d = "UP";} else if (event.keyCode == 39 && d != "LEFT") {d = "RIGHT";} else if (event.keyCode == 40 && d != "UP") {d = "DOWN";}}function draw() {ctx.clearRect(0, 0, 400, 400);for (var i = 0; i < snake.length; i++) {ctx.fillStyle = (i == 0) ? "green" : "white";ctx.fillRect(snake[i].x, snake[i].y, box, box);ctx.strokeStyle = "black";ctx.strokeRect(snake[i].x, snake[i].y, box, box);}ctx.fillStyle = "red";ctx.fillRect(food.x, food.y, box, box);var snakeX = snake[0].x;var snakeY = snake[0].y;if (d == "LEFT") snakeX -= box;if (d == "UP") snakeY -= box;if (d == "RIGHT") snakeX += box;if (d == "DOWN") snakeY += box;if (snakeX == food.x && snakeY == food.y) {food = {x: Math.floor(Math.random() * 20) * box,y: Math.floor(Math.random() * 20) * box};} else {snake.pop();}var newHead = {x: snakeX,y: snakeY};if (snakeX < 0 || snakeY < 0 || snakeX >= 20 * box || snakeY >= 20 * box || collision(newHead, snake)) {clearInterval(game);}snake.unshift(newHead);}function collision(head, array) {for (var i = 0; i < array.length; i++) {if (head.x == array[i].x && head.y == array[i].y) {return true;}}return false;}var game = setInterval(draw, 100);</script>
</body>
</html>
我們可以發現,這個貪食蛇游戲的代碼是可以運行的。 而且游戲中,可以使用鍵盤上的方向鍵來控制蛇的移動。
這也引發了對開發者職業前景和技能需求變化的討論。
AI究竟是在幫助開發者還是取代他們?
國內外的大佬也紛紛對稱進行表態。
國外某AI科技公司創始人曾預言:“五年內,人類程序員將徹底消失。”
國內某大廠公司創始人表示,“基本上說以后其實不會存在“程序員”這種職業了,或者說所有人只要會說話,甚至連寫字可能都不用,你只要會說話了,你就會具備今天的程序員所具備的能力。”
此外,他還表示,大模型和生成式AI,將徹底改變開發者這個群體,未來開發應用就像拍個短視頻一樣簡單。
如今,某初創公司宣布推出全球首個AI軟件工程師,并號稱會徹底改變人類構建軟件的方式。能自學新語言、開發迭代 App、自動 Debug。用戶只需在界面輸入一句指令,就能端到端處理整個開發項目。
此外,該AI軟件工程師擅長長期推理能力,可以自主規劃和完成軟件項目,并在此過程中做出數以千計的準確決策。
難道,AI真會取代開發者嗎?
三橋君認為,目前來看,AI確實是在幫助開發者,但長期來看,AI可能會替代掉很多普通開發者。
就像我前面講的,目前在代碼生成、錯誤檢測還是自動化測試,AI工具正在成為開發者的得力助手。
比如CSDN,為開發者提供AI工具,期望成為最適合開發者的一站式綜合AI賦能平臺。
比如文心一言,也為開發者提供AI工具,包括python金字塔、python代碼糾錯、代碼轉化、代碼Debug等等。
這些AI工具所傳達的理念,就是AI幫助開發者。
但是,隨著AI技術的發展和革新,簡單的編程任務將逐漸被AI取代,甚至AI能夠實現自己編寫代碼和修改Bug等能力,以致于傳說中的“CV大法工程師”將面臨重大的危機與挑戰。
因為有一些AI系統,比如GitHub的Copilot,能夠理解編程語言的語法和語義,并在此基礎上生成代碼片段,幫助開發者提高編程效率。
此外,一些靜態代碼分析工具也能夠利用AI技術來檢測潛在的bug和安全性問題,并提出修改建議。
所以,長期來看,隨著AI技術的發展和革新,使得在軟件開發領域的普通開發者工作內容,尤其是那些從事重復性高、標準化程度高的工作的開發者,如果AI完全能夠自動化完成的話,那么AI是完全有可能會替代掉很多普通開發者。
因此,目前AI確實是在幫助開發者,更多的是充當一個工具助手、副駕駛的角色。但長期來看,AI大概率會替代掉很多普通開發者。