Там какие-либо недостатки на язык, являющийся независимым от платформы?

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

5
задан Josh 14 February 2010 в 16:27
поделиться

8 ответов

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

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

Кроме того, хотя этот слой предназначен для обеспечения универсального поведения на разных платформах, вам все равно придется учитывать различия в соглашениях об именовании и хранении файлов на разных платформах.

Наиболее распространенным примером этого являются веб-браузеры. Если у вас хороший браузер, он интерпретирует код веб-стандарта (HTML/CSS/JS и т.д.) и заботится о том, как отобразить его на вашей конкретной платформе, вместо того чтобы автор кода должен был учитывать эти различия.

2
ответ дан 14 December 2019 в 08:49
поделиться

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

-121--2139985-

Аналогичная проблема, другое решение

$ sudo gem install rubygems-update update_rubygems
Updating metadata for 1 gems from gems.rubyforge.org/
.
complete
ERROR:  Error installing rubygems-update:
        rubygems-update requires builder (>= 0)
ERROR:  could not find update_rubygems locally or in a repository

и

$ sudo gem update --system
ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.                      

Мое решение: Перейдите к http://docs.rubygems.org/read/chapter/3#page13

и установите вручную, т.е. получите rubygems.... tgz и установить его.

Надеюсь, это кому-то поможет.

-121--2934086-

Common Lisp подобен тематическому исследованию на этом!: -)

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

Другими способами, они пытались быть независимыми от платформы, и это просто добавило сложности с небольшим выигрышем или без него. Одним из классических примеров является подсистема «pathname»; сигнатура функции make-pathname выглядит так:

make-pathname &key host device directory name type version defaults case

Еще в 1980-х годах, когда она была стандартизирована, было бы разумно включить встроенную поддержку очень богатых файловых систем, но я не видел VAX (или любую другую систему с файловой системой с версией) более 10 лет. Сегодня сложность состоит в том, что большинству людей плевать на . (Я знаю, что имена путей и логические имена путей являются технически отдельными функциями, но они не так уж и далеки от того, что они пытаются сделать.)

Как программист, вы никогда не сможете угадать, в какой области вам понадобится гибкость в будущем, или даже на какой оси вы захотите гибкости - программисты хорошо это знают, поэтому такие сырые слова, как «agile», стали обычным явлением. При разработке независимого от платформы языка вы имеете дело с худшим из обоих миров: языки для абстракции, а платформы очень конкретные. Конечно, каждый независимый язык платформы полон приличного количества отстой, от Си на вверх.

0
ответ дан 14 December 2019 в 08:49
поделиться

Как насчет «Мастер на все руки, мастер на все руки»?

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

Это не относится к усилиям сообщества, где ресурсы в изобилии, например Perl.

2
ответ дан 14 December 2019 в 08:49
поделиться

Спросите Солнце. Как вообще все Java получилось для компании? (да, я знаю, пример 1 и все)

В данном случае я смотрю на это с точки зрения производителя. Они создали язык, который, хотя и был популярен, никак не использовал (реальную!) Мощность продаваемой ими ОС. Он должен был работать в Windows со всей этой ужасающей чепухой. Вы хотите отделить дочерний процесс и открыть канал или два между родительским и дочерним процессами? Печалька. Получайте удовольствие от ошибок ваших веток. Получайте удовольствие от медленного ввода-вывода файлов. (когда, если вообще когда-либо, Java, наконец, включала реализацию "nio" ?)

Microsoft, конечно, не сделала такой ошибки с .NET. И они сосредоточились на улучшении языковых функций вместо того, чтобы тратить ресурсы на несколько реализаций среды выполнения.

0
ответ дан 14 December 2019 в 08:49
поделиться

Основные недостатки:

  • Дополнительное время для разработки из-за различий в платформах (например, доступ к файловой системе отличается на разных платформах)
  • Требуется гораздо больше тестирования и следовательно, гораздо больше затрат на тестирование на нескольких поддерживаемых платформах.
0
ответ дан 14 December 2019 в 08:49
поделиться

Есть ли недостатки у языка (задается в заголовке), независимого от платформы?

Как разработчик языка, я должен сказать, что заставить что-то работать на нескольких платформах - это лот больше работы. Большая часть дополнительной работы выполняется в системе времени выполнения. Сделать что-то платформенно-независимое еще сложнее; вы должны придерживаться какого-то очень широко используемого стандарта, такого как ANSI C.

Я должен добавить, что вам не обязательно писать много кода; тебе просто нужно больше думать. Lua - хороший пример платформенно-независимого языка без огромной реализации. GHC - противоположность: много кода для обеспечения высокой производительности на многих платформах, но одна только исполняющая система в четыре раза больше Unix версии 6!

2
ответ дан 14 December 2019 в 08:49
поделиться

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

0
ответ дан 14 December 2019 в 08:49
поделиться

Главный недостаток - вы не можете использовать улучшения, специфичные для платформы ...

Это более философский вопрос - где граница между языковыми возможностями и возможностями компилятора ...

вы можете писать код DirectX .. но для того, чтобы тот же результат имел место в Linux ...

1
ответ дан 14 December 2019 в 08:49
поделиться
Другие вопросы по тегам:

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