AI học cách viết code cho chính mình

  •  
  • 2.532

Có thể nào máy móc tự viết phần mềm cho mình và chiếm công ăn việc làm của lập trình viên?

Ít nhất thì chúng có thể đem đến sự tự động hóa cho nhiều lĩnh vực khác nhau: Loại bỏ những công việc nhàm chán, cực nhọc để các nhà phát triển làm được nhiều công việc sáng tạo hơn.

Theo InfoWorld, một báo cáo nghiên cứu mới gần đây do các nhà nghiên cứu của Microsoft và Đại học Cambridge (Anh) công bố đã thảo luận về cách một cỗ máy học, có tên là DeepCoder có thể học viết những chương trình nhỏ bằng cách sử dụng thói quen từ các chương trình khác làm nguyên liệu thô.

DeepCoder khởi đầu từ những việc rất khiêm tốn. Nó sử dụng đoạn mã nhỏ, mỗi đoạn chỉ một vài dòng, được viết bằng một tùy chỉnh – DSL (ngôn ngữ được chuyên biệt hoá dành cho miền vấn đề chuyên biệt) để làm cho nó dễ dàng phân tích đầu vào và đầu ra của mỗi đoạn mã hơn. Một đoạn mã được cho là tốt hơn khi nó giải quyết được một vấn đề cụ thể, và nhiều khả năng nó sẽ kết thúc như là một phần của giải pháp. Theo thời gian, với việc huấn luyện về những đoạn mã mới, tốc độ và độ chính xác của DeepCoder được cải thiện hơn.

Theo thời gian, với việc huấn luyện về những đoạn mã mới, tốc độ và độ chính xác của DeepCoder được cải thiện hơn.
Theo thời gian, với việc huấn luyện về những đoạn mã mới, tốc độ và độ chính xác của DeepCoder được cải thiện hơn.

Loại tiếp cận này có thể giúp cho những người không biết gì về viết code có thể xây dựng được những chương trình đơn giản dễ dàng hơn.

"Bỗng nhiên mọi người có thể trở nên năng suất hơn", ông Armando Solar-Lezama ở Viện công nghệ Massachusetts (MIT – Mỹ), người không tham gia vào nghiên cứu này, nhận xét. "Họ có thể xây dựng được các hệ thống mà họ có lẽ không thể làm trước đó".

Tóm lại, phương pháp này có thể cho phép những người không phải là coder chỉ cần đơn giản mô tả một ý tưởng cho một chương trình và để hệ thống xây dựng nó, ông Marc Brockschmidt, một trong những người sáng tạo DeepCoder tại Microsoft Research ở Cambridge cho biết.

DeepCoder sử dụng một kỹ thuật gọi là tổng hợp chương trình: tạo các chương trình mới bằng cách ghép các dòng mã lấy từ các phần mềm đang có - giống như một lập trình viên có thể làm. Cho một danh sách các yếu tố đầu vào và đầu ra cho mỗi đoạn mã, DeepCoder học mẩu mã nào là cần thiết để đạt được kết quả mong muốn tổng thể.

Một lợi thế của việc để "thả lỏng" một AI theo cách này là nó có thể tìm kiếm kỹ lưỡng hơn và rộng rãi hơn một coder bằng da bằng thịt, vì vậy có thể ghép nối các đoạn mã với nhau theo một cách mà con người có lẽ không nghĩ đến. Chưa hết, DeepCoder sử dụng máy học để lọc cơ sở dữ liệu mã nguồn và sắp xếp các đoạn mã theo nó là hữu dụng nhất.

DeepCoder sử dụng máy học để lọc cơ sở dữ liệu mã nguồn và sắp xếp các đoạn mã theo nó là hữu dụng nhất.
DeepCoder sử dụng máy học để lọc cơ sở dữ liệu mã nguồn và sắp xếp các đoạn mã theo nó là hữu dụng nhất.

Tất cả những điều này làm cho DeepCoder nhanh hơn những người tiền nhiệm nó. DeepCoder tạo ra các chương trình làm việc trong các phần phân đoạn của một giây, trong khi các hệ thống cũ hơn phải mất nhiều phút để thử nhiều kết hợp dòng mã khác nhau trước khi ghép nối những đoạn mã nào đó với nhau để có thể thực hiện công việc. Và do DeepCoder học những kết hợp mã nguồn nào hoạt động và những mã nguồn nào không hoạt động được cùng nhau nên mỗi lần nó cố giải quyết một vấn đề mới là mỗi lần nó tự cải thiện.

Công nghệ này có thể có nhiều ứng dụng. Trong năm 2015, các nhà nghiên cứu ở Viện công nghệ MIT đã tạo ra một chương trình tự động vá các lỗi phần mềm bằng việc thay thế các dòng mã lỗi từ các chương trình khác. Ông Brockschmidt cho rằng các phiên bản tương lại có thể làm cho việc xây dựng các chương trình hoạt động lặp đi lặp lại lấy thông tin từ các website dễ dàng hơn rất nhiều, như việc tự động phân loại ảnh Facebook mà coder con người không phải đụng đến một ngón tay.

Tuy nhiên, các chuyên gia cho rằng những hệ thống như vậy sẽ khiến các nhà phát triển mất việc. Có chương trình tổng hợp tự động hóa một số phần tẻ nhạt nhất của lập trình, các coder sẽ có thể tập trung thời gian cho các công việc phức tạp hơn.

Cập nhật: 27/02/2017 Theo vnreview
  • 2.532