Język skryptowy
Języki skryptowe można podzielić na kilka różnych typów, przy czym typy te w znacznym stopniu się pokrywają.
Języki skryptoweEdit
Skryptowanie jest często przeciwstawiane programowaniu systemowemu, jak w dychotomii Ousterhouta lub „programowaniu w dużych i programowaniu w małych”. W tym ujęciu, skryptowanie to kod kleju, łączący komponenty oprogramowania, a język wyspecjalizowany do tego celu to język kleju. Rurociągi i skrypty powłoki są archetypowymi przykładami języków kleju, a Perl został początkowo opracowany, aby wypełnić tę samą rolę. Tworzenie stron internetowych może być uważane za użycie języków kleju, łączących bazę danych i serwer WWW. Ale jeśli znaczna część logiki jest napisana w skrypcie, jest on lepiej scharakteryzowany jako po prostu kolejny komponent oprogramowania, a nie „klej”.
Języki kleju są szczególnie przydatne do pisania i utrzymywania:
- komend dla powłoki poleceń;
- mniejszych programów niż te, które są lepiej zaimplementowane w skompilowanym języku;
- programów „opakowujących” pliki wykonywalne, jak plik wsadowy, który przenosi lub manipuluje plikami i robi inne rzeczy z systemem operacyjnym przed lub po uruchomieniu aplikacji, jak edytor tekstu, arkusz kalkulacyjny, baza danych, asembler, kompilator, itp.;
- skrypty, które mogą się zmieniać;
- szybki rozwój aplikacji rozwiązania ostatecznie zaimplementowanego w innym, zwykle skompilowanym, języku.
Przykłady języków kleju:
Języki makro wystawione na działanie systemu operacyjnego lub komponentów aplikacji mogą służyć jako języki kleju. Należą do nich Visual Basic for Applications, WordBasic, LotusScript, CorelScript, Hummingbird Basic, QuickScript, Rexx, SaxBasic i WinWrap Basic. Inne narzędzia, takie jak AWK, również mogą być uważane za języki klejone, podobnie jak każdy język implementowany przez silnik Windows Script Host (VBScript, JScript i VBA domyślnie w Windows oraz silniki innych firm, w tym implementacje Rexx, Perl, Tcl, Python, XSLT, Ruby, Modern Pascal, Delphi i C). Większość aplikacji może uzyskać dostęp i używać komponentów systemu operacyjnego poprzez modele obiektowe lub własne funkcje.
Inne urządzenia, takie jak programowalne kalkulatory, mogą również mieć języki kleju; systemy operacyjne urządzeń PDA, takich jak Windows CE, mogą mieć dostępne natywne lub zewnętrzne narzędzia makro, które sklejają aplikacje, oprócz implementacji wspólnych języków kleju – w tym Windows NT, DOS i niektóre powłoki Unix, Rexx, Modern Pascal, PHP i Perl. W zależności od wersji systemu operacyjnego dostępne są WSH i domyślne silniki skryptowe (VBScript i JScript).
Kalkulatory programowalne można programować w językach kleju na trzy sposoby. Na przykład Texas Instruments TI-92, fabrycznie może być zaprogramowany za pomocą języka skryptowego poleceń. Wprowadzenie języka skryptowego Lua do serii kalkulatorów TI-NSpire może być postrzegane jako następca tego języka. Podstawowe wbudowane języki programowania wysokiego poziomu większości kalkulatorów graficznych (najczęściej warianty Basic, czasami pochodne Lisp, a rzadziej pochodne C) w wielu przypadkach mogą łączyć funkcje kalkulatora – takie jak wykresy, listy, macierze itp. Dostępne są implementacje bardziej wszechstronnych wersji Basic’a, które mogą być bliższe wariantom wymienionym w tym artykule jako języki kleju. Wspomina się również o próbach implementacji Perl’a, Rexx’a lub różnych powłok systemu operacyjnego na kalkulatorach graficznych TI i HP. Komputerowe kompilatory C dla niektórych maszyn TI i HP używane wraz z narzędziami konwertującymi pomiędzy C i Perlem, Rexx, AWK i skryptami powłoki do Perla, Modern Pascal, VBScript do i z Perla umożliwiają napisanie programu w języku kleju w celu ewentualnej implementacji (jako skompilowany program) na kalkulatorze.
Języki edytorówEdit
Niektóre edytory tekstowe obsługują makra pisane albo przy użyciu języka makr wbudowanego w edytor, np, The SemWare Editor (TSE), vi improved (VIM), lub używając zewnętrznej implementacji, np. XEDIT, lub obu, np. KEDIT. Czasami edytory tekstu i makra edycyjne są używane pod przykrywką, aby zapewnić inne aplikacje, np. FILELIST i RDRLIST w CMS .
Języki kontroli zadań i powłokiEdit
Główna klasa języków skryptowych wyrosła z automatyzacji kontroli zadań, która odnosi się do uruchamiania i kontrolowania zachowania programów systemowych. (W tym sensie, można myśleć o powłokach jako potomkach IBM JCL, lub Job Control Language, który był używany dokładnie w tym celu). Wiele z interpreterów tych języków podwaja się jako interpretery wiersza poleceń, takie jak powłoka Uniksa lub MS-DOS COMMAND.COM
. Inne, takie jak AppleScript, oferują użycie poleceń podobnych do angielskich do budowania skryptów.
GUI scriptingEdit
Wraz z pojawieniem się graficznych interfejsów użytkownika, pojawił się wyspecjalizowany rodzaj języka skryptowego do sterowania komputerem. Języki te wchodzą w interakcję z tymi samymi graficznymi oknami, menu, przyciskami i tak dalej, co ludzki użytkownik. Robią to poprzez symulowanie działań użytkownika. Języki te są zazwyczaj używane do automatyzacji działań użytkownika. Takie języki są również nazywane „makrami”, gdy sterowanie odbywa się poprzez symulowane naciśnięcia klawiszy lub kliknięcia myszką, jak również stuknięcia lub naciśnięcia na ekranie aktywowanym dotykiem.
Języki te mogłyby w zasadzie być używane do sterowania dowolną aplikacją GUI; ale w praktyce ich użycie jest ograniczone, ponieważ ich użycie wymaga wsparcia ze strony aplikacji i systemu operacyjnego. Istnieje kilka wyjątków od tego ograniczenia. Niektóre języki skryptowe GUI są oparte na rozpoznawaniu obiektów graficznych na podstawie ich pikseli na ekranie. Te języki skryptowe GUI nie zależą od wsparcia ze strony systemu operacyjnego lub aplikacji.
Gdy GUI udostępnia odpowiednie interfejsy, jak w IBM Workplace Shell, do pisania skryptów GUI można użyć ogólnego języka skryptowego, np. OREXX.
Języki specyficzne dla aplikacjiEdit
Języki specyficzne dla aplikacji można podzielić na wiele różnych kategorii, tj.tj. samodzielne języki aplikacji (wykonywalne) lub wewnętrzne języki specyficzne dla aplikacji (postscript, xml, gscript jako niektóre z szeroko rozpowszechnionych skryptów, odpowiednio zaimplementowane przez Adobe, MS i Google), między innymi zawierają idiomatyczny język skryptowy dostosowany do potrzeb użytkownika aplikacji. Podobnie, wiele systemów gier komputerowych używa niestandardowego języka skryptowego do wyrażania zaprogramowanych działań postaci niegrających i środowiska gry. Języki tego typu są projektowane dla pojedynczego zastosowania; i choć mogą powierzchownie przypominać konkretny język ogólnego przeznaczenia (np. QuakeC, wzorowany na C), mają niestandardowe cechy, które je wyróżniają. Emacs Lisp, będąc w pełni ukształtowanym i zdolnym dialektem języka Lisp, zawiera wiele specjalnych cech, które czynią go najbardziej użytecznym do rozszerzenia funkcji edycyjnych Emacsa. Język skryptowy specyficzny dla aplikacji może być postrzegany jako język programowania specyficzny dla danej dziedziny, wyspecjalizowany do pojedynczej aplikacji.
Języki rozszerzalne/embedowalneEdit
Wiele języków zostało zaprojektowanych w celu zastąpienia języków skryptowych specyficznych dla aplikacji poprzez możliwość ich osadzenia w programach użytkowych. Programista aplikacji (pracujący w C lub innym języku systemowym) umieszcza „haki”, za pomocą których język skryptowy może kontrolować aplikację. Języki te mogą być technicznie równoważne językowi rozszerzeń specyficznemu dla aplikacji, ale gdy aplikacja osadza „wspólny” język, użytkownik zyskuje przewagę w postaci możliwości przenoszenia umiejętności z aplikacji do aplikacji. Bardziej ogólną alternatywą jest po prostu dostarczenie biblioteki (często biblioteki C), którą język ogólnego przeznaczenia może wykorzystać do sterowania aplikacją, bez modyfikowania języka dla konkretnej domeny.
JavaScript rozpoczął się jako i przede wszystkim nadal jest językiem do skryptów wewnątrz przeglądarek internetowych; jednak standaryzacja języka jako ECMAScript sprawiła, że stał się popularny jako język ogólnego przeznaczenia do osadzania. W szczególności, implementacja Mozilli SpiderMonkey jest osadzona w kilku środowiskach, takich jak Yahoo! Widget Engine. Inne aplikacje osadzające implementacje ECMAScript to produkty firmy Adobe, Adobe Flash (ActionScript) i Adobe Acrobat (do skryptowania plików PDF).
Tcl został stworzony jako język rozszerzeń, ale zaczął być częściej używany jako język ogólnego przeznaczenia w rolach podobnych do Pythona, Perla i Ruby. Z drugiej strony, Rexx został pierwotnie stworzony jako język kontroli zadań, ale jest powszechnie używany jako język rozszerzeń oraz język ogólnego przeznaczenia. Perl jest językiem ogólnego przeznaczenia, ale posiadał dialekt Oraperl (1990), składający się z binarnego Perla 4 z wkompilowanym Oracle Call Interface. Zostało to jednak zastąpione przez bibliotekę (Perl Module), DBD::Oracle.
Inne złożone i zorientowane na zadania aplikacje mogą zawierać i eksponować wbudowany język programowania, aby umożliwić swoim użytkownikom większą kontrolę i dać im więcej funkcjonalności, niż może być dostępne poprzez interfejs użytkownika, niezależnie od tego, jak wyrafinowany. Na przykład, Autodesk Maya 3D embed the Maya Embedded Language, lub Blender, który używa Pythona do wypełnienia tej roli.
Kilka innych typów aplikacji, które potrzebują szybszego dodawania funkcji lub cykli tweak-and-run (np. silniki gier) również używają wbudowanego języka. Pozwala im to na szybsze prototypowanie funkcji i swobodniejsze wprowadzanie zmian, bez konieczności posiadania przez użytkownika dokładnej wiedzy na temat działania aplikacji lub przebudowywania jej po każdym wprowadzeniu zmian (co może zająć znaczną ilość czasu). Języki skryptowe używane do tego celu obejmują zarówno bardziej powszechne i znane Lua i Python, jak i mniej znane, takie jak AngelScript i Squirrel.
Ch to kolejna kompatybilna z C opcja skryptowa dla przemysłu, umożliwiająca osadzanie w programach aplikacji w C/C++.
Wykonywanie skryptów w języku C/C++ jest bardzo proste.