✨Chương trình máy tính

Chương trình máy tính

nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] Chương trình máy tính là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính thực thi. Hầu hết các thiết bị máy tính yêu cầu các chương trình để hoạt động đúng.

Một chương trình máy tính thường được viết bởi một lập trình viên máy tính bằng ngôn ngữ lập trình. Từ chương trình trong dạng mã nguồn mà con người có thể đọc được, một trình biên dịch hoặc lắp ráp có thể tạo thành hình thức mã máy bao gồm các hướng dẫn mà máy tính có thể trực tiếp thực hiện. Ngoài ra, một chương trình máy tính có thể được thực thi với sự trợ giúp của trình thông dịch.

Một bộ sưu tập các chương trình máy tính, thư viện và dữ liệu liên quan được gọi là phần mềm. Các chương trình máy tính có thể được phân loại theo các dòng chức năng, chẳng hạn như phần mềm ứng dụng và phần mềm hệ thống. Phương pháp cơ bản được sử dụng cho một số tính toán hoặc thao tác được gọi là thuật toán.

Lịch sử

Máy lập trình ban đầu

Các máy lập trình sớm nhất đi trước phát minh ra máy tính kỹ thuật số. Ngay từ thế kỷ thứ 9, một trình phát nhạc có thể lập trình được phát minh bởi anh em người Ba Tư Musu, người đã mô tả một người thổi sáo cơ khí tự động trong Sách thiết bị khéo léo. Năm 1206, kỹ sư người Ả Rập Al-Jazari đã phát minh ra một chiếc máy đánh trống có thể lập trình trong đó máy tự động tạo âm nhạc cơ học để chơi các nhịp điệu và mẫu nhịp trống khác nhau. Năm 1801, Joseph-Marie Jacquard đã nghĩ ra một khung dệt có thể dệt một mẫu vải bằng cách làm theo một loạt các thẻ đục lỗ. Các mẫu có thể được dệt và lặp đi lặp lại bằng cách sắp xếp các thẻ.

Công cụ phân tích

phải|nhỏ| Sơ đồ của Lovelace từ Note G, [[Ada Lovelace|thuật toán máy tính được xuất bản đầu tiên ]] Năm 1837, Charles Babbage đã được truyền cảm hứng từ máy dệt của Jacquard để cố gắng xây dựng Công cụ phân tích. Tuy nhiên, sau khi tiêu hết hơn 17.000 bảng tiền tài trợ của chính phủ Anh, hàng ngàn bánh xe và bánh răng của máy bị kẹt và các động cơ không bao giờ hoạt động hoàn toàn song song cùng nhau.

Trong khoảng thời gian chín tháng vào năm 1842-43, Ada Lovelace đã dịch cuốn hồi ký của nhà toán học người Ý Luigi Menabrea. Cuốn hồi ký bao trùm Công cụ phân tích. Bản dịch chứa Note G, chi tiết hoàn toàn một phương pháp tính toán số Bernoulli bằng Công cụ phân tích. Ghi chú này được một số nhà sử học công nhận là chương trình máy tính được viết đầu tiên trên thế giới.

Máy Turing phổ dụng

Năm 1936, Alan Turing đã giới thiệu thiết bị lý thuyết Universal Turing machine Có thể mô hình hóa mọi tính toán có thể được thực hiện trên một máy tính hoàn chỉnh Turing. Đây là một máy trạng thái hữu hạn có băng đọc / ghi dài vô hạn. Máy có thể di chuyển băng qua lại, thay đổi nội dung của nó khi thực hiện thuật toán. Máy khởi động ở trạng thái ban đầu, trải qua một chuỗi các bước và dừng lại khi gặp trạng thái dừng. Máy này được một số người coi là nguồn gốc của chương trình máy tính được lưu trữ bởi John von Neumann (1946) cho "Công cụ điện toán điện tử" hiện mang tên kiến trúc von Neumann.

Máy tính lập trình ban đầu

Máy tính Z3, được phát minh bởi Konrad Zuse (1941) ở Đức, là một máy tính kỹ thuật số và có thể lập trình. Một máy tính kỹ thuật số sử dụng điện làm thành phần tính toán. Z3 chứa 2.400 rơle để tạo mạch. Các mạch cung cấp một máy tính nhị phân, dấu phẩy động, với chín lệnh. Lập trình Z3 thông qua một bàn phím được thiết kế đặc biệt và băng đục lỗ.

ENIAC - Máy tính và tích hợp số điện tử (mùa thu 1945) là một máy tính hoàn chỉnh, đa năng, Turing đầy đủ, sử dụng 17.468 ống chân không để tạo ra các mạch. Tại lõi của nó là một loạt các Pascaline được nối với nhau. 40 bộ phận của nó nặng 30 tấn, chiếm , và tiêu thụ $650 mỗi giờ (giá trị tiền năm 1940) khi không sử dụng. ENIAC có các hoạt động song song. Các bộ tích lũy khác nhau có thể đồng thời hoạt động trên các thuật toán khác nhau. Nó đã sử dụng máy đục lỗ cho đầu vào và đầu ra, và nó được điều khiển bằng tín hiệu đồng hồ. Nó đã hoạt động được 8 năm, tính toán các thông số cho bom hydro, dự đoán các kiểu thời tiết và sản xuất các bàn bắn để ngắm súng cao xạ.

Manchester Baby (tháng 6 năm 1948) là một máy tính được lưu trữ chương trình. Lập trình đã có thay đổi từ cáp di chuyển và quay số; thay vào đó, một chương trình máy tính được lưu trữ trong bộ nhớ dưới dạng số. Chỉ có ba bit bộ nhớ có sẵn để lưu trữ mỗi lệnh, vì vậy máy bị giới hạn với tám lệnh. 32 thiết bị chuyển mạch đã có sẵn để dùng vào việc lập trình.

Máy tính sau này

nhỏ| Chuyển mạch cho dữ liệu nhập thủ công trên [[Dữ liệu chung Nova|Data General Nova 3, được sản xuất vào giữa những năm 1970 ]] Các máy tính được sản xuất cho đến những năm 1970 có các công tắc phía trước để lập trình. Chương trình máy tính được viết trên giấy để tham khảo. Một hướng dẫn được thể hiện bằng một cấu hình cài đặt bật / tắt. Sau khi thiết lập cấu hình, một nút thực thi sẽ được nhấn. Quá trình này sau đó đã được lặp lại. Các chương trình máy tính cũng được nhập thủ công thông qua băng giấy hoặc thẻ đục lỗ. Sau khi phương tiện được tải, địa chỉ bắt đầu được đặt qua các công tắc và nhấn nút thực thi.

Vào năm 1961, Burroughs B5000 được chế tạo riêng để được lập trình bằng ngôn ngữ ALGOL 60. Các mạch phần cứng đặc trưng để giai đoạn biên dịch được dễ hơn.

Năm 1964, IBM System/360 là một dòng gồm sáu máy tính, mỗi máy tính có cùng kiến trúc tập lệnh. Model 30 là nhỏ nhất và ít tốn kém nhất. Khách hàng có thể nâng cấp và giữ lại phần mềm ứng dụng tương tự. Mỗi mô hình Hệ thống / 360 có tính năng đa chương trình. Với sự hỗ trợ của hệ điều hành, nhiều chương trình có thể nằm trong bộ nhớ cùng một lúc. Khi một chương trình đang đợi đầu vào/đầu ra, chương trình khác có thể tính toán. Mỗi mô hình cũng có thể mô phỏng các máy tính khác. Khách hàng có thể nâng cấp lên System/360 và giữ lại phần mềm ứng dụng IBM 7094 hoặc IBM 1401 của họ.

Lập trình máy tính

