Hỏi - đáp Nơi cung cấp thông tin nghề nghiệp và giải đáp những thắc mắc thường gặp của bạn

Trí tuệ nhân tạo biết lập trình có làm cho các developer bị mất việc?

Trí tuệ nhân tạo có thể sáng tác bài hát, vẽ tranh, hỗ trợ điều trị ung thư, lái xe ô tô và chơi game và làm nhiều thứ khác. Và nó cũng đang bắt đầu viết code. Điều đó có làm các lập trình viên suy nghĩ?

Câu hỏi có vẻ hơi mỉa mai nếu bạn nghĩ về nó. Các hệ thống thông minh được thiết lập để thay thế chính người người tạo ra chúng, là các lập trình viên,  trong tương lai ư? Nghe có vẻ giống như một bộ phim khoa học viễn tưởng? Tuy nhiên, câu hỏi quan trọng hơn là: Nó có thể thành sự thật không? Nếu nó thành sự thật thì tương lai các lập trình viên sẽ như thế nào?

Nếu câu trả lời là việc AI có thể viết code hoàn hảo thì tương lai của các lập trình viên vẻ hơi ảm đạm. Tuy nhiên, trước khi bạn nghĩ về viễn cảnh diệt vong, một kịch bản mà robot đảm nhận tất cả công việc của chúng ta,  trước tiên hãy cùng xem trí tuệ nhân tạo (AI) thật sự làm được gì và tương lai sẽ phát triển thế nào. Liệu AI sẽ mang lại lợi ích cho các lập trình viên hay sẽ lấy mất việc của họ.

Dự đoán tương lai của công nghệ AI: AI biết lập trình

Trong một cuộc khảo sát do Evans Data Corp thực hiện, 550 nhà phát triển phần mềm đã được hỏi về những khía cạnh đáng lo ngại nhất trong sự nghiệp của họ. Có đến 29% cho biết: “Tôi và công việc của tôi được thay thế bằng trí tuệ nhân tạo”.

Một nhóm các nhà nghiên cứu tại Phòng thí nghiệm Quốc gia Oak Ridge của Bộ Năng lượng Hoa Kỳ cũng đồng ý với nhận định này. Đến năm 2040, công nghệ học máy và xử lý ngôn ngữ tự nhiên sẽ tiên tiến đến mức chúng sẽ có khả năng viết mã phần mềm tốt hơn. Và chúng sẽ làm điều đó nhanh hơn những developers, là con người,  giỏi nhất.

Nghiên cứu “Tương lai của việc làm” của Đại học Oxford, dù đã cách đây khá lâu, cũng đã cảnh báo rằng các kỹ sư phần mềm có thể trở nên máy tính hóa khi máy học tiến bộ. Và thiết kế phần mềm sẽ được tối ưu hóa bởi các thuật toán thay vì con người.

Trên đây là những dự đoán về công nghệ trí tuệ nhân tạo trong việc lập trình và những sự lo lắng. Nhưng thực tế đến thời điểm này, những gì đã xảy ra?

Thực tế có thể lập trình bằng AI không?

Câu trả lời là: AI có thể lập trình. Điều đó đã được chứng minh bằng thực tế qua các dự án sau:

Dự án của Andrej Karpathy

Năm 2015, Andrej Karpathy, một cựu nghiên cứu sinh ngành Khoa học Máy tính Stanford hiện là Giám đốc AI tại Tesla đã điều hành một dự án sử dụng Mạng thần kinh tái tạo (Recurrent Neural Networks – RNN ) để viết code. Andrej đã dùng Linux GitHub repository (tất cả các source files và headers files), kết hợp nó thành một tài liệu khổng lồ (nó có hơn 400 MB dòng lệnh ngôn ngữ C) và đào tạo RNN bằng code này. Và đây là đoạn code nó tạo ra:

/*
 * If this error is set, we will need anything right after that BSD.
 */
static void action_new_function(struct s_stat_info *wb)
{
  unsigned long flags;
  int lel_idx_bit = e->edd, *sys & ~((unsigned long) *FIRST_COMPAT);
  buf[0] = 0xFFFFFFFF & (bit << 4);
  min(inc, slist->bytes);
  printk(KERN_WARNING "Memory allocated %02x/%02x, "
    "original MLL instead\n"),
    min(min(multi_run - s->len, max) * num_data_in),
    frame_pos, sz + first_seg);
  div_u64_w(val, inb_p);
  spin_unlock(&disk->queue_lock);
  mutex_unlock(&s->sock->mutex);
  mutex_unlock(&func->mutex);
  return disassemble(info->pending_bh);
}

