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
[edytuj | edytuj kod]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
[edytuj | edytuj kod]Programowanie hybrydowe może być realizowane poprzez[1]:
- kodowanie określonych wyodrębnionych części – bloków (np. modułów, bibliotek, podprogramów, pakietów itp.) w różnych językach konsolidacji poszczególnych części w jeden program,
- pisanie jednego wspólnego kodu źródłowego (tekstu programu) w różnych językach programowania.
Ten drugi przypadek najczęściej dotyczy:
- połączenia jednego z języków wysokiego poziomu z kodem:
- asemblera
- maszynowym
- połączenia kilku języków skryptowych (np. JavaScript, PHP itp.).
Różne przypadki szczególne
[edytuj | edytuj kod]Turbo Pascal 7.0
[edytuj | edytuj kod]W Turbo Pascalu[2] istnieje możliwość programowania[3]:
- Pascal-asembler
- Pascal-język maszynowy.
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;
- podprogramy zewnętrzne (wymagana deklaracja – prototyp z atrybutem
external
)
{$L nazwa_pliku_obj} procedure | function nagłówek; external;
Turbo C
[edytuj | edytuj kod]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 programowania | Turbo C | Turbo Pascal |
---|---|---|
modyfikator w Turbo C | cdecl | pascal |
odkładanie argumentów na stos | od prawej do lewej | od lewej do prawej |
zdejmowanie argumentów ze stosu | funkcja wywołująca | funkcja wywoływana |
nazwa funkcji przekazywana konsolidatorowi | poprzedzona znakiem pokreślenia "_" | nie poprzedzona znakiem pokreślenia |
nazwa funkcji | bez zmian | zmiana małych liter na wielkie |
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
[edytuj | edytuj kod]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ż
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ 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
- ↑ implementacji języka Pascal, firmy Borland, stworzonej w ramach serii Turbo
- ↑ 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
- ↑ a b Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
- ↑ Jan Bielecki, Język FORTH, Wydawnictwa Naukowo-Techniczne, Warszawa 1988, Seria: Mikrokomputery, ISBN 83-204-0930-6
- ↑ Jan Ruszczyc, Poznajemy FORTH, SOETO Warszawa 1987 r., Seria: Informatyka mikrokomputerowa