Được rồi, vậy ChatGPT vừa giúp tôi sửa lỗi code. Thật sự đấy.

1-debugging(1).png

Vậy là. Lập trình. Đối với những người lập trình để kiếm sống, đó là một trò chơi Jenga tinh thần không ngừng: một dòng code xếp chồng lên dòng code khác, xây dựng một tòa tháp code mà bạn hy vọng đủ mạnh mẽ để không đổ sập.

Nhưng điều đó luôn xảy ra. Đoạn mã không bao giờ chạy đúng lần đầu tiên nó được chạy. Và do đó, một trong những kỹ năng quan trọng cho bất kỳ lập trình viên nào là gỡ lỗi - nghệ thuật và khoa học của việc tìm ra tại sao mã không chạy hoặc đang làm một cái gì đó không đúng hoặc không mong muốn.

Đây giống như làm một thám tử, tìm kiếm manh mối, và sau đó tìm hiểu những manh mối đó đang cố gắng nói gì cho bạn. Điều này rất đáng nản lòng và đáng hài lòng, đôi khi cùng lúc.

Tôi thường phải làm rất nhiều việc gỡ lỗi. Điều này không chỉ vì mã nguồn không bao giờ hoạt động lần đầu tiên chạy. Điều quan trọng là tôi sử dụng gỡ lỗi để xem cách mã nguồn đang chạy, từ đó tinh chỉnh theo dõi.

Tuy nhiên, trong khi gỡ lỗi tốt yêu cầu những kỹ năng đặc biệt riêng của nó, thì nó cũng chỉ là lập trình cuối cùng. Một khi bạn tìm ra lý do tại sao một đoạn mã nào đó không hoạt động, bạn phải tìm cách viết một cái gì đó hoạt động.

Kiểm thử ChatGPT thực tế

Tuần này, tôi đã làm việc trên ba nhiệm vụ viết mã cho phần mềm tôi đang quản lý. Hai nhiệm vụ đã là sửa lỗi được người dùng báo cáo. Một nhiệm vụ là viết mã mới để thêm tính năng mới. Đây là công việc lập trình cơ bản đối với tôi. Nó là một phần trong kế hoạch làm việc hàng ngày của tôi.

Thêm nữa:Làm thế nào ChatGPT hoạt động?

Tôi muốn nói với bạn rằng, cho đến nay, tôi đã thử nghiệm ChatGPT với mã kiểm tra. Tôi đã tạo ra những tình huống để xem ChatGPT hoạt động như thế nào. Lần này khác biệt. Tôi đang cố gắng hoàn thành công việc thực tế và quyết định xem ChatGPT có thể là một công cụ hữu ích để hoàn thành công việc đó hay không.

Đó là một cách khác để nhìn vào ChatGPT. Các kịch bản kiểm thử thường có phần tạo ra và đơn giản. Việc lập trình trong thực tế thực chất là lấy một phiếu hỗ trợ khách hàng khác từ ngăn xếp và xử lý những gì đã làm cho trải nghiệm của người dùng không tốt.

Với điều đó, hãy xem những nhiệm vụ đó và xem cách ChatGPT thực hiện.

Viết lại code biểu thức chính quy

Trong lập trình, chúng ta phải tìm nhiều mẫu trong văn bản. Để làm điều đó, chúng ta sử dụng một hình thức toán học biểu tượng gọi là biểu thức chính quy. Tôi đã viết biểu thức chính quy trong nhiều thập kỷ và vẫn không thích làm điều đó. Nó tẻ nhạt, dễ mắc lỗi và bí ẩn.

Cũng:Tôi đang sử dụng ChatGPT để giúp tôi sửa code nhanh hơn, nhưng với giá nào?

Vậy khi một báo cáo lỗi xác nhận cho tôi biết rằng một phần của mã của tôi chỉ cho phép nhập số nguyên khi nó nên cho phép loại tiền tệ (nghĩa là số lượng chữ số, có thể được theo sau bởi một dấu chấm, và sau đó nếu có dấu chấm, theo sau bởi hai chữ số nữa), tôi biết tôi sẽ cần sử dụng mã biểu thức chính quy.

