Kiedy język jest uważany za język skryptowy? [zamknięte]

Co sprawia, że język jest językiem skryptowym? Słyszałem, że niektórzy mówią "kiedy to zostanie zinterpretowane zamiast skompilowane". To uczyniłoby PHP (na przykład) językiem skryptowym. Czy to jedyne kryterium? A może są inne kryteria?

Zobacz też:

Author: Shog9, 2008-09-19

30 answers

Język skryptowy to język, który "skryptuje" inne rzeczy do zrobienia. Głównym celem nie jest przede wszystkim budowanie własnych aplikacji, a uzyskanie istniejącej aplikacji, aby działać tak, jak chcesz, np. JavaScript dla przeglądarek, VBA dla MS Office.

 52
Author: moffdub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 10:56:16

Proste. Kiedy go używam, jest to nowoczesny dynamiczny język, kiedy go używasz, jest to tylko język skryptowy!

 93
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 02:48:56

Tradycyjnie, gdy mówimy o różnicy między skryptami a programowaniem, skrypty są interpretowane i kompilowane. Język może być wykonywany na różne sposoby-interpretowany lub kompilowany (do kodu bajtowego lub maszynowego). To nie czyni Języka takim czy innym.

W niektórych oczach sposób, w jaki używasz Język czyni go językiem skryptowym (na przykład twórcy gier, którzy rozwijają się głównie w C++, będą skryptować obiekty w Lua). Again, linie są rozmyte - język może być używany do programowania przez jedną osobę, a ten sam język może być używany do języka skryptowego przez inną.

Pochodzi z Wikipedii artykuł o językach skryptowych:

Język skryptowy, język skryptowy lub język Rozszerzenia to język programowania, który umożliwia sterowanie jedną lub kilkoma aplikacjami. "Skrypty" różnią się od kodu podstawowego aplikacji, ponieważ są one zwykle napisane w inny język i są często tworzone lub przynajmniej modyfikowane przez użytkownika końcowego. Skrypty są często interpretowane z kodu źródłowego lub bajtowego, podczas gdy aplikacje, którymi zarządzają, są tradycyjnie kompilowane do natywnego kodu maszynowego. Języki skryptowe są prawie zawsze wbudowane w aplikacje, które kontrolują.

Zauważysz użycie "zazwyczaj", "często", "tradycyjnie" i "prawie zawsze" - to wszystko mówi ci, że nie ma zestawu odrębnych atrybutów, które sprawiają, że specyficzny język "język skryptowy".

 41
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:10:50

"scenariusz jest tym, co dajesz aktorom. Program jest tym, co dajesz publiczność."--Larry Wall

Nie wydaje mi się, żeby już była jakaś różnica. Tak zwane języki skryptowe są często kompilowane-po prostu bardzo szybko i w czasie wykonywania. Niektóre języki "programowania" są również kompilowane w czasie wykonywania (pomyśl o JIT) , a pierwszym etapem "kompilacji" jest sprawdzanie składni i rozwiązywanie zasobów.

Don ' t get hung up on to nie jest ważne.

 31
Author: Clinton Pierce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 13:39:11

Moja definicja byłaby językiem, który jest zazwyczaj dystrybuowany jako źródło, a nie jako binarny.

 25
Author: kenny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 11:09:00

Jest na to wiele możliwych odpowiedzi.

Po pierwsze: nie jest to tak naprawdę kwestia różnicy pomiędzy językiem skryptowym a językiem programowania, ponieważ język skryptowy jest językiem programowania. Jest to bardziej pytanie, jakie cechy sprawiają, że jakiś język programowania jest językiem skryptowym, podczas gdy inny język programowania nie jest językiem skryptowym.

Po drugie: naprawdę trudno powiedzieć, co to jest język XYZ, czy to XYZ być "scripting", "functional programming", "object-oriented programming" czy co tam masz. Definicja "programowania funkcyjnego" jest dość jasna, ale nikt nie wie, czym jest "język programowania funkcyjnego".

Programowanie funkcyjne lub obiektowe to programowanie Style; można pisać w stylu funkcjonalnym lub obiektowym w prawie każdym języku. Na przykład, Linux Virtual File System Switch i Linux Driver Model są mocno obiektowe pomimo napisania w języku C, podczas gdy wiele kodu Java lub C#, które można zobaczyć w Internecie, jest bardzo proceduralne i wcale nie obiektowe . OTOH, widziałem trochę mocno funkcjonalnego kodu Javy.

Więc jeśli Programowanie funkcyjne i programowanie obiektowe są tylko stylami, które można wykonać w dowolnym języku, to jak zdefiniować "obiektowy język programowania"? Można powiedzieć, że obiektowy język programowania jest językiem, który pozwala programowanie obiektowe. Ale to niewiele z definicji: Wszystkie języki pozwalają na programowanie obiektowe, zatem Wszystkie języki są obiektowe? Więc mówisz, cóż, język jest zorientowany obiektowo, Jeśli zmusza do programowania w stylu zorientowanym obiektowo. Ale to też nie jest zbyt duża definicja: Wszystkie języki pozwalają na programowanie funkcyjne, więc żaden język nie jest zorientowany obiektowo?

Więc dla mnie znalazłem następująca definicja:

Język jest językiem skryptowym (język obiektowy / język funkcjonalny), Jeśli zarówno

  • ułatwia skryptowanie (programowanie obiektowe / Programowanie funkcyjne), tzn. nie tylko pozwala , ale sprawia, żejest łatwy inaturalny i zawiera funkcje, które pomagają z nim, i
  • zachęca i prowadzi do tworzenia skryptów (programowanie obiektowe / Programowanie funkcyjne).

Więc po pięciu akapitach doszedłem do: "język skryptowy jest językiem skryptowym". Co za świetna definicja. Nie.

Oczywiście teraz musimy przyjrzeć się definicji "skryptowania".

Tutaj pojawia się trzeci problem: podczas gdy termin "Programowanie funkcyjne" jest dobrze zdefiniowany i tylko termin "język programowania funkcyjnego" jest problematyczny, niestety z skryptowanie, zarówno termin "skryptowanie", jak i termin "język skryptowy" są źle zdefiniowane.

Cóż, po pierwsze skryptowanie 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 właściwym podzbiorem zbioru wszystkich programów.

Moim osobistym zdaniem, rzeczą, która sprawia, że skrypty Skryptowe i odróżnia je od innych rodzajów programowania, jest to, że ...

Skrypty w dużej mierze manipulują obiektami, które

  • nie zostały stworzone przez skrypt,
  • mieć całe życie niezależne od skryptu i
  • żyć poza domeną skryptu.

Ponadto, typy danych i algorytmy nie są 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 procesy w Twoim systemie prawdopodobnie nie zostały utworzone przez aktualnie uruchomiony skrypt. I nie znikają, gdy skrypt się kończy: ich żywotność jest całkowicie niezależna od skryptu. Nie są też częścią scenariusza, są częścią systemu. Nie zacząłeś skryptu od pisania klas File i Directory, te typy danych nie są twoim zmartwieniem: po prostu zakładasz, że tam są i nawet nie wiesz (ani nie potrzebujesz , aby wiedzieć), jak działają. A ty nie zaimplementuj własne algorytmy, np. do przeszukiwania katalogów po prostu używaj find zamiast implementowania własnego przeszukiwania.

W skrócie: skrypt przyłącza się do większego systemu, który istnieje niezależnie od skryptu, manipuluje małą częścią systemu, a następnie wychodzi.

Tym większym systemem może być system operacyjny w przypadku skryptu powłoki, Dom przeglądarki w przypadku skryptu przeglądarki, gra (np. World of Warcraft z Lua lub Second Life z język skryptowy Linden), aplikacja (np. język AutoLisp dla AutoCAD lub makr Excel / Word/Office), serwer WWW, paczka robotów lub coś zupełnie innego.

