Ngôn ngữ lập trình
Lịch sử > Phát triển ban đầu

Các máy tính rất sơ khai, chẳng hạn như Colossus, được lập trình mà không cần sự trợ giúp của chương trình được lưu trữ, bằng cách sửa đổi mạch điện của chúng hoặc thiết lập các kho các rơ le điều khiển vật lý.
Sau đó một chút, các chương trình có thể được viết bằng ngôn ngữ máy, trong đó lập trình viên viết từng lệnh dưới dạng số mà phần cứng có thể thực thi trực tiếp. Ví dụ: lệnh thêm giá trị vào hai vị trí bộ nhớ có thể bao gồm 3 số: một "mã opcode" chọn thao tác "cộng" và hai vị trí bộ nhớ. Các chương trình, ở dạng thập phân hoặc nhị phân, được đọc từ thẻ đục lỗ, băng giấy, băng từ hoặc được chuyển vào trên các công tắc trên bảng điều khiển phía trước của máy tính. Ngôn ngữ máy sau này được gọi là ngôn ngữ lập trình thế hệ thứ nhất (1GL).
Bước tiếp theo là sự phát triển của cái gọi là ngôn ngữ lập trình thế hệ thứ hai (2GL) hoặc hợp ngữ, những ngôn ngữ này vẫn được gắn chặt với kiến trúc tập lệnh của máy tính cụ thể. Những điều này phục vụ cho việc làm cho chương trình dễ đọc hơn nhiều và giúp người lập trình giảm bớt các tính toán địa chỉ tẻ nhạt và dễ xảy ra lỗi.
Các ngôn ngữ lập trình cấp cao đầu tiên, hoặc ngôn ngữ lập trình thế hệ thứ ba (3GL), được viết vào những năm 1950. Một ngôn ngữ lập trình cấp cao ban đầu được thiết kế cho máy tính là Plankalkül, được phát triển cho Z3 của Đức bởi Konrad Zuse từ năm 1943 đến năm 1945. Tuy nhiên, nó đã không được thực hiện cho đến năm 1998 và 2000.
Mã ngắn của John Mauchly, được đề xuất vào năm 1949, là một trong những ngôn ngữ cấp cao đầu tiên từng được phát triển cho máy tính điện tử. Không giống như mã máy, các câu lệnh mã ngắn biểu diễn các biểu thức toán học ở dạng dễ hiểu. Tuy nhiên, chương trình phải được dịch sang mã máy mỗi khi nó chạy, làm cho quá trình chạy chậm hơn nhiều so với chạy mã máy tương đương.
Tại Đại học Manchester, Alick Glennie đã phát triển Autocode vào đầu những năm 1950. Là một ngôn ngữ lập trình, nó sử dụng một trình biên dịch để tự động chuyển đổi ngôn ngữ thành mã máy. Mã và trình biên dịch đầu tiên được phát triển vào năm 1952 cho máy tính Mark 1 tại Đại học Manchester và được coi là ngôn ngữ lập trình cấp cao được biên dịch đầu tiên.
Mã tự động thứ hai được RA Brooker phát triển cho Mark 1 vào năm 1954 và được gọi là "Mã tự động Mark 1". Brooker cũng đã phát triển một mã tự động cho Ferranti Mercury vào những năm 1950 cùng với Đại học Manchester. Phiên bản cho EDSAC 2 được phát minh bởi DF Hartley của Phòng thí nghiệm Toán học Đại học Cambridge vào năm 1961. Được gọi là Mã tự động EDSAC 2, nó là sự phát triển trực tiếp từ Mã tự động của Mercury được điều chỉnh cho phù hợp với hoàn cảnh địa phương và được chú ý vì khả năng tối ưu hóa mã đối tượng và chẩn đoán ngôn ngữ nguồn đã được cải tiến vào thời điểm đó. Là một chuỗi phát triển hiện đại nhưng riêng biệt, Atlas Autocode được phát triển cho máy Atlas 1 của Đại học Manchester.
Năm 1954, FORTRAN được John Backus phát minh ra tại IBM. Nó là ngôn ngữ lập trình mục đích chung cấp cao đầu tiên được sử dụng rộng rãi để có một triển khai chức năng, thay vì chỉ là một thiết kế trên giấy. Nó vẫn là một ngôn ngữ phổ biến cho tính toán hiệu suất cao và được sử dụng cho các chương trình đánh giá và xếp hạng các siêu máy tính nhanh nhất thế giới.
Một ngôn ngữ lập trình ban đầu khác được phát minh bởi Grace Hopper ở Mỹ, được gọi là FLOW-MATIC. Nó được phát triển cho UNIVAC I tại Remington Rand trong thời gian từ năm 1955 đến năm 1959. Hopper nhận thấy rằng khách hàng xử lý dữ liệu kinh doanh không thoải mái với ký hiệu toán học, và vào đầu năm 1955, bà và nhóm của mình đã viết một đặc tả cho một ngôn ngữ lập trình tiếng Anh và thực hiện một nguyên mẫu. Trình biên dịch FLOW-MATIC được công bố rộng rãi vào đầu năm 1958 và về cơ bản hoàn thành vào năm 1959. FLOW-MATIC có ảnh hưởng lớn trong việc thiết kế COBOL, vì chỉ có nó và hậu duệ trực tiếp của nó là AIMACO được sử dụng thực tế vào thời điểm đó.