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, что пригодится в последующем.

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

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

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

Если я буду приводить конкретику, все это будет имхо. Просто хочу сказать что Python удобнее, продуманнее и красивее. Во всяком случае для меня. Изучить его легко, а использовать приятно.

Сейчас в вебе он потихоньку завоевывает популярность с помощью Django. Ну а как скриптовый язык он давно более менее популярен.

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

Ну.. если говорить о «приятнее», то у явы в дополнение ко всем её преимуещствам есть scala, groovy и clojure (не говоря о jruby jpython etc) при этом остаётся возможность использовать любой явовский фреймворк или библиотеку (точно верно для scala и groovy). А как по мне так scala не менее «приятна» чем python (опыта нет ни на том ни на другом, но щупать - щупал в своё время).

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

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

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

> Программирование доставляет когда интересная и сложная задача

Доставляет когда выходит красивая реализация этой сложной задачи. Что на некоторых языках не очень получается.

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

Оооо... Не использовав пайтон - не понять. Я много языков перепробовал и я считаю что пайтон является если не идеальным, то синтаксически лучшим языком программирования на свете(не побоюсь такого смелого высказывания, но для меня оно так и есть). Ни один! Ни один язык не девался когда лень кодить. То там нужно вспомнить что написано, то здесь что-то не так, нужно более эстетично переписать. А пайтон - да хоть ты 3 дня не спал -пофиг! Ты легко вспомнишь что где и как, любой код будет выглядеть красиво, всегда можно сразу приступить к написанию логики! На пайтоне ты не программируешь на языке, на пайтоне ты прямо говоришь! В общем, попробуй и сравни с тем же php.

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

++
Даже не знаю что добавить. Наверно, то что нужно выбирать не язык, а инструмент для реализации, который больше всего подойдёт. Только так можно получить в конце лучший вариант реализации идеи.
Скажем, вьювер фоток на джаве не доставит. Почему? Потому что джава не для этого создана.
Вьювер на пайтоне - доставит. Почему? Ибо для этого создано.
Ынтерпрайзное приложение на Pylons будет выглядеть слишком запутанным и сложным, кажется что поддержка такого будет сложна(чисто визуально, абстрактно), но на джаве всё будет ок.
Сделать гостевую на Java - кажется что слишком много тратишь ресурсов и оно слишком медленно и сложно - фигня. Сделай на пайлонс - идеально.
Ну идея понятна, думаю.

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

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

Значит YARV. То есть ты два раза ошибся: а) эта VM стабильна и используется уже больше двух лет, б) это не новая VM, раньше никакой VM не было.

Уточнение: Руби не такой слоу, и в принципе разницой в производительности по сравнению с Питоном можно пренебречь, но расход памяти в среднем в 1.5-2 раза больше, и это усугубляется для долгоживущих процессов. Лично я бы предпочел, чтобы он оставался таким же медленным, как 1.8.6, но имел годный GC и эффективное управление памятью.

Учитывая, что на текущий момент py3k сильно медленнее 2.6, а unladen swallow сливает, я бы не был так оптимистичен по поводу какого-бы то ни было закапывания.

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

> Уточнение: Руби не такой слоу, и в принципе разницой в производительности по сравнению с Питоном можно пренебречь

Python иной раз в разы обходит его в скорости, с другой стороны не всегда это надо и psyco редко когда нужен.

mobile
()

> обслуживать код PHP довольно сложно.

Зависит от объёма и качества. В самом PHP нет ничего ужасного, основная проблема в программистах «на нём».

о Python я знаю только по статьям


Всё тоже самое, что с PHP, но в меньших объемах. Язык чуть почище, программисты - пограмотней, распространённость - поменьше.

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


У вас нет выбора. Все популярные скриптовые языки (PHP, Python, Ruby, Perl) меняли свой синтаксис на несовместимый с предыдущим, имеют непредсказуемую политику разработки и поддрежки.

Остаётся только Ява.

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

>вот часть из этого

Я, как бы, это итак понимаю :) Перечитай мой вопрос.

...

А если без провокаций, то сравнивать Python и Java, пусть даже в одной области Web-разработки, это как сравнивать микроавтобус и грузовик. О, да, тот кто покатался пассажиром на «Газели», на «КамАЗ» потом кататься не захочет :D

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

> 1. Монахов В.В. «Язык программирования Java и среда NetBeans, 2-е издание», BHV-СПб 2009; ISBN 978-5-9775-0424-9

НЕ-Е-Е-Е-Е-Е-Е-Е-ЕТ!!!

Только не эту пачку макулатуры.

Как можно советовать читать книгу, автор которой пишет следующее:

«Виртуальнай процессор Java-машины может проводить на аппартном уровне целочисленные математические вычисления ...» (стр. 161)

???

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

Мне не важно сколько раз я ошибся говоря сколько орехов съел пациент, чьи фекалии я наблюдаю.
Руби ещё какой слоу, просто ты не измерял, видимо.
Пренебречь разницой с пайтоном - значит пренебречь разницей в скорости си и php.
А Py3k уже далеко впереди Py2.6 и, уж тем более Ruby. Unladen Swallow сливает в тех местах, где они толком ещё не работали, а те места где интенсивно работали - очень и очень даже шустры.
В общем, вам прямая дорога изучать и бенчить, или учиться бенчить, а потом изучать и бенчить.

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

