Tương lai của phát triển phần mềm: Tương lai của máy tính P2

10/10/2023
Cover image for the blog Tương lai của phát triển phần mềm: Tương lai của máy tính P2

Năm 1969, Neil Armstrong và Buzz Aldrin trở thành anh hùng quốc tế sau khi là những người đầu tiên đặt chân lên Mặt trăng. Nhưng trong khi những phi hành gia này là những anh hùng trên máy quay, có hàng nghìn anh hùng vô danh nếu không có sự tham gia của họ, thì việc hạ cánh lên Mặt trăng có người lái đầu tiên sẽ không phải là không thể. Một vài trong số những anh hùng này là nhà phát triển phần mềm đã mã hóa chuyến bay. Tại sao?

Chà, những chiếc máy tính tồn tại vào thời đó đơn giản hơn rất nhiều so với ngày nay. Trên thực tế, chiếc điện thoại thông minh cũ nát của một người bình thường mạnh hơn bất cứ thứ gì trên tàu vũ trụ Apollo 11 (và cả NASA của những năm 1960 cho vấn đề đó). Hơn nữa, máy tính thời đó được mã hóa bởi các nhà phát triển phần mềm chuyên dụng, những người lập trình phần mềm bằng ngôn ngữ máy cơ bản nhất: Mã hội AGC hay đơn giản là 1s và 0s.

Đối với bối cảnh, một trong những anh hùng vô danh này, Giám đốc Bộ phận Kỹ thuật Phần mềm của chương trình không gian Apollo, Margaret Hamilton, và nhóm của cô ấy đã phải viết một núi mã (hình bên dưới) mà việc sử dụng các ngôn ngữ lập trình ngày nay có thể được viết bằng một phần nhỏ công sức.

(Hình trên là Margaret Hamilton đứng cạnh một xấp giấy chứa phần mềm Apollo 11.)

Và không giống như ngày nay, nơi các nhà phát triển phần mềm viết mã cho khoảng 80-90% các tình huống có thể xảy ra, đối với các sứ mệnh Apollo, mã của họ phải tính đến mọi thứ. Để đặt vấn đề này trong viễn cảnh, chính Margaret đã nói:

"Do lỗi trong sổ tay danh sách kiểm tra, công tắc radar của điểm hẹn đã được đặt sai vị trí. Điều này khiến nó gửi tín hiệu sai đến máy tính. Kết quả là máy tính đã được yêu cầu thực hiện tất cả các chức năng bình thường của nó để hạ cánh. trong khi nhận thêm một lượng dữ liệu giả đã sử dụng hết 15% thời gian của nó. Máy tính (hay đúng hơn là phần mềm trong đó) đủ thông minh để nhận ra rằng nó đang được yêu cầu thực hiện nhiều tác vụ hơn mức cần thiết. Sau đó, nó đã gửi phát ra một báo động, điều đó có nghĩa là đối với phi hành gia, tôi đang quá tải với nhiều nhiệm vụ hơn những gì tôi nên làm vào lúc này và tôi sẽ chỉ giữ lại những nhiệm vụ quan trọng hơn; tức là những nhiệm vụ cần thiết để hạ cánh ... , máy tính được lập trình để làm nhiều việc hơn là nhận ra các điều kiện lỗi. Một bộ chương trình khôi phục hoàn chỉnh đã được tích hợp vào phần mềm. Hành động của phần mềm, trong trường hợp này, là loại bỏ các tác vụ có mức độ ưu tiên thấp hơn và thiết lập lại các tác vụ quan trọng hơn ... Nếu máy tính không cóđã nhận ra vấn đề này và thực hiện hành động khắc phục, tôi nghi ngờ liệu Apollo 11 có hạ cánh thành công lên mặt trăng hay không. "

  • Margaret Hamilton, Giám đốc Phòng thí nghiệm MIT Draper lập trình máy tính trên chuyến bay Apollo, Cambridge, Massachusetts, "Computer Got Loaded", Thư gửi dữ liệu, Tháng 3 1, 1971

