Когда язык считают языком сценариев? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

107
задан 10 revs, 5 users 55% 23 May 2017 в 11:47
поделиться

35 ответов

Также вы можете посмотреть этот подкаст о языках сценариев .

0
ответ дан 24 November 2019 в 03:35
поделиться

Перефразируя Роберта Себесты в Concepts of Programming Languages :

Язык сценариев используется путем помещения списка команд, называемого сценарием, в файл для выполнения. Первый из этих языков, названный sh (для оболочки), начался как небольшой набор команд, которые интерпретировались как вызовы системных подпрограмм, которые выполняли служебные функции, такие как управление файлами и простая фильтрация файлов. К этой основе были добавлены переменные, состояния потока управления, функции и различные другие возможности, и в результате получился законченный язык программирования.

И затем у вас есть такие примеры, как AWK , Tcl / Tk , Perl (в котором говорится, что изначально это была комбинация между sh и AWK , но он стал настолько мощным, что он считает его «странным, но полноценным языком программирования. "). Другие примеры включают CGI и JavaScript.

0
ответ дан 24 November 2019 в 03:35
поделиться

Даже Java является «языком сценариев», потому что он реализован на C »

Хотя я не решаюсь попытаться улучшить почти идеальный ответ mgb , факт в том, что нет ничего лучше C для реализации, но язык довольно низкоуровневый и близок к аппаратному обеспечению. Безусловно, чистый гений, но для разработки современного ПО нам нужен язык более высокого уровня, который, так сказать, стоит на плечах C.

Итак, у вас есть Python, Ruby, Perl и да, даже Java, все реализовано в C. Люди не оскорбляют Java, называя ее языком сценариев, но это так. Если вам нужен мощный, современный, динамичный, рефлексивный язык, бла-бла-бла, вы, вероятно, используете что-то вроде Ruby, которое либо интерпретируется непосредственно на C, либо компилируется до чего-то, что интерпретируется / компилируется JIT какой-нибудь программой C.

Другое различие, которое делают люди, - это называть языки с динамической типизацией "

-1
ответ дан 24 November 2019 в 03:35
поделиться

просто для краткости

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

Очень популярные языки программирования (Java, C #) работают внутри «родительской» программы - например, языки сценариев. Сегодня языки сценариев используются для создания сложного программного обеспечения. В наши дни компьютеры настолько быстры, а языки сценариев настолько эффективны, что для большинства бизнес-операций нет практического преимущества в скорости (которое когда-то было) с помощью скомпилированного языка программирования.

0
ответ дан 24 November 2019 в 03:35
поделиться

Как заметил кто-то другой, компилируемого или интерпретируемого языка не существует, поскольку любой язык может быть либо скомпилирован, либо интерпретирован. Но языки, которые традиционно интерпретировались, а не компилировались (Python, Perl, Ruby, PHP, JavaScript, Lua), также называются языками сценариев. Поэтому относительно разумно сказать, что язык сценариев - это язык, который обычно интерпретируется, а не компилируется. Другие общие характеристики языков сценариев связаны с их интерпретацией.

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

0
ответ дан 24 November 2019 в 03:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: