Thuật ngữ - mã nguồn là một chương trình? [đóng cửa]


10

Tôi là người mới bắt đầu lập trình và tôi không nắm vững về thuật ngữ. Tôi muốn biết liệu mã nguồn được viết bằng ngôn ngữ được biên dịch như C hoặc C ++ có được coi là một chương trình không? Nếu không, có ai có thể giải thích tại sao không?


1
Có, mã nguồn được coi là một chương trình. Các chương trình có thể được phân biệt bằng loại mã mà chúng chứa, như trong "mã nguồn", "mã đối tượng", "mã máy" và "mã thực thi".
Robert Harvey

6
Câu hỏi này đánh tôi rất giống với cách "Có phải thịt bò là con bò?" sẽ, vì khá nhiều lý do tương tự.
RM

1
Là bột và đường là một chiếc bánh?
Bryan Oakley

Câu trả lời:


16

Xem mục Wikipedia cho Chương trình : (Tôi đã thêm phần in đậm )

Chương trình máy tính là tập hợp các hướng dẫn thực hiện một tác vụ cụ thể khi được thực hiện bởi máy tính. Một máy tính yêu cầu các chương trình hoạt động và thường thực hiện các hướng dẫn của chương trình trong một đơn vị xử lý trung tâm.

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 ở dạng mã nguồn có thể đọc được bằng con người , trình biên dịch có thể lấy được mã máy của máy, một dạng bao gồm các hướng dẫn mà máy tính có thể thực hiện trực tiếp

Vì vậy, "chương trình" là tập hợp các hướng dẫn mà máy tính thực thi và "mã nguồn" là phiên bản có thể đọc được của con người trong các hướng dẫn đó.


1
Cảm ơn về câu trả lời của bạn. Nếu tôi hiểu chính xác, mã nguồn là một chương trình vì nó xác định một bộ hướng dẫn thực hiện một nhiệm vụ khi chúng được máy tính thực thi. Nhưng ngay cả khi những hướng dẫn đó không phải là những lệnh được CPU thực thi vào cuối thì CPU sẽ thực thi các lệnh đó là bản dịch của các hướng dẫn được định nghĩa bằng ngôn ngữ cấp cao?
Othman

7

Tôi muốn biết liệu mã nguồn được viết bằng ngôn ngữ được biên dịch như C hoặc CPP có được coi là một chương trình không?

Vâng, đúng vậy.

NHƯNG

Mối nguy hiểm với dòng suy nghĩ này đang đến: "máy tính thực thi chương trình của tôi, tôi viết chương trình của mình bằng [ví dụ] C, ergo rằng mã nguồn là hướng dẫn cho máy tính".

Và đây là điều mà quá nhiều người trong chúng ta nghĩ trong quá nhiều thập kỷ trong thế kỷ 20. Những gì chúng ta đã học được trong thập kỷ qua hoặc lâu hơn là các lập trình viên khác là đối tượng chính của mã nguồn . Vì vậy, có, nguồn đó là chương trình, giống như cách bạn nhận được một chương trình tại nhà hát, nói cho những người khác biết những gì đang xảy ra. Cái hay của mã nguồn không chỉ là chương trình, mà còn là một bộ hướng dẫn cho máy tính nữa ...


1

Cho dù đó là hay không, phụ thuộc vào bối cảnh. Hãy suy nghĩ về nó theo cách này. Tôi quên tên chính thức của khái niệm này là gì, nhưng có một lý thuyết về ngôn ngữ nói rằng các từ có nghĩa mô tả không phải là một cái gì đó, nhưng nó không phải là gì . Một quả táo đỏ không phải là màu đỏ bởi vì nó, tốt, đỏ, nhưng bởi vì nó không phải là màu xanh, không phải màu xanh lá cây, v.v.

Vì vậy, khi chúng tôi nghĩ về khái niệm đó, chúng tôi có thể so sánh mã nguồn của chúng tôi với bản thiết kế của một ngôi nhà. Nếu bạn đang xem bản thiết kế trong một đống các bản thiết kế khác và hỏi "đây có phải là một ngôi nhà" không, và các bản thiết kế khác dành cho các tòa nhà thương mại, cây cầu, v.v., câu trả lời sẽ là có. Bởi vì bản thiết kế không đại diện cho tất cả những thứ khác, và khía cạnh ngôi nhà là những gì phân biệt nó với các bản thiết kế khác.

