Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];

Вниз

Еду на разведку в Москву.   Найти похожие ветки 

 
oxffff ©   (2011-06-22 23:23) [120]

Я не нашел нормального четко отличающего определения. Хотя и искал и сейчас и днем:

http://c2.com/cgi/wiki?ScriptingLanguage
http://www.cs.man.ac.uk/~pjj/cs211/langdes/script.html
http://www.techopedia.com/definition/3873/scripting-language

Хотя мне ближе
http://www.techterms.com/definition/script

То есть по мне это просто язык высокого уровня, семантику которого задает среда исполнения. То есть в неком смысле это как контекстно-свободный язык.

Здесь  и кончается скриптовый язык и начинается среда исполнения.

Для его исполнения среда исполнения может транслировать его текст в байт-код, натив код, и налагать определенную семантику.
Где то по другим ссылкам было прямо написано, что семантика скриптового языка может определяться дополнительно.
Но процесс исполнения отношения не имеет к языку.
То есть в неком смысле это также может быть и высокоуровневый контекстно-свободный байт-код(по сути другая запись текста скрипта).

В противоположность обычные языки имеют строго определенную семантику и не являются контекстно-свободными языками(это мой вольный термин, отображающий, что есть высокоуровневая конструкция, которая должна делать что-то, но семантически не задано как. В противоположность у обычных языков при трансляции в примитивный байт-код или нативный код, семантика уже строго определена).
Вот такое мое IMHO.


 
Юрий Зотов ©   (2011-06-22 23:30) [121]


> oxffff ©   (22.06.11 23:23) [120]
> Хотя мне ближе
> http://www.techterms.com/definition/script

А там сразу же написано:

A computer script is a list of commands that are executed by a certain program or scripting engine.

О чем и твержу. Исполняет программа - скрипт, исполняет непосредственно процессор - не скрипт. И вся морковь.


 
oxffff ©   (2011-06-22 23:32) [122]

Если посмотреть на байт код .NET или нативную запись например цикла, то семантика  оператора for уже задана и не может измениться, поскольку уже используются  операции атомы +,-, *, /, read, write, семантика этих операций строго задана и должна исполняться процессором или JITerom в строгом соответствии со спецификацией.
Под этим я и понимаю контекстность-несвободность.


 
oxffff ©   (2011-06-22 23:36) [123]


> О чем и твержу. Исполняет программа - скрипт, исполняет
> непосредственно процессор - не скрипт. И вся морковь.


Да вот не совсем. C# транслирует в байт-код и не является скриптовым языком. Поэтому [122].
Скрипт же сохраняет высокоуровневость и не траслируется примитивы атомы.
Поэтому его семантика плавающая.

Его исполняет среда, как в виде перепредставления в примитивном байт-коде или нативе. Это к скрипту отношения не имеет. Он как бы контекстно-свободен.


 
Юрий Зотов ©   (2011-06-22 23:38) [124]


> oxffff ©   (22.06.11 23:32) [122]

Усложняешь, Сергей. Семантики-грамматики, панимашь... тут все проще.

Это на тебя YAR так повлиял.
:o)


 
Anatoly Podgoretsky ©   (2011-06-22 23:49) [125]

> oxffff  (22.06.2011 23:36:03)  [123]

Скрипт википедия определяет как сценарий. Сюда относятся сценарии, неявно
компилируемые в нативный код перед исполнением. Соответственно в любой
момент сценарий можно изменить текстовым редактором и забыть про него.


 
oxffff ©   (2011-06-22 23:53) [126]

Все же я не видел, чтобы C# называли скриптовым.
Постараюсь по другому пояснить свое видение.
Если открыть ECMA 335 раздел MSIL Instruction Set, то .NET байт код он семантически закончен. Есть строгие неизменные правила.
То есть исполняясь .NET байт код будет исполнен идентично в строгом в соответствии с семантикой на разных целевых машинах. Поскольку это +,-,*,/
и другие статические примитивы.

А скрипт он как бы полиморфен, его семантика определяется средой исполнения.
То есть можно задать высокоуровневую полиморфную команду wake up:
Исполнение в разных средах приведет к разному результату.
В обычных языках нам придется использовать DLL.


 
oxffff ©   (2011-06-22 23:54) [127]


>  Соответственно в любой
> момент сценарий можно изменить текстовым редактором и забыть
> про него.


Это и есть ключевой момент. Скрипт это текст.
Его исполнять можно по разному. Но это уже не имеет к нему отношения.


 
Kerk ©   (2011-06-23 00:05) [128]