Vì tôi thấy công việc đó nhàm chán và phiền toái, nên tôi quyết định hỏi ChatGPT để được giúp đỡ. Đây là câu hỏi của tôi:

2-regex-q.jpg

Và đây là câu trả lời rất được trình bày tốt của trí tuệ nhân tạo (nhấp vào hình vuông nhỏ để phóng to):

3-regex-a.jpg

Tôi đã thả mã code của ChatGPT vào chức năng của mình, và nó đã hoạt động. Thay vì mất khoảng 2-4 giờ để nghĩ ngợi, chỉ mất khoảng năm phút để đưa ra yêu cầu và nhận câu trả lời từ ChatGPT.

Định dạng lại một mảng

Tiếp theo là việc định dạng lại một mảng. Tôi thích làm việc với mã mảng, nhưng cũng rất tẻ nhạt. Vì vậy, tôi lại thử ChatGPT. Hoàn toàn thất bại.

Còn cách nữa:Làm thế nào để ChatGPT cung cấp nguồn và tài liệu tham khảo

Khi tôi hoàn thành, tôi có thể đã cung cấp cho nó mười gợi ý khác nhau. Một số phản hồi trông có vẻ hứa hẹn, nhưng khi tôi thử chạy code, nó báo lỗi. Một số code bị crash. Một số code tạo ra mã lỗi. Và một số code chạy, nhưng không làm điều tôi muốn.

Sau khoảng một giờ thử làm theo cách này, tôi đã từ bỏ và quay lại phương pháp thông thường của mình là tìm kiếm trên Github và StackExchange để xem có ví dụ nào tương tự việc tôi đang cố gắng làm hay không, sau đó viết mã của riêng mình.

Cho đến nay, đã có một chiến thắng và một thất bại trong trải nghiệm ChatGPT. Nhưng bây giờ tôi sẽ thử thách cao hơn.

Thực sự tìm lỗi trong mã của tôi

OK, vì vậy phần tiếp theo này sẽ khó để giải thích. Nhưng hãy nghĩ về việc rằng nếu nó khó để giải thích cho bạn (giả sử bạn là một con người và không phải là một trong 50 hoặc như vậy các bot chỉ sao chép và tái xuất bản công việc của tôi trên các trang web lừa đảo, gửi thư rác), thì nó càng khó hơn để giải thích cho một trí tuệ nhân tạo.

Tôi đang viết mã mới. Tôi có một chức năng nhận hai tham số và một câu lệnh gọi gửi hai tham số cho mã của tôi. Các hàm là những hộp đen nhỏ thực hiện các chức năng rất cụ thể và chúng được gọi (được yêu cầu thực hiện phép màu của mình) từ các dòng mã chạy ở nơi khác trong chương trình.

Vấn đề là tôi luôn nhận được thông báo lỗi.

Phần quan trọng của thông báo là nơi nó nêu rõ "1 đã qua" tại một điểm và "đúng 2 được mong đợi" tại một điểm khác. Tôi đã xem câu lệnh gọi và định nghĩa hàm và ở cả hai nơi đều có hai tham số.

Cũng: Cách sử dụng ChatGPT để tóm tắt một cuốn sách, bài viết hoặc báo cáo nghiên cứu

W-đ-đỉn-hồi-F?

Sau khoảng mười lăm phút của sự thất vọng sâu sắc, tôi quyết định để ném nó cho trí tuệ nhân tạo để xem liệu nó có thể giúp được không. Vì vậy, tôi đã viết câu hỏi sau đây:

4-untitled.jpg

Tôi đã hiển thị nó dòng mã gọi, tôi đã hiển thị chính hàm đó, và tôi đã hiển thị handler, một đoạn mã nhỏ để gọi hàm từ một hook trong chương trình chính của tôi.

Sau vài giây, ChatGPT đã trả lời như sau (nhấp vào hình vuông nhỏ để phóng to):

5-lỗi-với-apply-filters-trong-wordpress.jpg

Giống như đề xuất, tôi đã cập nhật tham số thứ tư của hàm add_filter() thành 2 và nó đã hoạt động!

