Языки сценариев по сравнению со Скомпилированными Языками для веб-разработки

Хотя я происхожу из просто фон PHP на стороне веб-разработки программирования, я также провел много времени с C# и C++ на рабочем столе.

Я действительно не хочу зажигать любые войны пламени, но:

Когда необходимо использовать языки сценариев по скомпилированным языкам для разработки веб-сайтов?
(и наоборот)

Просто для уточнения, ради этого вопроса, я определяю "язык сценариев", чтобы означать интерпретируемый язык как PHP, Python, или Ruby и "скомпилированный язык" означать скомпилированный язык со строгим контролем типов как C#, C++, Java или VB.

12
задан Austin Hyde 3 June 2010 в 13:02
поделиться

5 ответов

Это зависит: -)

От ...

  • ... где и как вы хотите развернуть приложение
  • ... навыков инженеров в вашей организации
  • ... какие сторонние компоненты вы хотите интегрировать или включить

Развертывание

Если вам нужно иметь возможность развернуть решение на любой из десятков различных возможных платформ, вы можете обнаружить, что вам лучше использовать PHP, чем Java (например). Существуют сотни тысяч провайдеров хостинга Java, но, вероятно, миллионы провайдеров хостинга PHP. (И я говорю это как Java-глава, который находит PHP в лучшем случае «таким уж».)

Это также относится и к ОС. Помимо Mono, материал .Net будет ограничивать вас развертыванием на базе Windows (или отставанием от передовых технологий и необходимостью очень, очень тщательного тестирования каждого добавляемого вами стороннего компонента, чтобы убедиться, что в нем нет Mono ...вопросы).

Наборы навыков

Быстро освоить среду или язык нетривиально. Для большинства из нас освоение основ происходит довольно быстро, но вы, возможно, не принимаете лучших архитектурных / дизайнерских решений, потому что вы (сравнительно) слабы в среде / языке. Подсчитываются наборы навыков.

В связи с этим: Прием на работу квалификационной группы имеет значение. Что проще (и / или дешевле) нанять разработчиков PHP с опытом работы 3-4 года, разработчиков Java с опытом работы 3-4 года, разработчиков C # или ...?

Покупка / поиск / интеграция vs . building

С какими серверными компонентами или пакетами вы хотите интегрироваться в вашей целевой области разработки? PHP имеет обширный набор вещей, доступных для него, как и Java, как и C # или ASP.Net.Но это разные вещи (по большому счету), поэтому вы захотите посмотреть, что вы действительно хотите использовать.

Заключение

Так что я думаю, что дело не столько в скомпилированном против скриптовом (в современном мире)), а в том, что лучше всего подходит по другим критериям для что вы пытаетесь сделать.

Приложение: И / И

И, конечно, всегда есть «И / И». Например, сейчас я работаю в двух основных, не связанных между собой средах, в обеих использую комбинацию скриптовых и скомпилированных ресурсов. (Один из них - это Java + JavaScript через Rhino на Tomcat, другой - это скомпилированные COM-объекты + JScript [опять же, на стороне сервера] на IIS.)

18
ответ дан 2 December 2019 в 06:07
поделиться

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

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

0
ответ дан 2 December 2019 в 06:07
поделиться

Я думаю, что скорость является ключевым фактором в веб-приложении, в частности

  • как быстро писать мой код
  • как быстро исправлять мой код
  • как быстро рефакторить мой код
  • как быстро тестировать мой код

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

Сегодня номером один в моем списке оценки нового проекта были бы Tornado и Python.

Если бы у меня был выбор платформ, конечно.

А, Python - один из самых быстрых скриптовых языков.

0
ответ дан 2 December 2019 в 06:07
поделиться

Программист может написать хороший/плохой быстрый/медленный масштабируемый/нестабильный код на любом языке. Хотя некоторые языки и технологии усложняют эту задачу. По моему опыту, с помощью скриптовых языков вы можете создать приложение малого и среднего масштаба быстрее, чем с помощью компилируемых языков, таких как Java. Однако по мере роста размеров приложений компилируемые языки становятся более подходящими для решения этой задачи. Я думаю, это происходит благодаря сильной типизации объектов, более глубоким уровням архитектуры для управления задачами и большему количеству QA-фреймворков для проверки того, что все работает так, как должно, по мере внесения изменений.

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

Я считаю, что это в основном вопрос мнения. Сначала я ненавидел предварительно скомпилированные веб-приложения, которые предоставляет asp.net, но я привык к ним, поэтому больше не ненавижу их. У него есть свои преимущества и недостатки:

Pro

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

Con

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

Мне всегда нравилось, насколько просто обновить один файл в проекте PHP без необходимости перестраивать проект или что-то в этом роде, с другой стороны, .net имеет красивую среду IDE, которая позволяет вам отлаживать все, от серверной части (C #, VB.net) до клиентской части (Javascript) в одном пакете. Но опять же; у обоих есть преимущества и недостатки.

2
ответ дан 2 December 2019 в 06:07
поделиться
Другие вопросы по тегам:

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