> А скрипт он как бы полиморфен, его семантика определяется
> средой исполнения.

Да, имхо, наиболее точное определение


 
Юрий Зотов ©   (2011-06-23 01:03) [129]


> oxffff ©   (22.06.11 23:53) [126]
> А скрипт он как бы полиморфен, его семантика определяется
> средой исполнения.

То есть, должна быть среда исполнения, как обязательный признак. Нет ее - нет и скрипта. Об чем и речь (см. [106]).


> oxffff ©   (22.06.11 23:54) [127]
> Скрипт это текст. Его исполнять можно по разному.
> Но это уже не имеет к нему отношения.

Снова - об чем и речь (см. [106, 108]).


 
euru ©   (2011-06-23 01:42) [130]

Если скрипт - это текст программы, то что тогда называется листингом?


 
Юрий Зотов ©   (2011-06-23 01:45) [131]


> euru ©   (23.06.11 01:42) [130]
> Если скрипт - это текст программы, то что тогда называется
> листингом?

Текст программы, напечатанный на бумаге.


 
Германн ©   (2011-06-23 04:27) [132]


> Текст программы, напечатанный на бумаге.

Где в первой колонке номер строки. :).
Имхо, вы уже в этом "дурацком споре" о "дурацком" термине превзошли все разумные границы.


 
TUser ©   (2011-06-23 05:54) [133]

Хм, почти все используемые в реальной жизни языки контекстно-свободные. Ну, вот питон не совсем, может еще кто-то. Неужели все на свете - скриптовое?


 
oxffff ©   (2011-06-23 09:25) [134]


> контекстно-свободные


грамматики.


 
TUser ©   (2011-06-23 09:40) [135]

Ну да. И что, Делфи - скриптовый язык?


 
oxffff ©   (2011-06-23 10:06) [136]


> TUser ©   (23.06.11 09:40) [135]
> Ну да. И что, Делфи - скриптовый язык?


Внимательно читаем?

Обычные языки имеют строго определенную семантику и не являются контекстно-свободными языками(это мой вольный термин, отображающий, что есть высокоуровневая конструкция, которая должна делать что-то, но семантически не задано как. В противоположность у обычных языков при трансляции в примитивный байт-код или нативный код, семантика уже строго определена.

Например функция на YAR

function abc(a:integer;b:integer;c:integer):integer;
begin
result:=a+b*c;
end;

транслируется в

.method public static int32 abc(int32 a,int32 b,int32 c) cil managed
{
.maxstack 99
ldarg  a
ldarg  b
ldarg  c
mul
add
ret
}

Где,
ldarg – load argument onto the stack
add – add numeric values
mul – multiply values

строго задана семантика примитивных операций.

Для скрипта  

result:=a+b*c;

может транслироваться в во что угодно, то есть семантика определяется средой. Например

В одной среде

По адресу b с отступом c прибавить a и отослать по электронной почте на адрес result, где result - это макроподстановка E-mail адреса текущего пользователя.

В другой, совсем иное.


 
Юрий Зотов ©   (2011-06-23 10:52) [137]

> oxffff ©   (23.06.11 10:06) [136]

Теперь пусть мы имеем N сред исполнения. Допустим, каждая из них обрабатывает исходный текст по-своему и тогда, согласно твоему подходу, этот текст является скриптом. ОК.

Теперь допустим, что все они обрабатывают исходный текст одинаково. И что - от этого текст перестал быть скриптом?

А завтра появится еще одна среда которая обрабатывает этот же текст по-своему. И что - текст снова стал скриптом?

А потом эту же среду доработали и она стала обрабатывать тот же текст так же, как и остальные. И что - текст снова перестал быть скриптом?

Нелогично.


 
TUser ©   (2011-06-23 11:03) [138]


> В одной среде
>
> По адресу b с отступом c прибавить a и отослать по электронной
> почте на адрес result, где result - это макроподстановка
> E-mail адреса текущего пользователя.
>
> В другой, совсем иное.

Это всего лишь тараканы в голове у реализатора ))


 
Юрий Зотов ©   (2011-06-23 11:11) [139]

1. Скрипт - список инструкций, которые ВЫПОЛНЯЕТ обрабатывающая ПРОГРАММА, а не CPU непосредственно. Заметим, что компилятор исходный код НЕ выполняет.

2. Скриптовой язык - язык, предназначенный для написания скриптов.

3. Граница между скриптовыми и нескриптовыми языками нечеткая.

4. Караул устал.
:o)


 
oxffff ©   (2011-06-23 11:16) [140]


> Юрий Зотов ©   (23.06.11 10:52) [137]


