После PHP: Python, C#, Ruby?

Осваиваю потихонечку PHP и стал понимать, что тянет к программированию, а не просто к выпиливанию форм. Хочется чего-то уровнем повыше и развития именно как программист. В ПХП такие задачи встречаются, но в основном задачи однотипные и есть уже готовые решения. Учишь например паттерны, а где их применить, даже банальную фабрику — вопрос. Фреймворкописатели уже добавили все куда надо. Большинство задач банальный круд. Натянул верстку, промигратил БД, сделал админку. Пока интересно, но потом это превратится в рутину, а сон на рабочем месте, не самая положительная черта программиста ;) Что порекомендуете начинать осваивать параллельно (пыху бросать не собираюсь, пока симфони не освою)? Хочется пока изучить проверенный язык с развитой инфрастркутурой. К джаве чего-то душа не лежит.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Учишь например паттерны, а где их применить, даже банальную фабрику — вопрос

Поначитываются, и понаприменяют потом где попало — «банальных» фабрик на фабриках...

Большинство задач банальный круд. Натянул верстку, промигратил БД, сделал админку.
это везде так будет.
интересное (вне зависимости от языка и платформы):
— хайлоад и биг-дата. там правда уже придется углублятся в субд, алгоритмы и всякие доп. инструменты
— «просто» сложная логика, какие-то нетривиальные алгоритмі на тысячи строк с кучей вариаций и наворотов
— рефакторинг — когда надо 10% кода проекта изменить да так что бы ничего не сломать старого, а новое что бы поднялось с полпинка

ну и инглиш-инглиш-инглиш

Всем спасибо, особенно критикам. Да скорее всего дело не в языке, а скорее во мне. В ПХП есть еще что учить и много. Я возможно, переработался и устал, захотелось что-то нового. Судя по всему я просто пока пропускаю возможности из за незнания, использовать язык в полном объеме и поэтому кажется что все одинаково. В целом да, надо искать хороший проект, желательно с грамотными специалистами, которые могут рассказать, что я делаю не так. И дальше работать и нарабатывать опыт. А по другому да, бросить на полпути — сплавляться по Днепру.

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

«пока симфони не освою» — думаю,что к тому моменту, когда вы освоите Symfony(если), вопрос о «выпиливании форм» отпадёт

JavaScript отлично сочетается с РНР и является полноценным ООП языком. ES6 даже имеет классы, что делает наследование близким к Java. К тому же, знание JS открывает двери к десяткам популярных фреймворков и библиотек, типа Angular или React. Ну и имея в арсенале ПХП, ты сможешь называть себя full stack developer. ))

Вы знаете, я не верю в js. Мне кажется скоро этот бум поутихнет. Зоопарк на фронтенде стандартизируют рано или поздно. Многие фишки из фреймворков попадут с официальные спецификации HTML и JS и они станут просто не нужны. Останется два-три. А бэк он стабилен уже. Мне все равно отдавать массив во вьюху или JSON по REST. и он всегда будет нужен. Перейти на другую технологию проще. А в целом мне JS понравился. И его нужно знать и понимать на некотором уровне. Я разобрался в первом Ангуляре (на второй и тайпскрипт времени пока нет).Тот же MVC, но с JS особенностями. И есть один момент еще путь в JS лежит через верстку. А я не хочу туда. Рутина та еще.

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

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

на симфони зп выше, решаемые задачи сложнее.
да и сама симфони сложнее.
Совсем начинающему, я бы порекомендовал начинать с Yii или Ларавел.
совсем начинающему еще можно посоветовать CodeIgniter, который если не ошибаюсь входит в пятерку самых популярных пхп-фреймворков.

Уже не входит. Считается устаревшим. Почему не знаю. Вакансий на него почти нет. Сейчас востребованны эти три фреймворка + zend, для тех кто хочет получить решение от производителя, так сказать. Есть еще всякая мелочь типа slim, cake и тд. Но их сфера применения другая.

Считается устаревшим. Почему не знаю.
ну не знаю.. сейчас он вполне себе активно пилится. И последняя версия (3.1.3) зарелизилась в январе сего года. Ну и читал по докам, что для использования всех его возможностей нужна версия пхп минимум 5.4.

А то, что он считается устаревшим это видимо из-за того, что он долгое время был бесхозным (т.е. не разрабатывался).

Единственно, что мне в нем не сильно нравится — отсутствие некоторых модных фич из коробки (типа админки, встроенного ORM, генерирование чего-то там из-под консоли и т.п.).

Вакансий на него почти нет.
ну в энтерпрайзе его может и действительно нет, но вот для применения на фрилансе думаю он может вполне сгодиться) Да и для освоения MVC тоже. А потом уже будет легче изучить Laravel/Yii/etc.

Хотя если чел не рассматривает фрилансерство, а рассмиатривает устройство на работу в какую-нить контору, то тогда действительно лучше сразу изучать Laravel/Yii/Simphony (нужное подчеркнуть).

Есть еще всякая мелочь типа slim, cake и тд. Но их сфера применения другая.
видел в инете, что есть разрабы, которые относят CodeIgniter к микрофреймворкам. Причем, по-моему, его вполне можно считать «микрофреймворком с батарейками», т.к. его модули подключаются по мере надобности (например, класс для работы с базой данных).
Ну а из чистых микрофреймворков мне больше всего понравился FlightPHP)

Если Тебе слишком легко (я так пологаю — скучно) — попробуй запилить модуль для Magento (только так чтоб был реально рабочий). Тогда возвращайся и расскажи расскажи насколько легко Тебе было: «натянуть верстку, помигратить БД и сделать админку».

Тоже хотел это посоветовать :)
Ну или любой другой модуль к какому-нибудь популярному продукту.

Хочешь быть программистом, так будь им и язык программирования тут не при чем.
В моих проектах на ПХП совсем не скучно, так как ПХП это API, фронт JavaScript. Есть что изучать и куда развиваться...

почему про Го никто не говорит? php -> go сейчас тренд в берлинских стартапах

так як колись з рельсами було. з часом пройде

Мою статтю можеш почитати тут на ДОУ. А так: спробуй все і дивись що сподобається :)

а на пайтоне тебя возьмут сразу архитектуру джанго пилить?)
знание патернов обычно и нужно для того что бы быстро разбираться в архитектуре фреймворков, а не свои писать.
я заметил что обычно такой вопрос задают в двух случаях :
1) хотят больше бабла, мол че мне учить пых если на пайтоне занимаясь тем же, буду +300$ получать
2) доросли до какой то планки на пыхе и когда пришло время учить реально что то сложное что бы развиваться и получать больше, начинают думать что лучше выучить пайтон на таком же уровне как пых, но з/п будет по больше
И это все справедливо и понятно, только блин хватит прикрываться тем что типа

стал понимать, что тянет к программированию, а не просто к выпиливанию форм.

бери сфифт — он тольок начинает откусывать себе нишу medium.com/...d-ca65b2f79505#.dcrh7n58b

Мак пока оставил. Под него железо надо

под маком его учить легче -не спорю, но он уже «крос платформенный» и сервер-сайд под linux деплоят , или с винды никуда ?

с линукса никуда скорее

Питон хороший вариант после ПХП. Можно еще попробовать Гоу, сервисы высоконагруженные поделывать.

ГО как и ноду знать не мешало бы, но это другое. Это не вместо ПХП а вместе с ПХП.

kotlin знайшов застосування десь, крім андроїда?
мені не для холівара, просто цікаво

на бекенде себя отлично чувствует

Python хорош для перехода, большая сфера применения.
Не только веб. После PHP немного непривычно будет. Масса готовых библиотек.

Особенно «порадовали» библиотеки работы с MySQL.

веб везде одно и то же, везде есть более мене нормальный фреймворк, под пыху тот же symfony уже куда лучше и серьезней yii , везде все очень похоже rails, grails, asp .net, django, везде будут одни и те же задачи, только разный синтаксис и разные команды в консоли. Конечно паттерны там юзать особо не получится так как уже все там реализовано, но когда серьезные большие проекты, то там уже не только банальный CRUD. Хочется веселого, геморно и с патернами тогда в С++ под консоли игры писать )) Но с точки зрения перспективы Python лучше.

Что порекомендуете начинать осваивать параллельно (пыху бросать не собираюсь, пока симфони не освою)?

это смотря, в какую сторону в дальнейшем развиваться планируется:

— только веб? — Руби (с рельсами естесно, хотя есть еще разные синатры с падринами)

— преимущественно под винду, веб-аппликухи на майкрософт азуре или игры? — C# (Unity, ASP.NET, ну или что там еще)

— переимущественно веб, но окончательно определилось? — Python (Django/Flask/и др. — для веба, PyGame/Panda3D/Blender Game Engine — для игр, PyQt/PyGTK/WXPython/и др. — для Gui-аппликух, Kivy — для мобилок, scipy/numpy — для науки и всякой бигдаты...)

— хочется trueЪ-программирования? — что-то типа окамла, лиспа или хаскеля)

Мне больше по душе веб, но с корпоративным уклоном. Высоконагруженные приложения и тд. И кстати есть ли возможность работать (реально) на C# на линуксе? Зря что ли я с винды на убунту спрыгивал. Назад не хочу.

А с чего начать рекомендуете?

www.microsoft.com/net/core#linuxubuntu
dou.ua/lenta/articles/net-core
dotnet.github.io

Сейчас пишу свой проект на ASP.Net Core и утилиты на .Net Core — никаких проблем не заметил. Вторые хорошо работают на виртуальной машине в Azure на Ubuntu, так как это дешевле (причем существенно).
Единственной проблемой с переносом тулзы с Windows на Ubuntu были разные названия для TimeZone — но добрые люди уже запилили либу для таких случаев.
Ну и легкий минус перед Java — чтобы получить запускаемый файл для нужной платформы — нужно скомпилить на ней, а не просто закинуть .jar файл :(

Можно компилировать для разных платформ с одной, это не проблема. Или использовать portable версию, будет почти как jar

Да, ссори. Забыл про portable версию)

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

Сильно перспективней чем все остальное в мс мире. Будут ли тебе за это плотить денюжку в следующие 1-3 года? Вот это уже более важный вопрос.

Ну и легкий минус перед Java — чтобы получить запускаемый файл для нужной платформы — нужно скомпилить на ней, а не просто закинуть .jar файл :(
Когда я последний раз смотрел на .нет коре, то там можно было компилировать прямо в докере-контейнере из сорцов. Т.е. скачал с гитхаба свой пет, вызвал ран и все. Т.е. пакет по сути не нужен.

Щас что-то поменялось?

И кстати есть ли возможность работать (реально) на C# на линуксе?
так Mono же)

Ну превозмогать — не самая хорошая идея. Обычно если проект на дотнете — реквестят комп с виндой и работают без проблем. Не знаю как с там с моно дела, но oracle и open jdk в некоторых случаях ведут себя по разному. В общем ноги «на моем компе работает» растут из таких решений. «Все делала по вашему рецепту, но взяла курицу вместо телятины, картошку вместо грибов и не варила а жарила»

есть ли возможность работать (реально) на C# на линуксе?
не, рано еще

Везде будет скучно, если знаний/производительности не хватает, чтобы полдня пилить беклог, а полдня улучшать проект. Веб сейчас что с корпоративным, что не с корпоративным уклоном — это «запрос принял, из базы достал/положил, json отдал (сейчас, правда, GraphQL марширует)».
В чистом фронтенде, напротив, интересно: реакты, ангулары...
Корпоративные сервисы обработки данных тоже предлагают пошевелить мозгами. Десктоп (мало заказов только). Игры. Мобильные приложения.
Пайтон так и не выстрелил. Рельсы — моветон уже почти. С# будет всегда, но о Razor рекомендую забыть. Только сервисы.
Время веб приложений с рендером на сервере проходит. У Вас скоро не останется работы, кроме как настраивать WolrdPress (правда ее на удивление все еще много) или отдавать json.
Если это что-то масштабов фейсбука, то там полно интересных задач и с json (правда, далеко не для всех).
Если раньше брали бек-енд со знаниями фронт-енда, то сейчас наоборот: на клиенте полно задач, а сервер слепить может «кто угодно» (за исключением масштабов фейсбука)
Нет, я, конечно, знаю СТО, которые во избежание утечек памяти в браузере предпочитают отрендерить на сервере и забыть, но их единицы, и их страхи в большинстве случаев не оправданы.

Пайтон так и не выстрелил
 Вы это серьезно?
Web, Machine Learning, Data Science, AI, Big Data...

Зважаючи, що більшість коментаторів тут працюють у досить вузькій частині галузі і мають дещо туманні уявлення про інші, не варто надто серйозно ставитись до всього написаного

открою основной секрет: язык — всего лишь инструмент, который нужно выбирать в зависимости от задач

Высоконагруженные приложения и тд
 можно писать практически на любом языке, т.к. главный фактор здесь — архитектура системы вцелом. А «корпоративный» сектор — то еще болото с технологиями 15ти летней давности и килотоннами говнокода, я бы сказал весьма сомнительное удовольствие

Ruby не советую: язык кривой, работы нет, зарплаты маленькие ;)

Годный вброс

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

Шаблоны Gof, Enterprise Application Architecture, Enterprise Integration Patterns, — это прерогатива C#, Java, Scala, Kotlin и других языков со статической типизацией, на которых пишут сложную логику на бэкенде. Учитывая, однако, что проектов на Scala и Kotlin — раз-два и обчелся, и будущая доля их рынка слабо предсказуема, надежнее всего остановить выбор на C# или Java.

Без статической типизации крайне сложно создать настолько большой и сложный код, чтобы было где применить шаблоны в полную силу. JavaScript, Groovy Python, PHP и т.п. редко используют в таких проектах в качестве основного языка.

Используйте typescript для js, в php7 есть довольно много приятных нововведений. Не вижу проблем с шаблонами php. Посмотрите код того-же Symfony3 хотя бы.

редко используют в таких проектах в качестве основного языка.
Хотел бы уточнить, о каких проектах вы говорите? Хорошие проекты на php есть и их немало.
Используйте typescript для js
Речь ведь идет не о моем pet-проекте, верно? Мы работаем за реальные деньги на тех проектах, которые нам аутсорсят. Если я решу сменить работу, как долго я буду искать проекты на typescript в моем городе? Сколько таких проектов? Пройду ли я туда собеседование? Есть ли у меня вообще выбор?
Хотел бы уточнить, о каких проектах вы говорите? Хорошие проекты на php есть и их немало.
Вообще-то, говорю не я, а автор топика. Он жалуется, что
В ПХП ... в основном задачи однотипные и есть уже готовые решения

Я теперь так будут на собеседованиях отвечать:) Шаблоны? пфф

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

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

Да вроде не сложная, а душа не лежит.. Хоть как на меня, с# сложнее, за счет большего количества разных мелочей.

Шарп однозначно красивее Джавы. В свое время подумывал на него перейти, но сравнив количество вакансий и проектов в Киеве и зарубежом, з/п, перспективы, экосистему (ИДЕшки, фреймворки, либы, открытость и т.п.), предпочел остаться на Джаве. Я был «на распутье» где-то в 2010м, и если честно, мне кажется, не прогадал.
Единственное, что меня беспокоит, — непрекращающаяся судебная тяжба Оракла против Гугла по поводу Джавы. Если Оракл выиграет апелляцию, Гугл запросто может начать миграцию Андроида с Джавы на что-то другое, и тогда маятник лучшего (для меня) языка качнется в другую сторону, хоть пока и неясно, в какую. Возможно, это будет Котлин, но не факт.

Я не писал, что сложная. Я писал не лежит душа. А она не лежит по нескольким причинам. Сейчас, как вы понимаете бум вайти вайти, и я сам, если честно его участник, и понятно все ломятся куда не лень, а с джавой все еще хуже. Такой огромный пиар курсов джавы. Зарабатывай 5000 баксов на джаве. Огромное количество джава джунов, а реальной работы для них очень мало. Огромный стек. Фриланса нет. Люди ломятся тысячами в джаву и я не хочу там толкаться. И вторая причина. Она абсолютно субъективна. Те продкуты джава, которые мне попадались, как потребителю, как то лотус, идешки всякие, показались мне глючными и тормозными (ресурсоемкими) и продукты Майкрософт на их фоне (ну или Эппл) выглядят намного более привлекательными. Да и андроид тоже не блещет стабильностью.

Опасаюсь, что при маленьком стеке и фрилансе шансы убежать от круда будут невелики. А если еще и ориентироваться на ИДЕшки, написанные не на Java, выбор языков станет куда меньше, а значит, проще.