Như đã gợi ý ở phần trước, phát triển phần mềm đã phát triển kể từ những ngày đầu Apollo. Các ngôn ngữ lập trình cấp cao mới đã thay thế quá trình viết mã tẻ nhạt với số 1 và số 0 để mã hóa bằng các từ và ký hiệu. Các chức năng như tạo một số ngẫu nhiên được sử dụng để yêu cầu ngày mã hóa hiện được thay thế bằng cách viết một dòng lệnh duy nhất.

Nói cách khác, mã hóa phần mềm ngày càng trở nên tự động hóa, trực quan và con người với mỗi thập kỷ trôi qua. Những phẩm chất này sẽ chỉ tiếp tục trong tương lai, hướng dẫn sự tiến hóa của phát triển phần mềm theo những cách sẽ có tác động sâu sắc đến cuộc sống hàng ngày của chúng ta. Đây là những gì chương này của Tương lai của máy tính loạt bài sẽ khám phá.

Phát triển phần mềm cho đại chúng Quá trình thay thế sự cần thiết của mã 1 và 0 (ngôn ngữ máy) bằng các từ và ký hiệu (ngôn ngữ con người) được gọi là quá trình thêm các lớp trừu tượng. Những sự trừu tượng hóa này đã xuất hiện dưới dạng các ngôn ngữ lập trình mới tự động hóa các chức năng phức tạp hoặc thông dụng cho lĩnh vực mà chúng được thiết kế. Nhưng vào đầu những năm 2000, các công ty mới xuất hiện (như Caspio, QuickBase và Mendi) bắt đầu cung cấp những gì được gọi là nền tảng không mã hoặc mã thấp.

Đây là những trang tổng quan trực tuyến, thân thiện với người dùng cho phép các chuyên gia không chuyên về kỹ thuật tạo các ứng dụng tùy chỉnh phù hợp với nhu cầu của doanh nghiệp bằng cách ghép các khối mã trực quan (biểu tượng / đồ họa) lại với nhau. Nói cách khác, thay vì chặt một cái cây và trang trí nó thành tủ đựng quần áo, bạn xây dựng nó bằng các bộ phận thời trang từ Ikea.

Mặc dù việc sử dụng dịch vụ này vẫn yêu cầu trình độ hiểu biết về máy tính nhất định, nhưng bạn không cần phải có bằng khoa học máy tính nữa mới có thể sử dụng dịch vụ này. Kết quả là, hình thức trừu tượng này tạo điều kiện cho sự gia tăng của hàng triệu "nhà phát triển phần mềm" mới trong thế giới doanh nghiệp và nó cho phép nhiều trẻ em học cách viết mã ở độ tuổi sớm hơn.

Xác định lại ý nghĩa của việc trở thành một nhà phát triển phần mềm Đã có lúc chỉ có thể chụp phong cảnh hoặc khuôn mặt của một người trên canvas. Một họa sĩ sẽ phải học và thực hành trong nhiều năm như một người học việc, học nghề vẽ tranh — cách pha trộn màu sắc, dụng cụ nào tốt nhất, kỹ thuật chính xác để thực hiện một hình ảnh cụ thể. Chi phí thương mại và nhiều năm kinh nghiệm cần thiết để thực hiện nó tốt cũng có nghĩa là các họa sĩ là rất ít và xa.

Sau đó máy ảnh được phát minh. Và chỉ với một nút bấm, phong cảnh và chân dung đã được chụp chỉ trong một giây mà nếu không sẽ mất vài ngày đến vài tuần để vẽ. Và khi máy ảnh được cải thiện, trở nên rẻ hơn và trở nên phong phú đến mức giờ đây chúng được đưa vào ngay cả những chiếc điện thoại thông minh cơ bản nhất, việc chụp thế giới xung quanh chúng ta đã trở thành một hoạt động bình thường và phổ biến mà mọi người hiện nay đều tham gia.

