Từ “pragma” đến từ đâu?


83

Vì vậy, tôi biết pragma là gì, và nó được sử dụng để làm gì, nhưng ý nghĩa của bản thân từ này là gì? Tôi đã sử dụng nó nhiều lần trong mã, nhưng tôi chưa bao giờ thực sự biết từ thực sự có nghĩa là gì hoặc viết tắt của từ này.


13
Nó có nguồn gốc trong thuật ngữ tiếng Hy Lạp là πραγμα, là gốc của từ "thực dụng". Đó là điều tốt nhất tôi có thể nói với bạn.
asveikau 24/09/10

6
+1 Tôi luôn tự hỏi điều này nhưng vì một số lý do chưa bao giờ nghĩ đến việc hỏi ở đây.
Jay Riggs

23
@AaronMcSmooth Chuyện này lạc đề thế nào? Nó liên quan đến lập trình.
Firoso

7
Này, mọi người, pragmas liên quan đến lập trình. Khá là băn khoăn không biết thuật ngữ này bắt nguồn từ đâu và hỏi các đồng nghiệp của bạn trong lĩnh vực phát triển phần mềm chuyên nghiệp, phải không?
TJ Crowder

6
@AaronMcSmooth, hãy đọc Câu hỏi thường gặp, điều này không đủ điều kiện là lạc đề. Ngoài ra, việc biết Ada Lovelace là ai có giúp bạn trở thành một lập trình viên giỏi hơn không? Không? vậy tại sao cô ấy lại được nhắc đến trong mọi giáo trình CS mà tôi biết.
Firoso

Câu trả lời:


64

Theo tài liệu (!) Thuộc sở hữu của Chính phủ Hoa Kỳ mô tả thiết kế của Ada: Cơ sở lý luận cho việc thiết kế ngôn ngữ lập trình Ada® :

Một pragma (từ tiếng Hy Lạp có nghĩa là hành động) được sử dụng để chỉ đạo các hành động của trình biên dịch theo những cách cụ thể, nhưng không ảnh hưởng đến ngữ nghĩa của chương trình (nói chung).

Tôi thích (báo trước) ở đó ...

Điều này tham khảo tốt với các từ điển tiếng Hy Lạp trực tuyến (ví dụ như được trích dẫn bởi Martin York ) nói rằng pragma ( πράγμα , như đã nhận xét về câu hỏi gốc của asveikau) có nghĩa là :

  1. điều đã được thực hiện, một việc làm, một sự thật đã hoàn thành
  2. những gì đã được thực hiện hoặc đang được hoàn thành
    1. thông số kỹ thuật. kinh doanh, một giao dịch thương mại
  3. một vấn đề, câu hỏi, sự việc
    1. thông số kỹ thuật. theo nghĩa pháp y, một vấn đề pháp luật, vụ án, vụ kiện
  4. cái đang hoặc tồn tại, một thứ

Có vẻ như chìa khóa để hiểu là từ hành động hơn là thông tin .


Câu trả lời tuyệt vời, một tài liệu tham khảo rất tốt và tóm tắt nội dung của nó. Cảm ơn!
MGSoto

18

Trong toán học và logic, một pragma là một thực tế, một điều kiện tiên quyết cho lập luận, vấn đề hoặc bằng chứng sau đó.


16

Lấy ngay từ Wikipedia (lập trình):

Trong Ada, các chỉ thị của trình biên dịch được gọi là pragmas (viết tắt của "pragmatic information").

Mặc dù nó không rõ ràng cho C, nhưng dù sao thì điều này cũng sẽ trả lời câu hỏi của bạn. Tuy nhiên, như TJ đã chỉ ra, không có nguồn hợp lệ nào được đưa ra cho phần thông tin này.


8
Xin lưu ý, bài viết đó không trích dẫn bất kỳ nguồn gốc nào ... và việc tìm kiếm trên Công cụ Tìm kiếm Web Nổi tiếng cho "+ pragma + pragmatic + ada" sẽ tạo ra một danh sách rất ngắn các trang web rõ ràng không hợp quy. Không có nghĩa là nó không đúng.
TJ Crowder

1
Bạn hoàn toàn đúng, một nguồn sẽ được đánh giá cao nhất. Tuy nhiên, tôi đoán tốt nhất nên để lại câu trả lời trừ khi tôi được chứng minh là sai.
Phlibbo 24/09/10

7

Từ tiếng Hy Lạp cổ đại:

pragma: một việc đã làm, một sự thật

Như với tất cả những thứ lập dị, ai đó đã cố tỏ ra quá thông minh vì lợi ích của chính họ. Thật không may, ý nghĩa ban đầu của nó bị mất đối với phần còn lại của chúng ta (trừ khi bạn có Google và từ điển tiếng Latinh / tiếng Hy Lạp sang tiếng Anh).

http://www.studylight.org/lex/grk/view.cgi?number=4229
http://www.bibletools.org/index.cfm/fosystemction/Lexicon.show/ID/G4229/pragma.htm

Bản gốc (đó là những gì trang trên nói, nhưng tôi không có bản sao của cuốn sách đó):

Thayer và Smith. "Mục từ tiếng Hy Lạp cho Pragma". "Sách tiếng Hy Lạp Tân Ước".


3

Ngôn ngữ lập trình Ada có thể là trình biên dịch đầu tiên sử dụng pragma để chỉ định các chỉ thị tiền xử lý. Từ này được sử dụng như một dạng rút gọn của "thông tin thực dụng"

Khi ngôn ngữ lập trình C được thiết kế, ban đầu nó không có chỉ thị pragma, nhưng nhanh chóng được thêm vào đặc tả để hỗ trợ các tính năng trình biên dịch tùy chỉnh. (tức là. #pragma Optimi_level cho trình biên dịch intel C ++)

Kể từ đó, nhiều ngôn ngữ đã triển khai pragma ở một số dạng, bao gồm cả C #, nhưng chúng thường bị giới hạn trong việc xây dựng các cảnh báo thời gian và gợi ý tối ưu hóa.

Một trong những pragma phổ biến và hữu ích nhất, trong C và C ++ không chuẩn, là #pragma từng được sử dụng để chỉ định rằng một tệp chỉ nên được đưa vào một lần.

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.