static void num_serial_settings(struct tty_struct *tty)
{
  if (tty == tty)
    disable_single_st_p(dev);
  pci_disable_spool(port);
  return 0;
}

static void do_command(struct seq_file *m, void *v)
{
  int column = 32 << (cmd[2] & 0x80);
  if (state)
    cmd = (int)(int_state ^ (in_8(&ch->ch_flags) & Cmd) ? 2 : 1);
  else
    seq = 1;
  for (i = 0; i < 16; i++) {
    if (k & (1 << 1))
      pipe = (in_use & UMXTHREAD_UNCCA) +
        ((count & 0x00000000fffffff8) & 0x000000f) << 8;
    if (count == 0)
      sub(pid, ppc_md.kexec_handle, 0x20000000);
    pipe_set_bytes(i, 0);
  }
  /* Free our user pages pointer to place camera if all dash */
  subsystem_info = &of_changes[PAGE_SIZE];
  rek_controls(offset, idx, &soffset);
  /* Now we want to deliberately put it to device */
  control_check_polarity(&context, val, 0);
  for (i = 0; i < COUNTER; i++)
    seq_puts(s, "policy ");
} 

Code đã được tạo bởi AI, bao gồm các chức năng và khai báo chức năng , chỉ qua một đêm. Nó có các tham số, biến, vòng lặp và thụt lề chính xác. Dấu ngoặc đã được mở và sau đó được đóng lại. Nó thậm chí còn có các comments.

Tuy nhiên, code do AI tạo ra có lỗi cú pháp. Nó không theo dõi các tên biến. Đôi khi các biến đã được khai báo nhưng không bao giờ được sử dụng. Các biến số lần khác đã được sử dụng nhưng không được xác định. Hàm thứ hai trong ví dụ đã so sánh tty == tty.

Bạn có thể tìm thấy dự án trên GitHub. Dự án sử dụng thư viện học sâu (deep learning) Torch7. Đây là toàn bộ tập tin do chương trình của Karpathy tạo ra.

Hệ thống tạo ngôn ngữ AI GPT-3

Nhà nghiên cứu Sharif Shameem đã đăng một tweet ngày 13 tháng 7 năm 2020 rằng ông đã sử dụng GPT-3 để tạo ra một trang web bằng cách chỉ nhập mô tả. GPT-3 đã biến chúng thành mã JSX. Mã JSX là một phần mở rộng cú pháp cho JavaScript (JS) tạo ra các trang web với React, một thư viện JS mã nguồn mở để xây dựng giao diện người dùng (UI) hoặc các thành phần của nó.

Mặc dù GPT-3 tự hào về khả năng viết code bằng nhiều ngôn ngữ khác nhau (ví dụ: Cascading Style Sheets [CSS], JSX, Python, v.v.), nhưng giống như bất kỳ phần mềm mới được phát triển nào, nó vẫn còn nhiều lỗ hổng cần khắc phục. Một trong số đó là code GPT-3 tạo ra có thể không hữu ích. Nó cũng phạm phải những lỗi khá khó sửa nếu không có sự trợ giúp của con người. Ví dụ sẽ là câu đố và các câu hỏi toán học đơn giản như “Con số nào đứng trước một triệu?” mà GPT-3 sẽ trả lời, “Chín trăm nghìn chín mươi chín.” thay vì “chín trăm chín mươi chín nghìn chín trăm chín mươi chín.”

Các câu trả lời của GPT-3

Với khả năng viết code, AI sẽ thay thế các lập trình viên?

Với những vấn đề còn gặp phải khi AI viết code như trong các ví dụ trên, câu chuyện viễn tưởng của Hollywood về việc AI thay thế con người vẫn chưa trở thành sự thật. Chúng ta chưa phải quá lo lắng về một kịch bản giống như Space Odyssey về AI lừa đảo chống lại chủ nhân của nó và tiêu diệt các phi hành đoàn tàu vũ trụ. Tuy vậy, liệu chúng ta có thể chắc chắn rằng AI trong cuộc sống thực có thể được kiểm soát?

Các AI mất kiểm soát

Vào năm 2016, Microsoft đã phát hành một bot Twitter có tên là Tay. Nó được thiết kế để bắt chước các mẫu ngôn ngữ của một cô gái Mỹ 19 tuổi và để học hỏi từ việc tương tác với những người dùng Twitter. Chỉ sau 16 giờ kể từ khi ra mắt, Microsoft đã buộc phải đóng cửa Tay vì bot bắt đầu đăng các dòng tweet xúc phạm.

TayTweets, AI chatbot của Microsoft trên twitter

Đó không phải là vấn đề AI duy nhất được ghi nhận. Đầu năm 2017, Facebook đã phải ngưng các bot của mình là Bob và Alice. Chúng được tạo ra để thực hiện các cuộc trò chuyện giữa con người và máy tính. Nhưng khi các bot được hướng dẫn để nói chuyện với nhau, chúng bắt đầu giao tiếp theo cách mà mọi người không thể hiểu được.

Các hoài nghi về AI và nỗi lo của nhà khoa học máy tính

Vậy, AI là một mối đe dọa hay một cơ hội? Elon Musk nổi tiếng là người hoài nghi về công nghệ. Lo lắng của Elon Musk là điều gì sẽ xảy ra khi máy móc trở nên thông minh hơn con người, đã đặt câu hỏi: “Ngay cả trong kịch bản lành tính, nếu AI thông minh hơn nhiều so với con người, chúng ta sẽ làm gì? Chúng ta còn có công việc gì? ”

Không còn nghi ngờ gì nữa, trong tương lai gần máy tính sẽ lập trình tốt hơn nhiều so với hiện tại. Điều này đưa chúng ta đến một kết luận khá đáng sợ.

“Chỉ là vấn đề thời gian cho đến khi mạng nơ-ron tạo ra mã hữu ích. Vì vậy, mọi thứ đang có vẻ ảm đạm đối với các nhà khoa học máy tính như tôi, ”Giáo sư Christian Bauckhage từ Fraunhofer-Institut für Intelligente Analyse- und Informationssysteme, Đức (IAIS) tin tưởng như vậy.

AI không lấy đi công việc của developers

Nhưng tương lai có thực sự đen tối như vậy không? Theo Armando Solar-Lezama của MIT, các công cụ như DeepCoder có tiềm năng tự động hóa việc phát triển mã, nhưng AI sẽ không lấy đi công việc của các nhà phát triển. Thay vào đó, một hệ thống dựa trên tổng hợp chương trình có thể được sử dụng để tự động hóa các phần tẻ nhạt của quá trình phát triển mã trong khi các nhà phát triển tập trung vào các nhiệm vụ phức tạp.

Đã có những công ty khởi nghiệp sử dụng tự động hóa để xây dựng “phần mềm thông minh”. Dev9 là một công ty phát triển phần mềm tùy chỉnh có trụ sở tại Seattle, tập trung vào Java và JavaScript. Dev9 tập hợp các nhóm sử dụng trí tuệ nhân tạo để phát triển phần mềm tùy chỉnh, loại bỏ các quy trình vất vả và giảm đáng kể chi phí thủ công. Khi Will Iverson, Giám đốc Công nghệ của nó, được hỏi liệu các lập trình viên có cần lo lắng về việc bị thay thế bởi AI trong tương lai gần hay không, ông trả lời:

Cuối cùng, vâng. Nhưng đến thời điểm đó, xã hội sẽ rất quen với việc đối phó với kiểu thay đổi xã hội đó. Từ lâu, hàng triệu tài xế trả phí được thay thế bằng ô tô tự lái sẽ buộc hệ thống chính trị và kinh tế của chúng ta phải tìm cách đối phó với những chuyển đổi này. Chúng tôi đã nói đùa xung quanh văn phòng rằng phát triển phần mềm sẽ là một trong những nghề cuối cùng còn sót lại ”.

Không có nghi ngờ gì rằng công nghệ sẽ tiếp tục phát triển và ngày càng thông minh hơn. Cuối cùng, nó có thể trở nên thông minh hơn con người. Làm thế nào chúng ta có thể xử lý một khả năng như vậy? Stephen Hawking cũng nhìn thấy một mối nguy thực sự là máy tính sẽ phát triển trí thông minh. Nhưng ông cũng đã đưa ra lời khuyên: “Chúng ta cần khẩn trương phát triển các kết nối trực tiếp với não để máy tính có thể bổ sung trí thông minh của con người chứ không phải là đối lập.”

Như vậy, quay trở lại câu hỏi: “AI có thể thay thế các lập trình viên không?” Câu trả lời là: không nhất thiết phải lo lắng về vấn đề này.  Mặc dù các công cụ AI, có thể viết mã đơn giản, đã tồn tại, nhưng chúng không có cách nào để xác định tính năng nào cần ưu tiên hoặc vấn đề mà một phần mềm đang phát triển sẽ giải quyết. Hiện chỉ có lập trình viên mới có thể tạo ra code dựa trên sự hiểu biết về các thông số kỹ thuật và yêu cầu chính xác. Và như ví dụ trên cho thấy, hiện tại, chỉ những lập trình viên mới có thể hiểu được những câu hỏi phức tạp không có câu trả lời chính xác hoặc câu hỏi có nhiều câu trả lời.

Trên thực tế, những gì mà các nhà nghiên cứu đưa ra ban đầu – vai trò của các lập trình viên chỉ có thể thay đổi khi các hệ thống AI cải tiến hơn nữa – là đúng. Trong tương lai, thay vì viết code, họ sẽ chịu trách nhiệm phân tích và quản lý dữ liệu để sử dụng làm đầu vào cho các thuật toán AI, từ đó sẽ tạo ra phần mềm.

AI sẽ tác động đến sự phát triển phần mềm trong tương lai gần.

Như trên đã đề cập, công nghệ AI ra đời để giúp các lập trình viên, thay vì thay thế họ

Các lập trình viên rất hiếm khi xây dựng code từ đầu. Để viết một chương trình cũng giống như việc lắp ráp một ngôi nhà từ các khối xây dựng được đóng gói dưới dạng thư viện và framework. Để liên kết các khối này với nhau, các developers sử dụng các API (application programming interfaces). API giúp một hệ thống phần mềm tương tác với một hệ điều hành, cơ sở dữ liệu, nền tảng phần cứng cụ thể hoặc một hệ thống phần mềm khác.

Rất nhiều hệ thống máy tính ngày nay chứa hàng triệu dòng code và vượt quá khả năng hiểu của một người. Các lập trình viên cần các công cụ tốt hơn để điều hướng bộ sưu tập API ngày càng phức tạp này. Và đây là điều mà trí tuệ nhân tạo có thể giúp các lập trình viên thực hiện. AI sẽ trở nên tốt hơn nhiều so với các developers trong việc khám phá các vấn đề và tạo code kết nối nhiều API để giải quyết những vấn đề này. Không giống như con người, máy tính không được điều khiển bởi cảm xúc. Chúng không mắc lỗi cú pháp hoặc logic. Chúng chỉ cần được cho biết vấn đề nào cần được giải quyết và đó là lúc chúng ta cần các nhà phát triển ”.

Sẵn sàng cho tương lai với AI

Mặc dù chúng ta không thể nói chính xác điều gì sẽ xảy ra trong tương lai, nhưng có một điều khá chắc chắn: các lập trình viên sẽ ngày càng thấy nhiều AI hơn ở nơi làm việc của họ trong những năm tới.  Nhưng  AI sẽ thay thế lập trình viên? Không, ít nhất là bây giờ. Tuy nhiên, các lập trình viên nên biết về các công nghệ hiện tại như GPT-3, có khả năng tạo ra các chương trình máy tính mà không cần con người lập trình. Các kỹ sư phần mềm có thể chỉ cần mô tả các tham số và phần tử để cung cấp cho chương trình. Trí tuệ nhân tạo có khả năng loại bỏ nhiều nhiệm vụ khỏi tay của các lập trình viên, nhưng không lấy công việc của  họ.

Vì vậy, thay vì vẽ ra một viễn cảnh u ám, các lập trình viên có lẽ nên nắm lấy những lợi ích mà AI mang lại. Nhiều ngành công nghiệp đã và đang áp dụng công nghệ này để tăng năng suất và hạ giá thành. Xu hướng này là không thể tránh khỏi, và vì vậy thay vì lo sợ, họ có thể làm tốt hơn để nâng cao bộ kỹ năng của mình để thích ứng với bối cảnh thay đổi.

Và nếu AI làm cho công việc của một lập trình viên trở nên lỗi thời, thì không cần phải lo lắng. Công nghệ đã và đang chiếm lấy công việc của con người trong suốt lịch sử của nó. Và 20 năm nữa, sẽ có vô số công việc mới mà chúng ta thậm chí không thể tưởng tượng được.

Nguồn: itguru.vn/blog/