Языки сценариев и скомпилированные языки для веб-разработки
Хотя я исхожу из чисто PHP-фона на стороне разработки веб-разработки, я также провел много времени с С# и С++ на рабочем столе.
Я не хочу, чтобы зажигать любые пламенные войны, но:
Когда вы должны использовать языки сценариев над скомпилированными языками для разработки веб-сайта?
(и наоборот)
Чтобы уточнить, для этого вопроса я определяю "язык сценариев" как означающий интерпретируемый язык, такой как PHP, Python или Ruby, а "скомпилированный язык" означает строго типизированный скомпилированный язык, такой как С#, С++, Java или VB.
Ответы
Ответ 1
Это зависит: -)
На...
- ... где и как вы хотите развернуть приложение
- ... наборы навыков инженеров в вашей организации.
- ... какие сторонние компоненты вы хотите интегрировать или включить
Развертывание
Если вам нужно иметь возможность развертывать решение на любом из десятков различных возможных платформ, вы можете обнаружить, что вам лучше работать с PHP, чем Java (например). Существуют сотни тысяч хостинг-провайдеров Java, но, вероятно, есть миллионы хостинг-провайдеров PHP. (И я говорю это как Java-руководитель, который в лучшем случае находит PHP "так себе".)
Это относится и к ОС. Моно в стороне..Net-материал собирается ограничить вас развертыванием на базе Windows (или отстает от самого передового опыта и должен очень, очень тщательно проверять каждый сторонний компонент, который вы вводите, чтобы убедиться, что у него нет Mono... вопросы).
Наборы компетенций
Выполнение скорости в среде или языке является нетривиальным. Для большинства из нас, выбирая основы, довольно быстро, но вы не можете принимать лучшие архитектурные/дизайнерские решения, потому что вы (сравнительно) слабы в среде/языке. Количество скиллсов.
В связи с этим: количество набранных навыков Skillset. Легче ли (и/или дешевле) нанимать PHP-разработчиков с 3-4-летним опытом или Java-разработчиками с 3-4-летним опытом, или С# devs, или...?
Покупка/поиск/интеграция против здания
В вашей целевой области разработки, с которой на серверные компоненты или пакеты вы хотите интегрироваться? PHP имеет массив обширный доступных для него вещей, как и Java, как и С# или ASP.Net. Но они разные (по большому счету), поэтому вы захотите посмотреть, что вы на самом деле хотите использовать.
Заключение
Итак, я думаю, что это не вопрос компиляции и сценариев (в современном мире), а более того, что лучше всего подходит по другим критериям для того, что вы пытаетесь сделать.
Добавление: Both/And
И, конечно, всегда есть "и/и". Например, сейчас я работаю в двух основных, несвязанных средах, используя комбинацию сценариев и скомпилированных ресурсов. (Один из них - Java + JavaScript через Rhino на Tomcat, другой - скомпилированные COM-объекты + JScript [снова, серверная сторона] в IIS.)
Ответ 2
Программист может писать хороший/плохой быстрый/медленный масштабируемый/незащищенный код на любом языке. Хотя, некоторые языки и технологии усложняют работу. По моему опыту, с помощью языков сценариев вы можете создавать приложения малого и среднего масштаба быстрее, чем вы можете с помощью компилируемых языков, таких как Java. Однако, поскольку приложения растут по размеру, скомпилированные языки становятся более подходящими для задачи, я думаю, что это происходит от строго типизирующих объектов, более глубоких слоев архитектуры для управления задачами, и больше каркасов QA для проверки того, что все работает, поскольку они должны быть такими, как происходят изменения.
Ответ 3
Я считаю, что это в основном вопрос. Сначала я ненавидел предварительно скомпилированные веб-приложения asp.net, но я привык к этому, поэтому больше не ненавижу. Он имеет преимущества и преимущества:
Pro
- предварительно скомпилированные веб-приложения легко развертываются, часто вам нужно только обновить каталог bin
- предварительно скомпилированные веб-приложения хорошо работают
- Вам не нужно загружать исходный код, что приятно imho.
Con
- обновление предварительно скомпилированного веб-приложения обычно означает, что веб-приложение reset, поэтому, если вы не изменили состояние сеанса, оно закончит все сеансы и выведет всех из себя.
- перестройка большого веб-приложения может занять некоторое время, которое добавляется к тому времени, когда вам потребовалось записать изменения в первую очередь. Я иногда нетерпелив.
Мне всегда нравилось, как легко просто обновлять один файл в проекте PHP без необходимости перестраивать проект или что-то в этом роде. С другой стороны,.net имеет приятную среду IDE, которая позволяет вам отлаживать все, от конца (С#, VB.net) до конца (Javascript), в одном пакете.
Но снова; оба имеют преимущества и недостатки.
Ответ 4
Я бы не нарисовал столь резкое различие между скомпилированными и интерпретируемыми языками - это действительно просто детали реализации и со временем меняются (быстрее, чем сами языки меняются). Случайный момент - благодаря Facebook, PHP теперь является "скомпилированным языком" . Еще один пример - мне нравится веб-разработка с Схема - и моя предпочтительная Схема реализация теперь запускает виртуальную машину и в этом смысле по крайней мере скомпилирована как Java.
Таким образом, я думаю, что вопросы, на которые следует обратить внимание, - это выразительность языка, его производительность и простота развертывания - скомпилированные или интерпретируемые - важны только в той мере, в какой это относится к этим вещам.
Ответ 5
Я большой поклонник скомпилированных языков во всем мире, если не более, чем статическая типизация. С другой стороны, языки сценариев очень удобны - нет двоичных файлов для обработки, только текстовые файлы, что является большой победой для веб-серверов.
В конце концов, это не имеет значения - используйте любой язык, который вы знаете, и чувствуете себя наиболее комфортно для работы.
Ответ 6
Я думаю, что скорость является ключевой проблемой в веб-приложении, в частности
- как быстро писать код
- насколько быстро он исправляет мой код
- как быстро реорганизовать мой код.
- насколько быстро он проверяет мой код
То есть меня беспокоит скорость самой медленной связи: я. Все остальное достаточно быстро для загрузок, подобных Twitter.
Сегодня номер один в моем оценочном списке для нового проекта будет Tornado и Python.
Если бы у меня был выбор платформ, конечно.
А, Python среди самых быстрых в языках сценариев.
Ответ 7
Для языков сценариев любой, у кого есть копия вашего программного обеспечения, может потенциально изменить ваш исходный код, потому что он с открытым исходным кодом.
Для языков программирования любой, у кого есть копия программного обеспечения, не может просто изменить ваш исходный код, потому что он скомпилирован.
Думаю, это зависит от ваших предпочтений.