Zauważ, że aspekt skryptowy jest całkowicie ortogonalny do wszystkich innych aspektów języków programowania: język skryptowy może być mocno lub słabo pisany, ściśle lub luźno pisany, statycznie lub dynamicznie pisany, nominalnie, strukturalnie lub Kaczkowo pisany, heck może być nawet nie pisany. To może być konieczne lub funkcjonalne, obiektowe, proceduralne lub funkcjonalne, ścisłe lub leniwe. Jego implementacje mogą być interpretowane, kompilowane lub mieszane.

Na przykład Mondrian jest ściśle statycznie wpisywanym leniwym funkcjonalnym językiem skryptowym ze skompilowaną implementacją.

Jednak wszystko to jest dyskusyjne, ponieważ sposób, w jaki termin język skryptowy jest naprawdę używany w świecie rzeczywistym, nie ma nic wspólnego z żadnym z powyższych. Najczęściej jest używany po prostu jako obraza, a definicja jest raczej prosta, wręcz uproszczona:

  • real 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.

 16
Author: Jörg W Mittag,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 15:17:45

To jak Porno, wiesz o tym, kiedy to widzisz. Jedyną możliwą definicją języka skryptowego jest:

A language which is described as a scripting language.
Trochę okrągłe, prawda? (Przy okazji, nie żartuję).

Zasadniczo nie ma nic, co czyni język językiem skryptowym, z wyjątkiem tego, że jest nazywany takim, zwłaszcza przez jego twórców. Głównym zestawem nowoczesnych języków skryptowych jest PHP, Perl, JavaScript, Python, Ruby i Lua. Tcl jest pierwszym dużym nowoczesnym językiem skryptowym (nie był to pierwszy skrypt język choć, zapomniałem, co to jest, ale byłem zaskoczony, aby dowiedzieć się, że przed Tcl).

Opisuję cechy głównych języków skryptowych w mojej pracy :

 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ść z nich jest dynamicznie typowana i interpretowana, a większość nie ma zdefiniowanej semantyki poza ich implementacją referencyjną. Jednak nawet jeśli ich główna implementacja zostanie skompilowana lub Jitowana, nie zmienia to "natury" języka.

Pozostaje tylko pytanie, jak można stwierdzić, czy nowy język jest językiem skryptowym. Cóż, jeśli nazywa się to językiem skryptowym, to jest nim. Tak więc Factor jest językiem skryptowym (a przynajmniej był wtedy, gdy został napisany), ale powiedzmy, Java nie jest.
 16
Author: Paul Biggar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-13 16:28:45

"język skryptowy" jest jednym z tych niejasnych pojęć, które mogą oznaczać wiele rzeczy. Zazwyczaj odnosi się to 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 kodera Zend do "ochrony" kodu źródłowego).

PS. Często (ale nie zawsze) językami skryptowymi są interpretowane. Również często (ale nie zawsze) języki skryptowe są wpisywane dynamicznie.

 5
Author: Cd-MaN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-22 09:51:54

Wszystkie języki skryptowe są językami programowania. Więc ś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 typowego użycia języka. Jeśli typowym zastosowaniem jest pisanie krótkich programów, które wykonują głównie wywołania do wcześniej istniejącego kodu i proste przetwarzanie wyników (to znaczy, jeśli typowym zastosowaniem jest pisanie skryptów ), to jest to język skryptowy.

 5
Author: Joren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 13:54:04

Myślę, że Pan Roberto Ierusalimschy ma bardzo dobrą odpowiedź lub pytanie W "Programowanie w Lua":

Jednak cechą wyróżniającą języki interpretowane nie są tym, że nie są kompilowane, ale że każdy kompilator jest częścią języka runtime i dlatego jest możliwe (i łatwe) wykonanie kodu generated on the fly

 4
Author: Rodrigo Lopez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-21 21:27:22

Jeden podział to

  • Skrypty = dynamicznie interpretowane
  • normal = compiled

