LINUX.ORG.RU

История изменений

Исправление rtxtxtrx, (текущая версия) :

Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:

counter = 0

def add():
  counter += 1

# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()

Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменная не объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… В PHP еще круче сделано там даже значение скопа выше получить нельзя, ни то что перезаписать его. Те еще больше на спичках-тактах сэкономили. Ну он и быстрее питона, тем более там многопоточности не было, а значит и страшный GIL не мог помешать планам по захвату мира. Про global я не вспоминаю, потому как и eval тот предан анафеме и за их использование нужно увольнять. Тут совершенно все иначе работает чем в той же Java

в javascript - более древний prototype-based

Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов

Исправление rtxtxtrx, :

Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:

counter = 0

def add():
  counter += 1

# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()

Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменная не объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… В PHP еще круче сделано там даже значение скопа выше получить нельзя, ни то что перезаписать его. Те еще больше на спичках-тактах сэкономили. Ну он и быстрее питона, тем более там многопоточности не было, а значит и страшный GIL не мог помешать планам по захвату мира. Тут совершенно все иначе работает чем в той же Java

в javascript - более древний prototype-based

Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов

Исправление rtxtxtrx, :

Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:

counter = 0

def add():
  counter += 1

# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()

Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводить при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java

в javascript - более древний prototype-based

Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов

Исправление rtxtxtrx, :

Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходить из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:

counter = 0

def add():
  counter += 1

# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()

Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводит при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java

в javascript - более древний prototype-based

Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов

Исходная версия rtxtxtrx, :

Тут проблема в терминологии. Одни считают статической типизацией задание типов при компиляции (классическое определение), другие - невозможность изменить тип переменной при присвоении в дальнейшем. Если исходит из хрестаматийного определения, то можно всю ее свести к тому, что автор бредит, используя правила демагога. А если применять второе определение, то JavaScript будет статически тупизированным, так как там можно объявить пременную через const и ей уже нельзя ни то что тип сменить, но и значение. В пистоне же объявление переменной работает не так как в том же js:

counter = 0

def add():
  counter += 1

# свалится с ошибкой, так как в скопе функции нет значения для `counter`
add()

Те в нем присваивание создает локальное значение в текущем пространстве имен либо его изменяет. Все максимально примитивно. Для чего оно сделано? - Для скорости, если мы будем типы приводит при присваивании, то это затратно. В JS там если переменнаяне объявлена в текущем скопе, то они ищутся в скопах выше и перезаписываются… Тут совершенно все иначе работает чем в той же Java

в javascript - более древний prototype-based

Не он не древний. Прототип - это один из джава-паттернов. Типа самый прогрессивный для своего времени, но никто эту фишку не понял, поэтому запилили сахарок в виде классов