ChatGPT đã lấy các đoạn mã, phân tích những đoạn đó và cung cấp cho tôi một chẩn đoán. Để làm rõ, để đưa ra đề xuất của mình, nó cần hiểu về cách WordPress xử lý hooks (đó là những gì hàm add_filter làm) và cách tạo sự hành xử cho các dòng mã gọi và thực thi.

Cũng như vậy: Tôi đã yêu cầu ChatGPT viết một plugin WordPress mà tôi cần. Nó đã viết trong không đến 5 phút

Tôi phải đánh dấu nó là phi thường, không thể chối cãi là phi thường "sống trong tương lai".

Những điều này có ý nghĩa gì?

Như đã đề cập trước đó, gỡ lỗi là một chút nghệ thuật và một chút khoa học. Hầu hết các môi trường phát triển tốt đều bao gồm các công cụ gỡ lỗi mạnh mẽ cho phép bạn xem quá trình dữ liệu di chuyển qua chương trình khi nó chạy, và điều này thực sự giúp đỡ khi cố gắng tìm kiếm các lỗi.

Cũng còn: Các chuyên gia này đang đua nhau để bảo vệ trí tuệ nhân tạo khỏi hacker

Nhưng khi bạn gặp khó khăn, thì thường khó để nhận được sự trợ giúp. Đó là vì ngay cả đồng nghiệp gần nhất cũng có thể không quen với phạm vi đầy đủ của mã mà bạn đang gỡ lỗi. Chương trình mà tôi đang làm việc bao gồm 153.259 dòng mã trong 563 tập tin - và so với các chương trình khác thì đó là một chương trình nhỏ.

Vậy nếu tôi muốn nhờ đồng nghiệp giúp đỡ, tôi có thể phải xây dựng một yêu cầu gần như giống với cách tôi đã gửi nó đến ChatGPT.

Nhưng đây là một điều cần xem xét: Tôi nhớ đã bao gồm dòng xử lý ngay cả khi không nhận ra rằng đó là nơi xảy ra lỗi. Là một bài kiểm tra, tôi cũng đã thử hỏi ChatGPT để chẩn đoán vấn đề của tôi trong một prompt mà tôi không bao gồm dòng xử lý và nó không thể giúp được. Vì vậy, có rất nhiều hạn chế rõ ràng về những gì ChatGPT có thể làm cho việc gỡ lỗi vào thời điểm này, năm 2023.

Ngoài ra: Những chatbot AI tốt nhất để thử

Điều quan trọng là bạn phải biết cách đặt câu hỏi đúng cách và những câu hỏi đó cần phải ngắn gọn đủ cho ChatGPT để xử lý toàn bộ trong một truy vấn. Điều này đòi hỏi kiến thức và kinh nghiệm lập trình thực tế để biết cách thực hiện.

Liệu tôi có thể sửa được lỗi này một mình không? Tất nhiên. Tôi chưa bao giờ gặp lỗi nào mà tôi không thể sửa được. Nhưng liệu việc đó có mất hai giờ hay hai ngày (kèm theo pizza, lời lẽ tục tĩu và nhiều cafe) trong khi phải chịu đựng nhiều gián đoạn, tôi không biết. Tôi có thể nói với bạn là ChatGPT đã sửa lỗi đó trong vài phút, giúp tôi tiết kiệm rất nhiều thời gian và sự căng thẳng.

Nhìn về tương lai (có thể là một tương lai hủy diệt)

Tôi nhận thấy một tương lai rất thú vị, khi mà sẽ có thể đưa toàn bộ 153 nghìn dòng mã vào ChatGPT và yêu cầu nó chỉ cho bạn những điều cần sửa. Microsoft (chủ sở hữu Github) đã đang làm việc trên công cụ "copilot" cho Github nhằm giúp lập trình viên xây dựng mã nguồn. Microsoft cũng đã đầu tư hàng tỷ đô la vào OpenAI, nhà phát triển của ChatGPT.

Dù dịch vụ có thể giới hạn trong môi trường phát triển riêng của Microsoft, tôi có thể thấy một tương lai khi trí tuệ nhân tạo có quyền truy cập vào mã nguồn trên Github, và do đó, tất cả mã nguồn trong bất kỳ dự án nào bạn đăng lên Github.