Нет, не так. Поведение среды не имеет отношение к языку.
Язык как был скриптовый, так и остался. То есть то, что подлежит исполнению,
представлено в виде текста или высоко-уровн. байт-кода(фактически другое представление более краткое), но главное где семантика операций языка может определяться средой.

По аналогии есть абстрактный класс

TMachine=class abstract
function add(op1,op2:TOperandAbstract):TOperandAbstract;virtual;abstract;
...
end;

Получается, что для обычных языков семантика add является строго определенной, то есть это обычное нормальное сложение,
где ожидается например, что будет 2 операнда-значения и их нужно сложить математически, и получить на выходе операнд-значение.

Для скрипта в качестве операнда может быть все, что угодно. Например некий макро-операнд. И это не операция математического сложения, а операция add, семантику которой определяет среда исполнения.

То есть в некотором смысле скрипт более абстрактен.
Естественно это IMHO.


 
Юрий Зотов ©   (2011-06-23 11:47) [141]

> oxffff ©   (23.06.11 11:16) [140]

То есть, скрипт - это набор инструкций, результат которых ПОТЕНЦИАЛЬНО МОЖЕТ определяться средой исполнения? Я правильно тебя понял?

Даже если все среды исполнения дают одинаковый результат, то ПОТЕНЦИАЛЬНАЯ возможность другого результата все равно сохраняется есть, поэтому скрипт быть скриптом не престает. Так?


 
TUser ©   (2011-06-23 11:59) [142]

Можно и для Паскаля написать интерпретатор, который будет integer интерпретировать как double, только нафига ...


 
oxffff ©   (2011-06-23 12:03) [143]


> Юрий Зотов ©   (23.06.11 11:47) [141]
> > oxffff ©   (23.06.11 11:16) [140]
>
> То есть, скрипт - это набор инструкций, результат которых
> ПОТЕНЦИАЛЬНО МОЖЕТ определяться средой исполнения? Я правильно
> тебя понял?
>
> Даже если все среды исполнения дают одинаковый результат,
>  то ПОТЕНЦИАЛЬНАЯ возможность другого результата все равно
> сохраняется есть, поэтому скрипт быть скриптом не престает.
>  Так?


Не так.
Определяется семантика, а не результат.
Еще раз [140].


 
oxffff ©   (2011-06-23 12:10) [144]

Например в скрипте можно написать

result:=$(MacroHardDriveSerial) AND 3 OR $(ScriptCodeSize);

На обычном придется писать

result:=EvalMacro("MacroHardDriveSerial") AND 3 OR EvalMacro(ScriptCodeSize);

+ к этому семантика AND и OR может быть изменена или дополнена.


 
Юрий Зотов ©   (2011-06-23 12:11) [145]

Ладно, пусть семантика. Хотя в конечном счете - все равно результат, но неважно.

А теперь задумаемся.

1. Если среда исполнения есть - то ВСЕГДА есть возможность определить другую семантику. Однозначно.

2. Если среды исполнения нет - то НИКОГДА нет возможности определить другую семантику. Тоже однозначно.

Значит, скрипт определяется просто наличием среды исполнения, и больше ничем.


 
euru ©   (2011-06-23 12:11) [146]


> Юрий Зотов ©   (23.06.11 11:11) [139]
> 1. Скрипт - список инструкций, которые ВЫПОЛНЯЕТ обрабатывающая
> ПРОГРАММА, а не CPU непосредственно. Заметим, что компилятор
> исходный код НЕ выполняет.

Виртуальную машину можно считать обрабатывающей программой?


 
oxffff ©   (2011-06-23 12:12) [147]


> TUser ©   (23.06.11 11:59) [142]
> Можно и для Паскаля написать интерпретатор, который будет
> integer интерпретировать как double, только нафига ...


Речь не об этом. Откуда ты это взял?


 
Ega23 ©   (2011-06-23 12:12) [148]

Вот вы в дебри-то зарылись!
Мужчины, вам не кажется, что такие вещи лучше под пиво IRL обсуждать?

З.Ы.
Серёг, у тебя мой телефон-то остался? Проявишься - звони.


 
asail ©   (2011-06-23 12:18) [149]


> Юрий Зотов ©   (23.06.11 11:11) [139]
> 1. Скрипт - список инструкций, которые ВЫПОЛНЯЕТ обрабатывающая
> ПРОГРАММА, а не CPU непосредственно

Лично мне, такое определение больше всего нравится. По-моему, самое оно...


 
oxffff ©   (2011-06-23 12:19) [150]


