LINUX.ORG.RU

Java, PHP, Python. Что выбрать?


0

0

Ситуация такая. Я не профессиональный программист (я картограф). Несколько лет назад занялся программированием для картографических целей. Начал обучение с Fortran, затем перешел на C++. После окончания университета интернет и книжные магазины привели меня к «самому замечательному и современному решению» - C# и Ms Visual Studio (на освоение этого я потратил больше года). В то время я почти не догадывался, что в мире есть еще кто-то кроме Microsoft и ESRI (это крупнейший производитель картографичеких приложений). На C# мы реализовали крупный университетский проект для себя - настольное приложение WinForms, после чего на ASP.NET написали серверный вариант. У нас появилась возможность немного заработать на приложении. Т.к. все должно было передано официально, начали считать сколько стоит ПО, используемое нами - оказалось более 3 000 000 руб. Программа так и осталась для внутреннего пользования. Так я познакомился с GNU/Linux, Emacs, С, бесчисленными свободными ГИС библиотеками.

Мы решили портировать наше приложение на GNU/Linux, фактически переписать его с нуля. На сегодняшний день у нас готово ядро приложения (написано на C и shell), теперь приступаем к разработке сайта, позволяющего работать с ядром.

На этот раз решил более серьезно подойти к вопросу выбора технологии. Я ограничился на Java, PHP, Python, т.к. только для этих языков есть готовые решения для реализации WEB картографии (если говорить ОЧЕНЬ грубо, то что-то типа движка для Google Maps).

PHP синтаксис и идеология мне не близки, но в интернете есть решения для почти всех проблем, куча движков и т.п. Насколько я понимаю обслуживать код PHP довольно сложно. Java, насколько я понимаю, старший брат C#. Мне сложно сказать что-то о недостатках. В отличии от предыдущих, о Python я знаю только по статьям. Судя по отзывам, это, возможно, главный претендент. Код действительно выглядит симпатично, также радует, что на Python написано много в области Open Source GIS, что пригодится в последующем.

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

C .NET это вы да, не хило так просчитались. А всё виноваты то мс-слейвы.
Как языки для выбора веб-приложения: PHP, Python, Ruby, Java.
Для самого прикладного приложения(или что вы там делали на си и «шелле»(баше?)) - C++/Python.
Немного о самих языках для веба:
PHP - старо, все уже переходят на «нормальные» языки вроде Python и Ruby. Здесь даже комментировать не буду.
Python - очень хороший простой мультипарадигмальный язык программирования. Идеален для прикладнухи и среднего/маленького размера веб-приложений. В принципе, и для крупных подходит, но я бы выбрал для них Java. Сам очень и очень люблю этот язык и веб-фреймворк Pylons на нём. Думаю что Pylons+Python для вас будет идеальным вариантом ибо он проще для понимания и является более открытым, в следствии чего в нём проще использовать сторонние модули и интегрировать их в само веб-приложение.
Ruby - очень не люблю этот язык, как и старую их вм. Новая вм лучше, но до Python 3 не дотягивает. Главное то что в нём есть самый лучший фреймворк(RoR(Ruby on Rails)) для построения приложений без... как-бы сказать... Если в Pylons не так много хелперов и тебе предлагают юзать весь пайтон и его модули, то в RoR предлагают юзать RoR-плагины и писать их же для всех целей. Не очень удобно. Немного Ынтерпрайзненько...
Java - очень большой язык. Имеется гигантский фреймворк для построения огромных и больших приложений - Spring. Но для средних и маленьких приложений это лишне. На базе того же Spring был создан Grails, очень похожий на RoR, но юзающий Spring и groovy, язык, построенный на Java, с синтаксисом, похожим на Ruby и Python.

В общем, советую Python+Pylons.

tia ()
Ответ на: комментарий от tia

> PHP - старо

не скажи. в 5.3 уже очень многое сделали нормально. а в 6 вообще обещают что все будет офигенно. но это в перспективе.

а ТСу я лично порекомендовал бы Java (если планируется приложение «больших масштабов») или Python для остальных случаев.

isden ★★★★★ ()
Ответ на: комментарий от isden

Ну как сказать... Пых уже не торт, по сравнению даже с пёрлом. А по сравнению с пайтоном или джавой...
Если сравнивать PHP5/6 с PHP3/4, то да, прогресс есть, а так...
К середине года Pylons перейдёт на Python3 и рубям крендец, а PHP вообще можно будет забыть.

tia ()
Ответ на: комментарий от tia

> К середине года Pylons перейдёт на Python3 и рубям крендец, а PHP вообще можно будет забыть.

скорее всего это знаметельное событие никто кроме питонщиков и не заметит

П.С. «голосую» за Java

lester ★★★★ ()
Ответ на: комментарий от tia

Хочется добавить, что в Java EE вам прийдется разбираться наверное более длительное время. Но это самая близкая вещь по построению к ASP.NET, может эта информация вам поможет.

Зато

1. Почти гарантировано что с помощью Java EE нужные для вас вещь будут уже продуманы и встроены в платформу.

2. Ей точно и гарантировано не дадут устареть и исчезнуть. Java EE позиционируется как платформа разработки очень серьезного софта, и уже написано много громадных и очень дорогих приложений. Ситуации «коропоративный клиент негодуэ» не допустят

3. В Java EE 6, которая правда в данный момент поддерживается только Glassfish v3, все очень облегчили и упростили. Вероятно вам это очень упростит жизнь, тем более что все старые возможности остались.

4. Java EE приложение вероятно будет более громоздким в оперативной памяти, но гарантировано в 99% случаев серверные длительные вычисления будут работать быстрее Python и PHP. Это касается длительных алгоритмов на сервере, но не обязательно скажется на общей отзывчивости.

Относительно Spring, ничего не могу сказать. Кроме того что это фреймворк, который дублирует функциональность платформы Java EE. Сейчас почти все уже есть в Java EE. Хотя опять, я могу в этом вопросе ошибаться, так как я не очень глубоко разбираюсь в Spring, точнее почти вообще не разбираюсь. Я пошел по пути Java EE-only, не знаю насколько это оправданно.

со сменой разработчиков

Вот тут проблема. Обычно мало кто осилил в универе Java EE в нужной мере. Вы просто можете не найти в один прекрасный момент разработчиков в той же мере как и ASP.NET или PHP.

vertexua ★★★☆☆ ()
Ответ на: комментарий от lester

А вот фиг его знает. Pylons будет первым хорошим веб-фрейморком на пайтоне, который полностью работает на Py3k. Ruby ещё, вроде как, не юзает новую VM, по сему есть шанс переманить рубистов. В общем, думаю внимание привлечёт.

tia ()
Ответ на: комментарий от vertexua

В целом о Java EE можно пожелеть в двух случаях.

1. Где в универе можно найти Java EE программиста?

2. А не overkill ли это?

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

>Java EE вам прийдется разбираться наверное более длительное время
Да, я про это забыл добавить. Да даже Grails мягко говоря сложен и требует с неделю чтобы хоть немного изучить общие моменты.

Почти гарантировано что с помощью Java EE нужные для вас вещь будут уже продуманы и встроены в платформу.

Часть или большинство. Но если вдруг что-то придётся не по нраву или нужно будет написать заново, то оно будет не так сладко как юзать готовое. В этом смысле в пайтоне всё элементарно. Тем более в Pylons.

Ей точно и гарантировано не дадут устареть и исчезнуть

Вот это да. Даже как-то бояться за неё не нужно.

как платформа разработки очень серьезного софта

Да. Интерпрайзного. Это не плохо, скорее хорошо. Вот гугл использует Java для своих крупных приложений и платформы этих приложений.

громоздким в оперативной памяти

Вот это да. При этом это мягко говоря. Да и на небольших приложениях оно проигрывает пайтону по производительности.

можете не найти в один прекрасный момент разработчиков

Вот здесь да, проблема. Джуниоров и сеньёров много, да вот толковых из них....

tia ()
Ответ на: комментарий от tia

> Да. Интерпрайзного. Это не плохо, скорее хорошо. Вот гугл использует Java для своих крупных приложений и платформы этих приложений.

И здесь надо добавить, что не просто больших приложений с большим исходным кодом, а очень распределенных приложений. Одно приложение может на сотне машин работать.

Более того в Java продуманы все уровни приложения, вы можете в рамках одной платформы писать и серверный код, и веб-интерфейс и сервисы и клиентский оконный GUI, который прозрачно доставляется через сеть с помощью Java Web Start. Сюда нужно добавить возможность создания JavaFX приложений, которые просто созданы для такого рода задач как у вас. Поставьте Sun Java Plugin и вам сюда http://javafx.com/samples/. Можно еще упомянуть немного устаревшую, но неимоверно широко используемую Java ME, ваше приложение можно будет установить на телефон.

vertexua ★★★☆☆ ()