Khi sự trừu tượng hóa tiến bộ và các ngôn ngữ phần mềm mới tự động hóa công việc phát triển phần mềm thường xuyên hơn bao giờ hết, việc trở thành một nhà phát triển phần mềm trong khoảng thời gian từ 10 đến 20 năm nữa sẽ có ý nghĩa như thế nào? Để trả lời câu hỏi này, chúng ta hãy cùng tìm hiểu xem các nhà phát triển phần mềm trong tương lai có thể sẽ xây dựng các ứng dụng của ngày mai như thế nào:

  • Đầu tiên, tất cả các công việc mã hóa lặp đi lặp lại được chuẩn hóa sẽ biến mất. Ở vị trí của nó sẽ là một thư viện rộng lớn bao gồm các hành vi thành phần được xác định trước, giao diện người dùng và các thao tác luồng dữ liệu (các phần Ikea).

  • Giống như ngày nay, người sử dụng lao động hoặc doanh nhân sẽ xác định các mục tiêu cụ thể và phân phối cho các nhà phát triển phần mềm để thực hiện thông qua các ứng dụng hoặc nền tảng phần mềm chuyên dụng.

  • Các nhà phát triển này sau đó sẽ vạch ra chiến lược thực thi của họ và bắt đầu tạo mẫu các bản nháp ban đầu cho phần mềm của họ bằng cách truy cập thư viện thành phần của họ và sử dụng các giao diện trực quan để liên kết chúng với nhau — các giao diện trực quan được truy cập thông qua thực tế tăng cường (AR) hoặc thực tế ảo (VR).

  • Các hệ thống trí tuệ nhân tạo (AI) chuyên biệt được thiết kế để hiểu các mục tiêu và sản phẩm được ngụ ý trong các bản thảo ban đầu của nhà phát triển, sau đó sẽ tinh chỉnh thiết kế phần mềm đã soạn thảo và tự động hóa tất cả các thử nghiệm đảm bảo chất lượng.

  • Dựa trên kết quả, AI sau đó sẽ đặt vô số câu hỏi cho nhà phát triển (có thể thông qua giao tiếp bằng lời nói, giống như Alexa), tìm cách hiểu rõ hơn và xác định các mục tiêu cũng như phân phối của dự án và thảo luận về cách phần mềm sẽ hoạt động trong các tình huống khác nhau và các môi trường.

  • Dựa trên phản hồi của nhà phát triển, AI sẽ dần dần tìm hiểu ý định của họ và tạo ra mã để phản ánh các mục tiêu của dự án.

  • Sự cộng tác giữa người và máy này sẽ lặp đi lặp lại phiên bản này đến phiên bản khác của phần mềm cho đến khi một phiên bản hoàn thiện và có thể bán trên thị trường đã sẵn sàng để triển khai nội bộ hoặc để bán cho công chúng.

  • Trên thực tế, sự hợp tác này sẽ tiếp tục sau khi phần mềm được sử dụng trong thế giới thực. Khi các lỗi đơn giản được báo cáo, AI sẽ tự động sửa chúng theo cách phản ánh các mục tiêu mong muốn ban đầu được nêu ra trong quá trình phát triển phần mềm. Trong khi đó, các lỗi nghiêm trọng hơn sẽ kêu gọi sự hợp tác giữa con người và AI để giải quyết vấn đề.

Nhìn chung, các nhà phát triển phần mềm trong tương lai sẽ tập trung ít hơn vào 'làm thế nào' và nhiều hơn vào 'cái gì' và 'tại sao'. Họ sẽ ít thợ thủ công hơn và nhiều kiến ​​trúc sư hơn. Lập trình sẽ là một bài tập trí tuệ đòi hỏi những người có thể truyền đạt ý định và kết quả một cách có phương pháp theo cách mà AI có thể hiểu và sau đó tự động mã hóa một ứng dụng hoặc nền tảng kỹ thuật số đã hoàn thiện.

