PL/M (akronim od ang. Programming Language for Microprocessors lub Programming Language for Microcomputers) – kompilowany, strukturalny język programowania wysokiego poziomu stworzony przez Gary'ego Kildalla w 1973 roku[1][2]. Jest klasyfikowany zwykle jako asemblerowy język wysokiego poziomu ze względu na wysoki współczynnik przełożenia na język asemblera.

Został stworzony jako język mający ułatwić tworzenie oprogramowania systemowego[3]. Stosowany był do tworzenia m.in. systemów operacyjnych (CP/M[1]) i kompilatorów.

Ważną implementacją była wersja opracowana przez firmę Intel dla procesorów serii 8080/8085, stosowana m.in. w systemie ISIS-II oraz PL/M-86 opracowana głównie dla potrzeb programowania procesów w systemach czasu rzeczywistego iRMX.

Składnia języka jest wzorowana na języku PL/I.

Historia

edytuj

Pierwsza wersja języka powstała mikroprocesora Intel 8008 w 1973 roku. Jej autorem był Gary Kildall pracujący wówczas (dodatkowo) w Microcomputer Application Associates (MAA)[a] a dla Intela jako konsultant. Kompilator PL/M został zaimplementowany w języku FORTRAN IV na komputerze PDP-10[1][2][3].

W kolejnych latach powstały wersje kompilatorów języka dla innych procesorów (w szczególności dla Intel 8080), które wykorzystywane były w implementacji systemowych programów narzędziowych, kompilatorów oraz systemów operacyjnych.

Najbardziej znanym systemem, który powstał w PL/M, był CP/M[b], pierwszy szeroko wykorzystywany system operacyjny dla mikrokomputerów, którego pierwsza wersja powstała w 1974 roku[1][2].

Przykład

edytuj
Zobacz też: Hello world.
/* HELLO WORLD dla systemów operacyjnych ISIS-II i CP/M */
HELLO: DO;
  DECLARE REP ADDRESS;
  WRITE: PROCEDURE (A,B,C,D) EXTERNAL;
    DECLARE (A,B,C,D) ADDRESS; END;
  CALL WRITE(0,.('Hello, world!'),13,.REP);
END HELLO;

Cechy

edytuj

Język PL/M jest językiem umożliwiającym programowanie modularne, przy czym ważną cechą była możliwość tworzenia przemieszczalnych modułów i możliwość programowania hybrydowego (PL/M + asembler).

Język PL/M (jego implementacja PL/M-80) jest tak zaprojektowany, że istnieje bezpośrednie odwzorowanie konstrukcji tego języka na język maszynowy procesora Intel 8080/8085. Kompilator ten posiada opcję umożliwiającą translację programu źródłowego w PL/M na program w asemblerze.

Program w języku PL/M składa się z niezależnie kompilowanych modułów. Moduł źródłowy (najmniejsza kompilowalna jednostka) jest instrukcją strukturalną o postaci:

nazwa: DO;
     deklaracje i definicje
     [instrukcje]
  END nazwa;

Jeżeli moduł zawiera co najmniej jedną instrukcję, to stanowi moduł główny i od niego rozpoczyna się wykonywanie programu; przy kilku takich modułach wyróżnienie modułu głównego następuje na etapie konsolidacji. Pozostałe moduły mogą zawierać jedynie deklaracje i definicje.

W języku PL/M zmienne posiadają określane w deklaracjach atrybuty:

  • zmienne proste:
    • BYTE – bajtowe,
    • ADDRESS – dwubajtowe, zmienne te mogą oprócz liczb całkowitych przechowywać dane wskaźnikowe (należy raczej powiedzieć, że dane całkowite przechowywane w tych zmiennych mogą być traktowane jako wskaźniki),
    • BASE – bazowe;
  • tablicowe – tablice mogą być w PL/M jednowymiarowe o ustalonym wymiarze indeksowane od zera,
  • strukturowe,
  • literały – LITERALLY 'tekst'.