python, он самый продуманный из всех этих языков, хорошо развивается, относительно лёгок для изучения, есть довольно большая стандартная библиотека. Из минусов это наличие двух паралельных веток(2.x/3.x). Начинай учить 2.x т.к. пока поддерживается, в основном, она.

PHP и java сильно непродуманы и содержат большое кол-во «болячек». Ruby местами тоже сделан странно, у него меньше сообщество, меньше библиотек и биндингов.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

О сильной непродуманости Java вы капитально загнули. Уровень продуманости зашкаливает. Есть недостатки, котрые сводятся к частым overkill

vertexua ★★★☆☆ ()
Ответ на: комментарий от tia

>PHP - старо, все уже переходят на «нормальные» языки вроде Python и Ruby

Это поэтому PHP за год на два места поднялся? :) - http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Сам очень и очень люблю этот язык и веб-фреймворк Pylons на нём


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

KRoN73 ★★★★★ ()
Ответ на: комментарий от tia

>Ruby ещё, вроде как, не юзает новую VM, по сему есть шанс переманить рубистов

Большинство разработчиков меняют платформу только если ОЧЕНЬ припрёт.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

У большинства разработчиков по дефолту PHP. Как у пользователей - винда

vertexua ★★★☆☆ ()
Ответ на: комментарий от vertexua

Подписываюсь.
Общая картина, которая создаётся этим сообщением(оно ОГРОМНО и только для ОГРОМНЫХ приложений) полностью является правдой.

PHP и java сильно непродуманы и содержат большое кол-во «болячек».

Вот в PHP много граблей и мин, а вот java очень крута и продумана так как ничто иное.

tia ()
Ответ на: комментарий от true_admin

>PHP и java сильно непродуманы и содержат большое кол-во «болячек».

Очень забавно видеть их в одном ряду :D PHP, действительно, формировался по принципу «слепили из того, что было». А вот на дизайном Java работали не один год множество светлых голов. И поэтому там переделывать приходится по мере развития много меньше, чем в Питоне. И совместимость реже ломают :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Это поэтому PHP за год на два места поднялся? :)

Да, поэтому. Серьёзные php-разработчики уходят от php, и в индустрию вливаются студенты, которые на каждый чих гуглят и постят вопросы на форумах, тем и двигая php на третье место в рейтинге.

mirocumo ()
Ответ на: комментарий от KRoN73

>Это поэтому PHP за год на два места поднялся?
За ростом PHP в подобных рейтингах можно следить для понимания роста количества быдлокододеров и вообще кризиса :)

Кстати, как у него с производительностью?

Что с ORM - да. SA сама по себе такая... толстая. Коллстек из ~400(по словам какого-то блога) на инсерт - ужас. По сему сейчас вот экспериментирую с Storm. Вроде как супер. Говорят Ming скоро можно будет юзать, да и я думаю сделать сорт оф ORM на базе KVS.
Что в плане общей производительности, Pylons всегда выигрывал. На «чистом» приложении всегда. Если не юзать ORM, то почти всегда. А если в джанге сделать пару приложений внутри одного, то здесь даже говорить нечего, Pylons не хило выигрывает. Что уж тут говорить если Pylons по сути то является темплейтом для paster, который юзает Routes, Backer, WebHelpers, Mako, SA, т.е. только их связывает. Т.е. фактически чуть-ли не «прямо» на WSGI.

tia ()
Ответ на: комментарий от KRoN73

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

tia ()
Ответ на: комментарий от mirocumo

>Серьёзные php-разработчики уходят от php, и в индустрию вливаются студенты

Как первое связано со вторым? :)

Типа, если серьёзные разработчики приходят, например, к работе с Python, то от Python убегают студенты? :D

KRoN73 ★★★★★ ()
Ответ на: комментарий от tia

> А если в джанге сделать пару приложений внутри одного, то...

Эммм. Как это?

AlexKiriukha ★★★★ ()

Java лучше будет в вашем случае, если знаете C#, то синтаксис и основные принципы вас вообще смущать не будут.

eternity ()
Ответ на: комментарий от AlexKiriukha

Я последний раз смотрел джангу месяца 4 назад, т.ч. не помню как точно оно там. Ну когда создаётся один проект, а внутри него ещё один, или используется чужой(к примеру, форум, чат или что-то ещё). В результате получается что в одном проекте работают сразу все вместе, но доступны по префиксам в роутинге.
К примеру админка является приложением в приложении пользователя.

tia ()
Ответ на: комментарий от KRoN73

Это поэтому PHP за год на два места поднялся? :)

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

- 3 дохлых кота

