Skąd się wzięło słowo „pragma”?

83

Wiem więc, czym jest pragma i do czego służy, ale jakie jest znaczenie tego słowa? Używałem go wiele razy w kodzie, ale nigdy tak naprawdę nie wiedziałem, co to słowo faktycznie oznacza lub oznacza.

MGSoto
źródło
13
Ma korzenie w greckim terminie πραγμα, które jest źródłem wyrażenia „pragmatyczny”. To najlepsze, co mogę ci powiedzieć.
asveikau
6
+1 Zawsze się nad tym zastanawiałem, ale z jakiegoś powodu nigdy nie pomyślałem, żeby o to zapytać.
Jay Riggs
23
@AaronMcSmooth Jak to jest poza tematem? To jest związane z programowaniem.
Firoso
7
Hej, ludzie, pragmy są związane z programowaniem. Nie ma sprawy, jeśli zastanawiasz się, skąd pochodzi ten termin i zapytasz swoich współpracowników zajmujących się profesjonalnym tworzeniem oprogramowania, prawda?
TJ Crowder
6
@AaronMcSmooth, przeczytaj FAQ, to nie kwalifikuje się jako poza tematem. Czy wiedząc, kim była Ada Lovelace, stałeś się lepszym programistą? Nie? to dlaczego jest wymieniana w każdym programie nauczania CS, którego znam.
Firoso

Odpowiedzi:

64

Zgodnie z dokumentem będącym własnością rządu Stanów Zjednoczonych (!) Opisującym projekt Ada: Rationale for the Design of the Ada® Programming Language :

Pragma (z greckiego słowa oznaczającego działanie) służy do kierowania działaniami kompilatora w określony sposób, ale nie ma wpływu na semantykę programu (ogólnie).

Podoba mi się (ostatnie zastrzeżenie) tam ...

To dobrze nawiązuje do słowników greckich on-line (np. Cytowanych przez Martina Yorka ), które mówią, że pragma ( πράγμα , jak skomentował to pytanie asveikau) oznacza :

  1. to, co zostało zrobione, czyn, fakt dokonany
  2. co zostało zrobione lub zostało osiągnięte
    1. spec. biznes, transakcja handlowa
  3. sprawa, pytanie, romans
    1. spec. w sensie kryminalistycznym, sprawa prawna, sprawa, pozew
  4. to, co jest lub istnieje, rzecz

Wydaje się, że kluczem do zrozumienia jest słowo działanie, a nie informacja .

Martin Clayton
źródło
Świetna odpowiedź, bardzo dobra referencja i podsumowanie treści. Dzięki!
MGSoto,
18

W matematyce i logice pragma jest czymś danym, faktem, warunkiem wstępnym argumentacji, problemu lub dowodu, który następuje.

CuriousRabbit
źródło
16

Pobrane bezpośrednio z Wikipedii (programowanie):

W Adzie dyrektywy kompilatora nazywane są pragmami (skrót od „informacji pragmatycznej”).

Chociaż nie jest to wyraźnie dla C, to i tak powinno odpowiedzieć na twoje pytanie. Jednak, jak wskazał TJ, nie ma żadnego ważnego źródła dla tej informacji.

Phlibbo
źródło
8
Pamiętaj, że artykuł nie cytuje żadnych oryginalnych źródeł ... a wyszukanie w słynnej wyszukiwarce internetowej hasła „+ pragma + pragmatic + ada” daje bardzo, bardzo krótką listę wyraźnie niekanonicznych witryn. To nie znaczy, że to nieprawda.
TJ Crowder
1
Masz całkowitą rację, źródło byłoby bardzo cenne. Mimo to wydaje mi się, że najlepiej zostawić odpowiedź, chyba że się mylę.
Phlibbo
7

Od starożytnej Grecji:

pragma: rzecz zrobiona, fakt

Jak w przypadku wszystkich geeków, ktoś próbował być zbyt sprytny dla własnego dobra. Niestety jego pierwotne znaczenie zostaje utracone dla reszty z nas (chyba że masz Google i słownik łaciński / grecko-angielski).

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

Oryginał (tak mówi powyższa strona, ale nie mam kopii tej książki):

Thayer i Smith. „Wpis w Leksykonie greckim dla Pragmy”. „Grecki leksykon Nowego Testamentu”.

Martin York
źródło
3

Język programowania Ada był prawdopodobnie pierwszym kompilatorem, który użył pragmy do określenia dyrektyw preprocesora. Słowo to zostało użyte jako skrócona forma „informacji pragmatycznej”

Kiedy projektowano język C, nie miał on początkowo dyrektyw pragma, ale został szybko dodany do specyfikacji w celu obsługi niestandardowych funkcji kompilatora. (tj. #pragma Optimization_level dla kompilatora Intel C ++)

Od tego czasu wiele języków zaimplementowało pragmę w takiej czy innej formie, w tym C #, ale często są one ograniczone do tworzenia ostrzeżeń dotyczących czasu i wskazówek dotyczących optymalizacji.

Jedną z najbardziej powszechnych i przydatnych pragm, w niestandardowych C i C ++, jest #pragma kiedyś używana do określenia, że ​​plik powinien być uwzględniany tylko raz.

Firoso
źródło