Późniejsze wersje języka, jak PL/M 386 dla systemu iRMX, wprowadziły nowe typy, znane z innych języków programowania, takie jak całkowity, rzeczywisty, znakowy, umożliwiające programowanie na wyższym poziomie abstrakcji, choć oczywiście nadal jest możliwe programowanie bliskie sprzętowi, w tym korzystanie z ww. danych bajtowych i słowowych.

Pozostałe atrybuty określają inne cechy zmiennych:

  • AT(adres) – określa położenie zmiennej w pamięci,
  • INITIAL(wartość) – nadanie początkowej wartości zmiennej,
  • PUBLIC – udostępnienie zmiennej dla innych modułów,
  • EXTERNAL – zmienna z innego modułu.

W deklaracjach (podobnie jak w PL/I) można grupować identyfikatory:

DECLARE (A,B) (3) ADDRESS;

Deklaracja i definicja procedury ma postać:

 nazwa: PROCEDURE(parametry) [typ_wartości] [atrybuty];
              DECLARE deklaracje parametrów,
                      deklaracje zmiennych;
              instrukcje
        END nazwa;

W przypadku procedur zewnętrznych stosować należy deklarację o postaci jak wyżej z pominięciem deklaracji zmiennych i instrukcji, ale z dodatkowym atrybutem EXTERNAL. Inne atrybuty to PUBLIC dla procedur udostępnianych dla innych modułów i REENTRANT dla procedur rekurencyjnych.

Główne instrukcje języka PL/M:

Język posiada także wbudowane procedury i predefiniowane zmienne.

Przykład:

PR1: DO;
  DECLARE LICZ BYTE,
          TAB(5) BYTE,
          SUM ADRESS INITAL(0);
  READTAB: PROCEDURE;
    DECLARE I BYTE;
    DO I=1 TO 5 BY 1;
      TAB(I)=INPUT(1);
    END;
  END READTAB;
  CALL READTAB;
  LICZ=1;
  DO WHILE LICZ<6;
    SUM=SUM+TAB(LICZ);
    LICZ=LICZ+1;
  END;
  OUTPUT(1)=SUM;
END PR1;

Uwagi

edytuj
  1. poprzedniku Digital Research
  2. którego autorem był również Gary Kildall

Przypisy

edytuj
  1. a b c d Liam Proven: 50 years ago, CP/M started the microcomputer revolution. The Register, 2024-09-02. [dostęp 2026-01-11]. (ang.).
  2. a b c Gary Kildall. CP/M: A Family of 8- and 16-Bit Operating Systems. „BYTE”, s. 216-232, czerwiec 1981. 
  3. a b MCS-8 Micropcomputer Set - 8008 8-bit parallel Central Processor Unit - User's Manual. Intel, 1973, s. okładka 2. [dostęp 2026-01-11]. (ang.).

Bibliografia

edytuj

Zobacz też

edytuj

📚 Artikel Terkait di Wikipedia

Charm++

The Charm Parallel Programming Language and System: Part I -- Description of Language Features, pdf file The Charm Parallel Programming Language and System:

Lista skrótów i skrótowców używanych w informatyce

on-premises OOBE – Out of Box Experience OOP – Object Oriented Programming OQL – Object Query Language ORB – Object Request Broker ORM – Object-Relational Mapping

Lista języków programowania

MCPL Merkury Modula NASM Nemerle NetLogo occam OpenGL Shading Language Oxygene Parallel Thread Execution Pascal PL/I Python Q# QCL .QL R Rapira RPG RPL

Informatyka

Teoria języków programowania. Teoria języków programowania (ang. Programming language theory, PLT) to dziedzina informatyki zajmująca się projektowaniem

Fortran

 Decyk Viktor K.V.K., Boleslaw K.B.K. Szymanski Boleslaw K.B.K., On Parallel Object Oriented Programming in Fortran 90, „ACM SIGAPP Applied Computing Review”, 4 (1)