Звідки походить слово "прагма"?


83

Тож я знаю, що таке прагма і для чого вона використовується, але яке значення має саме слово? Я багато разів використовував його в коді, але ніколи не знав, що це слово насправді означає чи означає.


13
Воно має коріння в грецькому терміні πραγμα, що є коренем «прагматичного». Це найкраще, що я можу вам сказати.
asveikau

6
+1 Я завжди дивувався цьому, але чомусь ніколи не думав запитувати тут.
Jay Riggs

23
@AaronMcSmooth Як це не в темі? Це пов'язано з програмуванням.
Фірозо

7
Гей, люди, прагми пов'язані з програмуванням. Справедливий нюх задаватися питанням, звідки походить цей термін, і запитати своїх однолітків у професійній розробці програмного забезпечення, чи не так?
TJ Crowder,

6
@AaronMcSmooth, прочитайте поширені запитання, це не відповідає темі. Також знання того, ким була Ада Лавлейс, робить вас кращим програмістом? немає? то чому вона згадується в кожній програмі з CS, яку я знаю.
Фірозо

Відповіді:


64

Згідно з документом, що належить уряду США (!), Що описує дизайн Ada: Обгрунтування дизайну мови програмування Ada® :

Прагма (від грецького слова, що означає дія) використовується для конкретного керування діями компілятора, але не впливає на семантику програми (загалом).

Мені подобається (останній застереження) там ...

Це перехресне посилання добре стосується он-лайн грецьких словників (наприклад, цитованих Мартіном Йорком ), де сказано, що прагма ( πράγμα , як прокоментував оригінальне запитання Асвейкау) означає :

  1. те, що було зроблено, вчинок, здійснений факт
  2. що робиться або робиться
    1. специфікація бізнес, комерційна операція
  3. питання, питання, справа
    1. специфікація у судово-медичному сенсі - юридична справа, справа, позов
  4. те, що є чи існує, річ

Здається, ключовим для розуміння є слово дія, а не інформація .


Чудова відповідь, дуже хороша довідка та короткий зміст її змісту. Дякую!
MGS,

18

У математиці та логіці прагма - це даність, факт, передумова аргументу, проблеми чи доказу, що випливає далі.


16

Витягнуто прямо з Вікіпедії (програмування):

В Аді директиви компілятора називаються прагмами (скорочення від "прагматична інформація").

Хоча це не явно для C, це все одно має відповісти на ваше запитання. Однак, як зазначив TJ, для цієї частини інформації не існує жодного дійсного джерела.


8
Майте на увазі, що ця стаття не посилається на жодні оригінальні джерела ... і пошук у Відомій пошуковій мережі для пошуку "+ pragma + pragmatic + ada" виявляє дуже-дуже короткий список явно неканонічних сайтів. Не означає, що це неправда.
TJ Crowder,

1
Ви абсолютно праві, джерело буде дуже вдячне. Тим не менше, я думаю, що краще залишити відповідь, якщо не доведено, що я не правий.
Фліббо,

7

З давньогрецької:

прагма: зроблена справа, факт

Як і у всіх вироках, хтось намагався бути занадто розумним для свого блага. На жаль, його оригінальне значення втрачається для нас інших (якщо у вас немає під рукою Google та словника з латиноамериканської / грецької на англійську).

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

Оригінал (саме про це йдеться на вищезазначеній сторінці, але у мене немає копії цієї книги):

Тейєр і Сміт. "Грецький лексикон для Прагми". "Грецький лексикон Нового Завіту".


3

Мова програмування Ada, цілком можливо, був першим компілятором, який використав прагму для задання директив препроцесора. Слово використовувалось як скорочена форма "прагматичної інформації"

Коли мова програмування С була розроблена, вона спочатку не мала директив pragma, але була швидко додана до специфікації для підтримки користувацьких функцій компілятора. (тобто. #pragma optimization_level для компілятора intel C ++)

З тих пір багато мов впроваджують прагму в тій чи іншій формі, включаючи C #, але вони часто обмежуються тим, що створюють попередження про час та підказки щодо оптимізації.

Однією з найпоширеніших і корисних прагм у нестандартних C та C ++ є # pragma, яка колись використовувалась для зазначення того, що файл повинен бути включений лише один раз.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.