- freeBsd

- php

- неопопзнанные скелет кентавра

wfrr ★★☆ ()
Ответ на: комментарий от KRoN73

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

wfrr ★★☆ ()
Ответ на: комментарий от tia

> Ну когда создаётся один проект, а внутри него ещё один, или используется чужой(к примеру, форум, чат или что-то ещё). В результате получается что в одном проекте работают сразу все вместе, но доступны по префиксам в роутинге.

К примеру админка является приложением в приложении пользователя.

Похоже получилась мешанина в терминологии из project и application. В любом случае работает нормально. Честно сказать я pylons пытался смотреть, но давно. Формы показались ужасом, на них и остановился. Нужно будет посмотреть что там нового за последнее время появилось.

AlexKiriukha ★★★★ ()
Ответ на: комментарий от AlexKiriukha

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

tia ()

Java + Ruby (JRuby).

На Java пишется ядро системы, Web-сервисы, возможно RIA-клиентская часть. На Ruby пишутся (прототипируются) небольшие дополнения (которые со временем, если критично, переписываются на Java).

Будете иметь: стабильное ядро на Java и постоянно развивающуюся оболочку на Ruby (JRuby).

Литаратура
1. Монахов В.В. «Язык программирования Java и среда NetBeans, 2-е издание», BHV-СПб 2009; ISBN 978-5-9775-0424-9
2. Хорстманн К., Корнелл Г. «Java 2. Библиотека профессионала. Том 2. Тонкости программирования», Вильямс 2008; ISBN 978-5-8459-1482-8
3. Гери, Хорстманн «JavaServer Faces», Вильямс 2008; ISBN 978-5-8459-1396-8
4. Фитцджеральд «Изучаем Ruby», BHV-СПб 2008; ISBN 978-5-9775-0225-2
5. Фултон «Программирование на языке Ruby Идеология языка теория и практика применения», ДМК 2007; ISBN 5-94074-357-9
6. Эдельсон «JRuby. Сборник рецептов», ДМК 2009; ISBN 978-5-94074-589-1

iZEN ★★★★★ ()

Python, я полагаю. Он
а. Самый портабельный
б. Проще Java (PHP я даже ен рассматриваю - это несерьёзно)
в. Легче прикрутить сторонние наработки
г. Больше готовых библиотек на все случаи жизни

Divius ★★ ()
Ответ на: комментарий от wfrr

>Честно говоря меня уже пукаются студенты

По Фрейду, что ли? :)

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Нет, я к тому, что TIOBE же считает по запросам в гугл и упоминаниям в блогах.

mirocumo ()

Я веб-разработчик, опыт около 5 лет(PHP, Java). Что сказать - выбрано уже очень неплохо, на мой взгляд. Вполне трезво. Шибко не просчитаетесь в любом случае.

Абстрактно (не зная вашу предментую область) я бы порекомендовал яву, недостаток для веба по сравнению с php только один по большому счёту - нельзя сразу нажать в браузере f5 после правки исходника и поглядеть что получилось, сначала надо набрать ant в консоли (в эклипсе у меня горячие альт-икс-кю), а потом только f5 в браузере. Ещё недостаток (не только для веба, а вообще) - это богатство выбора. Например, в php для отображения есть php и ещё пара-тройка шаблонизаторов (смарти например, или xslt можно использовать). И по большому счёту всё. В яве для того же отображения можно выбрать jsp, jslt, jsltx, xslt, velocity, faces и это только на вскидку.

Преимущества у явы - во первых (вроде бы неважное, но несколько раздражающее в php) некоторая «зрелость» языка. То есть вещи вроде пхп-шных str_replace и strstr (порядок аргументов), а так же «странные названия» (где-то есть подчёркивание в названии, где-то нет) - не встречаются. Во вторых модульность «по дефалту». Богатый выбор фрейморков (я глядел apache click - очень интересно, но использую spring mvc поскольку уже несколько освоился). Для меня при переходе на яву весомым аргументом была возможность использовать более интересные языки (scala например) подключая библиотеки java напрямую. Скорость выполнения, более продуманные архитектуные решения. Долгосрочная поддержка не превращается в ад.

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

Это на мой скромный взгляд, конечно.

AndreyKl ★★★★★ ()
Ответ на: комментарий от AndreyKl

Я веб-разработчик, опыт около 5 лет(PHP, Java).

Мы все тебе посочувствовали.

mirocumo ()
Ответ на: комментарий от tia

>Ruby ещё, вроде как, не юзает новую VM