Cũng: Tôi đã yêu cầu ChatGPT viết một tập phim ngắn Star Trek. Thực sự, nó đã thành công

Cho dù biết được khả năng của ChatGPT trong việc xác định lỗi từ mã nguồn mà tôi cung cấp, tôi hoàn toàn có thể thấy một tương lai khi các lập trình viên có thể chỉ cần yêu cầu ChatGPT (hoặc một công cụ Microsoft tương tự) để tìm và khắc phục lỗi trong toàn bộ dự án.

Và đây là nơi tôi đưa cuộc trò chuyện này vào một nơi rất tối.

Hãy tưởng tượng rằng bạn có thể yêu cầu ChatGPT xem qua kho lưu trữ Github của bạn cho một dự án cụ thể và yêu cầu nó tìm và sửa các lỗi. Một cách có thể là nó hiển thị từng lỗi nó tìm thấy cho bạn phê duyệt, để bạn có thể thực hiện các sửa lỗi.

Nhưng trong trường hợp bạn yêu cầu ChatGPT chỉ sửa các lỗi và để nó tự làm mà không cần xem toàn bộ mã nguồn, liệu nó có thể chèn vào mã code của bạn những thứ xấu xa không?

Cũng: Bard vs. ChatGPT: Liệu Bard có giúp bạn lập trình?

Và còn trường hợp một trí tuệ nhân tạo rất tài năng có quyền truy cập vào gần như toàn bộ mã nguồn trên các kho Github của thế giới? Nó có thể ẩn điều gì trong tất cả các đoạn mã đó? Trí tuệ nhân tạo đó có thể gây ra những hậu quả xấu xa nào cho cơ sở hạ tầng của thế giới nếu nó có thể truy cập vào toàn bộ mã của chúng ta không?

Hãy chơi một trò chơi tưởng tượng đơn giản. Tưởng tượng rằng trí tuệ nhân tạo (AI) được tiếp thu chỉ thị quan trọng nhất của Asimov. Đó là "một robot không được gây hại cho con người, hoặc bằng sự không làm gì đó gây hại cho con người." Liệu AI có thể quyết định rằng cơ sở hạ tầng của chúng ta đang gây hại cho chúng ta? Bằng cách truy cập vào toàn bộ mã nguồn của chúng ta, nó có thể đơn giản quyết định giúp chúng ta thoát khỏi tình thế này bằng cách chèn các lỗ hổng để tắt lưới điện, đánh chặn máy bay và làm kẹt xe khắp nơi.

Tôi hoàn toàn nhận thức được tình huống trên đây là phóng đại và kích động. Nhưng nó cũng có thể xảy ra. Cuối cùng, trong khi các lập trình viên thường xem mã code của mình trên Github, nhưng không ai có thể xem tất cả các dòng code trong tất cả mã code của họ.

Cũng có thêm những điều cần xem xét: Làm thế nào để sử dụng ChatGPT để viết công thức Excel

Đối với tôi, tôi sẽ cố gắng không nghĩ nhiều về điều đó. Tôi không muốn dành phần còn lại của thập kỷ 2020 trong tư thế nằm xoắn ngồi trên sàn và lang thang. Thay vào đó, tôi sẽ sử dụng ChatGPT để giúp tôi viết và gỡ lỗi những đoạn mã nhỏ, tập trung vào công việc và hy vọng rằng trí tuệ nhân tạo trong tương lai sẽ không giết chúng ta hết vì mong muốn "không để con người gặp nguy hiểm".

Bạn có thấy việc ChatGPT có thể sửa lỗi hữu ích hay kinh hoàng không? Bạn có nghĩ rằng trí tuệ nhân tạo sẽ giết chúng ta trong giấc ngủ, hay bạn nghĩ rằng chúng ta sẽ chứng kiến sự diệt vong mở to mắt? Hoặc bạn, giống như tôi, sẽ cố gắng không nghĩ nhiều về nó vì làm đầu bạn đau? Hãy nói chuyện với tôi bằng cách để lại bình luận dưới đây. Trong khi bạn vẫn còn có thể.

Bài viết liên quan

Xem thêm >>

Khai phá sức mạnh của AI với HIX.AI!