Comments 47
Я не отрицаю, что имея хороший практический бекграунд на go, nginx может и не потребуется, но в контексте «с php на go», имхо это скорей вредный совет.
А как в go с поддержкой web? Надо ли учить какой-то фреймворк? Или прямо в самом языке есть средства для работы с http, cookies, сессиями, формами и так далее?
Вот это не совсем понятно. Если подразумевается работа с docker, то нужен только сервер с docker и все. А в образ достаточно разместить сам исполняемый скомпилированный файл (на go его можно сделать самодостаточным — без необходимости внешних библиотек) и, возможно, какие-то внешние данные в файлах для него. Т.е. это свойство запускаемого файла на go (отсутствие зависимостей) подразумевает что можно использовать минималистичный образ alpine в качестве основы.
Естественно, если речь идет о развертывании на сервере без docker, все описанное справедливо и для сервера — размещать на нем нужно только исполняемый файл приложения. Go на нем ставить не нужно.
Опять-же, если подразумевается что разработчик работает на Windows, а бинарник приложения ему нужен на Linux, то и это можно делать (насколько я знаю) не разворачивая Go на Linux сервере — кросскомпиляция в Go просто шикарная. Врать не буду — из Windows линуксовые бинарники не делал. Но из Linux виндовые — вполне.
Если вы до сих пор на php5+, то гляньте в сторону php7+. Это совсем разные уровни. Ну и нормальный код в шторме не сложно отследить. Конечно старый быдлокод в нем сложно редактировать
И да, пишу я не в шторме а в vscode. Потрясающая по удобству вещь! Кстати php там очень неплохо поддержан. И в отличии от шторма лёгкая и шустрая.
Ну тогда ffi точно Вам зайдет)
Ну с каждой версией php что то, да добавляет в "коробку"
Не всегда нужна многопоточность, опять же при желании можно добавить, а так "коробка" и так не маленькая.
Гляньте что творят Бадушники :)
Не за горами php8
Гляньте что творят Бадушники :)
Не за горами php8
Со статической типизацией и нормальной многопоточностью ???
Я может не пишу на разных ЯП, не могу сказать эта нормальная, а это не нормальная многопоточность, но она есть в php и даже тут можно почитать, статьи три видел.
Ну и типизация подтягивается, в 7.4 обещали типы для свойств
https://wiki.php.net/rfc/typed_properties_v2
Ещё ffi будет и JIT
Сервер на Linux, установить Nginx, иногда и Apache, поставить PHP, расширения, базу данных, Memcache, настроить Cron. Чтобы не было мучительно больно обслуживать сервер ставлю все в Docker. Вот так выглядит мой обычный Docker проект на PHP.
Что-то как-то слишком субъективно. Как и для запуска пыха достаточно поставить один голый пых, работая через builtin, кастомные серваки, вроде реакта или под хайлоад дособрать swoole какой-нибудь, так и для go для работы с каким-нибудь MySQL надо установить, внезапно (sic!), ещё и сам MySQL…
В Go в большинстве случаев открывая какой-нибудь лютый код на 200 файлов и каждый файл полотенце кода, удивляешься тому что ты его способен понять слёту.
Когда-то давно Python не был так распространен, как сейчас, и я был искренне убежден, что на нем невозможно написать плохой код. Когда популярность Python выросла, начиная где-то с 2006-го года, я регулярно стал сталкиваться с абсолютно нечитаемой адской лапшой на Python.
Дурак (или просто неопытный человек) на любом языке напишет плохо. Нет серебряной пули… Есть языки, на которых, мне кажется, 80-90% кода ужасны (Perl, PHP, Javascript), но нет языка, на котором любой код будет хорош.
На Go просто пока что пишут большие энтузиасты из любви к искусству. Когда в него потянутся любители легких денег (потому что много привлекательных вакансий), станет так же, как и с любым другим языком: нечитаемая лапша, функции на четыре страницы с 5-10 кратно вложенными if
и/или циклами, архитектура в стиле Big Ball of Mud, и т.д. и т.п.
Кстати, я вот хотел сделать сайт на Go, но не нашел пока какого-то красивого фреймворка, с большим количеством встроенных батареек. Чтобы можно было сосредоточиться на написании сложной функциональности, а все тривиальные задачи фреймворк взял на себя. Может кто-нибудь посоветовать, на что посмотреть?
По поводу фреймворков — Beego, Iris, Gin, Revel, Martini, Buffalo. Может, сейчас ещё что-нибудь написали. Особо большого выбора не нашёл, когда интересовался этой темой.
Тут в тему третий абзац комментария — относительно низкая популярность.
Сравнительный анализ хорошо, как-то статью находил PHP vs Ruby vs Go vs Java. И по многопоточности там Go не так уж и хорош был. Правда там то же вызвало вопросы некоторые вещи.
Видел как и на Pascale делали вещи, которые другие на С не могли. И дело было вовсе не в языке, а в том, что легче далось/что оказалось под рукой/что знаешь.
Но мы же о веб-разработке говорим…
90% задач решаются одним и тем же способом на любом языке, они немного отличаются синтаксисом, и глубоких знаний в общем-то и не требуют. И есть подозрения что в ближайшем будущем в этом плане изменений не предвидится.
А судя по подобным статьям, оставшиеся 10% это видимо ресурсы с миллионами одновременных обращений в секунду. Но что-то обилие таких в интернете замечено не было. Много ли их открылось за последние 3 года? Хотя отрицать не будем, у всех разные задачи и амбиции и перспективы развития, мало ли.
Ещё один вопрос, если отказаться от PHP и перейти на Go то много ли измениться, если использовать будем фреймворки, а они в свою очередь всё те же общие библиотеки? jQuery, Ajax, TinyMCE?
И я до сих пор не пойму чего плохого в динамической типизации?
Сравнивая с искусством так вообще, подобные статьи смахивают на то что школа Рембрандта одна единственная верная, а Дали и Пикассо — быдлокодеры. Я за понятный и чистый код, без перегруженной логики, в остальному пусть кто как хочет так и кодит.
Докопаюсь до предыдущего комментария:
и я был искренне убежден, что на нем невозможно написать плохой код. Когда популярность Python выросла, начиная где-то с 2006-го года, я регулярно стал сталкиваться с абсолютно нечитаемой адской лапшой на Python.
Дурак (или просто неопытный человек) на любом языке напишет плохо. Нет серебряной пули…
Подозреваю человек переживает за плохой нечитаемый код.
Но думаю он вряд ли заглядывал или разбирал внутрянку:
Кстати, я вот хотел сделать сайт на Go, но не нашел пока какого-то красивого фреймворка, с большим количеством встроенных батареек.
Тогда смысл переживать?
* Связку из асинхронного nginx+php и многопоточность языка. (Отдачу статических больших файлов автор тоже видимо на Go с нуля реализовывать будет с поддержкой докачки.)
* Количество файлов в проекте для компилируемого и транслируемого языка
* Скорость работы IDE для статической и динамической типизации
А Порог входжения в язык вообще не является критерием чего-либо.
Что тут обсуждать-то? Убрать в черновики и не позориться.
Почему веб-разработка на Go приятнее чем на PHP