Откуда взялось слово «прагма»?


83

Итак, я знаю, что такое прагма и для чего она используется, но каково значение самого слова? Я много раз использовал его в коде, но я никогда не знал, что это слово на самом деле означает или означает.


13
Оно происходит от греческого слова πραγμα, которое является корнем от слова «прагматический». Это лучшее, что я могу вам сказать.
asveikau

6
+1 Мне всегда это было интересно, но почему-то никогда не думал здесь спросить.
Джей Риггс,

23
@AaronMcSmooth Как это не по теме? Это связано с программированием.
Firoso,

7
Привет, ребята, прагмы связаны с программированием. Вполне логично задаться вопросом, откуда этот термин, и спросить своих коллег по профессиональной разработке программного обеспечения, не так ли?
TJ Crowder

6
@AaronMcSmooth, прочтите FAQ, это не считается не по теме. Также делает ли вас знание того, кем была Ада Лавлейс, лучшего программиста? нет? тогда почему она упоминается в каждой известной мне учебной программе по CS.
Firoso,

Ответы:


64

Согласно документу, принадлежащему правительству США (!), Описывающему дизайн Ada: Rationale for the Design of the Ada® Programming Language :

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

Мне нравится (последнее предостережение) там ...

Это перекрестные ссылки на греческие онлайн-словари (например, процитированные Мартином Йорком ), в которых говорится, что прагма ( πράγμα , как прокомментировал исходный вопрос asveikau) означает :

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

Кажется, ключом к пониманию является слово действие, а не информация .


Отличный ответ, очень хорошая ссылка и краткое изложение ее содержания. Благодаря!
MGSoto,

18

В математике и логике прагма - это данность, факт, предпосылка для аргументации, проблемы или доказательства, которые следуют.


16

Вытащил прямо из Википедии (программирование):

В Ada директивы компилятора называются прагмами (сокращение от «прагматическая информация»).

Хотя это явно не для 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

Оригинал (так написано на странице выше, но у меня нет копии этой книги):

Тайер и Смит. «Запись в греческом лексиконе для Pragma». «Греческий лексикон Нового Завета».


3

Язык программирования Ada, возможно, был первым компилятором, который использовал прагму для определения директив препроцессора. Слово использовалось как сокращенная форма «прагматической информации».

Когда был разработан язык программирования C, в нем изначально не было директив pragma, но он был быстро добавлен в спецификацию для поддержки пользовательских функций компилятора. (например, #pragma optimisation_level для компилятора Intel C ++)

С тех пор многие языки реализовали прагму в той или иной форме, включая C #, но они часто ограничиваются предупреждениями о времени сборки и подсказками по оптимизации.

Одна из наиболее распространенных и полезных прагм в нестандартных C и C ++ - это #pragma once, используемая для указания того, что файл должен быть включен только один раз.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.