Phát triển phần mềm dựa trên trí tuệ nhân tạo Với phần trên, rõ ràng là chúng ta cảm thấy AI sẽ ngày càng đóng vai trò trung tâm trong lĩnh vực phát triển phần mềm, nhưng việc áp dụng nó không chỉ nhằm mục đích làm cho các nhà phát triển phần mềm trở nên hiệu quả hơn, mà còn có các lực lượng kinh doanh đứng sau xu hướng này.

Cạnh tranh giữa các công ty phát triển phần mềm ngày càng gay gắt hơn qua mỗi năm. Một số công ty cạnh tranh bằng cách mua đứt đối thủ của họ. Những người khác cạnh tranh về sự khác biệt phần mềm. Thách thức với chiến lược thứ hai là nó không dễ dàng bảo vệ được. Bất kỳ tính năng hoặc cải tiến phần mềm nào mà một công ty cung cấp cho khách hàng của mình, các đối thủ cạnh tranh của họ có thể sao chép một cách tương đối dễ dàng.

Vì lý do này, đã qua rồi thời các công ty phát hành phần mềm mới cứ sau một đến ba năm. Ngày nay, các công ty tập trung vào sự khác biệt hóa có động cơ tài chính để phát hành phần mềm mới, các bản sửa lỗi phần mềm và các tính năng phần mềm ngày càng thường xuyên. Các công ty đổi mới càng nhanh, họ càng thúc đẩy lòng trung thành của khách hàng và tăng chi phí chuyển đổi sang đối thủ cạnh tranh. Sự thay đổi hướng tới việc cung cấp thường xuyên các bản cập nhật phần mềm gia tăng là một xu hướng được gọi là “phân phối liên tục”.

Thật không may, giao hàng liên tục không phải là dễ dàng. Chỉ một phần tư các công ty phần mềm ngày nay có thể thực hiện lịch trình phát hành theo yêu cầu của xu hướng này. Và đây là lý do tại sao có rất nhiều sự quan tâm đến việc sử dụng AI để tăng tốc mọi thứ.

Như đã đề cập trước đó, AI cuối cùng sẽ đóng một vai trò cộng tác ngày càng tăng trong việc phát triển và soạn thảo phần mềm. Nhưng trong ngắn hạn, các công ty đang sử dụng nó để ngày càng tự động hóa các quy trình đảm bảo chất lượng (kiểm tra) cho phần mềm. Và các công ty khác đang thử nghiệm sử dụng AI để tự động hóa tài liệu phần mềm — quá trình theo dõi việc phát hành các tính năng và thành phần mới cũng như cách chúng được sản xuất ở cấp độ mã.

Nhìn chung, AI sẽ ngày càng đóng vai trò trung tâm trong phát triển phần mềm. Những công ty phần mềm thành thạo việc sử dụng nó sớm cuối cùng sẽ được tăng trưởng theo cấp số nhân so với các đối thủ cạnh tranh của họ. Nhưng để nhận ra những lợi ích của AI này, ngành công nghiệp cũng sẽ cần phải nhìn thấy những tiến bộ trong khía cạnh phần cứng của mọi thứ — phần tiếp theo sẽ trình bày chi tiết về điểm này.

Phần mềm như là một dịch vụ Tất cả các cách thức của các chuyên gia sáng tạo đều sử dụng phần mềm Adobe khi tạo tác phẩm nghệ thuật kỹ thuật số hoặc thiết kế. Trong gần ba thập kỷ, bạn đã mua phần mềm của Adobe dưới dạng đĩa CD và sử dụng nó vĩnh viễn, mua các phiên bản nâng cấp trong tương lai nếu cần. Nhưng vào giữa những năm 2010, Adobe đã thay đổi chiến lược của mình.

Thay vì mua các đĩa CD phần mềm với các khóa sở hữu phức tạp gây phiền nhiễu, khách hàng của Adobe giờ đây sẽ phải trả tiền đăng ký hàng tháng để có quyền tải xuống phần mềm Adobe trên thiết bị máy tính của họ, phần mềm chỉ hoạt động cùng với kết nối Internet thường xuyên liên tục tới các máy chủ của Adobe .

