Programowanie hybrydowe

Programowanie hybrydowe, także: programowanie mieszane, programowanie wielojęzykowe – kodowanie (programowanie) określonego algorytmu w dwóch lub większej liczbie języków programowania.

Cel stosowania programowania hybrydowego

Praktyczne wykorzystanie programowania hybrydowego może wynikać z:

  • potrzeby optymalizacji części kodu, szczególnie w odniesieniu do wybranych, newralgicznych części algorytmu,
  • wyrażenia określonej części algorytmu przy pomocy języka (systemu programowania) najlepiej predysponowanego do rozwiązania określonego problemu,
  • możliwości wykorzystania istniejącego dla określonego zadania, już opracowanego kodu, w innym języku, niż zasadniczy program,
  • pisania programu przez grupę programistów specjalizujących się w różnych językach programowania,

Typy programowania hybrydowego

Programowanie hybrydowe może być realizowane poprzez[1]:

Ten drugi przypadek najczęściej dotyczy:

Różne przypadki szczególne

Turbo Pascal 7.0

W Turbo Pascalu[2] istnieje możliwość programowania[3]:

Oczywiście istnieje możliwość włączania skompilowanych podprogramów napisanych w innych językach, lecz wymaga to odpowiedniego przygotowania bloku w innym języku (zobacz dalej: Turbo C[4]). Składnia:

  • język maszynowy – inline
    • jako samodzielna instrukcja strukturalna w ciągu instrukcji Pascal-owych
 inline(kod_maszynowy_1/kod_maszynowy_2//kod_maszynowy_n);
    • jako podprogram
 procedure | function nagłówek; inline(kod_maszynowy_1/kod_maszynowy_2//kod_maszynowy_n);
  • asembler
    • jako samodzielna instrukcja strukturalna w ciągu instrukcji Pascal-owych
 asm
   kod-asemblera
 end;
    • jako podprogram
 procedure | function nagłówek; asembler;
   asm
     kod-asemblera
   end;
 {$L nazwa_pliku_obj}
 procedure | function nagłówek; external;

Turbo C

Składnia[4]:

  • asembler
 asm instr-asemblera-1;
 asm instr-asemblera-2;
 …
 asm instr-asemblera-n;
  • definiowanie funkcji do wykorzystania w Pascalu
 typ pascal nazwa(parametry);
   { body }

Powyższe zastosowanie odpowiedniego modyfikatora (“pascal”) powoduje zmianę sposobu kompilacji funkcji:

system programowaniaTurbo CTurbo Pascal
modyfikator w Turbo Ccdeclpascal
odkładanie argumentów na stosod prawej do lewejod lewej do prawej
zdejmowanie argumentów ze stosufunkcja wywołującafunkcja wywoływana
nazwa funkcji przekazywana konsolidatorowipoprzedzona znakiem pokreślenia "_"nie poprzedzona znakiem pokreślenia
nazwa funkcjibez zmianzmiana małych liter na wielkie

FORTH

Zwykle w konkretnej implementacji tego języka zdefiniowany jest podsłownik ASSEMBLER, zawierający definicję słów stanowiących odpowiedniki mnemoników rozkazów i rejestrów danego procesora. Specyfika i rozszerzalność języka FORTH umożliwia definiowanie asemblerów wewnętrznych przez programistę, jak również dzięki specjalnym słowom podstawowym (predefiniowanym) wprowadzania wprost kodów maszynowych do kodu źródłowego języka FORTH. Można również tak zdefiniować rozkazy asemblera, aby dowolnie przełączać rozkazy asemblera i słowa języka wysokiego poziomu[5][6].

PHP, JavaScript i inne

Współcześnie szeroko stosowane jest programowanie hybrydowe w zastosowaniach internetowych, w których wykorzystuje się języki skryptowe takie jak JavaScript, PHP, Python i inne.

Zobacz też

Przypisy

  1. Michael Marcotty, Henry Ledgord, W kręgu języków programowania, tłumaczenie: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1342-7
  2. implementacji języka Pascal, firmy Borland, stworzonej w ramach serii Turbo
  3. Andrzej Marciniak, Borland Pascal 7.0, Wyd. Nakom, Poznań 1994 r., seria: Biblioteka Użytkownika Mikrokomputerów ISBN 83-85060-53-7, ISSN 0867-6011
  4. a b Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
  5. Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, ISBN 83-204-0930-6
  6. Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa