Когда его достаточно для языка программирования, который нужно переключить на другой? - PullRequest
1 голос
/ 01 февраля 2010

Я удивляюсь, что многие большие приложения (например, социальные сайты, такие как Facebook) встроены в его платформу со многими языками.

Обычно они начинаются с поддержки браузера AJAX, затем переходят к сценариям PHP, затем переходят к мощным технологиям ООП, таким как Java или .NET, и, наконец, к примитивному языку для повышения производительности в таких важных операциях, как C.

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

Какие контекстные переменные побуждают меня перейти на язык с более высокой производительностью? (например, проблемы параллелизма из-за увеличения количества пользователей)

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

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

Best, Демьян.

Ответы [ 5 ]

1 голос
/ 01 февраля 2010

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

С другой стороны, вы переходите на язык более высокого уровня (т. Е. Больше абстракции, лучшие библиотеки) всякий раз, когда ваше руководство позволяет это сделать. ;)

0 голосов
/ 01 февраля 2010
  1. Определить узкое место
  2. Устранить узкое место
  3. Перейти к 1

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

0 голосов
/ 01 февраля 2010

С экономической точки зрения ответ прост: регулярно смотрите, что будет дешевле. Либо продолжайте с текущей технологией и, возможно, растяните оболочку немного больше. Или переключиться на что-то новое. Когда вы сравниваете две альтернативы, стоимость уже сделанных инвестиций уже не важна, поскольку вы уже потратили эти деньги / усилия. Вам остается только смотреть в будущее: стоимость лицензий, образование и т. Д.

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

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

0 голосов
/ 01 февраля 2010

Мой критерий для любого языка программирования: «Помогает ли мне выполнить работу или он мешает?» Если последнее, то пора двигаться дальше.

0 голосов
/ 01 февраля 2010

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

Есть также вопросы лицензирования, которые могут повлиять на решение.

То есть, если вы говорите о технологиях, которые сравнивают друг с другом и решают проблему на одном уровне (например, ASP.NET/JSF/JSP/PHP ...). Но вы не можете сравнить .NET с C ++, например, они предназначены для решения разных задач на разных уровнях абстракции.

...