Tuy nhiên, rõ ràng một bản thiết kế của một ngôi nhà không giống như một ngôi nhà thực sự làm bằng gỗ và vách thạch cao mà bạn có thể đứng. Có những bối cảnh mà sự khác biệt giữa bản thiết kế và ngôi nhà thực sự có ý nghĩa. Có một sự khác biệt giữa kế hoạch và khả năng giao hàng.

Giống như mã nguồn của một chương trình trong ngôn ngữ được biên dịch giống như bản kế hoạch chi tiết, nếu bạn so sánh nó với các thư viện, mô-đun hạt nhân, v.v., thì mã nguồn và chương trình về mặt khái niệm là một và giống nhau. Nhưng nếu bạn đang xem cách phần mềm được biên dịch, thiết kế và triển khai, cả hai không giống nhau. Một lần nữa, có một sự khác biệt giữa kế hoạch và khả năng giao hàng.

tl; dr: Đôi khi những gì là một cái gì đó và những gì nó đại diện được coi là cùng một thứ, nhưng những lần khác thì không.


0

Mã nguồn là một thuật ngữ chung cho các dòng mã gốc (được tác giả bởi con người). Các loại mã khác không phải là nguồn có thể được tạo bởi bản dịch hoặc bởi một chương trình khác.

Sở hữu trí tuệ thậm chí còn rộng hơn, và có thể bao gồm cả mã nguồn và mã hoặc dữ liệu khác.

Một chương trình được phân biệt với mã khác (nguồn hoặc khác) về tính đầy đủ của nó. Một chương trình là mã đủ đầy đủ để có thể chạy (hoặc dự định chạy). Không phải tất cả mã (nguồn hoặc cách khác) thể hiện đủ tính đầy đủ để chạy. Các thư viện chẳng hạn, được kết hợp với và được sử dụng bởi các mã khác, và do đó thường sẽ không được coi là một chương trình vì chúng không thể (không có nghĩa là) được chạy.

Tính đầy đủ này đôi khi có nghĩa là có một main, được sử dụng bởi một hệ điều hành làm điểm vào cho chương trình

Nói chung, khi một chương trình đang chạy, đó được gọi là một quá trình.


1
Xin đừng đề cập đến "sở hữu trí tuệ" vì đó là một thuật ngữ có chủ ý nhằm gây nhầm lẫn cho mọi người.
whatsisname

0

Các mã nguồnưa thích hình thức của phần mềm trên mà con người phát triển phần mềm đang làm việc . Cái nhìn sâu sắc là phát triển phần mềm là một quá trình xã hội, vì vậy mã nguồn là một khái niệm xã hội . Bạn viết mã nguồn chủ yếu cho con người (các nhà phát triển đồng nghiệp của bạn, hoặc thậm chí chính bạn làm việc trong một vài tháng trên cùng một chương trình), không phải cho máy tính. Đối với một chương trình được mã hóa bằng C, nó thường (nhưng không phải luôn luôn) .ctệp C và .htệp tiêu đề, nhưng Makefile cũng là mã nguồn. Nhưng đôi khi, các kỹ thuật siêu lập trình được sử dụng: một số chương trình đang tạo mã C, và sau đó là đầu vàođối với trình tạo đó được coi là mã nguồn (ngay cả khi đầu ra của trình tạo đó là mã C). Hai ví dụ: bạn có thể sử dụng một số trình tạo trình phân tích cú pháp (như GNU bison ) để phân tích các vấn đề, sau đó .ytệp đầu vào của trình tạo đó là mã nguồn. Hoặc bạn có thể viết một tập lệnh awk hoặc gawk nhỏ để trích xuất từ ​​một số cơ sở dữ liệu sqlite một số dữ liệu sẽ được chuyển thành ví dụ như một enum khai báo lớn trong một số tiêu đề được tạo; sau đó cơ sở dữ liệu sẽ chứa mã nguồn!

Một chương trình máy tính ngược lại có liên quan đến máy tính chạy nó. Nó thường thu được bằng cách biên dịch một số mã nguồn (được viết bằng một số ngôn ngữ lập trình và đây là các thông số kỹ thuật được viết bằng tiếng Anh trong các tài liệu kỹ thuật - xem bản nháp n1570 cho C11 -, không phải là công cụ phần mềm!) Thành tệp thực thi nhị phân .

Đọc thêm về phần mềm miễn phí . Đi sâu vào mã nguồn của các dự án phần mềm miễn phí hiện có (xem github hoặc sourceforge để tìm một số).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.