Tôi muốn nhận thông tin mới nhất từ Aptech      
 
   
 
CHƯƠNG TRÌNH ĐÀO TẠO

LTV QUỐC TẾ ACCP
CHỈ CÓ TẠI CNC
CÁC KHÓA NGẮN HẠN

LỊCH SỬ NGÀNH PHÁT TRIỂN PHẦN MỀM VIỆT NAM VÀ THẾ GIỚI

Tính đến nay, lịch sử ngành Phát triển phần mềm của thế giới đã phát triển được hơn 50 năm. Thế ngành phát triển phần mềm của Việt Nam có tự bao giờ? Bài viết sau đây sẽ cung cấp nhiều thông tin quý giá cho bạn.

Lịch sử ngành Phát triển phần mềm

Lịch sử ngành Phát triển phần mềm Việt Nam

“Năm 1968, chiếc máy tính điện tử Minsk-22 do Liên Xô tặng, đã về đến Việt Nam. Nó là loại máy tính lớn (chỉ có thể gọi là Computer) hay còn gọi là các Mainframe. Hệ máy này do Liên Xô thiết kế dựa trên một bản vẽ logic khá sơ sài của hệ máy PDP của hãng DEC Hoa Kỳ được các sĩ quan tình báo Liên Xô là KGB đánh cắp về (kĩ nghệ về CNTT của Hoa Kỳ vẫn đi xa hàng thập kỉ so với Liên Xô vào thời đó). Máy có kích thước chiếm hết 1 gian phòng 100m2, không dùng mạch tích hợp (vì công nghệ mạch tích hợp – IC thời đó còn rất sơ khai), dùng bóng bán dẫn chớ không phải Transistor như các máy tính ngày nay vì tới năm 1957 mới có các thiết bị đơn giản ứng dụng Transistor thay cho các bóng bán dẫn cỡ lớn (mà tiên phong là hãng điện tử lừng danh Sony). Máy không có hệ điều hành, chạy đơn nhiệm, dùng ngôn ngữ lập trình là… ngôn ngữ máy (hoặc khá hơn là hợp ngữ), cùng một vài ngôn ngữ cổ đại thời đó như FORTRAN, COLBOL …

Cùng khoảng thời gian đó, miền nam Việt Nam, người Mỹ đã đưa vào VN từ những năm 1970 các máy mainframe của IBM sản xuất với các tính năng vượt trội khủng khiếp nhằm các mục đích tính toán lớn trong cuộc chiến tranh Việt Nam. Sau năm 1975 toàn bộ các máy mainframe này đều do Miền Bắc tiếp quản, bao gồm cả máy mainframe khá tốt vào thời đó là IBM360/50.”

Có máy tính rồi nhưng từ sau 1975 thì có lẽ chúng ta để đắp chiếu là chính, mãi đến năm 1987 thì mới có Tiến sĩ Quách Tuấn Ngọc viết ra chương trình phần mềm soạn thảo văn bản đầu tiên của Việt Nam là BKED.

Phần mềm soạn thảo văn bản BKED của TS Quách Tuấn Ngọc

Phần mềm soạn thảo văn bản BKED của TS Quách Tuấn Ngọc

Có lẽ đó cũng chỉ là một vài “điểm sáng” nhỏ nhoi của ngành phần mềm Việt. Còn lại chúng ta “nổi tiếng” về lĩnh vực gia công phần mềm là chính.

Lịch sử ngành Phát triển phần mềm của Thế giới

Lịch sử ngôn ngữ lập trình

Nếu bạn lần lại lịch sử những ngôn ngữ lập trình về thời khởi thủy của chúng, bạn sẽ biết rằng chúng ta đã làm việc với nghề phát triển phần mềm này một thời gian rất, rất dài.

  • Fortran (1954)
  • Cobol (1959)
  • Lisp (1958)
  • Basic (1964)
  • Forth (1970)
  • Pascal (1970)
  • SmallTalk (1971)
  • C (1971)

