Co sprawia, że język jest językiem skryptowym? Słyszałem, jak niektórzy mówią „kiedy jest interpretowany zamiast kompilacji”. To uczyniłoby PHP (na przykład) językiem skryptowym. Czy to jedyne kryterium? Czy są też inne kryteria?
Co sprawia, że język jest językiem skryptowym? Słyszałem, jak niektórzy mówią „kiedy jest interpretowany zamiast kompilacji”. To uczyniłoby PHP (na przykład) językiem skryptowym. Czy to jedyne kryterium? Czy są też inne kryteria?
Odpowiedzi:
Język skryptowy to język, który „skryptuje” inne rzeczy do zrobienia. Głównym celem nie jest przede wszystkim tworzenie własnych aplikacji, a raczej sprawienie, aby istniejąca aplikacja działała tak, jak chcesz, np. JavaScript dla przeglądarek, VBA dla MS Office.
Prosty. Kiedy go używam, jest to nowoczesny język dynamiczny, kiedy go używasz, jest to tylko język skryptowy!
Tradycyjnie, mówiąc o różnicy między pisaniem skryptów a programowaniem, interpretuje się skrypty i kompiluje programy. Język może być wykonywany na różne sposoby - interpretowany lub kompilowany (do kodu bajtowego lub kodu maszynowego). To nie tworzy takiego czy innego języka .
W niektórych oczach sposób, w jaki używasz języka, sprawia, że jest to język skryptowy (na przykład programiści gier, którzy rozwijają się głównie w C ++, będą skryptować obiekty w Lua). I znowu, linie są zamazane - jeden język może być używany do programowania przez jedną osobę, a ten sam język może być używany do programowania przez drugą.
To pochodzi z artykułu Wikipedii o językach skryptowych:
Język skryptowy, język skryptowy lub język rozszerzeń to język programowania, który umożliwia sterowanie jedną lub wieloma aplikacjami. „Skrypty” różnią się od podstawowego kodu aplikacji, ponieważ są zwykle napisane w innym języku i często są tworzone lub przynajmniej modyfikowane przez użytkownika końcowego. Skrypty są często interpretowane z kodu źródłowego lub kodu bajtowego, podczas gdy aplikacje, którymi sterują, są tradycyjnie kompilowane do natywnego kodu maszynowego. Języki skryptowe są prawie zawsze osadzone w aplikacjach, którymi sterują.
Zauważysz użycie „zwykle”, „często”, „tradycyjnie” i „prawie zawsze” - wszystkie one mówią, że nie ma zestawu odrębnych atrybutów, które czynią określony język „językiem skryptowym”.
„Scenariusz jest tym, co dajesz aktorom. Program jest tym, co dajesz publiczności”. - Larry Wall
Naprawdę nie sądzę, żeby była już duża różnica. Tak zwane języki „skryptowe” są często kompilowane - tylko bardzo szybko iw czasie wykonywania. Niektóre języki „programowania” są również dalej kompilowane w czasie wykonywania (pomyśl o JIT), a pierwszym etapem „kompilacji” jest sprawdzanie składni i rozpoznawanie zasobów.
Nie rozłączaj się, to naprawdę nie jest ważne.
Moją definicją byłby język, który jest zwykle rozpowszechniany jako źródło, a nie jako plik binarny.
Jest wiele możliwych odpowiedzi na to pytanie.
Po pierwsze: tak naprawdę nie jest to kwestia różnicy między językiem skryptowym a językiem programowania, ponieważ język skryptowy jest językiem programowania. To raczej kwestia tego, jakie cechy sprawiają, że dany język programowania jest językiem skryptowym, podczas gdy inny język programowania nie jest językiem skryptowym.
Po drugie: naprawdę trudno powiedzieć, czym jest język XYZ, czy to XYZ to „skrypty”, „programowanie funkcjonalne”, „programowanie obiektowe”, czy też co masz. Definicja tego, czym jest „programowanie funkcjonalne”, jest dość jasna, ale nikt nie wie, czym jest „język programowania funkcyjnego”.
Programowanie funkcjonalne lub programowanie obiektowe to style programowania ; możesz pisać w stylu funkcjonalnym lub zorientowanym obiektowo w prawie każdym języku. Na przykład, Linux File Wirtualny przełącznik systemu i sterownika Linux modelu są silnie zorientowane obiektowo mimo napisany w C, natomiast dużo Java lub C # Kod można zobaczyć w internecie jest bardzo proceduralny i nie obiektowego w ogóle . OTOH, widziałem bardzo funkcjonalny kod Java.
Tak więc, jeśli programowanie funkcjonalne i programowanie obiektowe to tylko style, które można wykonać w dowolnym języku, to jak zdefiniować „język programowania zorientowanego obiektowo”? Można powiedzieć, że język programowania zorientowanego obiektowo to język, który umożliwia programowanie zorientowane obiektowo. Ale to nie jest wielka definicja: wszystkie języki pozwalają na programowanie obiektowe, a zatem wszystkie języki są zorientowane obiektowo? Mówisz więc, że język jest zorientowany obiektowo, jeśli zmusza cię do programowania w stylu obiektowym. Ale to też nie jest zbyt duża definicja: wszystkie języki pozwalają na programowanie funkcjonalne, a zatem żaden język nie jest zorientowany obiektowo?
Tak więc dla mnie znalazłem następującą definicję:
Język jest językiem skryptowym (język zorientowany obiektowo / język funkcjonalny), jeśli jest jednym i drugim
- ułatwia pisanie skryptów (programowanie obiektowe / programowanie funkcjonalne), tj. nie tylko na to pozwala , ale czyni to prostym i naturalnym oraz zawiera funkcje, które w tym pomagają , ORAZ
- zachęca do pisania skryptów (programowanie obiektowe / programowanie funkcyjne) i prowadzi do niego.
Tak więc po pięciu akapitach doszedłem do: „język skryptowy to język skryptowy”. Co za świetna definicja. NIE.
Oczywiście musimy teraz przyjrzeć się definicji „skryptów”.
Tu pojawia się trzeci problem: podczas gdy termin „programowanie funkcjonalne” jest dobrze zdefiniowany i tylko termin „funkcjonalny język programowania” jest problematyczny, niestety w przypadku skryptów, zarówno termin „skrypty”, jak i termin „język skryptowy” są źle zdefiniowane.
Cóż, po pierwsze skrypty to programowanie. To tylko specjalny rodzaj programowania. IOW: każdy skrypt jest programem, ale nie każdy program jest skryptem; zbiór wszystkich skryptów jest odpowiednim podzbiorem zbioru wszystkich programów.
Moim zdaniem to, co wyróżnia skrypty i odróżnia je od innych rodzajów programowania, to…
Skrypty w dużej mierze manipulują obiektami
- nie zostały stworzone przez skrypt,
- mają żywotność niezależną od scenariusza i
- żyć poza domeną skryptu.
Ponadto używane typy danych i algorytmy nie są na ogół definiowane przez skrypt, ale przez środowisko zewnętrzne.
Pomyśl o skrypcie powłoki: skrypty powłoki zwykle manipulują plikami, katalogami i procesami. Większość plików, katalogów i procesów w systemie prawdopodobnie nie została utworzona przez aktualnie działający skrypt. I nie znikają po zamknięciu scenariusza: ich żywotność jest całkowicie niezależna od scenariusza. I tak naprawdę nie są częścią scenariusza, są częścią systemu. Nie rozpocząłeś swojego skryptu od pisania File
i Directory
klas, te typy danych nie są twoim zmartwieniem: po prostu zakładasz, że istnieją i nawet nie wiesz (ani nie musisz wiedzieć), jak one działają. Nie implementujesz też własnych algorytmów, np. Do przemierzania katalogów, których po prostu używasz find
zamiast implementować własne przeszukiwanie wszerz.
W skrócie: skrypt przyłącza się do większego systemu, który istnieje niezależnie od skryptu, manipuluje pewną małą częścią systemu, a następnie kończy pracę.
Tym większym systemem może być system operacyjny w przypadku skryptu powłoki, DOM przeglądarki w przypadku skryptu przeglądarkowego, gra (np. World of Warcraft z Lua lub Second Life with the Linden Scripting Language), aplikacja (np. AutoLisp język dla makr AutoCAD lub Excel / Word / Office), serwer WWW, pakiet robotów lub coś zupełnie innego.
Zwróć uwagę, że aspekt skryptowy jest całkowicie ortogonalny w stosunku do wszystkich innych aspektów języków programowania: język skryptowy może być napisany silnie lub słabo, wpisany ściśle lub luźno, typowany statycznie lub dynamicznie, typowany nominalnie, strukturalnie lub typu kaczego, do cholery, może nawet być bez typu . Może być konieczne lub funkcjonalne, zorientowane obiektowo, proceduralne lub funkcjonalne, ścisłe lub leniwe. Jego implementacje mogą być interpretowane, kompilowane lub mieszane.
Na przykład Mondrian jest leniwym funkcjonalnym językiem skryptowym o ściśle statycznym typie i skompilowanej implementacji.
Jednak wszystko to jest dyskusyjne, ponieważ sposób, w jaki termin język skryptowy jest naprawdę używany w prawdziwym świecie, nie ma nic wspólnego z żadnym z powyższych. Najczęściej jest używany po prostu jako zniewaga, a definicja jest raczej prosta, a nawet uproszczona:
- prawdziwy język programowania: mój język programowania
- język skryptowy: Twój język programowania
Wydaje się, że jest to sposób, w jaki termin ten jest najczęściej używany.
To jak porno, wiesz to, kiedy to widzisz. Jedyna możliwa definicja języka skryptowego to:
A language which is described as a scripting language.
Trochę okrągłe, prawda? (Nawiasem mówiąc, nie żartuję).
Zasadniczo nie ma nic, co czyni język językiem skryptowym, poza tym, że jest tak nazywany, zwłaszcza przez jego twórców. Główny zestaw nowoczesnych języków skryptowych to PHP, Perl, JavaScript, Python, Ruby i Lua. Tcl to pierwszy duży współczesny język skryptowy (nie był to jednak pierwszy język skryptowy, zapominam, co to jest, ale byłem zaskoczony, gdy dowiedziałem się, że jest on starszy od Tcl).
W artykule opisuję cechy głównych języków skryptowych :
A Practical Solution for Scripting Language Compilers
Paul Biggar, Edsko de Vries and David Gregg
SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)
Większość jest dynamicznie wpisywana i interpretowana, a większość nie ma zdefiniowanej semantyki poza ich implementacją referencyjną. Jednak nawet jeśli ich główna implementacja zostanie skompilowana lub poddana JIT, nie zmieni to „natury” języka.
Pozostaje tylko pytanie, w jaki sposób można stwierdzić, czy nowy język jest językiem skryptowym. Cóż, jeśli nazywa się to językiem skryptowym, jest nim. Tak więc Factor jest językiem skryptowym (a przynajmniej tak było, kiedy został napisany), ale powiedzmy, Java nie jest.
„Język skryptowy” to jedno z tych niejasnych pojęć, które mogą oznaczać wiele rzeczy. Zwykle odnosi się do faktu, że istnieje jednoetapowy proces prowadzący od kodu źródłowego do wykonania.
Na przykład w Perlu robisz: perl my_source.pl
Biorąc pod uwagę powyższe kryteria, PHP jest językiem skryptowym (nawet jeśli możesz mieć proces "kompilacji", na przykład, gdy używasz Zend Encoder do "ochrony" kodu źródłowego).
PS. Często (ale nie zawsze) interpretowane są języki skryptowe. Również często (ale znowu nie zawsze) języki skryptowe są wpisywane dynamicznie.
Wszystkie języki skryptowe są językami programowania. Ściśle mówiąc, nie ma różnicy.
Termin nie odnosi się do żadnych podstawowych właściwości języka, odnosi się do jego typowego użycia . Jeśli typowym zastosowaniem jest pisanie krótkich programów, które głównie wywołują wcześniej istniejący kod i pewne proste przetwarzanie wyników (to znaczy, jeśli typowym zastosowaniem jest pisanie skryptów ), to jest to język skryptowy.
Myślę, że pan Roberto Ierusalimschy ma bardzo dobrą odpowiedź lub pytanie w „Programming in Lua”:
Jednak wyróżniającą cechą języków interpretowanych nie jest to, że nie są one kompilowane, ale to, że każdy kompilator jest częścią środowiska wykonawczego języka i dlatego jest możliwe (i łatwe) wykonanie kodu generowanego w locie
eval
funkcję.
Jest jeden podział
Język interpretowany dynamicznie jest interpretowany w czasie wykonywania, podczas gdy język kompilowany jest kompilowany przed wykonaniem.
Powinienem dodać, że jak zauważył Jörg, zinterpretowane / skompilowane rozróżnienie nie jest cechą języka, ale silnika wykonawczego.
Może Cię również zainteresować wyjaśnienie dotyczące systemu typów , które jest powiązane i skupia się bardziej na aspekcie językowym, a nie na silniku wykonawczym. Większość języków skryptowych jest zapisywana dynamicznie, podczas gdy „normalne” języki są w większości zapisywane statycznie.
Ogólnie rzecz biorąc, podział języków statycznych i dynamicznych jest lepiej zdefiniowany i ma większy wpływ na użyteczność języka.
Język skryptowy to zazwyczaj :
Podczas gdy język nie-skryptowy jest zwykle : 1. Statyczny 2. Skompilowany, z naciskiem na wydajność 3. Wymaga więcej standardowego kodu, co prowadzi do wolniejszego prototypowania, ale większej czytelności i długoterminowej konserwacji 4. Używany do dużych projektów, dostosowuje się do wielu wzorce projektowe
Ale moim zdaniem w dzisiejszych czasach jest to bardziej historyczna różnica. Javascript i Perl zostały napisane z myślą o małych, prostych skryptach, podczas gdy C ++ został napisany z myślą o złożonych aplikacjach; ale oba mogą być używane w dowolny sposób. A wiele języków programowania, zarówno nowoczesnych, jak i starych, i tak zaciera linię (a przede wszystkim była rozmyta!).
Smutne jest to, że znam kilku programistów, którzy nienawidzą tego, co postrzegali jako „języki skryptowe”, uważając je za prostsze i nie tak potężne. Uważam, że stary frazes - używaj odpowiedniego narzędzia do pracy.
Języki skryptowe początkowo uważano za mechanizmy kontrolne dla aplikacji napisanych w twardym języku programowania. Skompilowanych programów nie można było modyfikować w czasie wykonywania, więc skrypty dawały ludziom elastyczność.
Przede wszystkim skrypt powłoki automatyzował procesy w jądrze systemu operacyjnego (tradycyjnie AppleScript na komputerach Mac); rola, która coraz bardziej przechodziła w ręce Perla, a ostatnio z niej przechodziła do Pythona. Widziałem Scheme (szczególnie w jego implementacji Guile) używany do deklarowania scen śledzenia promieni; a ostatnio Lua jest bardzo popularnym językiem programowania gier skryptowych - do tego stopnia, że jedyną zakodowaną na stałe rzeczą w wielu nowych grach jest silnik grafiki / fizyki, podczas gdy cała logika gry jest zakodowana w Lua. W ten sam sposób sądzono, że JavaScript skryptuje zachowanie przeglądarki internetowej.
Języki wyzwolone; nikt teraz nie myśli o systemie operacyjnym jako aplikacji (lub w ogóle o nim dużo myśli), a wiele wcześniejszych języków skryptowych zaczęło być używanych do pisania pełnych własnych aplikacji. Sama nazwa straciła sens i rozprzestrzeniła się na wiele używanych obecnie języków interpretowanych, niezależnie od tego, czy są one przeznaczone do interpretacji w innym systemie, czy nie.
Jednak „języki skryptowe” z całą pewnością nie są synonimem „języków interpretowanych” - na przykład BASIC był interpretowany przez większość swojego życia (tj. Zanim stracił akronimię i stał się Visual Basic), ale nikt tak naprawdę nie myśli o nim jako skrypty.
AKTUALIZACJA: Materiały do czytania jak zwykle dostępne w Wikipedii .
Po pierwsze, język programowania nie jest „językiem skryptowym” ani czymś innym. Może to być „język skryptowy” i coś innego.
Po drugie, osoba wdrażająca język powie ci, czy jest to język skryptowy.
Twoje pytanie powinno brzmieć „W jakich implementacjach język programowania byłby uważany za język skryptowy?”, A nie „Jaka jest różnica między językiem skryptowym a językiem programowania?”. Nie ma pomiędzy.
Jednak będę uważał język za język skryptowy, jeśli jest używany do dostarczania pewnego rodzaju oprogramowania pośredniego. Na przykład większość implementacji JavaScript uznałbym za język skryptowy. Gdyby JavaScript działał w systemie operacyjnym, a nie w przeglądarce, nie byłby to język skryptowy. Jeśli PHP działa w Apache, jest to język skryptowy. Jeśli jest uruchamiany z wiersza poleceń, nie jest.
Postrzegam język skryptowy jako wszystko, co nie wymaga jawnego, ciężkiego etapu „kompilacji”. Główną cechą z punktu widzenia programistów jest: edytujesz kod i od razu go uruchamiasz.
Dlatego uważałbym JavaScript i PHP za języki skryptowe, podczas gdy ActionScript 3 / Flex tak naprawdę nie jest.
Mój przyjaciel i ja właśnie pokłóciliśmy się: Jaka jest różnica między językiem programowania a językiem skryptowym.
Popularnym argumentem jest to, że języki programowania są kompilowane, a języki skryptowe są interpretowane - jednak uważam, że ten argument jest całkowicie fałszywy ... dlaczego?
Na tej podstawie mój argument za różnicą między językiem programowania a językiem skryptowym:
Język programowania działa na poziomie maszyny i ma dostęp do samej maszyny (pamięć, grafika, dźwięk itp.).
Język skryptowy jest piaskownicą i ma dostęp tylko do obiektów widocznych w piaskownicy. Nie ma bezpośredniego dostępu do maszyny bazowej.
Moim zdaniem powiedziałbym, że języki interpretowane dynamicznie, takie jak PHP, Ruby, itp ... są nadal „normalnymi” językami. Powiedziałbym, że przykładami języków „skryptowych” są takie rzeczy jak bash (lub ksh, tcsh lub cokolwiek) lub sqlplus. Języki te są często używane do łączenia istniejących programów w systemie w szereg spójnych i powiązanych poleceń, takich jak:
Więc powiedziałbym, że różnica (w każdym razie dla mnie) polega bardziej na tym, jak używasz języka. Języki takie jak PHP, Perl, Ruby mogą być używane jako „języki skryptowe”, ale zwykle postrzegam je jako „normalne języki” (z wyjątkiem Perla, który wydaje się działać w obie strony.
Po prostu przejdę dalej i przeniosę moją odpowiedź z drugiego pytania
Nazwa „język skryptów” odnosi się do bardzo specyficznej roli: języka, w którym piszesz polecenia, aby wysłać je do istniejącej aplikacji. (jak tradycyjny scenariusz telewizyjny lub filmowy)
Na przykład, dawno temu strony internetowe HTML były nudne. Zawsze byli statyczni. Pewnego dnia Netscape pomyślał: „Hej, a co by było, gdybyśmy pozwolili przeglądarce czytać i wykonywać małe polecenia na stronie?” I tak powstał Javascript.
Proste polecenie javascript to alert()
polecenie, które instruuje / nakazuje przeglądarce (aplikacji) odczytującej stronę internetową, aby wyświetlić alert.
Czy jest alert()
w jakikolwiek sposób powiązany z C ++ lub jakimkolwiek innym językiem kodu, którego przeglądarka faktycznie używa do wyświetlania ostrzeżenia? Oczywiście nie. Ktoś, kto pisze „alert ()” na stronie .html, nie ma pojęcia, jak przeglądarka faktycznie wyświetla alert. Właśnie pisze polecenie, które przeglądarka zinterpretuje.
Zobaczmy prosty kod javascript
<script>
var x = 4
alert(x)
</script>
Są to instrukcje wysyłane do przeglądarki, aby przeglądarka sama zinterpretowała. Język programowania, przez który przeglądarka przechodzi, aby faktycznie ustawić zmienną na 4 i umieścić ją w ostrzeżeniu ... jest całkowicie niezwiązany z JavaScriptem.
Tę ostatnią serię poleceń nazywamy „skryptem” (dlatego jest ujęta w <script>
znaczniki). Z samej definicji „scenariusza” w tradycyjnym sensie: seria instrukcji i poleceń wysyłanych do aktorów . Każdy wie, że na przykład scenariusz (scenariusz filmowy) jest scenariuszem.
Scenariusz (scenariusz) nie dotyczy aktorów, kamery ani efektów specjalnych. Scenariusz po prostu mówi im, co mają robić.
Czym dokładnie jest język skryptowy ?
Istnieje wiele języków programowania, które są jak różne narzędzia w zestawie narzędzi; niektóre języki zostały zaprojektowane specjalnie do użytku jako skrypty.
Javasript jest oczywistym przykładem; istnieje bardzo niewiele aplikacji Javascript, które nie mieszczą się w zakresie skryptów.
ActionScript (język animacji Flash) i jego pochodne są językami skryptowymi, ponieważ po prostu wysyłają polecenia do odtwarzacza / interpretera Flash. Jasne, istnieją abstrakcje, takie jak programowanie zorientowane obiektowo, ale wszystko to jest po prostu środkiem do celu: wysyłanie poleceń do odtwarzacza flash.
Python i Ruby są również powszechnie używane jako języki skryptowe. Na przykład, kiedyś pracowałem dla firmy, która używała Rubiego do skryptowania poleceń wysyłanych do przeglądarki w stylu „przejdź do tej witryny, kliknij ten link ...”, aby wykonać podstawowe testy automatyczne. W żadnym wypadku nie byłem „programistą” w tej pracy. Właśnie napisałem skrypty, które wysyłały polecenia do komputera, aby wysłać polecenia do przeglądarki.
Ze względu na swój charakter języki skryptowe rzadko są „kompilowane” - to znaczy tłumaczone na kod maszynowy i odczytywane bezpośrednio przez komputer.
Nawet aplikacje GUI utworzone w Pythonie i Ruby to skrypty wysyłane do API napisanego w C ++ lub C. Informuje aplikację C, co ma robić.
Oczywiście istnieje pewna niejasność. Dlaczego nie możesz powiedzieć, że język maszynowy / C to języki skryptowe, ponieważ są to skrypty używane przez komputer do łączenia się z podstawową płytą główną / kartami graficznymi / chipami?
Istnieje kilka linii, które możemy narysować, aby wyjaśnić:
Kiedy możesz napisać język skryptowy i uruchomić go bez „kompilacji”, jest to raczej coś w rodzaju bezpośredniego skryptu. Na przykład nie musisz nic robić ze scenariuszem, aby powiedzieć aktorom, co z nim zrobić. Jest już tam, używany, taki, jaki jest. Z tego powodu wykluczymy języki kompilowane z nazywania języków skryptowych, nawet jeśli w niektórych przypadkach mogą być używane do celów skryptowych.
Język skryptowy oznacza polecenia wysyłane do złożonej aplikacji; to jest cały powód, dla którego piszemy skrypty w pierwszej kolejności - więc nie musisz znać zawiłości działania oprogramowania, aby wysyłać do niego polecenia. Tak więc języki skryptowe są zwykle językami, które wysyłają (stosunkowo) proste polecenia do złożonych aplikacji ... w tym przypadku język maszynowy i kod asemblera tego nie robią.
Mogę zasugerować, że języki skryptowe to termin, od którego wiele osób odchodzi. Powiedziałbym, że obecnie sprowadza się to głównie do języków kompilowanych i języków dynamicznych.
Chodzi mi o to, że nie możesz powiedzieć czegoś takiego jak Python lub Ruby są językami "skryptowymi" w dzisiejszych czasach (masz nawet rzeczy takie jak IronPython i JIT-twój-ulubiony-język , różnica została jeszcze bardziej zatarta).
Szczerze mówiąc, osobiście nie uważam już PHP za język skryptowy. Nie spodziewałbym się, że ludzie będą chcieli kategoryzować PHP inaczej niż powiedzmy, że Java w ich CV.
Języki skryptowe zwykle działają w silniku skryptów, który jest częścią większej aplikacji. Na przykład JavaScript działa w aparacie skryptów Twojej przeglądarki.
Język skryptowy to język, który jest interpretowany za każdym razem, gdy skrypt jest uruchamiany, co oznacza posiadanie tłumacza, a większość z nich jest bardzo czytelna dla człowieka, aby być użytecznym, język skryptowy jest łatwy do nauczenia i używania.
Każdy kompilowalny język można przekształcić w język skryptowy i odwrotnie, wszystko zależy od zaimplementowania interpretera lub kompilatora, na przykład C ++ ma interpreter, więc można go nazwać językiem skryptowym, jeśli jest używany (ogólnie niezbyt praktyczne jak C ++ jest bardzo złożonym językiem), jednym z najbardziej użytecznych obecnie języków skryptowych jest Python ...
Tak więc, aby odpowiedzieć na twoje pytanie, definicja polega na wykorzystaniu interpretera do uruchamiania szybkich i łatwych programów skryptowych, rozwiązywania prostych zadań lub prototypowych aplikacji. Najpotężniejszym zastosowaniem języków skryptowych jest uwzględnienie możliwości rozszerzenia skompilowana aplikacja.
Wolę, aby ludzie nie używali terminu „język skryptowy”, ponieważ uważam, że zmniejsza to wysiłek. Weźmy język taki jak Perl, często nazywany „językiem skryptowym”.
Dlaczego w ogóle musimy rozróżniać język taki jak Java, który jest skompilowany, a Ruby, który nie jest? Jaka jest wartość etykietowania?
Więcej informacji na ten temat można znaleźć pod adresem http://xoa.petdance.com/Stop_saying_script .
Ważną różnicą jest mocne pisanie (w porównaniu do słabego pisania ). Języki skryptowe są często napisane słabo , co umożliwia szybsze pisanie małych programów. W przypadku dużych programów jest to wada, ponieważ uniemożliwia kompilatorowi / interpreterowi samodzielne znajdowanie pewnych błędów, co bardzo utrudnia refaktoryzację kodu.
Języki skryptowe to języki programowania, w których programy są zazwyczaj dostarczane użytkownikom końcowym w czytelnej formie tekstowej i w których istnieje program, który najwyraźniej może wykonać ten program bezpośrednio. (Program może również skompilować skrypt wewnętrznie; nie ma to znaczenia w tym przypadku, ponieważ nie jest widoczny dla użytkownika).
Języki skryptowe stosunkowo często obsługują sesje interaktywne, w których użytkownicy mogą po prostu wpisać swój program i natychmiast go wykonać. Dzieje się tak, ponieważ jest to trywialne rozszerzenie podstawowego wymagania z pierwszego akapitu; głównym dodatkowym wymaganiem jest dodanie mechanizmu pozwalającego dowiedzieć się, kiedy wpisana instrukcja jest kompletna, tak aby można ją było wysłać do silnika wykonawczego.
Aby uzyskać nieco inne podejście do pytania. Język skryptowy to język programowania, ale język programowania niekoniecznie jest językiem skryptowym. Język skryptowy służy do sterowania systemem lub tworzenia skryptów. Takim systemem mógłby być system operacyjny, w którym językiem skryptowym byłby bash. System mógłby być serwerem WWW z PHP jako językiem skryptowym. Języki skryptowe mają na celu wypełnienie określonej niszy; są to języki specyficzne dla domeny. Systemy interaktywne zinterpretowały języki skryptowe, co dało początek poglądowi, że języki skryptowe są interpretowane; jest to jednak konsekwencja systemu, a nie samego języka skryptowego.
Język skryptowy to język, który konfiguruje lub rozszerza istniejący program.
Język skryptowy to język programowania.
Definicja „języka skryptowego” jest dość niejasna. Oparłbym to na następujących rozważaniach:
Języki skryptowe zwykle nie mają kroków kompilacji widocznych dla użytkownika. Zwykle użytkownik może po prostu uruchamiać programy jednym prostym poleceniem.
Programy w językach skryptowych są zwykle przekazywane w formie źródłowej.
Języki skryptowe zwykle mają środowiska wykonawcze, które są obecne w wielu systemach, a środowiska wykonawcze można łatwo zainstalować w większości systemów.
Języki skryptowe są zwykle wieloplatformowe, a nie specyficzne dla komputera.
Języki skryptowe ułatwiają wywoływanie innych programów i interfejs z systemem operacyjnym.
Języki skryptowe są zwykle łatwe do wbudowania w większe systemy napisane w bardziej konwencjonalnych językach programowania.
Języki skryptowe są zwykle projektowane z myślą o łatwości programowania i ze znacznie mniejszym uwzględnieniem szybkości wykonywania. (Jeśli chcesz szybko wykonać, zwykłą radą jest zakodowanie czasochłonnych części w czymś takim jak C i albo osadzenie języka w C, albo wywołanie bitów C z języka).
Niektóre z cech, które wymieniłem powyżej, są prawdziwe w przypadku implementacji, w takim przypadku odnoszę się do bardziej powszechnych implementacji. Były interpretery języka C, z (AFAIK) bez oczywistego kroku kompilacji, ale nie jest to prawdą w przypadku większości implementacji C. Z pewnością można skompilować program w Perlu do kodu natywnego, ale nie jest to sposób, w jaki jest zwykle używany. Niektóre inne cechy mają charakter społeczny. Niektóre z powyższych kryteriów w pewnym stopniu się pokrywają. Jak powiedziałem, definicja jest niejasna.
Powiedziałbym, że język skryptowy jest tym, który silnie manipuluje bytami, których sam nie definiuje. Na przykład JavaScript manipuluje obiektami DOM udostępnianymi przez przeglądarkę, PHP obsługuje ogromną bibliotekę funkcji opartych na języku C i tak dalej. Oczywiście nie jest to precyzyjna definicja, a raczej sposób na zastanowienie się.
Jeśli nie / nie działa na CPU, jest to dla mnie skrypt. Jeśli interpreter musi działać na procesorze poniżej programu, to jest to skrypt i język skryptowy.
Nie ma powodu, aby to komplikować bardziej niż to?
Oczywiście w większości (99%) przypadków jest jasne, czy dany język jest językiem skryptowym. Ale weź pod uwagę, że maszyna wirtualna może na przykład emulować zestaw instrukcji x86. Czy nie sprawiłoby to, że kod bajtowy x86 byłby językiem skryptowym, gdy jest uruchamiany na maszynie wirtualnej? A co by było, gdyby ktoś napisał kompilator, który zamieniłby kod Perla w natywny plik wykonywalny? W takim przypadku nie wiedziałbym już, jak nazwać sam język. Liczyłby się wynik, a nie język.
Z drugiej strony, nie jestem świadomy, że coś takiego zostało zrobione, więc na razie nadal czuję się komfortowo, dzwoniąc do języków interpretowanych jako języki skryptowe.
Skrypt jest stosunkowo niewielki programu. Układ jest stosunkowo duży program lub zbiór stosunkowo dużych programów.
Niektóre języki programowania są zaprojektowane z funkcjami, które projektant języków i społeczność programistów uważają za przydatne podczas pisania stosunkowo małych programów. Te języki programowania są znane jako języki skryptowe , np. PHP.
Podobnie, inne języki programowania są zaprojektowane z funkcjami, które projektant języka i społeczność programistów uważają za przydatne podczas pisania stosunkowo dużych programów. Te języki programowania są znane jako języki systemowe , np. Java.
Teraz małe i duże programy można pisać w dowolnym języku. Mały program w języku Java to skrypt. Na przykład program Java „Hello World” jest skryptem, a nie systemem. Duży program lub zbiór programów napisanych w PHP to system. Na przykład Facebook, napisany w PHP, to system, a nie skrypt.
Traktowanie pojedynczego języka jako „papierka lakmusowego” przy podejmowaniu decyzji, czy dany język najlepiej nadaje się do pisania skryptów lub programowania systemów, jest wątpliwe. Na przykład, skrypty mogą być kompilowane do kodu bajtowego lub maszynowego lub mogą być wykonywane przez bezpośrednią interpretację drzewa składni abstrakcyjnej (AST).
Tak więc język jest językiem skryptowym, jeśli jest zwykle używany do pisania skryptów . Do pisania systemów można używać języka skryptowego, ale takie aplikacje mogą być uważane za wątpliwe.