Наиболее подходящий язык разработки, не зависящий от платформы

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

Еще несколько подробностей о коде, который я буду писать:

  1. Графического интерфейса не будет.

  2. Ему нужно будет взаимодействовать с другим специальным устройством «черный ящик» по сети Ethernet.

  3. Ему нужно будет взаимодействовать с базой данных MySQL где-то в сети.

  4. У меня нет проблем с производительностью, так как а) количество взаимодействий с черным ящиком будет небольшим, около 1 в секунду, а объем передаваемых данных будет крошечным (около 1 КБ каждый раз), б) количество чтений /writes с базой данных будет небольшим, около 5 в минуту, и опять же объем данных, которыми обмениваются, будет крошечным и c) обработка, которую необходимо выполнить, довольно упрощена.

  5. Ничто из того, что я делаю, не очень близко к металлу, поэтому я не хочу использовать языки слишком низкого уровня. Простота разработки и простота развертывания — мои главные приоритеты.

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

Я был бы признателен за ваши мысли о том, какой язык разработки вы считаете наиболее подходящим.

Ваше здоровье,

Джим


person Community    schedule 28.05.2009    source источник


Ответы (8)


Лично я бы выбрал приличный язык сценариев, такой как Python, Perl или Ruby. Все они имеют достойную поддержку библиотек, могут легко взаимодействовать как с локальными, так и с удаленными базами данных MySQL и практически не зависят от платформы.

person workmad3    schedule 28.05.2009

Первое, что нам нужно знать, это то, какие языковые навыки у вас уже есть? Это, вероятно, будет довольно большим фактором, определяющим, какой выбор вы бы сделали в идеале.

Если бы я делал это, я бы предложил Java по нескольким причинам:

  1. Он будет работать практически везде и будет соответствовать указанным вами требованиям.
  2. Это не эзотерический язык, поэтому разработчиков будет много.
  3. Я уже умею в нем программировать!
  4. Вероятно, самая обширная библиотечная экосистема среди всех платформ разработки.

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

person BenM    schedule 28.05.2009

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

person Community    schedule 28.05.2009

Что касается языков сценариев и Java, я был разочарован разработкой инструментов командной строки с использованием Java. Вы не можете выполнить их напрямую, вам нужно (1) скомпилировать их и (2) написать сценарий оболочки для выполнения файла jar, этот сценарий может отличаться для разных платформ. Я рекомендую Python, потому что он работает везде и имеет отличную библиотеку SQL, mysql- питон. Библиотека готова к использованию в Windows и Linux. Python также имеет гораздо меньше шаблонов, вы будете писать меньше строк кода, чтобы сделать то же самое.

РЕДАКТИРОВАТЬ: когда я говорил о том, что JAR-файлы исполняемые или нет, я говорил о том, являются ли они исполняемыми напрямую в ОС. Вы можете, конечно, дважды щелкнуть по ним, чтобы запустить их, если ваш файловый менеджер настроен на это. Но когда вы находитесь в окне терминала и хотите запустить java-программу, вам нужно «java -jar myapp.jar» вместо обычного «./myapp.jar». В Python можно просто запустить "./myapp.py" и не нужно беспокоиться о компиляции или путях к классам.

person Dietrich Epp    schedule 28.05.2009
comment
Гм, нет, вам не нужно (нужен пакетный файл/скрипт для запуска программ Java). Вы можете упаковать исполняемые файлы jar. - person cletus; 28.05.2009
comment
Я бы согласился с предложением Java. Другие авторы предлагали Python или Ruby и т. д., но поддержка на платформах, отличных от x86, может быть фрагментарной — вы можете получить версию для большинства платформ, но не обязательно для всех необходимых вам библиотек. Кроме того, я бы серьезно рассмотрел sqlite, а не MySql, если вы действительно хотите поддерживать любую платформу (поддержку платформы sqlite можно резюмировать как все, кроме nintendo DS - person James Anderson; 28.05.2009
comment
Но, возможно, ему нужен многопользовательский доступ к базе данных, и в этом случае SQLite на самом деле не работает. - person ; 28.05.2009
comment
Просто примечание: вы можете сделать исполняемый файл Jar, включив атрибут Main-Class с именем класса в файл манифеста jars. См. java.sun.com/j2se/1.3. /docs/guide/jar/jar.html#Main%20Attributes для получения дополнительной информации. - person BenM; 28.05.2009
comment
База данных MySQL будет находиться на отдельной сетевой машине, поэтому, скорее всего, она будет многопользовательской и может быть установлена ​​на соответствующей машине на сайте. - person workmad3; 28.05.2009

Если все платформы являются стандартными ПК (или, по крайней мере, работают под управлением Linux), то следует рассмотреть Python. Вы можете скомпилировать его самостоятельно, если для вашей версии не существует пакета. Кроме того, вы можете легко удалить из стандартной библиотеки вещи, которые недоступны и которые вам не нужны (например, поддержка звука).

Python не требует много ресурсов, его легко изучать и читать.

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

person Aaron Digulla    schedule 28.05.2009
comment
Плюс несколько отличных модулей, установленных повсюду, включая батареи. - person MrHus; 28.05.2009

Perl может вам помочь, так как он доступен для многих платформ, и вы можете получить практически любую функциональность, просто установив модули с CPAN.

person Alan Haggai Alavi    schedule 28.05.2009

Питон или Ява. Их обоих легко развернуть как в серверных средах, так и в настольных средах, которые вы упомянули, то есть в Linux/Solaris и Windows.

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

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

person JeeBee    schedule 28.05.2009

Я бы сказал, используйте C или C++. Они не зависят от платформы, хотя вам придется компилировать для каждой платформы.

Или используйте Яву. Он работает на виртуальной машине, поэтому он действительно кроссплатформенный, а не медленный, как C.

person ddd    schedule 28.05.2009
comment
+1 Ява. Я никогда не использовал его, но это то, для чего он был создан, верно? - person Assembler; 28.05.2009
comment
Ага. Java — действительно мощный язык, и в большинстве случаев он может работать так же быстро, как C. Все еще есть много проблем, но я не думаю, что они повлияют на ОП. Я также не писал Java в течение 2-3 лет. Теперь я люблю .NET :) - person ddd; 28.05.2009
comment
-1 для C/C++ (на основе требований OP), но +1 для Java, так что я думаю, что это выравнивается до 0. - person cletus; 28.05.2009
comment
Да, программирование кросс-платформенных сокетов на C или C++ — это не смешно. - person ; 28.05.2009
comment
С/С++? Действительно? Один из самых зависимых от платформы языков, где вы должны беспокоиться о порядке следования байтов, длине в битах и ​​ограничениях для всего, кроме самых тривиальных вещей? Низкоуровневые языки, которые трудно изучить и которые не имеют никакой поддержки стандартной библиотеки ни для доступа к базе данных, ни для сетевого взаимодействия, когда ОП прямо сказал, что производительность не является проблемой, а простота обучения и разработки? - person MestreLion; 01.06.2016