> Юрий Зотов ©   (23.06.11 12:11) [145]
> Ладно, пусть семантика. Хотя в конечном счете - все равно
> результат, но неважно.
>
> А теперь задумаемся.
>
> 1. Если среда исполнения есть - то ВСЕГДА есть возможность
> определить другую семантику. Однозначно.


Не согласен.
Если рассмотреть байт-код .NET или код x86, то семантика там статична. Поскольку например add работает только с операндами значениями.
Но на выходе должна быть сумма входа. Да, для байт-кода .NET можно например доделать так, чтобы он еще и SMS слал. Но это дополнение, но есть основная семантика, которая должна строго соблюдаться по стандарту.
То есть это статика.


>
> 2. Если среды исполнения нет - то НИКОГДА нет возможности
> определить другую семантику. Тоже однозначно.
>
> Значит, скрипт определяется просто наличием среды исполнения,
>  и больше ничем.


Не наблюдаю импликации.


 
oxffff ©   (2011-06-23 12:23) [151]


> Ega23 ©   (23.06.11 12:12) [148]
> Вот вы в дебри-то зарылись!
> Мужчины, вам не кажется, что такие вещи лучше под пиво IRL
> обсуждать?
>
> З.Ы.
> Серёг, у тебя мой телефон-то остался? Проявишься - звони.
>


OK. У меня твой телефон, который на 382.


 
Ega23 ©   (2011-06-23 12:26) [152]


> OK. У меня твой телефон, который на 382.


Он самый.


 
oxffff ©   (2011-06-23 12:42) [153]


> Юрий Зотов ©  


C# не является скриптовым языком, но в Вашем определении он является им.


 
Юрий Зотов ©   (2011-06-23 12:45) [154]

> Но это дополнение

Какая разница? Можно определить - значит, можно, и в этом вся суть.  А дополнение, или не дополнение - без разницы.


 
Юрий Зотов ©   (2011-06-23 12:47) [155]

> oxffff ©   (23.06.11 12:42) [153]
> C# не является скриптовым языком

Так принято считать и не более. Дорабатывам .Net - и он становится скриптовым. Будет слать SMS.


 
asail ©   (2011-06-23 12:49) [156]


> oxffff ©   (23.06.11 12:19) [150]

> но есть основная семантика, которая должна строго соблюдаться
> по стандарту

Не понял. А у bat скриптов, например, нет основной семантики, которая должна строго соблюдаться по стандарту? Т.е. пиши, че хошь - пипл (винда т.е.) схавает? Че-то я не догоняю...


 
oxffff ©   (2011-06-23 12:49) [157]


> Юрий Зотов ©   (23.06.11 12:45) [154]
> > Но это дополнение
>
> Какая разница? Можно определить - значит, можно, и в этом
> вся суть.  А дополнение, или не дополнение - без разницы.
>


Основная семантика неизменна, и ее нельзя переделать или избавиться, иначе не соответствие стандарту.


 
oxffff ©   (2011-06-23 12:52) [158]


> Юрий Зотов ©   (23.06.11 12:47) [155]
> > oxffff ©   (23.06.11 12:42) [153]
> > C# не является скриптовым языком
>
> Так принято считать и не более. Дорабатывам .Net - и он
> становится скриптовым. Будет слать SMS.


Ввиду [144].
Никак не станет скриптовым. Различные механизмы.
Поскольку MSIL .NET не поддерживает макросы.
Есть в C# dynamic , но это надстройка.


 
TUser ©   (2011-06-23 13:18) [159]

> asail ©   (23.06.11 12:18) [149]

Это свойство компилятора/интерпретатора/процессора, а не языка. Допустим, есть какие-то специализированные железки, у которых нативный язык - высокого уровня. И что?


 
Игорь Шевченко ©   (2011-06-23 13:26) [160]


>  И что?


А ничего. В специализированные железки встроен интерпретатор.

Гуманитариям молчать и слушать!



Страницы: 1 2 3 4 5 вся ветка

Форум: "Прочее";
Текущий архив: 2011.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.83 MB
Время: 0.016 c
15-1308774596
Юрий
2011-06-23 00:29
2011.10.16
С днем рождения ! 23 июня 2011 четверг


2-1308748384
Alex_C
2011-06-22 17:13
2011.10.16
Как форме перхватить нажание VK_LEFT?


2-1309147071
Gu
2011-06-27 07:57
2011.10.16
Проверить GUID


2-1308890972
Wryyyyyy
2011-06-24 08:49
2011.10.16
Query.Parameters


6-1243060061
apic
2009-05-23 10:27
2011.10.16
настройка сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский