Почему JavaScript иногда рассматривается как язык низкого уровня?

StackOverflow https://stackoverflow.com/questions/1209209

Вопрос

Вдохновленный этот вопрос.

Я часто вижу людей, ссылающихся на JavaScript как на язык низкого уровня, особенно среди пользователей GWT и подобных наборов инструментов.

Мой вопрос заключается в следующем:почему?Если вы используете один из этих наборов инструментов, вы лишаете себя некоторых функций, которые делают JavaScript таким удобным для программирования:функции как объекты, динамическая типизация и т.д.Особенно в сочетании с одним из популярных фреймворков, таких как jQuery или Prototype.

Это похоже на вызов C ++ низкого уровня, потому что стандартная библиотека меньше, чем Java API.Я не программист на C ++, но я сильно сомневаюсь, что каждый программист на C ++ пишет свой собственный графический интерфейс и сетевые библиотеки.

Это было полезно?

Решение

Это язык высокого уровня, учитывая его гибкость (функционирует как объекты и т.д.).

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

Среди языков (или их подмножеств), которые могут быть скомпилированы в JS:

  • Java
  • C#
  • Хаксе
  • Цель-J
  • Рубин
  • Питон

Другие советы

Отвечая на вопрос, который говорит "почему иногда что-то называется X ..." с " это не X " полностью ли уходит вопрос, не так ли?

Для многих людей "низкий уровень" и «высокий уровень»; являются гибкими, абстрактными идеями, которые применяются по-разному при работе с различными системами. Для людей, которые не все одержимы прошлым (для некоторых людей не существует современного низкоуровневого языка), важность или низость языка обычно указывают на то, насколько близко он находится к целевой машине. является. Это включает в себя виртуальные машины, из которых браузер сейчас дней. Извините всех парней, которые жаждут АСМ на базовом оборудовании.

Когда вы смотрите на браузер как на виртуальную машину, javascript настолько близок к (фальшивому) оборудованию, насколько это возможно. Это точка зрения, которую многие, кто называет javascript «низкоуровневым» иметь. Я думаю, что это бессмысленное различие, и люди не должны зацикливаться на том, что низко, а что высоко.

"Низкий" здесь имеет то же значение, что и в предложениях "Количество потерь, понесенных в первой мировой войне, было низким" и "В мороженом с пониженным содержанием жира мало калорий". Это имеет смысл, когда есть очевидная точка сравнения, но вне контекста это просто абсурдно.

Многие люди говорят это, потому что объекты и структуры, представленные в JavaScript, настолько просты, насколько это возможно. Чтобы разработать какой-либо реальный функционал, вы должны использовать внешнюю библиотеку. Низкий уровень - плохой способ выразить это, потому что он уже имеет значение в информатике. Лучший способ сказать, что это может быть без встроенных библиотек.

Сравните это с Java, где реальный язык на самом деле ничего не делает. Попытка сделать массив без ArrayList или получить доступ к файловой системе без библиотек ввода-вывода. Большинство языков - это больше, чем просто основы, они поставляются с этой дополнительной функциональностью.

В JavaScript единственная реальная сила, которую мы получаем, - это API, представленные браузерами и не являющиеся частью языка. Такие вещи, как манипулирование DOM и Ajax, предоставляются браузером.

Может быть, лучше подытожить все это, сказав, что с таким языком, как Java, вы можете приступить к серьезной работе, не загружая сторонние библиотеки, но с JavaScript вы должны либо загрузить библиотеку, либо написать свою собственную библиотеку.

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

Это не так, он может быть настолько низкоуровневым, насколько вы можете получить в обычном браузерном программировании, но на уровне функциональных языков, таких как Scheme или Python.

Я думаю, что большим недостатком Javascript является отсутствие пространств имен или упаковки, а также отсутствие потоков

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

Многие люди, которые предпочитают писать java для генерации javascript, а не писать javascript, считают его низкоуровневым (т. Е. им это не нравится справедливо или несправедливо).В наши дни многие люди жалуются на java, но, несмотря на отсутствие статической проверки типов, большинство людей, вероятно, сочли бы, что ruby и python в большинстве случаев проще писать (java - довольно простой статический язык, который гораздо сложнее спроектировать без больших встроенных наборов функций, чем простой динамический язык).

Мало кто назвал бы python или ruby низкоуровневыми по сравнению с java, и если бы люди были вынуждены ориентироваться на виртуальные машины python или ruby, трудно представить, что компилятор java на python / ruby станет таким же популярным, как gwt.

В заключение, у javascript есть проблема с изображением (люди иногда думают, что языки становятся все более сложными по мере того, как они становятся более низкоуровневыми, и наоборот).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top