Lập trình máy tính là quá trình viết hoặc chỉnh sửa mã nguồn. Chỉnh sửa mã nguồn bao gồm kiểm tra, phân tích, tinh chỉnh và đôi khi phối hợp với các lập trình viên khác trong một chương trình được phát triển chung. Một người thực hành kỹ năng này được gọi là lập trình viên máy tính, nhà phát triển phần mềm và đôi khi là lập trình viên.

Quá trình đôi khi kéo dài của lập trình máy tính thường được gọi là phát triển phần mềm. Thuật ngữ công nghệ phần mềm đang trở nên phổ biến vì quy trình này được coi là một chuyên ngành kỹ thuật.

Ngôn ngữ lập trình

nhỏ|Một chương trình máy tính được viết theo phong cách lập trình câu lệnh Các chương trình máy tính có thể được phân loại theo mô hình ngôn ngữ lập trình được sử dụng để sản xuất chúng. Hai trong số các mô hình chính là mệnh lệnh và khai báo.

Ngôn ngữ mệnh lệnh

Các ngôn ngữ lập trình mệnh lệnh xác định một thuật toán tuần tự bằng cách sử dụng các khai báo, biểu thức và câu lệnh:

  • Một khai báo kết hợp một tên biến với một kiểu dữ liệu - ví dụ: var x: integer;
  • Một biểu thức mang lại một giá trị - ví dụ: 2 + 2 mang lại 4
  • Một câu lệnh có thể gán một biểu thức cho một biến hoặc sử dụng giá trị của một biến để thay đổi luồng điều khiển của chương trình - ví dụ: x:= 2 + 2; if x = 4 then do_something();

Một chỉ trích về ngôn ngữ mệnh lệnh là tác dụng phụ của câu lệnh gán trên một lớp biến được gọi là biến không cục bộ.

Ngôn ngữ khai báo

Các ngôn ngữ lập trình khai báo mô tả những gì tính toán nên được thực hiện và không mô tả cách thức làm thế nào để tính toán nó. Các chương trình khai báo bỏ qua luồng điều khiển và được coi là tập hợp các lệnh. Hai loại ngôn ngữ khai báo rộng là ngôn ngữ chức năng và ngôn ngữ logic. Nguyên tắc đằng sau các ngôn ngữ chức năng (như Haskell) là không cho phép các hiệu ứng bên lề, điều này giúp dễ dàng lý luận về các chương trình như các hàm toán học. Mục tiêu được xác định bằng cách cung cấp một danh sách các điểm phụ. Sau đó, mỗi subgoal được xác định bởi tiếp tục cung cấp một danh sách các subgoals của nó, vv Nếu một con đường subgoals thất bại trong việc tìm ra giải pháp, sau đó subgoal được quay lui và đường dẫn khác được thử mở ra một cách hệ thống.

Biên dịch và thông dịch

Một chương trình máy tính ở dạng ngôn ngữ lập trình máy tính mà người có thể đọc được được gọi là mã nguồn. Mã nguồn có thể được chuyển đổi thành một dạng thực thi nhờ một trình biên dịch hoặc trình lắp ráp hợp ngữ, hoặc thực hiện ngay lập tức với sự trợ giúp của một trình thông dịch.

Trình biên dịch được sử dụng để dịch mã nguồn từ ngôn ngữ lập trình sang mã đối tượng hoặc mã máy. Mã đối tượng cần xử lý thêm để trở thành mã máy và mã máy bao gồm các lệnh gốc của đơn vị xử lý trung tâm, sẵn sàng để thực thi. Các chương trình máy tính được biên dịch thường được gọi là tệp thực thi, hình ảnh nhị phân hoặc đơn giản là tệp nhị phân   - một tham chiếu đến định dạng tệp nhị phân được sử dụng để lưu trữ mã thực thi.

Một số chương trình đối tượng được biên dịch và lắp ráp cần được kết hợp thành các mô-đun với tiện ích liên kết (linker) để tạo ra một chương trình thực thi.

