danforth

danforth
Рейтинг
153
Регистрация
18.12.2015

Я бы взял несколько языков и просто прошол тутор на каком-нибудь сайте с обучалками по языку. Что больше зайдет по философии - то и учил бы.

В целом, мое мнение по языкам (от простых к сложным):

  • PHP - комок из легаси, плохих практик и не консистентного код-стайла. Как первый язык - может травмировать психику и научить плохому. Можно начать с него, если готовы на нем же и остановиться. Если пойдете дальше - лучше сразу искать что-то по продуманней. Можно заработать на покушоть.
  • Python - неплохой язык с широким спектром применения (не только лишь веб). В целом, как первый язык очень даже ничего, но под веб для быстрого создания шаблонных сайтов - так себе. Покушоть даст.
  • JS - крайне ублюдский язык который создан чтобы страдать. Изучить язык это где-то 20%, потом придеться изучить экосистему, которая меняется каждые 2 года. Чтобы покушоть, придеться 5 лет поголодать.
  • Ruby/ROR - умер.
  • Go - классный язык, уже 2 года пишу на нем, быстрый как понос (работаю в одном проекте, держит там 300к рпс), простой как палка (иногда простота добавляет проблем). Из минусов - под темплейтинг и вот это ваше MVC - вообще никак. Хорош в связке с каким-то фронтенд фреймворком вроде Vue/React/etc. На покушоть первое время будет плохо, джуны никому не нужны.
  • Erlang - годный язык для всяких телегом проектов (собственно под них и создавался), где нужна скорость и стабильность (философия языка - умри но живи), крутая модель акторов, как и любой ФП требует базовые знания алгебры, монады, функторы, вот это вот все. Для старта не рекомендую, высокий порог вхождения.
  • Crystal/Nim - очень редкие языки, на них никто не пишут, все просто слышали о них и тихонечько посматривают. Покушоть там и не пахнет.
  • C/C++ - дают хорошую базу и понимание как работают компы, в купе с книжками по computer science могут дать очень хорошую базу, которая позволит дальше учить только синтаксис и разные модели взаимодействия и паттерны. Для веб-разработчика избыточный. Покушоть первое время не светит, но если поголодать и посидеть в нем годик другой, в других языках можно сразу хорошо зарабатывать.
  • Rust - последнее время активно на нем пишу, могу сказать что это что-то вроде брейнфака, только на нем можно написать действительно рабочий софт. Пойдет под очень нагруженный веб и IoT. Сложен из-за модели владения (ownership и borrow checker), иммутабельности, системы типов и трейтов, но в замен дает memory safety (и даже в многопотоке, если не юзать unsafe), отсутствие гц (да, Карл, но не гарантирует отсутствие утечек памяти). Покушоть дают пока криптостартапы, и Amazon (AWS) с Azure, если конечно сможете туда устроится.

Я бы взял Python. С ним будет чуть сложнее стартануть, но он более правильный, что-ли.

Там Ведьмака релизнули

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

Как раз с блокирующими операциями асинхронные вызовы и используют, чтобы планировщик положил задачу в пул и мультиплексировал по тредам эти задачи, когда какая-то из них будет готова по IO. У рантайма есть точки переключения контекста, которые проставляются в сисколах, сетевых вызовах и прочих функциях, где потенциально эффективная работа может быть выполнена, пока мы ждем какого-то ответа от сети или диска. И шо такое асинхронный поток? Есть userspace thread, есть kernel thread, и есть cpu thread. О каком речь-то?

Aisamiery:
Только это не подход асинхронного программирования. А в питоне я не знаю как сейчас, но раньше были некоторые проблемы с многопоточностью, для таких вещей уж лучше Erlang и на его машине построенные (elixir например) или тот же rust, но уж точно не питон.

На самом деле вы путаете теплое с мягким. Асинхронность - это свойство кода. Вы пишите асинхронный код, он теоретически может выполняться параллельно, а может и не выполнятся, если ядро одно. Другими словами, написав асинхронный код, это не гарантирует его параллельное выполнение, но при соблюдении некоторых условий (количество ядер > 1 и наличие рантайма) вы получаете параллелизм. Делая асинхронный вызов, не всегда создается гринтред (или корутина). Параллелизм - это свойство программы выполнятся параллельно, как бы тупо это не звучало. На счет Rust, там стабилизировали только недавно async/await, в остальном все так и используют токио, который взял концепцию планировщика с Go (work-stealing + work-sharing). Как пример асинхронного языка, Rust вообще тут не к месту. Тот же Erlang или Scala с его моделью акторов, или Go, Closure с моделью СSP - да, а Rust - пока что нет.

Stek:
Джанга - это в первую очередь быстрая разработка. К тому времени пока проект взлетит и начнет упираться в скорость, код по 5 раз успеет измениться.

Ну, в случае Go, на нем реально быстро разрабатывать. Если создать свой микрофреймворк с бойлерплейтом, и с него стартовать - то выходит не плохо. Например, описываешь OpenAPI файлик, он генерирует модели, и хендлеры. ORM накидывает методы на эти модели. Далее, ты с того же файлика генерируешь клиент (хоть на TypeScript с типизацией), который знает куда ходить и что прийдет в ответе. Единственное, что доставляет боль в моем случае - это верстка.

Имхо, рендерить на бекенде, это плохая заетя. Зачем гонять десятки киллобайт туда сюда, если меняется только по сути 5-10% страницы (несколько сотен байт). Раньше был аргумент, что поисковики не индексируют этот контент, сейчас это уже не актуально, а в будущем, скорее всего, спа сайты будут ранжироваться выше, т.к. они грузятся быстрее, эффективней, и т.д.

Сейчас кстати в Laravel практикуют такой подход, там уже вшит vue.js, и есть интеграция с ним.

Stek:
Что за "спа" такое ?
Aisamiery:
single page application
-= Serafim =-:
Из-за ВП пишут некачественный контент? Это сильно.

Из-за низкого порога вхождения, там же написано.

Вас не смущает, что вы то же самое написали несколькими постами ранее? Это получается тоже сильно?

-= Serafim =-:
То, что хватает говносайтов и дорвеев - это обусловлено простотой вхождения в разработку на ВП и популярностью самой CMS.
-= Serafim =-:
ВП позволило создать миллионы сайтов, которые реально отвечают на вопросы юзеров.

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

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

Sly32:
Я спрашивал?

Слово "обсудим" в названии темы просто так?

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

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

python медленно.

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

питон остается для мл, и бигдаты, и то из-за сшных биндингов.

Всего: 1540