Dynamicznie interpretowany język jest interpretowany podczas wykonywania, podczas gdy skompilowany język jest kompilowany przed wykonaniem.

Powinienem dodać, że jak zauważył Jörg, rozróżnienie interpretowane / skompilowane nie jest cechą języka, ale silnika wykonawczego.

Być może zainteresuje cię również wyjaśnienie systemu typów , który jest związane i skupia się bardziej na aspekcie językowym, zamiast na silniku wykonawczym. Większość języków skryptowych jest typowana dynamicznie, podczas gdy "normalne" języki są najczęściej typowane statycznie.

Ogólnie podział języków typowanych statycznie na dynamicznie jest lepiej zdefiniowany i ma więcej implikacji na użyteczność języka.

 4
Author: Timo Westkämper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:21:42

Językiem skryptowym jest typowo :

  1. dynamicznie wpisywane
  2. interpretowane, z bardzo małym naciskiem na wydajność, ale dobra przenośność
  3. wymaga znacznie mniej kodu kotła, co prowadzi do bardzo szybkiego prototypowania
  4. jest używany do małych zadań, nadaje się do zapisu jednego pliku, aby uruchomić jakiś użyteczny "skrypt".

Podczas gdy językiem nie skryptowym jest zwykle : 1. Wpisywane statycznie 2. Skompilowane, z naciskiem na osiągi 3. Wymaga więcej kodu boilerplate, co prowadzi do wolniejszego prototypowania, ale większą czytelność i długoterminową konserwację 4. Używany do dużych projektów, dostosowuje się do wielu wzorców projektowych

Ale to bardziej historyczna różnica w dzisiejszych czasach, moim zdaniem. 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 obie strony. Oraz wiele języków programowania, zarówno nowoczesnych jak i starych, w każdym razie linia (i to było rozmyte w pierwszej kolejności!).

Smutne jest to, że znałem kilku programistów, którzy nienawidzą tego, co postrzegali jako "języki skryptowe", uważając je za prostsze i nie tak potężne. Moim zdaniem Stary banał-użyj odpowiedniego narzędzia do pracy.

 3
Author: Oak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 13:50:39

Języki skryptowe były pierwotnie uważane za mechanizmy sterujące aplikacjami napisanymi w twardym języku programowania. Skompilowane programy nie mogły być modyfikowane 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 Macach); rola, która coraz bardziej przechodziła w ręce Perla, a ostatnio z niego w Pythona. Widziałem schemat (szczególnie w jego przebiegłej realizacji) używany do deklarowania scen raytracingu; a ostatnio Lua jest bardzo popularny jako język programowania do skryptów gier - do tego stopnia, że jedyną twardo zakodowaną rzeczą w wielu nowych grach jest silnik graficzny / fizyczny, podczas gdy cała logika gry jest zakodowana w Lua. W ten sam sposób JavaScript był uważany za skrypt zachowania przeglądarki internetowej.

Języki się usamodzielniły; nikt teraz nie myśli o systemie operacyjnym jako aplikacji( lub myśli o nim w ogóle), a wiele wcześniej języków skryptowych zaczął być używany do pisania pełnych aplikacji własnych. Sama nazwa stała się bez znaczenia i rozprzestrzeniła się na wiele języków interpretowanych w użyciu dzisiaj, niezależnie od tego, czy są one przeznaczone do interpretacji z innego systemu, czy nie.

Jednak "języki skryptowe" zdecydowanie nie są synonimem "języków interpretowanych" - na przykład BASIC był interpretowany przez większość swojego życia (tj. zanim stracił swoją akronimiczność i stał się Visual Basic), jednak nikt tak naprawdę nie myśli o to jako skrypt.

UPDATE: czytanie materiałów jak zwykle dostępnych W Wikipedii.

 3
Author: Amadan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:02:24

Pierwszy punkt, język programowania nie jest "językiem skryptowym" lub czymś innym. Może to być "język skryptowy" i coś innego.

