Mục Lục
1. Lịch sử phần mềm
Lịch sử phần mềm là một câu chuyện phong phú và đa dạng, phản ánh sự tiến bộ nhanh chóng của công nghệ máy tính và sự thay đổi của xã hội. Dưới đây là tóm tắt về những mốc quan trọng trong lịch sử phần mềm:
- Thập niên 1940:
- Máy tính đầu tiên: Các máy tính đầu tiên như ENIAC (Electronic Numerical Integrator and Computer) được phát triển để thực hiện các tính toán khoa học và quân sự. Phần mềm ban đầu được viết bằng mã máy.
- John von Neumann: Đề xuất kiến trúc lưu trữ chương trình, nơi chương trình và dữ liệu được lưu trữ cùng một nơi, mở đường cho phần mềm hiện đại.
- Thập niên 1950:
- Ngôn ngữ lập trình đầu tiên: Các ngôn ngữ lập trình cấp cao đầu tiên như Fortran (1957) và COBOL (1959) được phát triển để làm cho việc lập trình dễ dàng hơn.
- Hệ điều hành: Các hệ điều hành đầu tiên, như GM-NAA I/O, được phát triển để quản lý tài nguyên máy tính và thực thi các chương trình.
- Thập niên 1960:
- Unix: Hệ điều hành Unix được phát triển bởi AT&T Bell Labs vào cuối thập niên 1960, trở thành cơ sở cho nhiều hệ điều hành hiện đại.
- Software Engineering: Khái niệm kỹ nghệ phần mềm bắt đầu xuất hiện khi các dự án phần mềm trở nên lớn và phức tạp hơn.
- Thập niên 1970:
- Microsoft và Apple: Microsoft được thành lập vào năm 1975, và Apple được thành lập vào năm 1976, đặt nền móng cho ngành công nghiệp phần mềm hiện đại.
- Công cụ phát triển: Các công cụ phát triển phần mềm như các ngôn ngữ lập trình mới (Pascal, C) và các môi trường phát triển tích hợp (IDE) được phát triển.
- Thập niên 1980:
- Phần mềm thương mại: Sự xuất hiện của phần mềm thương mại như Microsoft Office và các trò chơi video đã thay đổi cách mà phần mềm được phát triển và phân phối.
- Hệ điều hành đồ họa: Hệ điều hành đồ họa như Windows và Macintosh System Software được phát triển, làm cho máy tính dễ sử dụng hơn đối với người dùng phổ thông.
- Thập niên 1990:
- Internet và Web: Sự phát triển của Internet và World Wide Web đã mở ra kỷ nguyên mới cho phần mềm, với sự xuất hiện của trình duyệt web, ứng dụng web, và các công nghệ Internet như HTML, JavaScript, và Java.
- Open Source: Phong trào phần mềm nguồn mở bắt đầu nổi lên, với sự ra đời của các dự án như Linux và Apache.
- Thập niên 2000:
- Điện thoại thông minh và ứng dụng di động: Sự ra đời của điện thoại thông minh như iPhone và Android đã mở ra một thị trường mới cho các ứng dụng di động.
- Cloud Computing: Điện toán đám mây trở nên phổ biến, cho phép các dịch vụ phần mềm được cung cấp qua Internet.
- Thập niên 2010 và sau đó:
- AI và Machine Learning: Sự phát triển của trí tuệ nhân tạo và học máy đã mở ra những khả năng mới cho phần mềm, từ nhận diện giọng nói đến xe tự lái.
- IoT và Smart Devices: Internet of Things (IoT) và các thiết bị thông minh đã thay đổi cách chúng ta tương tác với thế giới xung quanh.
- DevOps và CI/CD: Phương pháp DevOps và Continuous Integration/Continuous Deployment (CI/CD) đã thay đổi cách phần mềm được phát triển và triển khai.
Lịch sử phần mềm là một câu chuyện về sự đổi mới liên tục, phản ánh những thay đổi trong công nghệ, kinh doanh, và xã hội.
2. Phần mềm đầu tiên là phần mềm nào?
Phần mềm đầu tiên thường được coi là các chương trình viết cho máy tính ENIAC (Electronic Numerical Integrator and Computer) trong những năm 1940. ENIAC, hoàn thành vào năm 1945, là một trong những máy tính điện tử đầu tiên có khả năng lập trình. Tuy nhiên, các chương trình của ENIAC ban đầu được lập trình bằng cách thay đổi các dây nối và thiết lập lại các công tắc, không phải bằng ngôn ngữ lập trình như chúng ta biết ngày nay.
Một mốc quan trọng trong lịch sử phần mềm là chương trình đầu tiên được viết cho máy tính Manchester Mark I vào năm 1948. Tom Kilburn đã viết một chương trình để tính toán các số nguyên tố. Đây là một trong những chương trình máy tính đầu tiên được lưu trữ và thực thi trong bộ nhớ của máy tính.
Một sự kiện nổi bật khác là sự phát triển của ngôn ngữ lập trình đầu tiên, “Assembly Language” (ngôn ngữ hợp ngữ) cho máy tính EDVAC (Electronic Discrete Variable Automatic Computer) vào cuối thập niên 1940 và đầu thập niên 1950. Đề xuất kiến trúc lưu trữ chương trình của John von Neumann, trong đó cả dữ liệu và chương trình đều được lưu trữ trong bộ nhớ, đã đặt nền móng cho phần mềm hiện đại.
Ngôn ngữ lập trình cấp cao đầu tiên, Fortran (FORmula TRANslation), được phát triển bởi IBM vào năm 1957. Đây là một ngôn ngữ lập trình dành cho các ứng dụng khoa học và kỹ thuật, đánh dấu sự khởi đầu của việc sử dụng ngôn ngữ lập trình để viết phần mềm phức tạp hơn.
Vì vậy, mặc dù khó xác định chính xác “phần mềm đầu tiên,” các chương trình viết cho ENIAC và Manchester Mark I, cùng với sự phát triển của ngôn ngữ lập trình đầu tiên như Assembly Language và Fortran, đều là những cột mốc quan trọng trong lịch sử phát triển phần mềm.
3. Phần mềm đầu tiên được viết cho Computer là gì?
Phần mềm đầu tiên được viết cho một máy tính điện tử là một chương trình chạy trên máy tính Manchester Baby, hay còn gọi là Small-Scale Experimental Machine (SSEM), vào ngày 21 tháng 6 năm 1948. Máy tính Manchester Baby được phát triển tại Đại học Manchester bởi Frederic C. Williams, Tom Kilburn và Geoff Tootill.
Chương trình đầu tiên này được viết bởi Tom Kilburn và là một chương trình rất đơn giản để tính toán số nguyên tố lớn nhất dưới 2^18 (262,144). Chương trình này thực hiện các phép tính để kiểm tra và xác định số nguyên tố, và nó được lưu trữ và thực thi trong bộ nhớ của máy tính Manchester Baby, làm cho nó trở thành chương trình máy tính đầu tiên được lưu trữ và thực thi trên một máy tính điện tử.
Manchester Baby là một bước đột phá vì nó là máy tính đầu tiên sử dụng kiến trúc lưu trữ chương trình (stored-program architecture), một khái niệm do John von Neumann đề xuất. Kiến trúc này cho phép cả dữ liệu và chương trình được lưu trữ trong bộ nhớ của máy tính, tạo điều kiện cho sự phát triển của phần mềm như chúng ta biết ngày nay.
Do đó, chương trình của Tom Kilburn trên Manchester Baby vào năm 1948 được coi là phần mềm đầu tiên được viết cho một máy tính điện tử.
4. Ai được coi là cha đẻ của phần mềm
Việc xác định “cha đẻ của phần mềm” có thể không đơn giản vì phần mềm đã phát triển qua nhiều giai đoạn và có nhiều người đóng góp quan trọng. Tuy nhiên, một số cá nhân nổi bật có thể được coi là “cha đẻ của phần mềm” hoặc có vai trò quan trọng trong việc phát triển phần mềm như chúng ta biết ngày nay:
4.1. Ada Lovelace
- Đóng góp: Ada Lovelace thường được coi là lập trình viên đầu tiên. Bà đã viết các ghi chú chi tiết về cách sử dụng máy tính cơ học của Charles Babbage, bao gồm một thuật toán để tính toán các số Bernoulli.
- Ý nghĩa: Những ghi chú của Ada Lovelace bao gồm một trong những thuật toán đầu tiên được thiết kế để thực thi bởi một máy tính, làm cho bà trở thành một trong những người đầu tiên hiểu và mô tả ý tưởng về phần mềm.
4.2. Alan Turing
- Đóng góp: Alan Turing, một nhà toán học và nhà khoa học máy tính người Anh, đã đề xuất khái niệm về máy Turing, một mô hình toán học của tính toán mà đã trở thành nền tảng lý thuyết cho khoa học máy tính và phần mềm.
- Ý nghĩa: Turing được coi là một trong những người sáng lập của khoa học máy tính và trí tuệ nhân tạo. Công trình của ông về mã hóa và giải mã trong Chiến tranh thế giới thứ hai, đặc biệt là đóng góp cho việc phá mã Enigma, đã chứng minh khả năng của phần mềm trong việc thực hiện các tác vụ phức tạp.
4.3. John von Neumann
- Đóng góp: John von Neumann đã đề xuất kiến trúc lưu trữ chương trình (stored-program architecture), còn được gọi là kiến trúc von Neumann, trong đó cả chương trình và dữ liệu được lưu trữ trong cùng một bộ nhớ.
- Ý nghĩa: Kiến trúc này là nền tảng cho hầu hết các máy tính hiện đại và cho phép sự phát triển của phần mềm như chúng ta biết ngày nay.
4.4. Grace Hopper
- Đóng góp: Grace Hopper là một nhà khoa học máy tính và đô đốc hải quân Hoa Kỳ. Bà đã phát triển trình biên dịch đầu tiên, được gọi là A-0, và đóng góp quan trọng vào việc phát triển ngôn ngữ lập trình COBOL.
- Ý nghĩa: Hopper là một trong những người đầu tiên thúc đẩy việc sử dụng ngôn ngữ lập trình cấp cao, làm cho việc lập trình trở nên dễ tiếp cận hơn và thúc đẩy sự phát triển của phần mềm.
4.5. Tom Kilburn và Frederic C. Williams
- Đóng góp: Tom Kilburn và Frederic C. Williams đã phát triển máy tính Manchester Baby và viết chương trình đầu tiên để chạy trên nó vào năm 1948.
- Ý nghĩa: Chương trình này được coi là phần mềm đầu tiên được lưu trữ và thực thi trên một máy tính điện tử, đánh dấu sự khởi đầu của kỷ nguyên phần mềm hiện đại.
4.6. Dennis Ritchie
- Đóng góp: Dennis Ritchie đã phát triển ngôn ngữ lập trình C và đóng góp quan trọng vào hệ điều hành Unix.
- Ý nghĩa: Ngôn ngữ C và hệ điều hành Unix đã có ảnh hưởng sâu rộng đến nhiều ngôn ngữ lập trình và hệ điều hành hiện đại, định hình cách chúng ta phát triển phần mềm ngày nay.
Mặc dù không có một cá nhân duy nhất có thể được coi là “cha đẻ của phần mềm,” những cá nhân trên đã có những đóng góp quan trọng trong việc phát triển và định hình phần mềm như chúng ta biết ngày nay.
5. Những tổ chức quan trọng nhất với phần mềm
Nhiều tổ chức đã đóng vai trò quan trọng trong sự phát triển và tiến hóa của phần mềm, từ các công ty công nghệ lớn đến các tổ chức tiêu chuẩn hóa và các cộng đồng nguồn mở. Dưới đây là một số tổ chức quan trọng nhất với phần mềm:
5.1. IBM (International Business Machines Corporation)
- Đóng góp: IBM là một trong những công ty tiên phong trong ngành công nghiệp máy tính và phần mềm. Họ đã phát triển nhiều ngôn ngữ lập trình đầu tiên như Fortran và COBOL, và đóng góp vào sự phát triển của hệ điều hành và cơ sở dữ liệu.
- Ý nghĩa: IBM đã giúp định hình ngành công nghiệp máy tính và phần mềm từ những năm 1950 và tiếp tục có ảnh hưởng lớn đến hiện nay.
5.2. Microsoft
- Đóng góp: Microsoft đã phát triển hệ điều hành Windows, Microsoft Office, và nhiều sản phẩm phần mềm phổ biến khác. Họ cũng là công ty đứng sau ngôn ngữ lập trình C# và nền tảng .NET.
- Ý nghĩa: Microsoft đã giúp đưa máy tính cá nhân vào hàng triệu hộ gia đình và doanh nghiệp, làm cho phần mềm trở nên phổ biến và dễ tiếp cận.
5.3. Apple Inc.
- Đóng góp: Apple đã phát triển hệ điều hành macOS, iOS, và nhiều phần mềm liên quan. Họ cũng đóng góp vào sự phát triển của ngôn ngữ lập trình Swift.
- Ý nghĩa: Apple đã cách mạng hóa ngành công nghiệp phần mềm di động và máy tính cá nhân với các sản phẩm sáng tạo và hệ sinh thái ứng dụng mạnh mẽ.
5.4. Google
- Đóng góp: Google đã phát triển nhiều sản phẩm phần mềm quan trọng như hệ điều hành Android, trình duyệt web Chrome, và các dịch vụ đám mây như Google Cloud. Họ cũng phát triển ngôn ngữ lập trình Go và Dart.
- Ý nghĩa: Google đã có ảnh hưởng sâu rộng đến phát triển phần mềm web và di động, cũng như các dịch vụ dựa trên đám mây.
5.5. Linux Foundation
- Đóng góp: Linux Foundation hỗ trợ và phát triển nhiều dự án nguồn mở, bao gồm hệ điều hành Linux, một trong những hệ điều hành quan trọng nhất cho máy chủ và thiết bị nhúng.
- Ý nghĩa: Linux Foundation đã thúc đẩy phong trào nguồn mở và đóng góp vào sự phát triển của phần mềm tự do và mở.
5.6. Apache Software Foundation (ASF)
- Đóng góp: ASF là tổ chức phi lợi nhuận phát triển và hỗ trợ nhiều dự án phần mềm nguồn mở quan trọng, bao gồm máy chủ web Apache, Apache Hadoop, và Apache Spark.
- Ý nghĩa: ASF đã giúp thúc đẩy sự phát triển của phần mềm nguồn mở và cung cấp các công cụ phần mềm mạnh mẽ cho cộng đồng phát triển.
5.7. World Wide Web Consortium (W3C)
- Đóng góp: W3C thiết lập các tiêu chuẩn cho web, bao gồm HTML, CSS, và XML. Họ làm việc để đảm bảo tính tương thích và tính khả dụng của các công nghệ web.
- Ý nghĩa: W3C đã định hình cách mà web hoạt động và phát triển, đảm bảo rằng các tiêu chuẩn web là mở và có thể truy cập được cho tất cả mọi người.
5.8. IEEE (Institute of Electrical and Electronics Engineers)
- Đóng góp: IEEE phát triển các tiêu chuẩn kỹ thuật và tổ chức các hội nghị quan trọng về công nghệ và kỹ thuật phần mềm.
- Ý nghĩa: IEEE đã đóng góp vào việc thiết lập các tiêu chuẩn và thực hành tốt nhất trong ngành công nghiệp phần mềm.
5.9. Mozilla Foundation
- Đóng góp: Mozilla Foundation phát triển trình duyệt web Firefox và nhiều công cụ phần mềm nguồn mở khác. Họ thúc đẩy quyền riêng tư và tự do trên Internet.
- Ý nghĩa: Mozilla Foundation đã đóng góp vào việc tạo ra các công cụ phần mềm tự do và bảo vệ quyền riêng tư của người dùng trên web.
5.10. Oracle Corporation
- Đóng góp: Oracle là công ty phát triển phần mềm cơ sở dữ liệu quan trọng nhất, nổi bật với sản phẩm Oracle Database. Họ cũng sở hữu và phát triển ngôn ngữ lập trình Java.
- Ý nghĩa: Oracle đã có ảnh hưởng lớn đến cách mà dữ liệu được quản lý và xử lý trong các hệ thống phần mềm lớn.
Những tổ chức này đã đóng góp to lớn vào sự phát triển của phần mềm và tiếp tục có vai trò quan trọng trong ngành công nghiệp phần mềm ngày nay
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh