LINUX.ORG.RU

Безоговорочный выбор ЯП для веба.

 


2

6

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

Разбор.

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

-Java - язык очень нравится (честно, считаю наилучшим для бизнеса), но ужасно не нравится энтерпразные решения и библиотеки (один ужас... всякие ЕЕ и даже Spring для простого или среднего пет-проекта, смотрятся ужасно). Оверхед на оверхеде, читать исходники очень сложно, порой обычное решение обернуто в избыточное число объектов. Про сервлеты (и ЕЕ) я уже говорить не буду, рассматривал постройку приложения на embedded-серверах (Jetty, Undertow, Netty). Очень нравится то, что можно реализовать все что нужно через maven (гредле), хотя конечно nginx придется ставить, но вот эта вся мощь - что юзаешь один язык, очень круто. Крайне бесят XML.

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

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

-С++ и Раст - слишком хардкорен для меня и думаю для веба в целом тоже.

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

-PHP и node.js - пропущу в обзоре.

-Python - не совсем идеальный язык, как фанатеют люди которые пишут на нем, но на мой взгляд лучший выбор из скриптовых языков на сегодня (не идеальный язык, но идеальный выбор). Правда я особо не люблю FULL фреймворки, такие как джанго, так как в вебе, чаще проще что-то написать по-быстрому самому, чем потратить дни на решение проблем или изучения мануалов того или иного монолита (туда же Spring MVC). По этой же причине посматривал на фласк или что-то типа фалкона (пока еще не решил).

И так, предлагаю дискусс - что выбрать «N», или «Y» и почему вы так решили?

PS пропустил (и не знаю о них) - руби, свифт, шапр и т.д.

Only

Golang!

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

PHP

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

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

wist512
() автор топика

Ruby/Elixir/Erlang/Dart/Clojure/Scala/etc

Unununij ★★★★
()

Безоговорочный выбор ЯП для веба

для уэба это php или нода, го тот же больше для «серверной» разработки, джава слишком дорого/долго, руби умирает, питон еще вариант неплохой

umren ★★★★★
()

Пыхпыхпых >=7.x с принудительно включенной статической типизацией и подобными плюшками.

dhameoelin ★★★★★
()

Если не боишься экспериментов, можешь попробовать vibe.d

Esper
()

Порой лопата - самое то, а порой и двух экскаваторов мало. Всё очень по разному, в зависимости от преследуемых целей. Мой выбор - PHP, ибо объектно/процедурно/скрипт в одном файле писать имею, все его знают, джунов - куча, работы и возможностей - тьма, для работодателем поставленных задач самое то. С другой стороны, понимаю любителей Net, которые компилят свои сайты, чтоб работали под большой нагрузкой, но мне ихние задачи не перепадает. К Python и Java равнодушен. У первого, кстати, мне очень объектная модель не понравилась. Даже интерфейсов нет. :/ Зато магических методов - паровоз и маленькая тележка.

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

Вы меня так убедите к пхп вернутся :) Вроде у него популярность и правда падает, а рекомендуют все равно.

wist512
() автор топика

Зависит от предметной области и наличия готовых либ(если не лень самому всё писать, конечно). У

-Java
-PHP и node.js
-Python

с либами всё в порядке, у

-Kotlin
-С++ и Раст
-Go

 — похуже(хотя в Kotlin можно использовать жаволибы).

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

Вы меня так убедите к пхп вернутся :)

После появления инфраструктуры composer и выхода php7 он настолько улучшился, что я раздумал уходить с него на golang :)

И про обратную совместимость — там всё не так плохо. Режут только то, что объявлялось устаревшим 10-15 лет назад. Мало кто из языков такой поддержкой похвастаться может :D

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

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

Где ты там сложное нашёл? Там всё просто как 3 рубля, в отличие от крестов где «ехал шаблон через шаблон, сунул шаблон шаблон в шаблон».

Но пхп сейчас очень сильно оброс джавой, причем пишут ООП сейчас люди, которые до конца его и не понимают то

Просто твоей квалификации видимо не хватает. Давай ты приведёшь пример где в популярном пых-фреймворке что не расширяемо?

Так же раздражает, что разработчики языка периодично режут обратную совместимость

ЛОЛ ЧТО? Это касается только говнокодеров которые «даже ORM тут не надо, сразу массив получай».

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

Афигеть. Ты одну админку будешь пилить джва года.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

А что такого в бенчмарках? Он там где-то около питонов и не сильно выделяется даже среди динамических языков.

x3al ★★★★★
()
Ответ на: комментарий от no-such-file

Судя по бенчмаркам, пых теперь умирает быстрее всех да

Я не так давно обломался. Нужно было сделать быструю шаблонную обработку и отдачу HTML. Решил для практики написать на Golang. Сперва на Revel (а ля «PHP под Golang», также, как «Play!» под Java). Получил результат хуже, чем у PHP5 o_O

http://juick.com/Balancer/2820550

Переписал на расово более чистый Gin-gonic. Получил результат ещё хуже :D

Так и не разобрался с причинами, оставил вариант на PHP.

- PHP (голый, «сам себе шаблонизатор») — до 12000 rps
- Golang/Revel — до 8700
- Golang/Gin-gonic — до 4800

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

Вы меня так убедите к пхп вернутся :) Вроде у него популярность и правда падает, а рекомендуют все равно.

Сколько я себя помню, столько у него популярность и падает. Но видишь ли какая штука, если популярность падает, значит она есть. А как популярность может упасть у Go, очень трудно себе представить.

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

Иногда, если дело не касается математики и нужна скорость, есть смысл попробовать Tcl. Бывает так, что он удивляет даже C.

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

А что такого в бенчмарках? Он там где-то около питонов и не сильно выделяется даже среди динамических языков.

К сожалению, фреймворки все сильно не однотипные, поэтому сравнивать сложно. Если брать тупо работу на условно типовых объектных операциях, то выходит так:

https://github.com/Balancer/benchmarks-fib-obj/wiki/Результат-теста:-i3-2.2ГГц

PHP7 втрое быстрее Python3. И где-то на 20% быстрее, чем Ruby2.

Если смотреть, всё же, именно фреймворки, при чём full-stack+ORM то выходит что-то типа такого:

https://www.techempower.com/benchmarks/

Но там реально уже каша полная :)

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

https://www.tiobe.com/tiobe-index/ и вакансии где-нибудь за пределами снг.

Tiobe показывает не популярность языка, а его buzzword. С ним нужно осторожнее. Тут, скорее, надо смотреть на число активных проектов на GitHub.

Надо дождаться что-то типа статей https://habrahabr.ru/post/260797/ но по 2017-му году и сравнить тренды :)

KRoN73 ★★★★★
()

Специально для тебя, бегающего от PHP: asm32.info/fossil/repo/asmbb/index

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

php умрет когда его перестанут использовать, а в секторе мелкого/среднего(да и крупного, но реже) бизнеса он король

umren ★★★★★
()

Безоговорочный

Короче, это 0 / . :)

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

php быстро умирает

да нифига он не умирает, он как ленин

не надо сравнивать святое со святым!

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

я ннп, вы таки сравнивате языки по производительности и делаете из этого вывод что кто то умирает? или я что то упускаю из виду?

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

а, спасибо. она у вас кстати своеобразная весьма...

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Где ты там сложное нашёл? Там всё просто как 3 рубля

Когда простую бизнес-логику размазывают на десятки классов, но ты такого и не видел никогда. https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

Просто твоей квалификации видимо не хватает.

Конечно, куда мне до очередного кричащего пхп эксперта.

Давай ты приведёшь пример где в популярном пых-фреймворке что не расширяемо?

Я сейчас и не вспомню, но что-то было даже в симфони и особенно в Yii. Может сейчас там хендлеров завезли, но не нужно это скриптовому языку (это все для реальных монструозный джав веб-приложений, именно приложений)

Это касается только говнокодеров которые «даже ORM тут не надо, сразу массив получай».

Конечно, ты же уже как взрослый маппишь на Entity класс, чтобы потом сразу его выкинуть во вьюху. Или мне еще нравится когда Entity определяют поведение массива и к нему можно обращаться как $obj->field или даже $obj['filed'] - ведь это как «по взрослому» инкапсулировать поведение массива в класс, который реализует поведение массива.

Афигеть. Ты одну админку будешь пилить джва года.

Я еще не вникал, но то что я увидел на джанге, админка там тупо CRUD оболочка (удобная конечно). И да, CRUD два года пилить нужно. :)

wist512
() автор топика

PHP и node.js - пропущу в обзоре

Раз гавноphp всплыло, то давайте и по node.js пройдёмся. Что в нём не так? Тут начали бенчами меряться, по скорости node.js уделывает всех, среди себе подобных.

th3m3 ★★★★★
()

Я Java бы выбрал
Только за то,
Что им разговаривал ЛОР!

// Мимокрокодил.

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

Вся прелесть в том, что сырой пхп у джанги отхватывает. Что касается ORM, сравни какой-нибудь laravel или симфони с джангой и увидишь разницу (и это реальный мир, а не игры в сомнительных тестах).

wist512
() автор топика

А какой вообще язык для бека учить человеку (мне), который еще ни разу в этой степи не работал (читай студенту)? Вроде начинал учить жабу, но как только понял, что она для кровавого, то как-то бросил это дело.

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

Python + JavaScript или Php + JavaScript

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

wist512
() автор топика

Правда я особо не люблю FULL фреймворки, такие как джанго, так как в вебе, чаще проще что-то написать по-быстрому самому, чем потратить дни на решение проблем или изучения мануалов того или иного монолита (туда же Spring MVC).

bottle.py

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

Ты сравниваешь сырой запрос (raw) с джанговской-ORM

Чистый драйвер на сях у пхп быстрее (даже, вроде, быстрее питоновского)

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

laravel-php5-raw 1,454

но я бы смотрел лучше на «Fortunes» (если не ошибаюсь там select + update)

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

Окей, тогда еще вопрос: как сейчас вообще пишут в вебе? API на условном DRF + JS?

creazero
()

Статические языки:
Мелочёвка - Golang
Всё, что покрупнее - Java

Динамические:
На вкус программиста. Мне нравится Flask.

Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.