Drugi punkt, implementator języka 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 Uznam język za język skryptowy, jeśli jest on używany do dostarczania jakiegoś rodzaju middle ware. Na przykład, rozważyłbym większość implementacji JavaScript jako język skryptowy. Gdyby JavaScript był uruchamiany w systemie operacyjnym, a nie w przeglądarce, nie byłby to język skryptowy. Jeśli PHP działa wewnątrz Apache, jest to język skryptowy. Jeśli jest uruchamiany z linii poleceń, nie jest.

 3
Author: Marcus Adams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:36:25

Postrzegam język skryptowy jako coś, co nie wymaga jawnego, ciężkiego kroku "kompilacji". Główną cechą z punktu widzenia programistów jest: edytujesz kod i uruchamiasz go od razu.

Dlatego uznałbym JavaScript i PHP za języki skryptowe, natomiast ActionScript 3/Flex nie jest tak naprawdę.

 3
Author: Peter Mortensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-13 16:50:59

Mój przyjaciel i ja mieliśmy właśnie taki argument: Jaka jest różnica między językiem programowania a językiem skryptowym.

Popularnym argumentem jest to, że języki programowania są kompilowane i języki skryptowe są interpretowane - jednak uważam, że ten argument jest całkowicie fałszywy...dlaczego?

  1. Chakra i V8 (silniki JavaScript Microsoftu i Google ' a) kompilują kod przed wykonaniem
  2. QBasic jest interpretowany-czy to czyni Qbasic " skryptem" język?

Na tej podstawie, jest to 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 piaskowany i ma dostęp tylko do obiektów wystawionych na działanie piaskownicy. Nie ma bezpośredniego dostępu do podstawowej maszyny.

 3
Author: series0ne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-27 11:54:11

Moim zdaniem powiedziałbym, że dynamicznie interpretowane języki takie jak PHP, Ruby itp... są nadal" normalnymi " langauges. Powiedziałbym, że przykładami języków "skryptowych" są takie rzeczy jak bash (lub ksh lub tcsh lub cokolwiek) lub sqlplus. Języki te są często używane do łączenia istniejących programów w szereg spójnych i powiązanych poleceń, takich jak:

  1. Kopia A.txt do / tmp / work /
  2. Uruchom nocny proces czyszczenia w bazie danych Serwer
  3. Zaloguj wyniki i wyślij je do sysdamin

Więc powiedziałbym, że różnica (dla mnie, w każdym razie) jest bardziej w tym, jak używać język. Języki takie jak PHP, Perl, Ruby mogą być używane jako "języki skryptowe" , ale zwykle widzę je jako "normalne języki" (z wyjątkiem Perla, który wydaje się iść w obie strony.

 2
Author: FrustratedWithFormsDesigner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 13:52:59

Po prostu przejdę do migracji mojej odpowiedzi z zduplikowanego pytania


Nazwa "język skryptowy" odnosi się do bardzo konkretnej 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, dawno temu, strony HTML były nudne. Zawsze były statyczne. Pewnego dnia Netscape pomyślał: "Hej, co jeśli pozwolimy przeglądarce czytać i działać na małych poleceniach na stronie?"I jak że powstał Javascript.

Proste polecenie javascript to polecenie alert(), które nakazuje / poleca przeglądarce (aplikacji), która czyta stronę internetową, wyświetlanie alertu.

Czy alert() ma związek w jakikolwiek sposób z językiem C++ lub jakimkolwiek innym językiem kodu, którego przeglądarka używa do wyświetlania alertu? Oczywiście, że nie. Ktoś, kto pisze "alert ()" NA an .strona html nie rozumie, w jaki sposób przeglądarka faktycznie wyświetla alert. On tylko pisze polecenie, które zinterpretuje przeglądarka.

Zobaczmy prosty kod javascript

<script>
var x = 4
alert(x)
</script>

Są to instrukcje, które są wysyłane do przeglądarki, aby przeglądarka interpretowała sama w sobie. Język programowania, przez który przechodzi przeglądarka, aby ustawić zmienną na 4 i umieścić ją w alert...it jest całkowicie niezwiązany z javascript.

Ostatnią serię komend nazywamy "skryptem" (dlatego jest on zamknięty w znacznikach <script>). Właśnie z definicji "skryptu", w tradycyjny sens: seria instrukcji i poleceń wysyłanych do aktorów . Każdy wie, że scenariusz (scenariusz filmowy), na przykład, jest scenariuszem.

Scenariusz (scenariusz) to Nie aktorzy, kamera, czy efekty specjalne. Scenariusz mówi im tylko, co mają robić.

Czym właściwie 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życia jako skrypty.

Javasript jest oczywistym przykładem; istnieje bardzo niewiele aplikacji Javascript, które nie mieszczą się w sferze skryptów.

ActionScript (język animacji Flash) i jego pochodne są językami skryptowymi, ponieważ po prostu wydają polecenia do Flash Playera/interpretera. Oczywiście, istnieją abstrakcje takie jak programowanie obiektowe, ale wszystko to jest po prostu środkiem do końca: wysyłanie poleceń do flash Playera.

Python i Ruby są powszechnie używane jako języki skryptowe. Na przykład, kiedyś pracowałem dla firmy, która używała Ruby do skryptowania poleceń do wysyłania do przeglądarki, które były podobne do: "przejdź do tej strony, kliknij ten link..."aby wykonać podstawowe zautomatyzowane testy. Byłem Nie "programistą" w jakikolwiek sposób, w tej pracy. Właśnie pisałem skrypty, które wysyłały polecenia do komputera, aby wysłać polecenia do przeglądarki.

Ze względu na ich naturę, języki skryptowe są rzadko "kompilowane" - to znaczy tłumaczone na kod maszynowy i odczytywane bezpośrednio przez komputer.

Nawet aplikacje GUI utworzone z Pythona i Ruby są skryptami wysyłanymi do API napisanego w C++ lub C. mówi On aplikacji C, co ma robić.

Jest linia niejasności, oczywiście. Dlaczego nie możesz powiedzieć, że język maszynowy / C są językami skryptowymi, ponieważ są to Skrypty, których komputer używa do interfejsu z podstawową płytą główną / grafiką karty/żetony?

Jest kilka linii, które możemy narysować, aby wyjaśnić:

  1. Kiedy możesz napisać język skryptowy i uruchomić go bez "kompilacji", jest to bardziej coś w rodzaju bezpośredniego skryptu. Na przykład, nie trzeba nic robić ze scenariuszem, aby powiedzieć aktorom, co mają z nim zrobić. Jest już tam, używany, tak jak jest. Z tego powodu będziemy wykluczać języki skompilowane z nazw języków skryptowych, nawet jeśli mogą one być używane do cele Skryptowe w niektórych przypadkach.

  2. Język skryptowy implikuje polecenia wysyłane do złożonej aplikacji ; dlatego piszemy skrypty w pierwszej kolejności-więc nie musisz znać złożoności działania oprogramowania, aby wysyłać do niego polecenia. Tak więc, języki skryptowe wydają się być językami, które wysyłają (stosunkowo) proste polecenia do złożonych aplikacji ...w tym przypadku język maszynowy i Kod złożenia nie są cięte to.

 2
Author: Justin L.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-19 09:58:29

Pozwolę sobie zasugerować, że języki skryptowe były terminem, od którego wiele osób odchodzi. Powiedziałbym, że w dzisiejszych czasach sprowadza się to głównie do skompilowanych języków i języków dynamicznych.

Chodzi mi o to, że tak naprawdę nie można powiedzieć czegoś takiego jak Python, czy Ruby są językami "skryptowymi" w dzisiejszych czasach (masz nawet rzeczy takie jak IronPython i JIT-your-favorite-language, różnica została jeszcze bardziej zatarta).

Szczerze mówiąc, osobiście nie uważam PHP za skrypt język już nie. Nie spodziewałbym się, że ludzie lubią kategoryzować PHP inaczej niż powiedzieć Java w ich życiorysie.

 2
Author: Robert Gould,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-13 17:08:05

Języki skryptowe zwykle działają w silniku skryptowym, który jest częścią większej aplikacji. Na przykład JavaScript działa wewnątrz silnika skryptów przeglądarek.

 1
Author: Martin OConnor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 10:54:02

Język skryptowy jest językiem, który jest interpretowany za każdym razem, gdy skrypt jest uruchamiany, oznacza to posiadanie interpretera i większość z nich jest bardzo czytelna dla człowieka, aby być użytecznym język skryptowy jest łatwy do nauczenia się i użycia.

Każdy język kompilowalny może być przekształcony w język skryptowy i odwrotnie wszystko zależy od implementacji interpretera lub kompilatora, jako przykład C++ ma interpreter, więc można go nazwać językiem skryptowym, jeśli jest używany (niezbyt praktyczny w ogóle, ponieważ C++ jest bardzo złożony język), jednym z najbardziej przydatnych obecnie języków skryptowych jest Python...

Aby odpowiedzieć na twoje pytanie, definicja mówi o użyciu interpretera do uruchamiania szybkich i łatwych programów skryptowych, do rozwiązywania prostych zadań lub prototypowych aplikacji najpotężniejszym zastosowaniem języków skryptowych jest uwzględnienie możliwości rozszerzenia skompilowanej aplikacji za każdym razem.

 1
Author: Panic,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-21 05:38:04

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".

  • Perl jest językiem programowania!
  • Perl jest kompilowany jak Java i C++. To jest po prostu skompilowane o wiele szybciej!
  • Perl ma obiekty, przestrzenie nazw i zamknięcia.
  • Perl ma IDE, debuggery i profilery.
  • Perl ma szkolenia, wsparcie i społeczność.
  • Perl to nie tylko web. Perl to nie tylko sysadmin. Perl to nie tylko taśma klejąca Internetu.

Dlaczego w ogóle musimy rozróżniać między językiem Java, który jest skompilowany, a Rubim, który nie jest? Jaka jest wartość etykietowania?

Aby dowiedzieć się więcej na ten temat, zobacz http://xoa.petdance.com/Stop_saying_script .

 1
Author: Andy Lester,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 03:01:57

Istotną różnicą jest mocne typowanie (w porównaniu do Słabe typowanie ). języki skryptowe są często słabo typowane , co umożliwia szybsze pisanie małych programów. W przypadku dużych programów jest to wadą, ponieważ uniemożliwia kompilator/interpreter samodzielne znajdowanie pewnych błędów, co bardzo utrudnia refaktoryzację kodu.

 1
Author: Dimitri C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-23 10:44:30

Języki skryptowe są językami programowania, w których programy są zazwyczaj dostarczane użytkownikom końcowym w czytelnej formie tekstowej i gdzie istnieje program, który może najwyraźniej wykonać ten program bezpośrednio. (Program może również skompilować skrypt wewnętrznie; nie ma to tutaj znaczenia, ponieważ nie jest widoczny dla użytkownika.)

Jest to stosunkowo powszechne w językach skryptowych, aby móc obsługiwać interaktywną sesję, w której użytkownicy mogą po prostu wpisać swój program i mieć natychmiast się uruchamia. Dzieje się tak, ponieważ jest to trywialne rozszerzenie podstawowego wymogu z pierwszego akapitu; głównym dodatkowym wymogiem jest dodanie mechanizmu, aby dowiedzieć się, kiedy wpisane oświadczenie jest kompletne, tak aby mogło zostać wysłane do silnika wykonawczego.

 1
Author: Donal Fellows,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:13:42

Dla nieco innego podejścia do pytania. Język skryptowy jest językiem programowania, ale język programowania niekoniecznie jest językiem skryptowym. Język skryptowy jest używany do sterowania lub skryptowania systemu. System ten może być systemem operacyjnym, w którym językiem skryptowym byłby bash. System może być serwerem WWW z PHP językiem skryptowym. Języki skryptowe są zaprojektowane tak, aby wypełniać określoną niszę; są to języki specyficzne dla domeny. Systemy interaktywne zinterpretować języki skryptowe dając początek pojęciu, że języki skryptowe są interpretowane; jest to jednak konsekwencja systemu, a nie samego języka skryptowego.

 1
Author: phreed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:22:11

Język skryptowy to język, który konfiguruje lub rozszerza istniejący program.
Język skryptowy jest językiem programowania.

 1
Author: Romain Hippeau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 14:39:41

Definicja "języka skryptowego" jest dość niejasna. Oparłbym się na następujących rozważaniach:

  1. Języki skryptowe zwykle nie mają widocznych dla użytkownika kroków kompilacji. Zazwyczaj użytkownik może po prostu uruchamiać programy za pomocą jednego prostego polecenia.

  2. Programy w językach skryptowych są zwykle przekazywane w formie źródłowej.

  3. Języki skryptowe zwykle mają środowiska uruchomieniowe, które są obecne w dużej liczbie systemów, A środowiska uruchomieniowe mogą być łatwa instalacja na większości systemów.

  4. Języki skryptowe są zazwyczaj wieloplatformowe, a nie maszynowe.

  5. Języki skryptowe ułatwiają wywoływanie innych programów i interfejs z systemem operacyjnym.

  6. Języki skryptowe są zwykle łatwo osadzalne w większych systemach napisanych w bardziej konwencjonalnych językach programowania.

  7. Języki skryptowe są zwykle zaprojektowane z myślą o łatwości programowania i przy znacznie mniejszym uwzględnieniu dla szybkości wykonania. (Jeśli chcesz szybkiego wykonania, zwykle zaleca się zakodowanie czasochłonnych części w czymś takim jak C i albo osadzenie języka w C lub wywołanie bitów C z tego języka.)

Niektóre z cech, które wymieniłem powyżej, są prawdziwe w przypadku implementacji, w którym to przypadku mam na myśli bardziej powszechne implementacje. Były interpretery C, z (AFAIK) bez oczywistego kroku kompilacji, ale nie jest to prawdą w przypadku większości implementacji C. Z pewnością. skompilować program Perla do kodu natywnego, ale nie jest on normalnie używany. Niektóre inne cechy mają charakter społeczny. Niektóre z powyższych kryteriów pokrywają się nieco. Jak powiedziałem, definicja jest rozmyta.

 1
Author: David Thornley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-15 21:34:53

Język skryptowy jest językiem programowania przeznaczonym do integracji i komunikowania się z innymi językami programowania. Możesz również powiedzieć, że instruuje innych do robienia rzeczy

 1
Author: Debaprasad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 04:32:26

Powiedziałbym, że język skryptowy jest Tym, który mocno manipuluje bytami, których sam nie definiuje. Na przykład JavaScript manipuluje obiektami DOM dostarczanymi przez przeglądarkę, PHP obsługuje ogromną bibliotekę funkcji opartych na języku C i tak dalej. Oczywiście nie dokładna definicja, bardziej sposób myślenia, czy to.

 0
Author: Michael Pliskin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-19 10:54:34

Jeśli nie / nie uruchomi się na CPU, 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 bardziej skomplikowane niż to?

Oczywiście w większości (99%) przypadków jasne jest, 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 uczyni to kodu bajtowego x86 językiem skryptowym, gdy jest uruchomiony na VM? Co by było, gdyby ktoś napisał kompilator, który zmieniłby kod Perla w natywny plik wykonywalny? W tym przypadku nie wiedziałbym już, jak nazwać sam język. To wynik byłby ważny, a nie Język.

Z drugiej strony, nie jestem świadomy, że coś takiego zostało zrobione, więc na razie jestem nadal wygodne nazywanie języków interpretowanych językami skryptowymi.

 0
Author: anon6439,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-22 00:51:21