Với thay đổi này, khách hàng không còn sở hữu phần mềm Adobe nữa; họ đã thuê nó khi cần thiết. Đổi lại, khách hàng không còn phải liên tục mua các phiên bản nâng cấp của phần mềm Adobe; miễn là họ đã đăng ký dịch vụ Adobe, họ sẽ luôn có các bản cập nhật mới nhất được tải lên thiết bị của họ ngay sau khi phát hành (thường vài lần một năm).

Đây chỉ là một ví dụ về một trong những xu hướng phần mềm lớn nhất mà chúng tôi đã thấy trong những năm gần đây: cách phần mềm chuyển đổi thành dịch vụ thay vì một sản phẩm độc lập. Và không chỉ phần mềm chuyên dụng, nhỏ hơn, mà toàn bộ hệ điều hành, như chúng ta đã thấy với việc phát hành bản cập nhật Windows 10 của Microsoft. Nói cách khác, phần mềm như một dịch vụ (SaaS).

Phần mềm tự học (SLS) Xây dựng dựa trên sự chuyển dịch của ngành sang SaaS, một xu hướng mới trong không gian phần mềm đang nổi lên kết hợp cả SaaS và AI. Các công ty hàng đầu từ Amazon, Google, Microsoft và IBM đã bắt đầu cung cấp cơ sở hạ tầng AI của họ như một dịch vụ cho khách hàng của họ.

Nói cách khác, AI và máy học không còn chỉ dành cho những gã khổng lồ phần mềm nữa, giờ đây, bất kỳ công ty và nhà phát triển nào cũng có thể truy cập các tài nguyên AI trực tuyến để xây dựng phần mềm tự học (SLS).

Chúng tôi sẽ thảo luận chi tiết về tiềm năng của AI trong loạt bài Tương lai của trí tuệ nhân tạo, nhưng đối với ngữ cảnh của chương này, chúng tôi sẽ nói rằng các nhà phát triển phần mềm hiện tại và tương lai sẽ tạo SLS để tạo ra các hệ thống mới dự đoán các tác vụ cần thực hiện và chỉ cần tự động hoàn thành chúng cho bạn.

Điều này có nghĩa là một trợ lý AI trong tương lai sẽ tìm hiểu phong cách làm việc của bạn tại văn phòng và bắt đầu hoàn thành các tác vụ cơ bản cho bạn, như định dạng tài liệu theo ý bạn, soạn thảo email bằng giọng nói của bạn, quản lý lịch làm việc của bạn và hơn thế nữa.

Ở nhà, điều này có nghĩa là có một hệ thống SLS quản lý ngôi nhà thông minh trong tương lai của bạn, bao gồm các nhiệm vụ như sưởi ấm trước nhà trước khi bạn đến hoặc theo dõi hàng tạp hóa bạn cần mua.

Đến những năm 2020 và đến những năm 2030, các hệ thống SLS này sẽ đóng một vai trò quan trọng trong thị trường doanh nghiệp, chính phủ, quân đội và thị trường tiêu dùng, từng bước giúp cải thiện năng suất và giảm thiểu các loại chất thải. Chúng tôi sẽ trình bày chi tiết hơn về công nghệ SLS ở phần sau của loạt bài này.

Tuy nhiên, có một điểm bắt buộc đối với tất cả những điều này.

Cách duy nhất để các mô hình SaaS và SLS hoạt động là nếu Internet (hoặc cơ sở hạ tầng đằng sau nó) tiếp tục phát triển và cải thiện, cùng với phần cứng điện toán và lưu trữ chạy 'đám mây' mà các hệ thống SaaS / SLS này hoạt động. Rất may, các xu hướng chúng tôi đang theo dõi có vẻ đầy hứa hẹn.

Để tìm hiểu về cách Internet sẽ phát triển và phát triển, hãy đọc Tương lai của Internet loạt. Để tìm hiểu thêm về cách phần cứng máy tính sẽ phát triển, hãy đọc tiếp bằng cách sử dụng các liên kết bên dưới!

sponsored by ✨RNDC.