Почему JavaScript иногда рассматривается как язык низкого уровня? - PullRequest
3 голосов
/ 31 июля 2009

Вдохновлен этим вопросом .

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

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

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

Ответы [ 8 ]

12 голосов
/ 31 июля 2009

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

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

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

  • Java
  • C #
  • Haxe
  • Цель-J
  • рубин
  • Python
3 голосов
/ 11 сентября 2009

Ответ на вопрос «почему что-то иногда называют Х ...» с «это не Х» - это полностью шаг вперед, не так ли?

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

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

2 голосов
/ 31 июля 2009

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

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

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

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

2 голосов
/ 31 июля 2009

«Низкий» здесь имеет то же значение, что и в предложениях «Число жертв, понесенных в Первой мировой войне, было низким» и «Мороженое с пониженным содержанием жира содержит мало калорий». Это имеет смысл, когда есть очевидная точка сравнения, но вне контекста это просто абсурд.

1 голос
/ 31 июля 2009

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

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

1 голос
/ 31 июля 2009

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

0 голосов
/ 05 октября 2010

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

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

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

0 голосов
/ 31 июля 2009

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

...