paint-brush
Buồng lái lập trình viên hiện đại: Suy nghĩ của tôi về GitHub Copilottừ tác giả@lorisocchipinti
4,227 lượt đọc
4,227 lượt đọc

Buồng lái lập trình viên hiện đại: Suy nghĩ của tôi về GitHub Copilot

từ tác giả Loris Occhipinti4m2023/03/31
Read on Terminal Reader

dài quá đọc không nổi

Copilot là một công cụ hỗ trợ mã hóa AI cho Github. Công cụ này dựa trên thuật toán GPT-3, được sử dụng bởi ChatGPT. Tác giả sử dụng Copilot làm tiêu chuẩn để suy ra những gì một "AI dành cho viết mã" có thể làm được ngày nay. Ông nói, giá trị của AI trong công việc của chúng tôi hầu hết đều rõ ràng đối với các kỹ sư phần mềm.
featured image - Buồng lái lập trình viên hiện đại: Suy nghĩ của tôi về GitHub Copilot
Loris Occhipinti HackerNoon profile picture

Mặc dù đã hoàn thành một số thành tích ChatGPT gọn gàng vài tháng trước, nhưng tôi đã không thực hiện bước hợp lý tiếp theo là dùng thử Copilot, công cụ hỗ trợ mã hóa AI của Github. Tuy nhiên, tôi đã bắt đầu quan tâm vào tuần trước khi một đồng nghiệp của tôi chia sẻ ảnh chụp màn hình bộ thử nghiệm do AI tạo ra.


Lời nhắc tương đối đơn giản và các trường hợp thử nghiệm được tạo có liên quan; đủ để khiến tôi muốn đăng ký dùng thử miễn phí GC và đóng góp vào sự ra đời của sự kiện kỳ dị.


Tôi sẽ tránh trình bày chi tiết những gì Copilot có thể hoặc không thể làm: những người khác đã đoán trước được tôi từ lâu. Phần thú vị đối với tôi là làm thế nào tôi có thể làm quen với công nghệ mới này.


Trong bài đăng này, tôi cũng sẽ sử dụng Github Copilot làm tiêu chuẩn để suy ra những gì một "AI dành cho viết mã" có thể làm ngày nay, vì tôi nghĩ nó đại diện cho công nghệ tiên tiến nhất trong lĩnh vực này.

Vai trò thực sự của AI trong công việc lập trình

Nhiều câu hỏi tự phát xuất hiện trong đầu khi nghĩ về AI trong lĩnh vực phần mềm.


Nó khá hữu ích? Nó có nguy hiểm không? Nó sẽ mất công việc của chúng tôi? Điều quan trọng nhất là không dồn bản thân vào chân tường với một tư duy hạn chế và để cảm xúc của chúng ta tạo nên một câu chuyện kỳ lạ nào đó về AI - dù là những người theo chủ nghĩa tân cổ điển hay những người đam mê công nghệ không tưởng.


Thay vào đó, tôi thấy các loại câu hỏi khác thú vị hơn và dễ trả lời hơn: những câu hỏi này không ngụ ý trả lời "có" hoặc "không", mà thường bắt đầu bằng "cái gì", "khi nào" và "ở đâu".


Chẳng hạn, làm cách nào tôi có thể tích hợp Copilot vào công việc hàng ngày của mình? Nó hỗ trợ những nhiệm vụ gì và nó đòi hỏi những kỹ năng cá nhân nào?


Giá trị của AI trong công việc của chúng tôi hầu hết đều rõ ràng đối với các kỹ sư phần mềm. Tuy nhiên, tôi hiểu rằng những người thuộc các tầng lớp xã hội khác có thể đánh giá sai một cách nghiêm trọng khả năng xảy ra, đặc biệt là khi nhiều người sáng tạo nội dung hoặc nhà báo muốn thu hút sự chú ý bằng cách đề xuất các kịch bản thảm khốc (hoặc hứa hẹn rằng phần mềm xây dựng hiện có thể truy cập được cho bất kỳ ai).


Đúng, đúng là các công cụ dựa trên GPT-3 - và gần đây là GPT-4 - có thể viết mã và vâng, mã được tạo thường sẽ biên dịch và thực hiện những gì được mong đợi từ nó.


Tuy nhiên, điều này không nhất thiết là mối đe dọa trực tiếp đối với sự an toàn trong công việc của tôi, vì viết mã không phải là công việc mà các kỹ sư phần mềm thực sự làm. Hãy để tôi xây dựng tốt hơn.