Как это фабрику негде применить?
Бизнес логику небось в контроллерах пишите?

уже нет. Пишу где и положено, в моделях либо если описать сложнее чем в классе модели, складвываю в отдельную папочку (например компоненты). Фреймворк Yii2.

А наследование, полиморфизм используете?

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

Фабрики хороши в том месте, где мы еще не знаем какой конкретно класс использовать, например пользователь выбирает один сервис из многих реализующий данный интерфейс, адаптеры разные, те же формочки зависящие от других форм и т.д. Масса примеров где их можно использовать.
А в какой сфере Ваши проекты?

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

Нагрузите )))
И там совсем другая песня.

Мне клиент помог на одном проекте. Нагрузил ботами в рекламных целях. до 100000 дошло в день. Посыпался серверок хорошо. Такие ошибки понаходились. Самая прикольная была, когда случайно в ячейку парент ИД юзера, занеслось ИД этого же юзера. Это приводило к бесконечной рекурсии. Заходишь на профиль юзера, нагрузка сервера 120% и 504 ошибка без разговоров. Вот это то мне все и понравилось, не скучно...

ща открою тайну. горизонтальное масштабирование. только тссс

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

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

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

Бизнес логику небось в контроллерах пишите?
Можешь обьяснить почему станет лучше, если всю логику перенесешь в SomethingService, который реализует ISomethingService?

З.Ы. За тесты на проекте никто не платит, поэтому не тратим время на глупости.

есть тысячи статей и десятки книг, где это доходчиво объясняется

Ну как бы, самый простой пример, использование той же логики в разных контроллерах или разных actions. Куда ведь удобнее реализовать все в SomethingService и подключать по необходимости из разных мест в контроллерах. Или нет? :)

Ага. То есть главный аргумент: повторное использование? На целый проект вызываю повторно максимум 1-2 разных метода от силы пару раз. Не получается что-то все повторно использовать как пишут в своих литературах гуры строители воздушных замков.

Не обязательно, это всего лишь один из аргументов :)
Возможно Ваши проекты просто не еще не дошли до того уровня, раз Вы не используете слои сервисов.
Но, если работаете в большом проекте, в котором требования все время меняются, я себе не представляют даже, как можно все строить на контроллерах.
Вернее представляю, даже видел кусок кода, строк так на 800-900. Делал метод всего одну бизнес операцию, которая использовалась в одном только месте — заявка на перевод денег в банке.
НО!
Все параметры получатель, плательщик, типы счетов одного и второго, комиссии и т.д. все это понемногу добавлялось на протяжении 5 лет. Никто из команды (3-4 поколения) уже не знал как там все работает. Нахождение ошибки, поправка и тестирование нового и старого функционала — это страшные затраты по времени.
В все началось из-за того, что «проект был маленький», «параметров было мало» и вместо того, чтобы структурировать бизнес-логику классами, ее сделали ифологией в одном методе..

Поэтому не зря гуру пишут в «своих литературах» :)
Наверняка они познали дзен съев не одну собаку на подобных примерах.

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

интерфейс нужен не только для тестов, но и для type hinting, например.

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

Python и Ruby вряд ли подойдут под требования, если говорить о веб-разработке: в большинстве случаев задача перед вами будет стоять такая же — CRUD.
Бывают сложные проекты с более интересными задачами, но, как и везде, это происходит не очень часто.

Python, правда, можно эффективно применять и в других сферах — Big Data, Data Analysis, Machine Learning. Сферы в меру тяжелые, интересные и требуют неплохого освоения, но с точки зрения именно кода перед вами вряд ли будут стоять челленджи — в указанных направлениях над архитектурой проекта заморачиваются мало и, чаще всего, она простая.

Если хотите челленджей именно относительно архитектуры и кода — от Java никуда не денетесь. Там вы устанете от фабрик фабрик фабрик фабрик ...
Подозреваю, в C#-ном энтерпрайзе может быть что-то подобное, но с ним я уже сталкивался мало.

Если хотите челленджей именно относительно архитектуры и кода — от Java никуда не денетесь.
в C#-ном энтерпрайзе может быть что-то подобное, но с ним я уже сталкивался мало

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

Подписаться на комментарии