>Руби ещё какой слоу, просто ты не измерял, видимо.

Увы, balancer.ru мой пока лежит, но поверь на слово, Ruby 1.9 стал одной скорости с Python 2.5 без Psyco :)

А Py3k уже далеко впереди Py2.6


Да ладно! Где-то есть бенчи? (самого ломает ставить новый слот)

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

>Ruby 1.9 стал
Вот мне кажется что именно из-за того что я слушал они и «стал». Может то что я слышал было вовсе и не VM :) Не важно. Важно что стал. И что теперь? Он догнал Py2.5. Ура! Теперь руби догнал какой год?

Python 2.5 was released on September 19th 2006.

Такие дела. Ещё 4 года, всего то...
А про Py3k я искать сейчас бенчи не буду, ибо их не так много и искать мне лень, а вместо этого предложу измерить скорость выполнения кода в Py2.6 и Py3k:
for i in range(1000000000):
print(i)

К.О.: Это один из моментов оптимизации логики полной её заменой. Такого добра не мало в Py3k. А всё дело в том что range в 2.6 генерит список, а в 3k - генератор. В 2.6 тоже есть range-генератор - xrange, но в больших проектах(к примеру, алхимия), я часто видел как везде исопльзуется именно range. И это правильно со стороны логики. Таким образом, алхимия на Py3k получит не хилый буст.

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

>Мне не важно сколько раз я ошибся

Когда понос в голове, это действительно не важно - главное просраться.

А Py3k уже далеко впереди Py2.6 и, уж тем более Ruby.

Последнее тестирование, которое я проводил, показало, что python 3.1 все еще заметно медленнее 2.6 на 32бит и приближается к нему на 64бит. О «далеко впереди» речь даже и не идет, и если бы в этом была доля правды - давно бы трубили в трубы. Попросту, ты соврал. Зачем позориться? По традиции - пруф или не было ( прочитав тред, уже понимаю, что информативного ответа не дождусь, адью ).

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

>Хочешь сказать ты хорошо владеешь всеми языками?

PHP и Java - отлично. Python - на уровне регулярного системного скриптописания. С Django немного знаком.

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

>Python 2.5 was released on September 19th 2006.

Такие дела. Ещё 4 года, всего то...


2.6 не быстрее, чем 2.5

а вместо этого предложу измерить скорость выполнения кода в Py2.6 и Py3k:


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

Во-вторых:

for i in range(1000000000):


Это даже не смешно. Надеюсь, это была неудчаная шутка?

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

Ну хотя бы честно ответил :). Ты сильно обидешься если я скажу что регулярное системописание это достаточно низкий уровень использования языка в который всякие метаклассы, декораторы итп используются редко и совсем не демонстрируют всех возможностей языка. Сам я не шибкий специалист по питону, но периодически сталкиваюсь с хорошими снипетами кода которые, так сказать, открывают мне глаза на возможности питона :). Поэтому при таких познаниях сильно некорректно ни тебе ни мне судить по python vs whatever, но лор на то и лор...

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

true_admin ★★★★★
()

PHP не любят только те, кто пишет функции с побочными эффектами, классы с публичными свойствами и прочие быдлокодеры, которые не могут писать без команды «Do cool».

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

>в который всякие метаклассы, декораторы итп используются редко и совсем не демонстрируют всех возможностей языка

Я, как бы, возможности Питона в этой области прекрасно представляю :) Пусть далеко не всё знаю, но - _представляю_. И, поверь, Питон я тут не недооцениваю :)

Я бы сказал что для системного программирования(всяких сисадминских скриптов или посерьёзнее) больше perl подходит


Я уже много лет, как пережил уровень хак-программинга и меня больше привлекает не синтаксическая насыщенность и лаконичность языка, а строгость и наглядность :) Поэтому Perl для меня умер лет 7 тому назад :)

А так - он был моим первым «скриптовым Web»-языком и его я тоже в своё время освоил очень прилично. Но когда к своим скриптам приходится возвращаться даже не год, а пять лет спустя - начинаешь понимать все его недостатки :)

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

Очень категорично, но в целом верно ;)

Писать качественный и понятный «назавтра» код на PHP не сложнее, чем на любом другом современном скриптовом языке. И он, в отличии от того же Perl'а не провоцирует писать «грязно». На нём гораздо проще отказываться от «хаков».

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

> PHP не любят только те, кто пишет функции с побочными эффектами, классы с публичными свойствами и прочие быдлокодеры, которые не могут писать без команды «Do cool».

:-) и ещё кто любит дескрипторы, свойства, динамичность, логичность поведения и прочие приятности.

AlexKiriukha ★★★★
()

PHP - это прежде всего миллион функций, никак не структурированных и не имеющих общей концепции названия. Это удручает. А кривой синтаксис с -> дело десятое.

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

>и ещё кто любит дескрипторы

?

свойства, динамичность