Какую такую новую VM?

anonymous ()
Ответ на: комментарий от KRoN73

кто на питоне не прогает тому не понять что такое java :).

true_admin ★★★★★ ()
Ответ на: комментарий от mirocumo

Да. А может и нет. Я не рубист :) Просто недавно на лоре проходила такая информация, да и все рубисты говорят что теперь руби не такой слоу. А что - пофиг.

tia ()
Ответ на: комментарий от true_admin

>кто на питоне не прогает тому не понять что такое java :)

А что может понять тот, кто прогает и на Питоне, и на PHP, и на Java? :)

KRoN73 ★★★★★ ()

Удивительно, подавляющее большинство даже не рассматривают серьезно PHP. Буквально месяц назад я был уверен, что нужно выбирать именно его. Сильный психологический эффект оказывали полки магазинов, где подавляющее большинство книг по АСП.НЕТ и ПХП, про пайтон я узнал только благодая скриптам программ, которыми я регулярно пользуюсь.

Java конечно очень глобальная штука. Python, возможно, больше подходит для университетских проектов.

Как считаете, в плане трудоустройства, что перспективнее, знание Java или Python? Полазал по сайтам трудоустройства, ПХП программисты нужны, но зарплата маловата. А вот, на первый взгляд, хорошие программисты Java и Python нынче получают значительно больше и работа интереснее.

И еще. Я бы хотел по прежнему пользоваться Emacs, и для Python и для Java есть режимы, но насколько это целесообразно? Не придется ли мне отказываться от Emacs (мне так нравиться разрабатывать в нем)? Недавно залез в Eclipse, без поллитра не разберешься

alexkarta ()
Ответ на: комментарий от alexkarta

Как правило, в магазиназ много того что не берут.

Python подходит для всего. Кроме убер-проектов.

Java конечно крута, но там обучаться нужно не хило. Что верспективнее... фиг знает.

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

tia ()
Ответ на: комментарий от alexkarta

> Как считаете, в плане трудоустройства, что перспективнее, знание Java или Python? Полазал по сайтам трудоустройства, ПХП программисты нужны, но зарплата маловата. А вот, на первый взгляд, хорошие программисты Java и Python нынче получают значительно больше и работа интереснее.

В плане трудоустройства Java легче. Python вижу только вакансии по Django, со среднем окладом до 80 грубо говоря.

На счет PHP тот же «Senior Developer» в крупных профильных будет получать столько же примерно сколько и Java. Но найти такие вакансии чуть сложнее. Просто в PHP много нубов, которые кроме того, что собрать денверы со своими жумлами ничего не умеют.

mobile ()
Ответ на: комментарий от KRoN73

А когда я пишу «проеблы» вместо «пробелы», это как с точки зрения психоанализа?

wfrr ★★☆ ()

С другой стороны если отстранится от денег и работать так чтобы было приятно, что не скажешь про PHP или Java, я бы выбрал Python.

mobile ()
Ответ на: комментарий от wfrr

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

mirocumo ()
Ответ на: комментарий от alexkarta

Да, в обоих случаях можно комфортно оставаться в границах емакса.

mirocumo ()
Ответ на: комментарий от alexkarta

Ява в плане трудоустройства на данный момент вроде перспективнее чем php, тут согласен, ибо ява - это не в последнюю очередь корпоративный сектор (если не в первую), где написаны на этой самой яве тонны кода, которые нужно будет поддерживать ещё долго. Да и пишется сейчас очень немало.

Что до питона - фиг его знает, но вроде используется он пореже чем ява и в основном в веб.

Что до емакса - разве на нём можно нормально писать? Я писал как то в нём один проект на си++, так он меня своими подсказками доканал. Никакого отношения к структуре кода они по моему не имеют, а берёт он их из контекста. Управление мне в емаксе понравилось, ну и всё. Поставил в эклипсе управление как в емакс (там есть шаблон), но счастья нет... емакс не понравился как редактор, но управление хорошее, эклипс неплохой редактор - но управление не радует. Придётся ли отказаться от емакса - фиг его, я отказался не потому что язык сменил, а потому что какой-то ужас вместо редактора мне не нужен. Может, конечно, не осилил.

AndreyKl ★★★★★ ()
Ответ на: комментарий от mobile

>С другой стороны если отстранится от денег и работать так чтобы было приятно, что не скажешь про PHP или Java, я бы выбрал Python.

Можно по подробнее, чем Python приятнее? Очень хочется чтобы программирование доставляло удовольствие

alexkarta ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.