Какой язык лучше

Мир информационных технологий не стоит на месте и постоянно развивается. Уже появились на свет несколько десятков языков программирования и технологий разработки программного обеспечения. Однако выбрать то, что действительно подходит для разработки конкретного проекта не так просто.

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

 

Масштабные проекты (высоконагруженные системы)

Для крупных и высоконагруженных проектов (свыше 3000 запросов в секунду, от 10000 таблиц БД) необходимо максимально тщательно подбирать используемые технологии, поскольку от этого будет зависеть общая производительность проекта и его безопасность.

Для масштабных проектов в качестве бэкендов подходят 4 языка программирования: JAVA, NodeJS, PHP и ASP. Однако лучше всего использовать именно Java, поскольку он позволяет достичь наиболее оптимальной скорости работы, есть возможность поддержки многопоточности и рефакторинга. Java также отлично подходит с точки зрения скорости разработки, поскольку существует большое количество удобных фреймворков.

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

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

Когда речь касается высоконагруженных систем, следует помнить о расширяемости, поскольку именно с этой проблемой чаще всего сталкиваются разработчики. Поэтому необходимо четко продумать формат работы с базой данных. В частности, для крупных проектов стоит отказаться от привычных многим реляционных баз данных и обратить внимание на не реляционные модели, такие как MongoDB и Redis (возможно также использование CouchDB).

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

 

Проекты среднего масштаба

При разработке проектов среднего масштабного (от 1000 до 3000 запросов в секунду, от 2000 до 10000 таблиц БД), т.е. не сильно нагруженных, но и не домашних страничек, можно использовать Java и PHP. NodeJS в этом случае уже не будет показывать столь привлекательных результатов как в случае с высоконагруженными проектами.

В качестве фронтенда уже помимо HTML и JavaScript допускается использование HTML5 и Flash. Однако здесь необходимо быть крайне аккуратными. Понятие проекта среднего масштаба довольно расплывчато, поэтому необходимо опираться на поставленные перед проектом цели. Если речь идет о небольшом графическом сопровождении, то, возможно, есть смысл заменить Flash последней версией HTML (HTML5) в паре с JavaScript. Если же проект нуждается в тщательной прорисовке и полноценном сценарии графического действа, то Flash будет лучшим решением для реализации поставленной задачи.

Базой данных у проекта подобного рода может служить как не реляционная модель, так и реляционная. Все зависит от дальнейшей работы проекта. Если в будущем предполагается большой рост, то, конечно, лучше использовать не реляционные модели MongoDB или Redis. Если же особо крупного масштабирования не потребуется, то для поставленной задачи отлично подойдет Oracle. Дело в том, что Oracle, несмотря на свою реляционность, используются во многих проектах, имеющих потенциал к масштабируемости. При этом не возникает проблем расширения даже в случае использования нескольких серверов.

 

Небольшие проекты

Когда речь идет о мелких проектах (менее 1000 запросов в секунду и 2000 таблиц БД), необходимо сразу отбросить в сторону все самое сложное, что присуще высоконагруженным системам. Поэтому для разработки лучше всего подходят PHP, Ruby on the rails (этот фреймворк позволяет осуществлять быструю разработку), Erlang. Конечно, для разработки проектов такого масштаба подойдет и Java, однако значительно быстрей и проще окажется использование PHP или Ruby.

В качестве фронтенда вполне подойдут Javascript, HTML5, HTML, Flash/Flex.

Мелкие проекты чаще всего подразумевают относительно небольшой рост, поэтому в качестве БД лучше выбрать MySQL или PostgreSQL. Oracle может оказаться слишком громоздкой и не выгодной для заказчика, а MongoDB и Redis окажутся не эффективными. Дело в том, что, несмотря на нарастающую популярность не реляционных БД, малейшая ошибка при их проектировании может повлечь серьезные последствия. Реляционные модели в этом плане значительно проще. Поэтому для небольших проектов лучше не тратить время и использовать именно реляционные модели, такие как MySQL и PostgreSQL.

Таким образом, при разработке высоконагруженных проектов лучше всего использовать JAVA, NodeJS, PHP, ASP + JavaScript и HTML + MongoDB или Redis. Для средних проектов – Java, PHP + JavaScript, HTML, HTML5, Flash + Oracle, MongoDB, Redis. Для мелких проектов – PHP, Ruby on the rails, Erlang + JavaScript, HTML, HTML5, Flash + MySQL, PostgreSQL.

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