А что тут не так у PHP? :)

логичность поведения


Тут - да, бывают подводные камни. Но обычно в области «хаков», которых несложно избегать. Единственная реальная претензия - это разный подход к порядку аргументов в разных функциях. Но тут помогает прекрасная и легко доступная документация. Ctrl-T, «php.net/in_array» и ты уже видишь всё, что тебе нужно, включая комментарии пользователей :) Было бы такое у любого другого языка - был бы ему большой плюс...

KRoN73 ★★★★★
()

>Java, насколько я понимаю, старший брат C#

Делайте на java. ЯП многословнее, чем C#, но после оного порог вхождения для вас будет довольно низким = менее затратным.

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

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


не устаревающий

Лиспу хоть и за 50, но вам он все равно не покатит :)

Надоел бесконечный процесс освоения новых языков и платформ,

Просто не следуйте за модой.

найти оптимальное решение

Серебряных пуль как бы нет...

PS
С нетерпением жду .NET4 и «революционные фреймворки» от MS на нем и Java7 с таким же поносом от Oracle. :)

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

> и ещё кто любит дескрипторы

Заметим. PHP - не «полноценный» язык, это веб-фрэймворк. Его единственная задача - обрабатывать данные и генерить на их основе код. Если вам нравится забивать гвозди микроскопом, то и дескрипторы для разработки веб-сайтов вам, несомненно, понадобятся.

свойства

Какие свойства? Объектные? Что, в PHP нет ООП?

динамичность

Это эфемерное понятие. Вот Python, он динамичный? А ассемблер? А что динамичнее, пайтон или ассемблер?

логичность поведения

PHP очень логичен. Если в нем написать, $A = 10; $B = $A; $A++; , то A будет равно 11, а B - 10. А вот всякие штучки, как, например, в Ruby, это да, это мозги-то и разжижает. Железная кремниевая компьютерная логика.

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

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

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

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

А что не нравится с этим на PHP? :) dev-php5/php-gtk не катит?

Причем, интерпретатор языка должен предназначаться для подобных задач и не течь памятью, как последняя сука.


Блин. А я-то думал, что Си++ - это полноценный язык! Как я ошибался! :)

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

> Блин. А я-то думал, что Си++ - это полноценный язык! Как я ошибался! :)

Сразу видно опытного программиста на фортране - отсутствует обработка исключений.

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

Как утечки памяти связаны с исключениями?

Или, если обработка исключений позволяет забить на утечки, то почему тогда исключения PHP не позволяют сделать это? :)

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

до емакса - разве на нём можно нормально писать?


Уже на емаксе пишут. Что дальше?

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

> Как утечки памяти связаны с исключениями?

По всей видимости никак, таким образом я тонко пошутил над вашей тонкой шуткой по поводу неполноценности C++, так как в нем отсутствует интерпретатор. Юмор заключается в том, что когда я писал свое сообщение, то подсознательно считал понятие «интерпретатор для языка» само по себе ущербным, но, видимо, забыл об этом упомянуть. В результате, вы не смогли правильно обработать исключение.

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

>шуткой по поводу неполноценности C++, так как в нем отсутствует интерпретатор

Я запутался уже в анонимных пользователях, потому не могу знать, кто из них понимает неприменимость понятия «интерпретатор» в отношении любого языка, кто просто не знает про наличие интерпретаторов Си или компиляции в байткод на PHP4/5. И просто в 10-й раз не поднимаю вопрос этого баяна.

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

Не в кол-ве ключевых слов дело, но в их длине :) если можно так вырaзиться.

После всяких C++/C# меня щас слегка коробит от длины двоеточия в java: e-x-t-e-n-d-s или i-m-p-l-e-m-e-n-t-s. Стойкое ощущение, что пишу что-то в VB.NET - там тоже на длину ключевых слов не поскупились.

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

Code completion и я снова в силах писать идентификаторы состоящие из 5 слов )))

vertexua ★★★★★
()

В треде почемуто не упомянут JavaScript. Исправляю это упущение.

http://nodejs.org/

Из преймуществ возможность написания клиентской и серверной частей на одном языке, следовательно ниже порог вхождения.

Из недостатков - сыроват.

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

JS ужасен. Ни читабельности, ничего. Смотреть на код js и не понимать что в нем происходит - это нормально. Плюс ко всему нет единого стандарта интерпретатора.

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

>JS ужасен. Ни читабельности, ничего. Смотреть на код js и не понимать что в нем происходит - это нормально.

Может стоит таки язык выучить чтоли? Книжки вумные почитать, стандарт ECMAScript, например.

Плюс ко всему нет единого стандарта интерпретатора.

Главное что есть стандарт языка. Стандартизация способов реализации только помеха.

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

> Может стоит таки язык выучить чтоли? Книжки вумные почитать, стандарт ECMAScript, например.

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

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

А мне вот интересно знать что отпугивает от JS, по стилю кода это можно оценить, узнать общие тенденции. А стеснятся не надо. Можно зайти на govnokod.ru и понять что не всё так плохо(или так плохо?). Потом можно смело постить ссылки на проекты.

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