Trình thông dịch được sử dụng để thực thi mã nguồn từ từng dòng ngôn ngữ lập trình. Trình thông dịch giải mã từng câu lệnh và thực hiện hành vi của nó. Một lợi thế của phiên dịch viên là họ có thể dễ dàng được mở rộng thành một phiên tương tác. Lập trình viên được trình bày với một dấu nhắc và các dòng mã riêng lẻ được nhập và thực hiện ngay lập tức.

Nhược điểm chính của trình thông dịch là chương trình máy tính chạy chậm hơn so với khi được biên dịch. Mã thông dịch chậm hơn vì trình thông dịch phải giải mã từng câu lệnh và sau đó thực hiện nó. Tuy nhiên, việc phát triển phần mềm có thể nhanh hơn khi sử dụng trình thông dịch vì việc kiểm tra là ngay lập tức khi bước biên dịch bị bỏ qua. Một nhược điểm khác của trình thông dịch là một trình thông dịch phải có mặt trên máy tính thực thi. Ngược lại, các chương trình máy tính được biên dịch không cần trình biên dịch trong quá trình thực thi.

👁️ 1 | 🔗 | 💖 | ✨ | 🌍 | ⌚
nhỏ|phải|A [[Graphical user interface|GUI Chương trình "Hello World", viết bằng ngôn ngữ Perl]] nhỏ|phải|Có thể thực thi dòng mã ở máy điện tử cầm tay [[PlayStation Portable homebrew|PlayStation Portable Sony.]] nhỏ|phải|Thử máy [[CNC ở Perspex]]
nhỏ| Chương trình máy tính "Xin chào, thế giới" của [[Brian Kernighan (1978) ]] **Chương trình máy tính** là tập hợp các câu lệnh thực hiện một tác vụ cụ thể khi được máy tính
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
Trong lập trình hướng đối tượng, **lớp** (**class**) là một chương trình-mã-khuôn mẫu có thể mở rộng được để tạo các đối tượng, cung cấp giá trị khởi tạo cho trạng thái (biến thành viên)
Trong ngành khoa học máy tính, **tiến trình** () là một thực thể (instance) của một chương trình máy tính đang được thực thi bởi một hoặc nhiều luồng (thread). Một tiến trình có riêng
phải|nhỏ|277x277px| Minh họa của một ứng dụng sử dụng libvorbisfile để phát file Ogg Vorbis Trong khoa học máy tính, **thư viện** là tập hợp các tài nguyên không biến động được sử dụng bởi
Khoa học máy tính nghiên cứu các cơ sở lý thuyết của thông tin và tính toán, cùng với các kỹ thuật thực tiễn để thực hiện và
Đây là các **trận đấu cờ vua giữa con người và máy tính** quan trọng. Máy tính lần đầu tiên có thể đánh bại những người chơi cờ mạnh vào cuối những năm 1980. nổi
phải|nhỏ|325x325px|[[Kết xuất hex của sâu Blaster, hiển thị một thông điệp lập trình viên sâu này để lại cho Giám đốc điều hành Microsoft Bill Gates]] nhỏ|325x325px|Sự lây lan của [[Conficker|sâu Conficker]] **Sâu máy tính**
nhỏ|Một lỗi hạt nhân được hiển thị trên iMac. Trong điện toán, **crash** (**hỏng chương trình** hay còn gọi là **bị văng**) xảy ra khi một chương trình máy tính, phần mềm ứng dụng hay
Biểu trưng chính thức nhỏ|250x250px|Một biển báo điện tử hiển thị ngày 3 tháng 1 năm 1900 vào ngày 3 tháng 1 năm 2000 ở [[Pháp.]] **Sự cố máy tính năm 2000** (còn được gọi
nhỏ|4 khe cắm [[PCI Express (từ trên xuống dưới: x4, x16, x1 and x16), bên cạnh khe PCI 32 bit (dưới cùng)]] Trong kiến trúc máy tính, **bus** (là tên viết gọn của từ Latin
**Máy tính bảng** (Tiếng Anh: Tablet computer hay tablet PC), là một thiết bị di động, thông thường có hệ điều hành di động và mạch xử lý, màn hình cảm ứng và viên pin
**John McCarthy** (4 tháng 9 năm 1927 - 24 tháng 10 năm 2011) là một nhà khoa học máy tính và nhà khoa học nhận thức người Mỹ. McCarthy là một trong những người sáng
**Nền tảng máy tính**,** Nền tảng điện toán** hoặc **nền tảng** **kỹ thuật số** là môi trường trong đó một phần mềm được thực thi. Nó có thể là phần cứng hoặc hệ điều hành,
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
Đây là danh sách nguồn gốc các thuật ngữ liên quan đến máy tính (hay **danh sách từ nguyên thuật ngữ máy tính**). Nó có liên quan đến cả phần cứng và phần mềm máy
Trong khoa học máy tính, **ngôn ngữ máy tính** là hệ thống giao tiếp với máy tính. Các ngôn ngữ như vậy được sử dụng để tạo **mã máy tính** hoặc **mã** **chương trình**, tập
Trong lập trình, **tham số** là biến được thu nhận bởi một chương trình con. Tại thời gian chạy, chương trình con sử dụng các giá trị được gán cho các tham số để thay
Trong lập trình hướng đối tượng, một **Đối tượng thượng đế** (tiếng Anh: God object) là một đối tượng _biết quá nhiều_ hoặc _làm quá nhiều_. Đối tượng thượng đế là một ví dụ về
Programming Paradigm hay **Phương thức lập trình** là một kiểu cơ bản của lập trình vi tính (Computer Programming). Paragigm với các khái niệm và sự trừu tượng dùng trong mô tả các thành phần
Trong máy tính, **kiểm chuẩn** (tiếng Anh: **benchmark**) là thao tác chạy một chương trình máy tính, nhiều chương trình một lúc, hoặc các tác vụ khác, nhằm đánh giá kết quả **vận hành** của
Trong khoa học máy tính, **bao đóng** (closure) là một hàm hay một tham chiếu tới một hàm cùng với môi trường tham chiếu - một bảng chứa tham chiếu đến mỗi biến không phải
Trong lập trình hướng đối tượng (OOP), **thực thể** (tiếng Anh: _instance_) là một sự xuất hiện cụ thể của bất kì đối tượng nào, thường tồn tại trong khoảng thời gian chạy của một
nhỏ Trong lập trình máy tính, **hằng số** (tiếng Anh: _constant_) là một giá trị mà không thể bị thay đổi bởi chương trình trong thời gian thực thi thông thường, ví dụ giá trị
**Nhà khoa học máy tính** là một người có được kiến thức về khoa học máy tính, nghiên cứu về nền tảng lý thuyết của thông tin và tính toán và ứng dụng của họ.
**Mặc định** (tiếng Anh: _default_), trong khoa học máy tính, đề cập đến những giá trị có từ trước của những thiết lập mà người dùng có thể cấu hình được để gán cho một
**Acid** là một virus máy tính nhiễm Tập tin.COM và .EXE bao gồm command.com. Nếu file bị nhiễm được thực thi, virus sẽ ảnh hưởng toàn bộ Tập tin.EXE trong thư mục hiện hành. Sau
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
[[Phần cứng|Phần cứng máy tính là nền tảng cho xử lý thông tin (sơ đồ khối). ]] **Lịch sử phần cứng máy tính** bao quát lịch sử của phần cứng máy tính, kiến trúc của
thumb|right|upright=1.2|Trẻ em được dạy cách sử dụng máy tính xách tay cá nhân; màn hình CRT, bàn phím và chuột máy tính để bàn cũ hơn (thời 1990) có thể nhìn thấy trong nền. **Máy
phải|nhỏ|350x350px| Các hệ điều hành máy tính để bàn hiện đại có khả năng xử lý số lượng lớn các quy trình khác nhau cùng một lúc. Ảnh chụp màn hình này cho thấy [[Linux
Trong lập trình máy tính, **tầm vực** (tiếng Anh: _scope_) của một ràng buộc tên – liên kết tên với một thực thể, ví dụ như biến – là một vùng của chương trình máy
Trong lập trình máy tính, một **triển khai của ngôn ngữ lập trình** là một hệ thống để thực thi chương trình máy tính. Có hai cách tiếp cận chung để triển khai một ngôn
Trong công nghệ thông tin và khoa học máy tính, một chương trình được mô tả là có **trạng thái** nếu nó được thiết kế để ghi nhớ các sự kiện hoặc tương tác người
nhỏ|400x400px| Quá trình xây dựng một mô hình máy tính và sự tương tác giữa thí nghiệm, mô phỏng và lý thuyết. **Mô phỏng máy tính** là quá trình mô hình toán học, được thực
Trong hệ điều hành máy tính đa nhiệm, **trình nền** (**daemon**) ( hoặc ) là một chương trình máy tính chạy dưới dạng một tiến trình nền, không phải dưới sự kiểm soát trực tiếp
Trong khoa học máy tính, một hàm hay biểu thức được cho là có **hiệu ứng lề** hay **tác dụng phụ** (_side effect_) nếu nó thay đổi một số trạng thái ngoài tầm vực của
nhỏ|220x220px| Trẻ em chơi _[[Paperboy (trò chơi điện tử)|Paperboy_ trên CPC Amstrad 464 vào năm 1988 ]] nhỏ|220x220px| Hầu hết các máy tính gia đình, như Máy tính màu Tandy 3 này, bao gồm một
CAD là tên viết tắt của Computer-Aided Design. Đây là quy trình dùng để thiết kế và soạn thảo các thành phần trên máy vi tính. Quá trình này bao gồm việc tạo ra các
**Hacker** là người hiểu rõ hoạt động của hệ thống máy tính, mạng máy tính, có thể viết hay chỉnh sửa phần mềm, phần cứng máy tính để làm thay đổi, chỉnh sửa nó với
Trong lập trình máy tính, một **biến** (_variable_) hay **vô hướng** (_scalar_) là một vị trí lưu trữ gắn liền với một tên tượng trưng (_định danh_) liên quan, chứa một số lượng thông tin
nhỏ|Ảnh chụp màn hình [[phần mềm Notepad++ chỉnh sửa mã XML.]] **Trình soạn thảo mã nguồn** (tiếng Anh: _source-code editor_) là một chương trình soạn thảo văn bản được thiết kế đặc biệt để chỉnh
Trong công nghệ phần mềm và lý thuyết ngôn ngữ lập trình, **nguyên tắc trừu tượng** (tiếng Anh: _abstraction principle_ hay _principle of abstraction_) là một phương châm cơ bản nhằm giảm sự trùng lặp
nhỏ|phải|243x243px|Ảnh chụp giao diện [[phần mềm diệt virus có tên FireLion- FastHelper]] Trong khoa học máy tính viễn thông, **virus máy tính** hay **virus tin học** (thường được người sử dụng gọi tắt là **virus**)
nhỏ|Mô hình ngôn ngữ máy được lập nên bởi nhà toán học, nhà thủy văn và lập trình viên Vladimir Mikhailovich Kazakov, nhân viên Máy tính của Viện Energosetproekt năm 1962-1972. **Ngôn ngữ máy** (còn
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
phải|Biểu đồ hoạt động của một trình biên dịch lý tưởng. **Trình biên dịch** () hay **phần mềm biên dịch** là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh
Dưới đây là **danh sách chương trình truyền hình đã và đang được phát sóng của Đài Truyền hình Thành phố Hồ Chí Minh**, được chia theo kênh và trạng thái phát sóng. Danh sách
**Chương trình tàu vũ trụ sử dụng nhiều lần Buran** (Бура́н có nghĩa là "bão tuyết" hay "trận bão tuyết" trong tiếng Nga) được khởi động năm 1976 tại TsAGI như một đối trọng với