Công việc của chúng tôi không phải là gõ mã vào trình soạn thảo văn bản. Chúng tôi không phải là người viết tốc ký. Công việc là quyết định viết mã cái gì. Trên thực tế, bất cứ khi nào tôi đang thiết kế phần mềm và cuối cùng tôi bắt đầu nhập thứ gì đó vào IDE của mình, tôi đã hình dung trong đầu đoạn mã tiếp theo sẽ như thế nào.


Tại thời điểm này, AI chỉ đang kết nối các dấu chấm, ngay lập tức tạo ra phương thức hoặc cấu trúc dữ liệu mà tôi dự định, trừ đi lỗi chính tả không chủ ý hoặc các lỗi rõ ràng khác.


Ngay cả khi AI có thể đóng góp tới hơn 80% cơ sở mã nào đó, thì việc đưa ra lời nhắc thích hợp (20% ban đầu) là điều cần thiết , vì nó mang lượng thông tin khổng lồ mà GC cần để hoạt động chính xác. Và bạn sẽ không nhận được lời nhắc ban đầu đó nếu không có kỹ sư đứng sau bàn phím.

Phi công phụ... hay Lái tự động?

Tôi tin rằng có thể so sánh tốt với chế độ lái tự động của máy bay. AFCS (Hệ thống điều khiển chuyến bay tự động) có thể thực hiện hoàn hảo nhiều hoạt động bay khác nhau: điều chỉnh đường bay, tiếp cận sân bay hoặc thậm chí là hạ cánh.


Tôi vẫn không dám mơ ước được nhảy lên một chuyến bay thương mại mà không có bất kỳ sự giám sát nào của con người.


Việc máy tính có thể điều khiển máy bay không có nghĩa là các phi công ngồi yên trên sàn đáp.


Vẫn còn nhiều việc phải làm: kiểm tra thời tiết phía trước, liên lạc với kiểm soát không lưu, lập kế hoạch các tuyến đường thay thế và quan trọng nhất là giám sát chế độ lái tự động và điều khiển nếu cần.


Do đó, chúng ta có thể thấy phi công vẫn là người lái máy bay.


Theo cách tương tự, AI không phát triển phần mềm, các kỹ sư làm . AI là một công cụ. Các kỹ sư được đào tạo để hợp lý hóa quy trình làm việc của họ bằng cách sử dụng tự động hóa, nhưng họ sẽ luôn giám sát những gì công cụ của họ đang làm. Nếu nó không hoạt động như dự định, các kỹ sư sẽ nhảy vào và khắc phục tình hình.


Đây là suy nghĩ mà tôi có khi sử dụng Copilot: Tôi sẽ sẵn sàng giao cho nó những nhiệm vụ tầm thường, nhưng đồng thời, tôi sẽ cảnh giác về sản lượng mà nó sẽ tạo ra.

Phần kết luận

Như bạn có thể biết, thuật toán ML cơ bản của Copilot được gọi là GPT-3 và đưa ra dự đoán về chuỗi mã thông báo có khả năng nhất sẽ được tạo. Mặc dù mã được tạo thường đúng về mặt cú pháp, nhưng các công cụ không biết thông số kỹ thuật là gì và liệu mã được tạo có hợp lệ hay không.


Một biện pháp đối phó khả thi là trợ giúp GC với một số kỹ thuật nhanh chóng: ví dụ: viết nhận xét cho biết đoạn mã tiếp theo làm gì là một kỹ thuật mạnh mẽ để trợ giúp AI.


Thậm chí tốt hơn, đôi khi ngay cả nhận xét có thể được tự động tạo sau khi nhập một vài từ đầu tiên.


Tuy nhiên, phải nói rằng, ngay cả trong những điều kiện lý tưởng nhất, Copilot không phải lúc nào cũng đưa ra một gợi ý hữu ích, hoặc bất kỳ gợi ý nào nếu đúng như vậy. Mặc dù GC khá tuyệt vời, nhưng tôi tin rằng nó vẫn chưa hoàn hảo như một công cụ viết mã.


Hiện tại, tôi vẫn chưa quyết định có nên kết hợp đầy đủ Copilot vào bộ công cụ của mình hay không: bản chất trúng-hoặc-bỏ-trượt trong các đề xuất của nó đôi khi có thể là một trở ngại.


Trong mọi trường hợp, tôi khuyên mọi người nên chân ướt chân ráo và ít nhất hãy thử một lần: hãy nghĩ về nó như một công cụ tiện ích như công cụ đánh dấu cú pháp hoặc tính năng tự động hoàn thành IDE yêu thích của bạn.


Ý kiến của bạn về Github Copilot là gì? Bạn đã kết hợp nó vào công việc hàng ngày của mình hay đó là một công việc khó khăn đối với bạn? Đừng ngại, và cho tôi biết trong các ý kiến!