Полиглот, Программирующий: создает приложения с несколькими языками хорошая практика?

10
задан Nick Haddad 26 September 2008 в 20:11
поделиться

11 ответов

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

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

12
ответ дан 3 December 2019 в 14:12
поделиться

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

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

6
ответ дан 3 December 2019 в 14:12
поделиться

Ja, bien sur, mein freund. Это - un'idea meravigliosa действительно. Удав sorte.

Я шучу, конечно. Веб-разработчик каждый день делает это без того, чтобы даже замечать: Java, JSP, EL/OGNL, HTML, CSS, JavaScript, муравей, XML, XSLT...

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

5
ответ дан 3 December 2019 в 14:12
поделиться

Да. Много программ являются смесью высокоуровневого языка, как Python или Ruby и низкоуровневый язык как C. Вы извлекаете пользу из кодирования логики на собравшем "мусор" языке OO и можете все еще вручную управлять регистрами в трудных внутренних циклах.

3
ответ дан 3 December 2019 в 14:12
поделиться

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

Иначе просто выберите корневой язык, жемчуг и рубин используют c, таким образом, их объединение довольно просто. Вы могли также запустить Python (jython) или рубин (jrunby) на Java VM, который даст Вам Java как бэкенд. Хотя это могло бы обеспечить некоторые другие проблемы, поскольку я не знаком с разработкой против тех версий соответствующих языков.

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

Удачи,

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

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

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

@Zorkerman

У меня есть опыт и с Jython и с JRuby... намного больше с JRuby.

Я должен сказать, что они - большие платформы, и Вы извлекаете огромную пользу из динамических языков, ПЛЮС богатая 3-я и 1-я партийная поддержка библиотеки Java, ПЛЮС скомпилированный язык очень независимой от платформы основы, ПЛЮС сборка "мусора" на обоих языках (важно понять управление памятью, но я имею лагерь, что Вы - более обеспеченное предотвращение его, если Вам ДЕЙСТВИТЕЛЬНО не нужен он, такой, как будто Вы делаете драйверы или материал уровня ядра или материал, которым нужна каждая унция производительности, которую можно собрать).

Я просто хочу дать быструю историю. Я недавно создавал рубиновый сценарий для индексации экземпляра Solr, и я должен был получить доступ к базе данных DB2 (источник наших данных, которые будут индексированы). Прямой Ruby потерпел полный провал..., он имеет ужасную поддержку DB2, которая требует полной установки выпуска экспресса DB2..., который все еще не работал, как рекламируется (я не мог скомпилировать драйверы Ruby после того, как я закончил установку). Решение состояло в том, чтобы просто переключиться на JRuby и использовать JDBC со стороны Ruby, с помощью пары легкого установить банки (и очень очень Намного меньшие файлы, чем установка DB2).

Я определенно высоко советовал бы рассматривать JRuby или Jython вместо того, чтобы использовать C в качестве Вашего бэкэнда... Я нашел, что алгоритм и производительность ресурса обычно оказывают намного намного большее влияние на производительность приложения, чем язык, который Вы выбираете, и платформа Java имеет так много для предложения (и это проделало длинный путь с первых лет, когда люди порицали его как значительно медленнее, чем C/C++). Если Вы не делаете очень тяжелое вычисление интенсивные вещи, которые не могут быть пересмотрены алгоритмически, Вам, скорее всего, не будет нужно к выпадающему на скомпилированный язык, независимо от Вашего выбора.


PS интеграция с Java в JRuby является очень бесшовной (от JRuby до стороны Java так или иначе), так поддержание моста, не является проблемой. Jython я думаю, является тем же, но снова мой опыт с ним намного меньше.

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

Стоит отметить, что Схема Гамбита и Курица (и несколько других реализаций в этом отношении) выполненный в интерпретируемом режиме, и могут затем быть скомпилированы вниз в C.

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

Я думаю, что это - хорошая идея.

Начиная с большинства (почти все?) Ose записаны в C или C++, каждый динамический или интерпретируемый язык на некотором уровне, отступающем к скомпилированному, оптимизированному языку для низкоуровневого материала.

1
ответ дан 3 December 2019 в 14:12
поделиться

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

Целый доступ к данным в SQL, презентация в HTML/CSS, кажется, необратима.

Вещь XML немного утомительна: некоторые люди пытаются сделать все в XML, как будто XML имеет волшебные полномочия сделать программное обеспечение лучше.

Кроме того, существует изрядная степень избыточности из-за нескольких языков. Вся привязка языка межнационального общения означает, что вещи записаны дважды, однажды на каждом языке.

1
ответ дан 3 December 2019 в 14:12
поделиться

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

Один пример находится в игровом программировании. Во многих играх критический по отношению к производительности игровой механизм записан в C, в то время как вещи как сценарии уровня сделаны в Python, Схеме, языке собственной разработки или что бы то ни было.

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

0
ответ дан 3 December 2019 в 14:12
поделиться
Другие вопросы по тегам:

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