Ngôn ngữ C thì đại khái là bằng tuổi tôi; FORTRAN có số tuổi nhiều như bố mẹ tôi. Thế còn về những “lính mới” trong danh sách trên thì sao? Ở đây trang web khảo sát về chỉ số TCPI của TIOBE software đã cung cấp cho ta một số dữ liệu về mức độ phổ biến của các ngôn ngữ lập trình kể từ những năm 2001. Bạn hãy để ý chi tiết đến tuổi của những ngôn ngữ lập trình mới nhất và “hot” nhất như sau:

  • Perl (1987)
  • Python (1991)
  • Erlang (1991)
  • Ruby (1993)
  • Java (1995)
  • JavaScript (1995)
  • PHP (1995)

Ngôn ngữ Ruby thì mới bước vào tuổi teen. Còn JavaScript thì vẫn chưa bước vào tuổi dậy thì nữa.

Và hiển nhiên là có sự liên quan về tuổi tác của những ngôn ngữ lập trình hiện đại này và ngày xuất bản của một số cuốn sách miêu tả về suy nghĩ đương thời về ngành phát triển phần mềm hiện đại:

  • 1994 Object-Oriented Design (Booch)
  • 1995 Design Patterns (GoF)
  • 1997 UML Distilled (Fowler)
  • 1999 Extreme Programming Explained (Beck)
  • 1999 Refactoring (Fowler)
  • 2001 Agile Alliance được hình thành

Ngành phát triển phần mềm hiện đại thực ra mới phát triển gần đây. Thậm chí mặc dù chúng ta đã có trên 50 năm kinh nghiệm trong lĩnh vực này, nhưng ngành phát triển phần mềm thì vẫn đang trong thời kỳ chập chững tập đi.

Bạn hãy để ý đến lĩnh vực source control (quản lý mã nguồn) là một ví dụ. Source control rõ ràng là nền tảng của kỹ nghệ phần mềm. Tôi tin rằng lĩnh vực quản lý mã nguồn đã không trở nên phổ biến rộng rãi cho mãi tận đến năm 1999. Và đây là lý do tại sao:

Mặc dù CVS đã có mặt từ cuối những năm 80 của thế kỷ trước, nhưng nó chỉ được phổ biến rộng rãi thông qua SourceForge, cái này vẫn chưa tồn tại cho mãi tới năm 2000.

Microsoft SourceSafe cũng đã xuất hiện từ giữa những năm 90 của thế kỷ trước, nhưng vẫn không được chấp nhận là một xu thế chủ đạo cho tới khi nó được đóng gói kèm như là một phần của bộ Visual Studio 6.0 Enterprise vào năm 1998.

Một điều khá rõ ràng là, source control đã tồn tại từ trước năm 1999. Nhưng tại sao nó phải mất một khoảng thời gian rất dài để công cụ quan trọng này của kỹ nghệ phần mềm trở nên được sử dụng rộng rãi? Hóa ra câu trả lời lại nằm trong một lý thuyết gọi là mô hình trưởng thành mà hai tác giả Redwine-Riddle đã đề xuất (pdf):

Redwine và Riddle đã nghiên cứu một số công nghệ trong phát triển phần mềm để xem tại sao chúng lại phát triển và phổ biến được. Họ nhận thấy rằng nói chung một công nghệ sẽ mất từ 15 đến 20 năm để phát triển từ mức công thức khái niệm đến điểm mà nó sẵn sàng để phổ biến rộng rãi.

Họ nhận ra chúng sẽ phát triển qua 6 giai đoạn điển hình như sau:

  1. Nghiên cứu cơ bản. Khảo cứu những khái niệm và ý tưởng cơ bản, tạo ra một cấu trúc ban đầu dựa trên vấn đề đã biết, hình thành bộ khung câu hỏi nghiên cứu phản biện.
  2. Công thức hóa khái niệm. Lưu hành nội bộ những ý tưởng, phát triển một cộng đồng nghiên cứu, tập trung vào một số ý tưởng thích hợp, công bố các giải pháp đối với các vấn đề phụ xác định.
  3. Phát triển và mở rộng. Tạo ra sự mở đầu trong việc sử dụng công nghệ đó, làm sáng tỏ những ý tưởng cơ bản, khái quát hóa hướng tiếp cận đó.
  4. Thăm dò và mở rộng nội bộ. Mở rộng hướng tiếp cận đến những lĩnh vực khác, sử dụng công nghệ cho những vấn đề thực tế, làm ổn định công nghệ, phát triển các tài liệu huấn luyện, chỉ ra giá trị trong những kết quả đạt được.
  5. Thăm dò và mở rộng ra bên ngoài. Tương tự như trong nội bộ, nhưng bao gồm một cộng đồng rộng hơn của những người không phải là các nhà phát triển, chỉ ra những chứng cứ quan trọng của giá trị và tính khả dụng.
  6. Phổ biến rộng rãi. Phát triển chất lượng sản phẩm, hỗ trợ các phiên bản của công nghệ đó, thương mại hóa và tiếp thị công nghệ, mở rộng cộng đồng người dùng.

Redwine và Riddle đã trình bày theo dòng thời gian của một số công nghệ phần mềm theo sự phát triển của chúng thông qua những giai đoạn cho tới tận giữa những năm 1980. Còn tôi trình bày một phân tích tương tự cho sự trưởng thành của kiến trúc phần mềm trong những năm 1990.

CVS đã được phát hành vào năm 1986. Nó mất khoảng 15 năm sau đó để cho việc sử dụng CVS trở thành một xu thế chủ đạo, chính xác như lời phỏng đoán của Redwine-Riddle.

Mô hình Redwine-Riddle được đề xuất vào năm 1980 thì rất được thịnh hành vào ngày nay. Mark Dominus, trong Design Patterns of 1972, đã quay trở lại gần 35 năm để minh họa về cái cách mà chúng ta vẫn phải vật lộn để làm tiến hóa các ngôn ngữ lập trình ngày nay:

Phong trào “Design Patterns” đã trở nên phổ biến từ năm 1960, mục tiêu của nó là muốn huấn luyện cho các lập trình viên cách nhận ra những tình huống khi mà các pattern có thể áp dụng được, và thực thi nó thường xuyên khi cần thiết. Trong khi điều này có một mức tiến bộ rất lớn so với việc không áp dụng các pattern, sau đó các pattern đó đã được hệ thống hóa và nhúng vào trong các ngôn ngữ lập trình sau này.

Việc nhận ra các pattern là một điều rất quan trọng của quá trình phát triển của các ngôn ngữ lập trình. Trong lập trình nói chung, ý tưởng sử dụng chung một giải pháp cho vấn đề cứ xuất hiện lặp lại trong những ngữ cảnh khác nhau thì thật tuyệt vời và rất có giá trị. Vấn đề của phong trào “Design Patterns” là việc sử dụng những pattern nào sau đó: các lập trình viên được huấn luyện để nhận ra và áp dụng những pattern đó khi có thể.

Đáng lẽ những pattern đó nên được sử dụng như những biển chỉ dẫn tới những thiếu hụt của ngôn ngữ lập trình. Thì quan điểm của phong trào “Design Patterns” dường như lại là bằng một cách nào đó các lập trình viên sẽ cần thực thi Visitors, Abstract Factories, Decorators, và Faades. Nhưng những thứ này thì không quan trọng bằng sự cần thiết thực thi Subroutine Calls hoặc Object-Oriented Classes trong ngôn ngữ nguồn. Những pattern này nên được xem như là sự thiếu sót hoặc là những đặc trưng thiếu hụt trong các ngôn ngữ như Java và C++. Câu trả lời tốt nhất để nhận ra những pattern này là tìm xem những thiếu sót nào có trong những ngôn ngữ lập trình đó là nguyên nhân của pattern trở nên cần thiết, và làm thế nào để các ngôn ngữ đó có thể cung cấp sự hỗ trợ tốt hơn để giải quyết những dạng vấn đề này.

Tôi nghĩ rằng tốc độ thay đổi trong phát triển phần mềm thì rất nhanh, xin cảm ơn tới sự gia tăng theo hàm số mũ trong truyền thông của 50 năm vừa qua– truyền hình, vệ tinh, điện thoại di động, và dĩ nhiên là cả internet nữa. Là các nhà phát triển phần mềm, chúng ta lớn lên đã quen với việc phần cứng máy tính tăng gấp đôi tốc độ cứ mỗi 18 tháng. Cái mà chúng ta vẫn chưa có khả năng đương đầu tốt đó là mất bao lâu để nhân loại có thể bắt kịp với tốc độ phát triển của phần cứng đó.

Nguồn: vinacode