2009-06-11 3 views
4

Мне нужно написать чрезвычайно легкую программу (попытка получить ниже 8Kb), которая выполняет некоторую простую математику. Язык также должен быть независимым от платформы. Какой язык, по вашему мнению, будет работать лучше всего? (О, и никакие рамки не допускаются.)Платформа Независимый, легкий язык программирования

+5

Как вашей программе будет работать? Автономный, в браузере, командной строке? Будет ли он распространяться среди пользователей или он будет запущен на вашем компьютере? – Billy

ответ

7

C. Разумеется, вам нужно скомпилировать отдельно для каждой платформы, но кроме этого, она довольно легкая и независимая от платформы (или мультиплатформенная, в зависимости от того, какое выражение вы предпочитаете).

+0

Будьте осторожны с компилятором. Некоторые (большинство?) Будут создавать массивные исполняемые файлы (сравнительно). –

+0

Он говорит о простой математике и ориентации на Linux/Windows. Я не знаю, что происходит в Windows, но в Linux я не могу представить себе нелокализованный компилятор, который вы не можете выжать из двоичного кода 8 КБ из-за чего-то менее 150-200 строк незаметного С. Просто убедитесь, что разделите двоичный код. –

+0

Есть, конечно, разные компиляторы, но я думаю, что большинство из них вполне адекватны в этом отношении: C по существу не намного больше, чем удобочитаемый язык ассемблера. На практике размер исполняемого файла во многом определяется статически связанными библиотеками; если вы не используете такие, что еще может компилятор поставить там, чтобы сделать исполняемые файлы огромными? Конечно, C++ - совершенно другое животное. –

1

с или сборки (хотя вы должны скомпилировать для каждой платформы)

TCL является язык сценариев, кросс-платформенный (не уверен, как легкий это)

Я бы предложил Java, но VM, вероятно, преодолевает ваши требования к размеру

+1

сборка очень зависима от платформы –

+1

уверен, но 8k - довольно низкий предел, поэтому я даю ему варианты – Glen

+0

Я согласен, что если все, что вам нужно, это простая математика (что означает, по сути, не библиотеки, I/O и т. Д.), C это путь. – Zarkonnen

3

Возможно ли использовать браузер на базе браузера? Легкий и работает практически на всех платформах через браузер.

+0

Хороший звонок - я пропустил этот, и это было действительно очевидно! –

+0

Эрр, разве он не писал, что рамки не разрешены? Если веб-браузер не является каркасом, я не знаю, что это такое. –

+0

Нет, не могу туда попасть. Я на самом деле веб-дизайнер, поэтому это первое, о чем я думал. –

3

Lua - кросс-платформенный и очень легкий вес.

+0

свет, но нет легкий достаточно. Это 50-битный двоичный файл - хотя его можно было взломать ниже, удалив то, что вам не нужно. – SpliFF

0

Не уверен, что вы подразумеваете под фреймворком?

python

Почему?

  1. Он устанавливается на мои дистрибутивы Linux, OSX и может быть упакован как собственный исполняемый файл на окнах. Другими словами, пользователю вашего приложения не нужно ничего устанавливать
  2. Это действительно легко изучить.
+0

windows не поставляется с python, поэтому, даже если скрипт py <8kb, все это будет несколько MB. – sqram

+0

ах, это правда, не думал об этом. –

4

Какие платформы предназначены для таргетинга на программы?

До сих пор мы имеем следующие требования:

  • Программа должна находиться под 8 килобайт.
  • Должно быть не зависит от платформы.
  • Без рамки.

Вот некоторые вопросы:

  • Может ли программа 8 KB быть скрипт для языка сценариев?
  • Насколько велика среда выполнения для программы?
  • Должен ли программа быть собственным кодом самостоятельно?
  • На каких целевых платформах должен работать код?
  • Является ли кросс-компиляция кода для каждой платформы опцией?

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

Если цель - встроенное устройство или не-x86, то вероятность того, что выбор будет ограничен, будет ограничен. Небольшие встраиваемые langugages, такие как Lua, все еще могут использоваться (написаны на C), но для выполнения скрипта потребуется довольно большая «среда выполнения».

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

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

+0

Вы пропустили одно из требований: «без рамок разрешено», поэтому я предполагаю, что язык сценариев не учитывается ... – fretje

+0

@fretje: Я не совсем уверен, что время выполнения скриптов можно считать «каркасом», но это дополнительное требование, которое было упомянуто, поэтому я добавлю его к ответу. Спасибо, что указали это! :) – coobird

+0

Программа ориентирована на Linux и Windows, я сомневаюсь, что мне нужно будет нацелить что-нибудь еще. Никаких языков сценариев не разрешено, действительно, программа должна быть автономным исполняемым файлом. Я узнаю о других вопросах. –

1

dc

Это в основном преувеличены калькулятор, но это 25К и застежки-молнии вплоть до 12K. Он также выполняет некоторые строковые операции, макросы и запускает внешние процессы. Вы не найдете гораздо меньше, не написав его сами. Доступны исходные и win32-файлы.

0

Беспин из Mozzila - это онлайн-среда. Так что, по определению, платформа независима. Попыться связаться с https://bespin.mozilla.com/

3

0 приблизительно Forth?

+0

Если вы не можете получить хорошую среду Forth под 8K, вы не пытаетесь. : D –

0

Даже C требует времени выполнения. Только реалистичный ответ на этот вопрос - это dc или даже собственный калькулятор, который выполняет скрипты, реализованные на C. (Такой калькулятор может быть меньше, чем dc, если он не зависит от точности алгоритма).

0

Вы будете удивлены, как много вы можете получить сделано меньше, чем 4k Ява:

http://www.java4k.com/

Конечно, это не включает в себя JVM :-)

Смежные вопросы