Это копия, сохраненная 9 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Бэкенд, естественно, на линуксе, но разрабатывать хочу на винде.
C# (.NET core) - неплохой язык, на самом деле, единственное пока копался, не понял где вообще core (кроссплатформенный), где framework (виндовый стек). Чувствую пятым глазом, что буду натыкаться только на виндовые решения и постоянно путаться.
Из плюсов, язык реально занимает второе место в вебе за пхп. Что весьма достойно, хотя думаю сейчас вряд ли кто на нем стартапы пилит, просто MVC легаси.
Ну и стратегия EEE, есть мнение что все это с опенсорсом, это реализация именно этой стратегия. И что пока кормят конфетами нас. Ну хз.
Kotlin - хороший язык, на хорошей платформе. Удобнее, современнее (молодежнее) даже C#. Но минус, это сомнение есть ли у него будущее. Не будет ли это вторым груви или скалой. Не хотелось бы потом, в многолетнем проекте все переписывать на очередную джаву версии 332. Ну и в целом джава - это наследие фреймворков - это порой жрущие и неповоротливое гуано для тырпрайза (как мне видится), а не шустрые легкие решения для анона (а если и встречаются, то порой глючное как npm-пакеты)
Python - не самый приятный для меня язык и динамико-зло во всей красе. Язык имеет хайп, именно хайп в первоначальном смысле слова, то есть его раздули совершенно искусственно на фоне машинного обучения, а инфоцыгани просто подхватили и вывели в топ. Многие решения в языке мне не нравятся, какое-то догматическое восхваление поверх костылей и попыток сделать все по своему в сравнение с другими языками. Гвидо гений, что нам до него.
Ruby - в сравнение с питоном, мне нравится больше. Хз почему не выстрелил именно он. По некоторым показателям жизнь его затухает и, как слышал, есть проблемы с кроссплатформенностью (хоть и крутиться у меня он будет на линуксе, но разрабатывать я хочу на винде). Развивается крайне медленно, хотя обещают многое, даже jit (зачем он динамическим языкам и как там поможет?). Если у котлина под боком есть JVM и есть куда спрыгнуть в момент потопления. То тут все очень туманно.
JavaScript - если с фронтендом я еще смирился и с новыми версиями даже полюбил немного (стокгольмским синдромом, не иначе), то вот сам node.js мне очень не нравится. Мне даже кажется, разработка на node.js с этой всей асинхронностью будет проблемой для меня. Я уверен что смогу каким-нибудь "HTTP compression" положить процесс и скорее всего окажется, что мне надо было знать какие-то подводные камни, о которых, конечно, хер где кто напишет в своем маня-бложиках. Но в целом, язык сейчас везде и вот это желание писать на одном языке и фронт и бэкенд и даже где-то там на мобилках, это очень греет (хотя понятно, что в целом это сова на глобусе).
PHP - дико не нравится стандартная библиотека. И это ООП-головного мозга в динамическом языке (зачем, кто принес туда эту моду??). Но в тоже время, на нем можно вообще без фреймворков собрать себе что-то путное для веба, правда только для статичного. Очень быстр для динамического языка, несмотря на количество синтаксического сахара. Особенно очень быстрый БД драйвер. Хз, может он стал лучше, не знаю.
Go - не очень удобный язык, его надо прям любить, чтобы не уставать с него. Я полюбить не смог. Хотя мне стала нравится тенденция, отказа наследования в сторону агрегации объектов. Наследование, как момент архитектуры приложения, это все же зло. Также, асинхронная технология несет в себе как плюсы, так и минусы. Думаю, мне удастся повесить целый поток как и в node.js (там процесс)
Rust - это видимо что-то для системщиков. По коду приходится заниматься такими вещами, которые мне и не снились (фу, не осилил).
> .NET core
Скоро в этот тред придёт толпа сектантов, устроит срач, здравый смысл будет уничтожен, и конкретики можно не ждать. Просто из-за факта упоминания этой технологии.
Это говорит о его популярности или невменяемости? Самое убогое сообщество я встречал на го, где-то несколько лет назад.
Сорян Вася, но если ты даже русский язык не смог осилить, разговаривать о языках программирования с тобой бессмысленно.
Без понятия, может, сам стек и неплохой. Но вот местные неткорщики совершенно невыносимы, от их постов так и исходит максимализмом и категоричностью, граничащими с борщехлёбством.
О стеке в общем случае нельзя судить по его сообществу, но если и использовать, то в одиночку, не вступая с ними в контакт.
Ты меня победил в орфографическом войне на дваче, теперь твоя жизнь имеет значение. Ты стал кем-то. Вот я говорю, молодец, возьми конфетку с полки. Как же вы заебали, иди уже компенсируй чувство собственной важности на пикабу, никто не будет на дваче для тебя полноценные статьи без ошибок писать
Аргументируй.
Сначала, по заголовку их треда, я подумал что они так шутят:
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Звучит как психологическая проблема в личности этого героя.
запрос (rest http/amqp/rpc/etc) -> контроллер -> сервис -> бизнесс логика -> бизнес события -> трансляция бизнес событий в запросы к DB/MQ -> контроллер/возврат
хорошие примеры языков для реализации архитектур:
Старый дедовский способ сделать лучшую архитектуру, нужно всего лишь взять...
> C# (.NET core) - неплохой язык, на самом деле, единственное пока копался, не понял где вообще core (кроссплатформенный), где framework (виндовый стек). Чувствую пятым глазом, что буду натыкаться только на виндовые решения и постоянно путаться.
На линуксе ни один белый человек эту хуйню не запустит.
> Kotlin - хороший язык, на хорошей платформе
Выйдет новая версия явы, заимплементит большую часть функционала и Kotlin забудут
> Python - не самый приятный для меня язык и динамико-зло во всей красе.
Что ж у вас всех так срака бомбит от динамической типизации?
> Ruby - в сравнение с питоном, мне нравится больше. Хз почему не выстрелил именно он.
Медленный калл, просто добавь ларавель
> JavaScript - если с фронтендом я еще смирился и с новыми версиями даже полюбил немного (стокгольмским синдромом, не иначе), то вот сам node.js мне очень не нравится.
Типы не завезли, да?
> PHP - дико не нравится стандартная библиотека. И это ООП-головного мозга в динамическом языке (зачем, кто принес туда эту моду??)
Чё плохого в ООП в динамическом языке? Наоборот, по логике ООП как раз РУБИ это правильный ООП, там всё объект.
> Go - не очень удобный язык, его надо прям любить, чтобы не уставать с него. Я полюбить не смог. Хотя мне стала нравится тенденция, отказа наследования в сторону агрегации объектов.
Говно говна
> Rust - это видимо что-то для системщиков. По коду приходится заниматься такими вещами, которые мне и не снились (фу, не осилил).
Был шанс стать годнотой, но ждет то же что и котлин. В C++ перенесут всё что есть хорошего в расте и усё.
> C# (.NET core) - неплохой язык, на самом деле, единственное пока копался, не понял где вообще core (кроссплатформенный), где framework (виндовый стек). Чувствую пятым глазом, что буду натыкаться только на виндовые решения и постоянно путаться.
На линуксе ни один белый человек эту хуйню не запустит.
> Kotlin - хороший язык, на хорошей платформе
Выйдет новая версия явы, заимплементит большую часть функционала и Kotlin забудут
> Python - не самый приятный для меня язык и динамико-зло во всей красе.
Что ж у вас всех так срака бомбит от динамической типизации?
> Ruby - в сравнение с питоном, мне нравится больше. Хз почему не выстрелил именно он.
Медленный калл, просто добавь ларавель
> JavaScript - если с фронтендом я еще смирился и с новыми версиями даже полюбил немного (стокгольмским синдромом, не иначе), то вот сам node.js мне очень не нравится.
Типы не завезли, да?
> PHP - дико не нравится стандартная библиотека. И это ООП-головного мозга в динамическом языке (зачем, кто принес туда эту моду??)
Чё плохого в ООП в динамическом языке? Наоборот, по логике ООП как раз РУБИ это правильный ООП, там всё объект.
> Go - не очень удобный язык, его надо прям любить, чтобы не уставать с него. Я полюбить не смог. Хотя мне стала нравится тенденция, отказа наследования в сторону агрегации объектов.
Говно говна
> Rust - это видимо что-то для системщиков. По коду приходится заниматься такими вещами, которые мне и не снились (фу, не осилил).
Был шанс стать годнотой, но ждет то же что и котлин. В C++ перенесут всё что есть хорошего в расте и усё.
про ноду прям жиза. Как при всей крутости js (тоже стокгольмский синдром) да да, по сравнению с другими яп, например java, я считаю его синтаксис гораздо круче и продвинутее, не понимаю как нода может быть настолько убогой. Очень надеялся на дено, но он чет не взлетает, хотя ещё не вечер
кстати некоторые минусы (а для кого-то это могут быть плюсы) решаются ts, так что + в копилочку js
А какая разница на какой ОС разрабатывать? На это точно завязываться не желателтно при проектировании, и выбирать технологию реализации в зависимости от этого. Если интерфейс виндовый тебе болле близок - то запусти IDE в винде и натрави на удаленный linux сервак для сборок/тестов/компиляций чтобы эта среда соотвествовала той среде, на которой будет работать бэк.
Ну а сам язык следует выбирать в зависимости от требований к разрабатываемой системе, ее быстродействию, размера кодовой базы, логической сложности.
По самим языкам не скажу, большей частью из них не пользовался. Но для простых вещей использовал python, для более сложных систем java, где кодовая база побольше. Если архитектура позволяет выделить узкие места в отдельные компоненты, то их потом можно заменить С-шными либами
>Медленный калл, просто добавь ларавель
Все динамико-языки - медленный калл, даже js сосет, хотя и носились с нодой в свое время.
>Выйдет новая версия явы, заимплементит большую часть функционала и Kotlin забудут
Уже видно что получается говно какое-то, трудно налезает сова на глобус. Ну и не думаю что функции завезут.
>Что ж у вас всех так срака бомбит от динамической типизации?
Все что больше хеллоу ворда превращается в боль, особенно если команда большая. Для хуяк-хуяк в одиночку, быть может еще терпимо.
>Чё плохого в ООП в динамическом языке?
Основная концепция ООП, это то что она дает возможность создавать типы (то есть, классы, например String) и устанавливать разного рода контракты (начиная от интерфейсов, заканчивая сигнатурой функциипараметры + возвр. значение). Понятно, если типов нет, а все объекты полиморфны, то смысл ООП нет. Тем более нет смысла в наследование (да и уже давно поняли что агрегация/композиция практичнее наследования).
Когда в пхп использовали классы для группировки функций - это было нормально, но когда стали играть в джаву, это стало идиотизмом. Причем не стоит забывать что уровень пхп программистов ниже и порой они пишут не модульный код, а еще более запутанный.
И да, пхп не джава, она перерождается каждый раз и каждый раз лопатит ООП снова снова.
C++ забыл.
>но разрабатывать хочу на винде
Это уже приговор.
>Python - не самый приятный для меня язык
Пожалуйста, не лезь в него. Не хватало тебя ещё в питон-треде.
>то вот сам node.js мне очень не нравится. Мне даже кажется, разработка на node.js с этой всей асинхронностью будет проблемой для меня.
Программирование вообще будет проблемой для тебя, если ты не в состоянии разобраться ни с callback-based асинхронностью, ни с промисами и async-await.
>важно то, правильно ли я рассуждаю и поправьте меня где нужно.
Нет, ты неправильно рассуждаешь с самого-самого начала, поскольку у тебя язык и платформа оторваны от задач. А вообще язык и платформа выбираются под задачу с поправкой на свои вкусы. А задачи принципиально разные бывают. Если ты этого не понимаешь, то ты просто не дорос ещё.
>C# (.NET core) - неплохой язык, на самом деле, единственное пока копался, не понял где вообще core (кроссплатформенный)
https://docs.microsoft.com/ru-ru/dotnet/core/
Юзаю на линуксе, проблем нет. На мой взгляд одна из самых продвинутых платформ на данный момент.
>поскольку у тебя язык и платформа оторваны от задач
Разработка под линукс - платформа
Разработка на винде - кроссплатформенность
Бэкенд - пласт четких задач
Я смотрю, среднестатистический питонист отупел еще сильнее, в принципе ожидаемо, виду такого хайпа.
>Бэкенд - пласт четких задач
Ты какой-то грёбаный менеджер-гуманитарий, а не разраб.
Иди учи свой C#, чего хочешь учи.
Задачи бэкенда абсолютно разные. И архитектура бэканда не ограничивается ЯП.
Современная крутая экосистема. Объединяет плюсы других языков и экосистем в одном. Например: поддерживает ФП язык F#, можно писать на C# в браузере, много тулзов разных, высокий перформанс.
>можно писать на C# в браузере
Про веб ассемблер или про "компиляцию" в js?
Просто если второй вариант, то он есть у многих языков и нигде толком не выстрелил.
Кроме кликера и прогноза погоды на нем че-то можно уже нормальное сделать или нет?
Лол, голанг у него говно, а пхп, питон, жс и руби — нет. Толстый ты такой, анончик
Понимаешь, школьник, если ты не в состоянии распарсить русский язык, язык, с которым ты прожил всю свою жалкую жизнь до сего момента, на уровне рефлекса, это означает, что к теме компиляторов и интерпретаторов ты близко и не подходил, а значит о реализации языков и их плюсах и минусах ты имеешь представление исключительно поверхностное, основанное на хайпе среди твоего низкоинтеллектуального окружения из зумеров-хайпожоров. Почему ты не рассматриваешь Racket в качестве языка для бэкэнда? Потому что ты посредственный питух, который не видит разницы между
>И так порвалась твоя неграмотная жопа
и
>Итак, порвалась твоя неграмотная жопа
>Лол, голанг у него говно, а пхп, питон, жс и руби — нет. Толстый ты такой, анончик
В голанге даже банальных исключений нет, в отличии от остальных в списке. В 2020 обрабатывать исключительные ситуации в стиле, как это было на сишечке в 90-е принято, ну не пиздец ли это?
голанг это же процедурная параша из 80х без ничего, реально урезанный паскаль
Там есть встроенная и очень удобная поддержка конкурентности, каналов и т.п., что реально очень круто. В остальном говно.
Так больше ничего и не нужно
Сейчас все кому не лень пытаются присосаться к WebAssembly. Но пока там ГЦ не завезут, половину языков делать нечего.
И да, я не вижу у них в приоритете работу с DOM, что говорит о том, что они пилят какую-то сомнительную херню под веб приложения. Не удивлюсь что веб в 2040 будет состоять из приложений с очередного маркета, а про открытый интернет будут помнить только олды (нынешние зумеры).
Я тот еще жиробас, но не на словах. Я действительно полюбил js, после того как 5 месяцев пописал на го.
Нефига он тебе пердак раздуплил. Я даже не дочитал этот маняманевр. Иди уже на пикабу, как тебе сказали.
> Все динамико-языки - медленный калл, даже js сосет, хотя и носились с нодой в свое время.
Я думаю ты хотел сказать "интерпретируемые". Но тут особый случай. Ruby медленнее PHP где-то в 5 раз. Ruby отстает от php больше, чем php от java. Это я ещё не привожу kphp или hhvm
> Основная концепция ООП, это то что она дает возможность создавать типы (то есть, классы, например String) и устанавливать разного рода контракты (начиная от интерфейсов, заканчивая сигнатурой функциипараметры + возвр. значение). Понятно, если типов нет, а все объекты полиморфны, то смысл ООП нет.
Как раз таки нет. C++-ный ООП например это не совсем ООП. Там есть примитивные типы типа int, float, bool, а есть объекты с методами. В той же джаве чтобы округлить флоат надо писать Math.round(f), а не f.round(как в рабби). А это уже не ООП подход.
Как раз с точки зрения ООП хороший язык это РАББИ. Там всё объект. И функция объект, и циферка объект, и литерал объект. Даже puts "Ruby".reverse можно.
> Причем не стоит забывать что уровень пхп программистов ниже и порой они пишут не модульный код, а еще более запутанный.
Не правда. На PHP пишется много реально хорошего кода.
>>37474
> Лол, голанг у него говно, а пхп, питон, жс и руби — нет. Толстый ты такой, анончик
Голанг это просто плохой Rust. Я не имею ничего против процедурных языков, но надо же иметь вкус. В принципе я могу допустить что Go станет хорошим, но на сегодняшний день калл
асинк авей сегодня есть даже на говно-питоне. зачем они этому тормозному языку, я конечно, не понимаю
Там нет даже перегрузки функций, лол
Если уж смотреть на ООП как на его первоначальную идею. То ООП нигде нет, кроме смоллтока и еще там чего-то. Я знаю, что в сети есть бараны, которые нахватались с ютуба идеи, мол динамические языки наиболее подходят для ООП. Но в реале, если система типов не видит разницу между User и числом 5, то никакого понятие классов там вообще и нет. и вообще срать, объект это по синтаксису, или примитивный тип, система разницы не видит, до выражений
>Если уж смотреть на ООП как на его первоначальную идею. То ООП нигде нет, кроме смоллтока и еще там чего-то.
Ну почему, в ruby вполне аутентичный OOP, близкий к smalltalk. Ну, конечно, есть различия. Например в Ruby if/else это языковая конструкция, а в smalltalk это тоже объекты =)
А так да, вполне ООП язык.
> Я знаю, что в сети есть бараны, которые нахватались с ютуба идеи, мол динамические языки наиболее подходят для ООП
Не совсем так. Ruby, несмотря на то что динамический, ближе к ООП чем какой-нибудь Java или C++. Но C++ ладно, они вообще никогда не претендавали, у них язык мультипарадигменный. А вот явочка - да.
> система типов не видит разницу между User и числом 5, то никакого понятие классов там вообще и нет
Как это не видит? У модели User есть active record метод save, который его в базу кладет. А в пятёрке нет такого метода. Разные объекты реализуют разные интерфейсы. Тебе не должно быть важно какой тип у объекта, тебе важно поддерживает ли он интерфейс X или нет.
> и вообще срать, объект это по синтаксису, или примитивный тип, система разницы не видит, до выражений
Так нет примитивных типов, всё объект. Даже небо, даже аллах. Это и есть ООП по-рубевски. Int это тоже объект.
Что там у тебя ближе в рубях, когда нет системы типов. То что ты можешь сложить гуся с собакой, это делает руби ближе к ООП?
ООП изначально проектировался по подобию биологической системой (авто биолог). Основной поинт там в сообщениях между объектами.
То что на процедурщину натянули идею посыла сообщения, не делает язык ООП.
>fix
Что там у тебя ближе в рубях, когда нет системы типов? То что ты можешь сложить гуся с собакой, это делает руби ближе к ООП? ООП изначально проектировался по подобию биологической системы (автор биолог). Основной поинт там в сообщениях между объектами. То что на процедурщину (функции) натянули идею посыла сообщения, не делает язык ООП.
> Что там у тебя ближе в рубях, когда нет системы типов
Кто тебе сказал что ты можешь сложить гуся с собакой? Кто сказал что в ruby нет типов?
Ты наверно не знаешь что такое динамическая типизация в принципе.
variable = 'keklol'.reverse
И в переменной будет строка. А потом ниже в коде можно написать
variable = 42 и в ней будет уже не строка.
В том же С++ так нельзя, если уж написал auto variable = 'KEK'; то строкой это будет всегда, и инт ты туда уже не впихнёшь. Вот и вся разница.
А гуся с собакой сложить тебе никто как раз не даст.
> Основной поинт там в сообщениях между объектами.
А в рабби объекты через сообщения коммуницируют, всё нормально.
>Ты наверно не знаешь что такое динамическая типизация в принципе.
То что типы проявляются только тогда, когда мне не нужно, в момент исполнения, не делает систему типизированной. Это лишь говорит о том, что платформа где она исполняется, написана на том, где есть типы (чаще это си).
То что у тебя есть числа и строки, это издержки платформы, а не попытка типизации.
>То что типы проявляются только тогда, когда мне не нужно, в момент исполнения, не делает систему типизированной.
Что значит "в момент исполнения"? Это интерпретируемый язык, там всё в рантайме и кроме рантайма ничего нет.
> То что у тебя есть числа и строки, это издержки платформы, а не попытка типизации.
Не издержки это, а именно ТИПИЗАЦИЯ. В ООП тип определяется тем какие он интерфейсы реализует, и у чисел, моделей, строк они будут разные.
Просто поскольку типизация динамическая(изменяемая), тип переменной может поменяться. В отличаи от статической типизации, где если инт то уже инт.
fix
>ООП изначально проектировался по подобию биологической системы (автор биолог)
О каком авторе идёт речь?
Алан Кёртис Кэй. Джазовый исполнитель, молекулярный биолог, лжец, девственник, который хорошо знал математику, но никогда не работал в IT =/
Мне кажется, что дело не столько в биологии, сколько в наложении философско-конструктивистских идей на прикладные знания. а он баловался марксизмом и философскими концепциями такого вот толка Отсюда и искусственное(и речь идёт именно об искусственном) прототипирование и интерпретация поведения объектов, ведь всё это постулируется чуть ли не в ключе основ мироздания. хоть где-то эти идеи нашли отклик Интересный персонаж, конечно.
> Мне кажется, что дело не столько в биологии, сколько в наложении философско-конструктивистских идей на прикладные знания
Ну так да, я ж про это и говорю. Берёшь себе классификацию из молекулярной биологии и натягиваешь его на промышленную область никак с этим делом не связанное потому что потому. А если разработчики пишущие реальный код плюются, значит они неправильные. Это как посмотреть видео профессора Попова про "движение исчезновение бытия в ничто, а ничто в бытии" и про "два логических шага", а потом на основе этой маняфилософии создавать ЯП, где логика будет не формальная - а диалектическая. И у тебя отрицание отрицания синтезис даёт.
Алан Кэй конеш няшный чел, но вот как я выше сказал, он крудики не шлёпал, он у себя в облаках витает.
>Что значит "в момент исполнения"? Это интерпретируемый язык
Я тебе это и говорю, эти языки не могут быть ООП технически.
Все ООП строиться на сообщениях между объектами. Как можно что-то строить не зная что там в переменной? А что если я спрошу что там, но туда уже положили другой объект? Почему в упаковку с яйцами положили собаку?? Как с этим работать?
Нет и не может быть там никакого ООП, есть только симуляция и маркетинг.
Alan Kay же, он там вдохновился клетками живого организма.
> Я тебе это и говорю, эти языки не могут быть ООП технически.
Да почему же блять не могут? Кто тебе такое сказал?
Вот тебе код на рабби. Смотришь какой тип по тому, может ли объект сделать X или не может. У циферки есть times, у строки нету.
> Нет и не может быть там никакого ООП, есть только симуляция и маркетинг.
Лол, как раз именно что ООП. Твоя хуйня про то что интик это 4 байтика, лежат они себе в ячейке, закодированы бинарным кодом, где первый буйтик означает знак. Или не означает. А вот флоатик, тоже 4 байта занимает, но там первый байтик это флаг, потом 8 байт экспонента, потом 23 байта мантиса и тд.
Это как раз структурный подход, где ты не абстрагируешься от байтиков и того как это хранится в памяти. А в ООП ты как раз думаешь на уровне объектов, и тебе интересно не то как эта хуйня в своих ячейках хранится и сколько их занимает, а реализует ли она интерфейс abs или нет. В этом плане инт и флоат равны.
Дело в том, что Си это лучший язык. Го это Си с хорошей поддержкой многопоточности, синтаксическим сахаром и сборкой мусора. Это просто Си на стероидах, то есть ещё более лучший язык.
ООП-враньё, исключения и прочая неявная хуета просто не нужна
Согласен. Забавно и то, что те, кто создаёт что-либо, руководствуясь данным подходом, ожидают, что их идеи будут столь же гибки и изменчивы, как сама возможность интерсекции разных областей применения и слияния системообразующих идей, но на деле всё совершенно не так и подобные "технологии" оказываются на стыке формальной допустимости и относительной практической пригодности, что усложняет процесс их развития и пересмотра подхода как такового, ведь первоначальная мысль может быть искажена, а неких достойных аналогов может и не быть(либо они могут не рассматриваться в качестве равных). Это не говорит о качественной ценности той или иной технологии, потому что она определяется иными критериями, лежащими в прикладной плоскости в большей степени, но является интересным фактом.
Требуется качественная аналитика для языка Scala
Один из "непрактичных" языков (как и идея чистого ФП).
То есть, язык создавался ради самого языка. Математическо-академический онанизм в чистом виде. Очередной язык гения, или узкой толпы мечтателей. Ничего общего с реальным рынком программирования.
Ну ООП не так плох, вернее некоторые вариации. MVC и все производные рока взлетели, а чё бы нет. Когда последний раз кабинетные учёные сделали что-то лучше, чем крупные корпорации?
Как так вышло, что JetBrains всрало более 11 лет на разработку плагина для поддержки "непрактичной" Scala?
Не, как раз таки нихуя. Scala - это не идея чистого ФП, Scala это мультипарадигменный язык, там можно на чистом ООП писать, законом не запрещено. Просто в Скале фишечки из ФП завезли. На скале можно писать на чистом FP, и это прекрасно. Весь код ты так не напишешь, это невозможно.
А иногда можно ввести state и ускорить работу в разы.
Это называется бизнес. Давай я тебя научу.
1. Твой бизнес основан на IDE,
2. Смотришь рынок.
3. Устраивает?
4. Делаешь плагин.
5. Профит.
Непрактичный не значит, что на нем никто не пишет.
>это не идея чистого ФП
А чистого ФП и нет. Да и дело не в фп, зря я его упомянул. Тут я про дизайн языка.
Почему не пишут? Пишут, конечно же. Только вот незадача - над плагином работает полторы калеки, которые каждый "ночной" релиз ломают уже реализованный функционал. Из-за этого народ сидит на EAP релизе IDEA, которая распространяется бесплатно и ставят ночные сборки плагина (тоже бесплатно). Так в чем здесь выигрыш для JB?
>Вон Свитер на скале
Абсолютно не показатель успешности языка. Если что, то свитер, за все время существования, показал прибыль лишь однажды, когда уволил несколько сотен разработчиков одним махом. В остальное время они просто проедают очередной раунд инвестиций от доверчивых инвесторов.
Ну и на Scala они переползли только из-за того, что он был похож на Ruby и работал быстрее из-за JVM.
>Вон Свитер на скале
Сейчас бы сравнивать по крупным компаниям у которых 100500 языков. Иногда даже кажется, они берут какой-то го или раст или другой новый язык, чтобы только в комьюнити попиариться.
Ну как видишь они особо и не тратятся на него.
Профит тут - удерживать рынок. Когда чела со скалы спросят на чем он пишет, он скажет идея, чем сделает мини-рекламу.
Я уже молчу что это около-джавовская тусовка со всеми вытекающими.
Или ты веришь в добрые дела?
В более продуманном дизайне, на первый взгляд сильно не надкусывал, вдруг там под глазурью какашка.
Джавовая тусовка ненавидит Scala. На Scala приходят либо отщепенцы с Java, либо какие-нибудь ололо-датасаентисты с питона.
Есть всякие психопаты, которые пытаются пилить схожие с Java проекты на Akka/Play Framework/Slick или typelevel стеке, но выходит из рук вон плохо и очень медленно.
я пробовал писать на руби, сложилось впечатление, что это write-only ЯП
А пациентам лучше и не знать многих вещей.
Или делаешь на пайтоне, или никогда не сделаешь.
Ты на пайтоне хотя бы 100.000 строк писал? Там потом даже с IDE ногу сломишь.
Очевидный C++, не увидел в списке.
Двачую этого. Питон, все остальное - прокрастинация, как, собственно, и весь оппост
На яблодевайсах. А где ещё? Там больше ничего нет.
Это галимое теоретизирование. Или это не код, а пустая вода.
Я просто ради интереса глянул, проект django-2, это 122 тысячи строк, sqlalchemy 137 тысяч. aiohttp меньше 20 тысяч. jinja2 это 13 тысяч.
Django это очень серьёзный проект, многолетний, с огромной командой разработчиков. Но даже проекты вроде aiohttp и jinja2 довольно серьёзные, и там больше человека-года, причём серьёзного уровня.
Можешь пиздеть дальше, очевидно, что ты сам никогда ничего серьёзного не писал. И поэтому не понимаешь, чем твоя поделка на 300 строчек, что за день слепить можно не думая, потому что код такой, отличается от серьёзного проекта.
За день 300 строчек * 365 как раз 100к+
Фред Брукс: То что один программист может сделать за месяц, два могут сделать за два
500 строк в день (среднее, будет больше, будет меньше),
~20 рабочих дней в месяце, рабочих месяцев у нас в году 11
5002011 ~ 110.000
Ты можешь за рабочий день написать 500 строк кода?
Вообще, сложность кода возрастает минимум квадратично. То есть если ты N строк пишешь за неделю, то 2N строк будешь писать уже 4 недели. Это при условии, что логика не очень сложная и спроектировано хорошо, иначе там как экспонента пойдёт.
Причём в какой-то момент тупо заканчивается кеш, ты не помнишь, что и где и для чего, и производительность ещё падает. А если добавляются участники в проект, то ещё сильнее падает.
500 строк питона за день сложно написать. Это возможно только или если код слишком тупой, или ты хорошо знаешь, что писать, но это значит, что ты это уже писал и повторно код не используешь, или скорее всего уже для этого либы есть и ты изобретаешь велосипед.
500 строк отлаженного оттестированного кода в день это дохуя. Если ты можешь столько написать, значит скорее всего работаешь ты каким-то производителем бойлерплейта и тебе лучше посидеть и подумать, как это автоматизировать и писать поменьше.
И если сравнивать питон с c/c++, то в последних сильно больше воды, одна и та же логика обычно сильно больше места занимает, поэтому 100 строк на питоне больше делают, чем 100 строк на плюсах, и писать их дольше.
Это уже менеджеру расскажешь. В первый день я могу и 5000 написать. Одно дело когда яйца проветриваешь и сидишь хабр читаешь. Другое целенаправленная работа.
Пруфаника мне сынок, где 100 строк питонобляди делают больше, чем 100 строк отложенного кода на ++!
Проблема больше в том, что у меня не будет столько объема работ, а не то что 500 строк за 7 часов это недостижимое.
Правда в том, что на динамическом языке, ты быстрее достигаешь трудно-сопровождаемого кода. И поэтому твои 500 в день и падают.
А с типами тебе IDE хорошо помогает.
> Ruby - в сравнение с питоном, мне нравится больше. Хз почему не выстрелил именно он.
Производительность.
> разрабатывать хочу на винде
И кста, с этим будут проблемы
Оракл превратил жаву в гуано. А вот майкрософт выебал бы из за уебищную винду возродили шарп, сделав его опенсорсным и кроссплатф.
> современного продукта компании Microsoft
Продукт майкрософт - это обоссаный .net framework и шиндос сервер, .net core - продукт .net foundation, а так же всего сообщества
>Где-то я такую херню уже слышал. Откуда эта маняфантазия пошла?
Любой, кто на нескольких языках писал, согласится. Я писал. В C++ много воды.
>>36839 (OP)
>Ruby - в сравнение с питоном, мне нравится больше. Хз почему не выстрелил именно он.
Руби слабо выстрелил, потому что автор помешан был на одной парадигме, которую возвёл в культ. Это не работает. Работает многосторонний подход. Как в питоне или как в C++.
>>38344
Если ты пишешь очень много кода в день, то значит твой код лишён какой-то значимой логики. У тебя вода, а не код.
> Оракл превратил жаву в гуано
Тоже скучаешь по временам без аннотаций и с сотнями xml-файлов?
Нет, по свободной лицензии конечно, сейчас есть опен ждк, но настрой у оракл ебанутый, такое ощущение, что скоро компилятор или жвм закроют и все, пизда
Лол, вообще похуй, сижу на линуксе, для разработки он намного удобнее. А вот производительность хуевая, да. Но есть и плюсы: на руби самая быстрая разработка.
Потому что типы писать не нужно? Или потому что есть фасады для работы со строками, массивами и файлами?
Или потому что надо на каждый чих лезть в документацию, потому что забыл какой тип возвращает?
Почему там разработка то быстрее?? Я сейчас не про скрипты-утилитки, которые правда из-за фасадов на рубях и питоне будут удобнее (что там, input() написать), а про реальную разработку приложения, где фасады кончаются?
Так-то джаву берут не от большой любви к опенсорсу. Тырпрайз как жил во времена проприетарной джавы, так и живёт.
>фасады
Ещё один, кто вчера прочитал книжку по паттернам и теперь пытается за умного закосить.
input() - сюда, сука, пиши
Сикпогоспод не спрашивали. Аутируйте в своём личном загоне, пожалуйста.
Потому что в ней очень много инструментов вообще, поэтому попенсорса тоже будет много.
Го остался в семидесятых.
Из всего там норм только котлин, но лишь потому что жаба настолько убогая, что тут просто удобнее писать.
JS уже "пропатчили" до вменяемого уровня. А С++ не победить.
Ну там подавляющее большинство свободные. Кроме weblogic websphere всяких.
Задача примитивная, ну да похуй
Сделать массив/список из чисел от 1 до 10
Питон:
list(range(1, 11))
C++:
#include <vector>
std::vector<int> vec;
for (auto i = 1; i <= 10; ++i) {
vec.push_back(i);
}
Суть в том, что С++ больше вещей нужно указывать и описывать.
int arr[10];
for (int i = 1; i <= 10; ++i) {
arr = i;
}
На строку меньше стало, но всё равно больше.
Да похуй, это вообще неважная хрень.
>range(1, 11)
Лол, ты же понимаешь, что сишник напишет тебе сейчас такую же функцию и будет один в один?
Питон тащит за собой тонну говна, включая даже какие-то примитивные GUI.
Весь этот засахаренный фасад заканчивается, когда начинаешь писать что-то свое. Писанины получается по уровню как на джаве, динамика вообще ничем не помогает в бизнес-логике.
Что касается С++, то там конечно нет таких батареек, там придется прикрутить какой-нибудь boost и тогда жизнь наладиться.
Питон весь такой детский, как только тебе понадобиться что-то гибче того же input, полезешь уже кишки в кишки по уровню как С++ или java.
Только тебе не понадобится.
Питон - удивительно продуманный язык, в стд которого 5сть что угодно, что может пригодится в разработке. Осталось лишь сложить кирпичики и получится вполне лаконичное решение. А если подложить фреймворк - вообще замечательно.
В ваши плюсы пакетный менеджер завезли? Как самое лучшее, что у вас есть сраный Конан? Неужели плюсовики не способны написать нормальную утилиту для зависимостей?
>std::vector<int> array(boost::counting_iterator<int>(1), boost::counting_iterator<int>(12));
Супер, да, что интересно, некоторые ведь искренне не видят разницы. Ну вроде как логика одна и та же, почему же люди плюются?
Есть, конечно, и у питона несовершенство. Например, из-за принципа отступов в него заложено, что нормально делать анонимные callback функции нельзя, в отличии от многих языков.
Или в аннотациях аргументов какой-то лютый адъ в стиле С++, хотя пока пытаются как-то прилизать. Сколько времени сопротивлялись добавлению оператора "сравнение с присваиванием", из-за чего код с последовательным сравнениям по регуляркам превращался в какое-то кривое убожество (добавили только в 3.8).
>Питон - удивительно продуманный язык
-Кривая реализация множественного наследования, там жесть просто как костылить надо для родительских классов.
-Инкапсуляции нет (есть какой-то бред с подстановкой имени), да вообще имитация ООП в целом.
-self - очень продумано.
-это блядская генерации в [...] где умудряются в строку засунуть все что можно (да да, программисты плохие)
-оператор целочисленного деления, округляет
-костыли с циклическим импортом (привет фласк!)
-эта жопа с virtevn или как она там? Это просто эталон костылестроения.
-если у тебя есть внешние либы, то хера ты так просто ком-то скрипт передашь, надо реально делать скрипт инициализации, чтобы человек твой скрипт запустил.
Туча помойного говна, которая работает через магию или вообще не работает. Начиная от pypy который не ускоряя, заканчивая джангой у которой вьюхи это контроллеры.
И это поверхностное что я вспомнил, там реально полно говна, на которое закрывают глаза, потому что фанбои все.
>-Инкапсуляции нет (есть какой-то бред с подстановкой имени), да вообще имитация ООП в целом.
Инкапсуляция о другом, она о том, чтобы пользователь не должен был погружаться в ненужные детали реализации. Классы на уровне питона эту возможность дают. Подстановка имени гарантирует, что не будет сбоя из-за конфликтов имён.
>-self - очень продумано.
Было два подхода, в одних языках использовали this, в других self. В основном победили языки с this. Это чисто стилевой вопрос. В принципе не запрещено this и в питоне использовать, я даже такое встречал на практике. Чисто соглашение
>-это блядская генерации в [...]
Одна из крутейших возможностей питона, которой не хватает в других языках. Кто-то конечно злоупотребляет. Но возможность крутейшая
>-оператор целочисленного деления, округляет
wtf?
10 // 3 = 3
11 // 3 = 3 # как и ожидается от целочисленного деления
12 // 3 = 4
11.8 // 3 = 3.0 # вот это не нравится?
>-эта жопа с virtevn или как она там?
Одна из крутых возможностей платформы, возможность виртуализации без дополнительных системных инструментов.
К крестов не то что бы синтаксис сложный и непонятный, просто писать надо больше. Мне наоборот это больше нравится, я не против напечатать больше.
Значит ты ноулайфер!
-5 // 2
>Одна из крутейших возможностей питона, которой не хватает в других языках.
Лол, восхищение, когда в твоем языке нет нормальных лямбд, но придумали костыль.
тебе ничего не мешает объявить функцию, которую ты потом можешь использовать как лямбду
да, костыль, но работает
> Кривая реализация множественного наследования
расскажи подробнее
> Инкапсуляции нет
> есть какой-то бред с подстановкой имени
инкапсуляция тут на уровне конвенции
> костыли с циклическим импортом
легко фиксится
в том же C/C++ тоже может проблем доставить
> self - очень продумано.
явное лучше неявного (с) дзен питона
> эта жопа с virtevn или как она там? Это просто эталон костылестроения.
почему?
> если у тебя есть внешние либы, то хера ты так просто ком-то скрипт передашь, надо реально делать скрипт инициализации, чтобы человек твой скрипт запустил.
если у тебя есть заголовочные файлы, то хера так просто кому-то C/C++ файл передашь
> заканчивая джангой у которой вьюхи это контроллеры
у джанго не MVC, а MVT
>>38992
Как вы себе представляете многострочные лямбды в питоне? Так что ли?
filter(lambda x:
____if x >= 5 and x <= 10:
______return True
____return False
__, my_list
)
Я уверен, что единственная причина, почему такого нет в питоне - уебанский синтаксис с отступами. По той же причине нет do-while и break label.
Ну чел, пайтон это скриптовый язык программирования. Может ещё пожалуешься что в bash нет поддержки лямбд?
Пока вы сретесь, я продолжаю писать на рельсах & ТС, попивая смузи.
Бля, получается на баше писать не хуже чем на питоне? Там ж ещё есть curl, можно restapi-ху дёргать...
Многие одноразовые скрипты на нём действительно неплохо пишутся - переименовать сотню файлов там, что-то отфильтровать и сохранить. "Библиотек" только не хватает.
> restapi-ху дёргать
Можно даже свою написать через netcat.
только так
def filter_func(x):
____if x >= 5 and x <= 10:
______return True
____return False
filter(filter_func, my_list)
> do-while
он очень редко нужен, и ради этого вводить новое ключевое слово?
> break label
аналогично, обычно вложенные циклы разбивают на отдельные методы/функции
Я в петухоне вообще боюсь что-то представлять.
> он очень редко нужен, и ради этого вводить новое ключевое слово?
В других языках ввели ведь.
> вложенные циклы разбивают на отдельные методы/функции
Или вводят флаги и на каждой итерации во внешних циклах их проверяют, что бывает чаще.
>>39084
Это просто пример был. Но многострочные лямбды я стараюсь не писать даже на тех языках, где можно.
> вложенные циклы разбивают на отдельные методы/функции
>Или вводят флаги и на каждой итерации во внешних циклах их проверяют, что бывает чаще.
Жесть какая.
Выход из вложенных циклов это реально частая задача для скриптов. И как вы петухоне называете функции?
def break_1:
pass
def break_2:
pass
Каково это замусоривать пространство имен ненужными абстракциями? Кстати, у вас еще из-за непродуманного импорта реально в пространство имен может вывалится куча фигни.
Функцию можно объявить внутри другой функции, замусоривания будет меньше. Но основную проблему это хуёво решает.
У каждого языка своя философия, тут уж на любителя.
>>39095
> В других языках ввели ведь.
А в питоне не ввели.
> Или вводят флаги и на каждой итерации во внешних циклах их проверяют, что бывает чаще.
break label тоже сомнительное решение.
>>39106
>Кстати, у вас еще из-за непродуманного импорта реально в пространство имен может вывалится куча фигни.
Ты просто from ... import * не юзай и будет тебе счастье. ещё есть __all__
>Ты просто from ... import * не юзай и будет тебе счастье.
Почаще смотри dir, удивишься.
>ещё есть __all__
Очень весело имена ручками переписывать снова и снова. Модификатор было что ли трудно придумать? Хотя да, "говнище лучше чем говненное"
>явное лучше неявного
>У каждого языка своя философия
Никакого там следования философии и нет, все это маркетинговый булшит, когда видишь self и рядом множественное наследование, сразу понимаешь что тебя где-то наебали. полно там такого говна, ваннаби-программисты этого просто не видят
И да, self, тупо остался по дизайну, потому что в питоне можно дернуть метод как функцию и гвидо, видимо, посчитал, что это будет круто.
Жалко что так посчитал только Гвидо.
>Выход из вложенных циклов это реально частая задача для скриптов
Типичной ход в холиваре, найти какую-то идиотскую фичу и объявить ее супер-обязательной. Собственно, и в других языках подобная хуйня появилась только из-за подобных холиваров.
> подобная хуйня появилась только из-за подобных холиваров.
Ага, наверное, умные дядьки и тётьки зашли на двач, поучаствовали в нескольких срачах и поняли свою неправоту, не иначе.
>Ну чел, пайтон это скриптовый язык программирования. Может ещё пожалуешься что в bash нет поддержки лямбд?
JS тоже скриптовый язык программирования. Но там есть лямбды и вообще самую ключевую роль анонимные функции играют.
У питона исключительно из-за его специфики, где отступы вместо скобок. Неоднозначное решение.
>Бля, получается на баше писать не хуже чем на питоне?
На баше можно было бы очень много и круто писать, если бы там была нормальная поддержка структур данных вроде массивов и словарей. Даже у баша что-то есть, но у sh скриптов нет.
В этом принципиальное ограничение. А наркоманский синтаксис уже просто дело вкуса.
Что для тебя здесь удивительного?
В этом ответе весь питон тащемта:
https://mail.python.org/pipermail/python-3000/2007-July/008663.html
Это язык, который за 30 лет сущестования не превратился в разжиревший кусок говна, и при этом умудряющийся развиваться. В том числе и благодаря таким решениям
> На баше можно было бы очень много и круто писать, если бы там была нормальная поддержка структур данных вроде массивов и словарей.
Так и появился Perl.
>Собственно, и в других языках подобная хуйня появилась только из-за подобных холиваров.
История появления такая, что была в древние годы регилиозная борьба с оператором goto. Оператор действительно тот ещё, если им где попало пользоваться, ад для разработчиков компиляторов в том числе - ты можешь так переходить из тела одного вложенного цикла в тело другого, а если там переменные уровня блоков и т.п.?
Фактически разумное и стройное применение у goto в трёх случаях:
1) выход из вложенных циклов
2) классические машины состояний
3) переход к finally части функции, когда надо перед выходом обязательно какую-то работу проделать.
Вот для первой, очень частой задачи, и придумали break label, по-моему это было придумано для джавы.
>Python-3000
Как же я проигрываю с этой фигни.
Как вообще людей с вот таким восприятием, в 2007, можно было подпускать к языку??
Теперь понятно почему там наркоманский синтаксис
Синтаксис очень хороший, во много благодаря вот такой вот упёртости. Иногда упёртость мешает, но иногда она и помогает.
Вот сейчас довольно много тяжеловесных решений в духе C++ и Perl пришло в язык. И смотрятся они иногда недоделанными.
Надо было тебя допустить, чтобы вместо хорошего языка мы имели очередной говнолисп с кучей идиотских фич
Джаваскрипт это язык для фронтенда, там должно быть всё на ивентлупах и таймерах, это ж интерфейс.
А питон это язык для математики и для скриптиков. Кто ж виноват что на нем люди решили бэк писать.
Бля, кто-нибудь переделайте цитату про Сталин 3000
Я бы выкакал процедурный язык нового поколения. За реабилитацию процедурного программирования.
Не, я бы не возложил переброску ошибок на юзера, тем более без стектрейса. Ну и дженерики бы осилил.
спор не имеющий смысла ни на скейле пет проектах, ни на скейле половины стартапов. Берёшь то, на чём можешь решать задачи и решаешь их. ОП стал долбоёбом включив Rust и Ruby в один список.
Вообще это противоположные направления, перегрузка это статическая операция, а полиморфизм динамический.
>>39299
>я бы не возложил переброску ошибок на юзера
Гугол их просто не осилил, они и из Далвика вроде исключения выпиливали. Исключения на самом деле сложная и неочевидная вещь, как только ты начинаешь работать с тредами и корутинами. А го именно на это направление прицелен.
Сам подумай, вот ты стрельнул горутину, пошёл дальше. Где ты будешь исключение из неё ловить?
Само собой бывает и синхронный код. Но как минимум асинхронная часть много вопросов оставляет по исключениям.
Честные структуры.
Никаких методов, только функции которые принимают структуры или другие функции.
Может какой-то сахар типа mystruct.foo() если первый аргумент структура.
Полиморфизм только на структурах, если B содержит себе A, то можно передать где B.
Это они тебе так рассказали. Вон котлин и корутины и исключения. Не плакали.
>>38875
Почему?
Язык который во время ошибки не предоставляет стекстрейс, в принцепи плохо пригоден для крупной разработки. Я уже не говорю что они там руками пробрасывают ошибки, лол.
/thread
Неужели отсутствие эксепшенов так сильно ухудшает язык? Но почему он стабильно набирает популярность?
Потому что простой лаконичный язык без наворотов с превосходной производительностью, идеально подходящий под микросервисы.
>Неужели отсутствие эксепшенов так сильно ухудшает язык?
Прикладной язык ухудшает очень сильно. Большой шаг назад.
Но на си ведь пишут и довольно серьёзные вещи. А го это скорее замена си, но с некоторыми наворотами важными. С теми же горутинами.
Для сетевых задач и сервисных задач удобнее Си. Собирать и запускать удобнее, чем java-программы. Это довольно большой класс задач.
Котлин близок именно к джаве, тем самым он крайне зашкварен. Или ты думаешь, что джава это меньший зашквар нежели джаваскрипт?
> Или ты думаешь, что джава это меньший зашквар нежели джаваскрипт?
Джава Зашквар Джаваскриптович, для друзей дарт, знакомьтесь
Двачую, это ещё зашкванее Котлина.
У нас тут /зк/ вообще-то.
Руби тоже?
Потому что петухон надо использовать по назначению - скриптота и glue code. Никаких тяжёлой логики и вычислений, тупо сразу после запуска скрипта последовательно вызывать сишные функции.
Каждый день из-за этого убиваюсь.
А вот тут я одну ошибку исправил.
Чел ну ты жжошь конечно, свое незнание языка выдавать как страшилку.
Там будет что то вроде
print_sequence(std::make_index_sequence<11>{});
1920x1080, 3:35
Бери c++, не даром на нем весь веб работает еще со времен cgi
>Из плюсов, язык реально занимает второе место в вебе за пхп.
Я хз как считают эту статистику, но подозреваю, что смотрят на чем крутится CMS-ки миллионов гостевух. Только это не значит, что весь веб написан на PHP или C#.
Миллион визиток на вордпрессе (или что там у дотнетчиков) хоть и занимают миллион доменов, но не потребовали на свою разработку ни одного человека часа полноценного программиста, максимум верстальщика без знания JS. Да и денег весь этот миллион сайтов приносит меньше, чем инстаграмм одной условной Бузовой.
Такие недосайты не влияют на твой спрос на рынке труда. Смотри, что используется в отрасли. Смотри на что спрос на рынке труда. Смотри на парадигмы, вокруг которых построен ЯП и фреймворки на нём и насколько они тебе близки. На число гостевух не смотри.
сразу видно что ты ровным счетом нихуя не шаришь.
C# очень удобен для создания ПО для своих задач с GUI под винду.
Все чрезвычайно просто и удобно на самом деле. Нет ебли с памятью. Нет ебли с указателями, динамическими массивами, и прочим низкоуровневым говном. Можно попробовать пописать программки на заказ. Но не факт что будут нужны. Конкуренция дикая.
JAVA/Kotlin - enterprise only, я не видел ни одного не enterprise проекта.
Ни одного. Вообще. Ноль. Ну и мобилки конечно же. Говнокода овердохуя.
Python - быстро сморганить какие-то примитивные логики, и реализовать для разовых задач где впадлу ебаться ручками.
Ох как бы я поспорил с его легкостью освоения, уууу.
Да, отсутствие ебли с типами, памятью, это большой плюс.
Но мне не зашел ниразу. Плюсь от python, но не говорю что плохо.
Ruby - хипстерская никому нахуй не нужная хуйня.
Видел проекты на Ruby, пытался ставить, пользоваться - хуйня хуйнёй.
JavaScript - смотря какой. Подразумеваются framework? typescript? Dart? Что конкретно? Крайне популярный и чрезвычайно мощный инструмент для деланья чего угодно в браузере. Node.js туда же.
Мне лично не зашел, для меня это сложно. Но возможности поражают воображение. https://github.com/VadimDez/Counter-Strike-JS
php / html / css/less + базовый js / jquerry / bootstrap и так далее. То, что помогает выживать. Задач и рынок невероятно большой. Всем нужны сайты, решения багов и проблем с ними, презентации сайтов, а лендинги по 20к - это святая святых. То, что делает со временем и опытом и полученными деньгами из макаки либо хипстера, либо чмоху-сыча, либо человека который набирается ресурсов для реализации себя в чем-либо.
Крайне сложно. Много времени нужно для вкатывания для создания чего-то пригодного, и то, не без помощи frameworkов.
Go - моя няшка. Самый логичный, удобный, масштабируемый, без мозгоебли язык который приятно читать и писать. Обожаю няку :3
Rust - 1000ликий дракон Go. Вроде делали лучшую альтернативу C++, в результате читать говнокод высранный этими даунами просто невозможно. Я на дах не перевариваю код типа:
https://github.com/Luminarys/synapse/blob/master/src/torrent/mod.rs
Я в душе не ебу, как это говно можно читать, понимать, дебажить, вносить правки... Рили...
C - моя первая и крайне трудная няшка. чрезвычайно помогли индусы и скриптовые языки построенные на С с Си синтаксисом.
Не могу сказать что имею достаточно опыта писанины чего-то крутого с нуля, но с уверенностью могу сказать что без проблем принимал участие много лет в написании говнокода для разных проектов. Точно не язык для изучения в первую очередь. Только по надобности когда уже ЯП знакомы, и понятно устройство памяти на низком уровне, когда попутно изучаешь ASM, не более того.
D - упущенный и не взлетевший ЯП, синтаксис нравится, удобно, прикольно, но инфраструктуры нихуя нет.
Что лично предпочитаю?
go / php / C#, кушать хочется...
сразу видно что ты ровным счетом нихуя не шаришь.
C# очень удобен для создания ПО для своих задач с GUI под винду.
Все чрезвычайно просто и удобно на самом деле. Нет ебли с памятью. Нет ебли с указателями, динамическими массивами, и прочим низкоуровневым говном. Можно попробовать пописать программки на заказ. Но не факт что будут нужны. Конкуренция дикая.
JAVA/Kotlin - enterprise only, я не видел ни одного не enterprise проекта.
Ни одного. Вообще. Ноль. Ну и мобилки конечно же. Говнокода овердохуя.
Python - быстро сморганить какие-то примитивные логики, и реализовать для разовых задач где впадлу ебаться ручками.
Ох как бы я поспорил с его легкостью освоения, уууу.
Да, отсутствие ебли с типами, памятью, это большой плюс.
Но мне не зашел ниразу. Плюсь от python, но не говорю что плохо.
Ruby - хипстерская никому нахуй не нужная хуйня.
Видел проекты на Ruby, пытался ставить, пользоваться - хуйня хуйнёй.
JavaScript - смотря какой. Подразумеваются framework? typescript? Dart? Что конкретно? Крайне популярный и чрезвычайно мощный инструмент для деланья чего угодно в браузере. Node.js туда же.
Мне лично не зашел, для меня это сложно. Но возможности поражают воображение. https://github.com/VadimDez/Counter-Strike-JS
php / html / css/less + базовый js / jquerry / bootstrap и так далее. То, что помогает выживать. Задач и рынок невероятно большой. Всем нужны сайты, решения багов и проблем с ними, презентации сайтов, а лендинги по 20к - это святая святых. То, что делает со временем и опытом и полученными деньгами из макаки либо хипстера, либо чмоху-сыча, либо человека который набирается ресурсов для реализации себя в чем-либо.
Крайне сложно. Много времени нужно для вкатывания для создания чего-то пригодного, и то, не без помощи frameworkов.
Go - моя няшка. Самый логичный, удобный, масштабируемый, без мозгоебли язык который приятно читать и писать. Обожаю няку :3
Rust - 1000ликий дракон Go. Вроде делали лучшую альтернативу C++, в результате читать говнокод высранный этими даунами просто невозможно. Я на дах не перевариваю код типа:
https://github.com/Luminarys/synapse/blob/master/src/torrent/mod.rs
Я в душе не ебу, как это говно можно читать, понимать, дебажить, вносить правки... Рили...
C - моя первая и крайне трудная няшка. чрезвычайно помогли индусы и скриптовые языки построенные на С с Си синтаксисом.
Не могу сказать что имею достаточно опыта писанины чего-то крутого с нуля, но с уверенностью могу сказать что без проблем принимал участие много лет в написании говнокода для разных проектов. Точно не язык для изучения в первую очередь. Только по надобности когда уже ЯП знакомы, и понятно устройство памяти на низком уровне, когда попутно изучаешь ASM, не более того.
D - упущенный и не взлетевший ЯП, синтаксис нравится, удобно, прикольно, но инфраструктуры нихуя нет.
Что лично предпочитаю?
go / php / C#, кушать хочется...
Нет, к сожалению, не 100%, есть некий процент упоротых, у которых IIS и прочая хуита. И их далеко не единицы.
private final native public volatile static transient synchronized protected abstract class FactoryFactoryFactoryFacade extends AbstractBuilderIteratorBeanDecoratorInterceptorFactoryFactory implements AbstractFactoryStrategyIteratorProxy, AbstractFactoryFactoryListener {
SingletonDecoratorAdapter singletonDecoratorAdapter = new SingletonDecoratorAdapter();
AbstractFactoryFactorySingletonBuilderProxy abstractFactoryFactorySingletonBuilderProxy = new AbstractFactoryFactorySingletonBuilderProxy();
VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory visitorBeanSingletonProxyAdvisorBuilderFactoryFactory = new VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory();
IteratorListenerBean iteratorListenerBean = new IteratorListenerBean();
AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator abstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator = new AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator();
synchronized final private protected void setAdvisorFacadeObserverFactorySingletonBeanProxy(AdvisorFacadeObserverFactorySingletonBeanProxy advisorFacadeObserverFactorySingletonBeanProxy) {
this.advisorFacadeObserverFactorySingletonBeanProxy = advisorFacadeObserverFactorySingletonBeanProxy;
}
public synchronized static protected native volatile transient private void setAbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy(AbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy) {
this.abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy = abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy;
}
native public static synchronized protected private transient final void setAbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator(AbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator) {
this.abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator = abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator;
}
protected public native synchronized final void setAbstractBuilderFactoryFactory(AbstractBuilderFactoryFactory abstractBuilderFactoryFactory) {
this.abstractBuilderFactoryFactory = abstractBuilderFactoryFactory;
}
static private protected volatile transient SingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory getSingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory() {
return this.singletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory;
}
transient private final static public VisitorAdvisorFactoryAdapterProxy getVisitorAdvisorFactoryAdapterProxy() {
return this.visitorAdvisorFactoryAdapterProxy;
}
synchronized protected public final volatile private AbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener getAbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener() {
return this.abstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener;
}
public transient private AbstractListenerAdvisor getAbstractListenerAdvisor() {
return this.abstractListenerAdvisor;
}
public protected transient final synchronized volatile static native private AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter abstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter(ObserverDecoratorAdvisorAdapterBuilderSingletonFacade observerDecoratorAdvisorAdapterBuilderSingletonFacade, AbstractBeanInterceptor abstractBeanInterceptor, AdvisorFacadeSingletonDecoratorListener advisorFacadeSingletonDecoratorListener, AbstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder abstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder, AbstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver abstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver) {
decoratorProxyBean.setProxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter(this.proxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter);
return new AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter();
}
transient native private final synchronized volatile protected static DecoratorSingletonIterator decoratorSingletonIterator(ObserverSingletonListenerFactoryFactoryBuilder observerSingletonListenerFactoryFactoryBuilder, VisitorDecoratorSingletonObserverFactory visitorDecoratorSingletonObserverFactory, AbstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory abstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory, FactoryVisitorProxyDecoratorListener factoryVisitorProxyDecoratorListener) {
factoryInterceptorListenerSingletonFacadeDecoratorAdapter.setAbstractBuilderDecorator(this.abstractBuilderDecorator);
InterceptorProxyFacade interceptorProxyFacade = new InterceptorProxyFacade();
abstractAdvisorAdapterVisitorBean.setAbstractAdapterObserver(this.abstractAdapterObserver);
abstractInterceptorListenerBuilderSingletonAdapterStrategyFactoryAdvisor.setAdvisorStrategyDecorator(this.advisorStrategyDecorator);
return new DecoratorSingletonIterator();
}
synchronized volatile private final protected public static native transient AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade abstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade(ObserverListenerBeanFactoryFactoryAdvisor observerListenerBeanFactoryFactoryAdvisor, ProxyObserverVisitorFactoryBuilderDecoratorStrategy proxyObserverVisitorFactoryBuilderDecoratorStrategy, AbstractBeanInterceptorObserverAdvisor abstractBeanInterceptorObserverAdvisor) {
abstractStrategyFactoryFactoryBeanVisitorBuilderSingleton.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
AbstractListenerAdvisorSingletonObserver abstractListenerAdvisorSingletonObserver = abstractBuilderDecoratorVisitorFactoryBeanProxyFacadeSingleton.getAbstractAdapterProxyBuilderFacadeListenerAdvisorInterceptorFactory().getAbstractListenerAdvisorSingletonObserver();
return new AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade();
}
volatile static transient public native protected AbstractListenerBuilderAdvisorProxyVisitorFacade abstractListenerBuilderAdvisorProxyVisitorFacade(DecoratorSingletonAdvisorFactoryInterceptorListenerBuilder decoratorSingletonAdvisorFactoryInterceptorListenerBuilder, AbstractDecoratorBuilderBeanListenerSingletonObserver abstractDecoratorBuilderBeanListenerSingletonObserver) {
AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter abstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter = new AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter();
adapterAdvisorDecoratorFacadeProxy.setAbstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory(this.abstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory);
return new AbstractListenerBuilderAdvisorProxyVisitorFacade();
}
private final public static volatile transient synchronized protected InterceptorSingletonVisitor interceptorSingletonVisitor(AbstractDecoratorStrategyProxyObserverInterceptorBuilder abstractDecoratorStrategyProxyObserverInterceptorBuilder, AbstractVisitorAdvisorFacadeListener abstractVisitorAdvisorFacadeListener, VisitorFactoryFactoryBuilder visitorFactoryFactoryBuilder, VisitorProxyFacadeFactoryFactorySingletonAdvisorDecorator visitorProxyFacadeFactoryFactorySingletonAdvisorDecorator, AbstractAdvisorBuilderDecoratorInterceptor abstractAdvisorBuilderDecoratorInterceptor) {
AbstractProxyAdvisor abstractProxyAdvisor = abstractFactoryFactoryDecorator.getListenerInterceptorFactoryFactory().getAbstractProxyAdvisor();
AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory abstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory = new AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory();
abstractBeanAdvisorSingletonInterceptor.setAbstractFactoryFactoryAdvisorFacadeStrategy(this.abstractFactoryFactoryAdvisorFacadeStrategy);
AbstractAdvisorProxyStrategyIteratorVisitorObserver abstractAdvisorProxyStrategyIteratorVisitorObserver = new AbstractAdvisorProxyStrategyIteratorVisitorObserver();
if (abstractSingletonFacadeFactoryObserver.isInterceptorListenerFacade()) {
iteratorProxyListenerFacadeBean.setAbstractStrategyBean(this.abstractStrategyBean);
AbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor abstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor = abstractBeanInterceptorIteratorListenerFactoryFactoryStrategyProxyObserver.getAbstractObserverFacadeListenerSingletonProxyAdvisorStrategyVisitor().getAbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor();
abstractProxyBuilderVisitorSingleton.setIteratorAdvisorProxySingletonAdapter(this.iteratorAdvisorProxySingletonAdapter);
if (abstractDecoratorAdapterVisitorProxyObserverIteratorBuilderFactory.isDecoratorFactoryFactoryFacade()) {
visitorIteratorObserverProxyAdvisor.setAbstractObserverSingletonProxyAdvisorBuilderDecorator(this.abstractObserverSingletonProxyAdvisorBuilderDecorator);
singletonFacadeAdapterListenerFactory.setAbstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory(this.abstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory);
while (abstractFactoryAdapterSingletonFactoryFactory.isAbstractStrategyFactory()) {
abstractAdapterBeanStrategySingletonAdvisorBuilderListenerFactory.setAbstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver(this.abstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver);
abstractObserverAdapterFactoryFacadeDecoratorBuilderInterceptorFactoryFactory.setAdvisorIteratorFactoryProxyDecorator(this.advisorIteratorFactoryProxyDecorator);
while (abstractFacadeListenerStrategyIteratorAdvisorSingletonProxyObserver.isVisitorDecoratorInterceptorIteratorAdapter()) {
abstractProxyAdapterInterceptorObserverFactoryFactoryIterator.setSingletonFactoryFactoryProxyIteratorStrategy(this.singletonFactoryFactoryProxyIteratorStrategy);
singletonInterceptorDecorator.setAbstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade(this.abstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade);
visitorFactoryFactoryAdapterIteratorInterceptor.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
}
}
} else {
abstractListenerInterceptorStrategyVisitorBeanFactorySingletonIterator.setAbstractProxyStrategy(this.abstractProxyStrategy);
abstractProxyInterceptorSingletonFactoryFactory.setAbstractSingletonIterator(this.abstractSingletonIterator);
}
} else {
singletonListenerFactoryFactoryIteratorProxy.setAbstractObserverProxyIteratorVisitor(this.abstractObserverProxyIteratorVisitor);
}
return new InterceptorSingletonVisitor();
}
native volatile static final public AbstractSingletonObserver abstractSingletonObserver(AbstractBuilderFacade abstractBuilderFacade, ListenerBuilderVisitorFactoryStrategyAdvisorFacade listenerBuilderVisitorFactoryStrategyAdvisorFacade) {
builderObserverIterator.setAbstractProxyBuilder(this.abstractProxyBuilder);
AbstractInterceptorAdapterFactoryAdvisorStrategyProxy abstractInterceptorAdapterFactoryAdvisorStrategyProxy = abstractDecoratorInterceptor.getStrategyObserverListenerVisitorBean().getAbstractInterceptorAdapterFactoryAdvisorStrategyProxy();
AbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator abstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator = abstractFactoryIteratorStrategyVisitor.getAdvisorBuilderVisitorBeanIterator().getAbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator();
while (facadeStrategyObserver.isAbstractFactoryFactoryFactoryListenerVisitorIteratorSingletonBeanAdvisor()) {
abstractFactoryFactoryAdvisorFactoryInterceptorIteratorObserverProxyBuilder.setIteratorAdvisorBeanBuilderProxy(this.iteratorAdvisorBeanBuilderProxy);
AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter abstractIteratorFactoryFactoryFacadeObserverVisitorAdapter = new AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter();
abstractVisitorObserverBeanSingletonBuilderProxyFacadeIterator.setAbstractProxyFactoryAdapterFactoryFactoryInterceptorIterator(this.abstractProxyFactoryAdapterFactoryFactoryInterceptorIterator);
}
return new AbstractSingletonObserver();
}
transient volatile static private synchronized AbstractFactorySingletonFacadeProxyFactoryFactoryIterator abstractFactorySingletonFacadeProxyFactoryFactoryIterator(ObserverInterceptorAdapter observerInterceptorAdapter, AbstractInterceptorIteratorListenerFacadeDecoratorVisitor abstractInterceptorIteratorListenerFacadeDecoratorVisitor, FactoryDecoratorBeanAdapterProxy factoryDecoratorBeanAdapterProxy, SingletonAdvisorFacadeBuilderStrategy singletonAdvisorFacadeBuilderStrategy) {
AbstractBuilderIterator abstractBuilderIterator = new AbstractBuilderIterator();
iteratorSingletonDecoratorVisitorAdvisorFactoryFacade.setAbstractDecoratorAdapterListenerBuilderFacadeIterator(this.abstractDecoratorAdapterListenerBuilderFacadeIterator);
return new AbstractFactorySingletonFacadeProxyFactoryFactoryIterator();
}
synchronized volatile protected native private DecoratorStrategyBuilderListenerSingleton decoratorStrategyBuilderListenerSingleton(ObserverBuilderFactoryFactory observerBuilderFactoryFactory, AbstractStrategyDecoratorFacadeVisitor abstractStrategyDecoratorFacadeVisitor, AbstractAdapterIteratorListenerBuilderFactoryVisitor abstractAdapterIteratorListenerBuilderFactoryVisitor, AbstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator abstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator, AbstractStrategyFactoryFacadeVisitorListenerBean abstractStrategyFactoryFacadeVisitorListenerBean) {
advisorStrategySingleton.setAbstractSingletonObserverAdapterDecorator(this.abstractSingletonObserverAdapterDecorator);
return new DecoratorStrategyBuilderListenerSingleton();
}
}
private final native public volatile static transient synchronized protected abstract class FactoryFactoryFactoryFacade extends AbstractBuilderIteratorBeanDecoratorInterceptorFactoryFactory implements AbstractFactoryStrategyIteratorProxy, AbstractFactoryFactoryListener {
SingletonDecoratorAdapter singletonDecoratorAdapter = new SingletonDecoratorAdapter();
AbstractFactoryFactorySingletonBuilderProxy abstractFactoryFactorySingletonBuilderProxy = new AbstractFactoryFactorySingletonBuilderProxy();
VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory visitorBeanSingletonProxyAdvisorBuilderFactoryFactory = new VisitorBeanSingletonProxyAdvisorBuilderFactoryFactory();
IteratorListenerBean iteratorListenerBean = new IteratorListenerBean();
AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator abstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator = new AbstractAdvisorBuilderIteratorInterceptorSingletonFacadeStrategyDecorator();
synchronized final private protected void setAdvisorFacadeObserverFactorySingletonBeanProxy(AdvisorFacadeObserverFactorySingletonBeanProxy advisorFacadeObserverFactorySingletonBeanProxy) {
this.advisorFacadeObserverFactorySingletonBeanProxy = advisorFacadeObserverFactorySingletonBeanProxy;
}
public synchronized static protected native volatile transient private void setAbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy(AbstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy) {
this.abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy = abstractIteratorFactoryFactoryFactoryBuilderSingletonInterceptorFacadeProxy;
}
native public static synchronized protected private transient final void setAbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator(AbstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator) {
this.abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator = abstractObserverAdvisorBeanStrategyAdapterListenerBuilderIterator;
}
protected public native synchronized final void setAbstractBuilderFactoryFactory(AbstractBuilderFactoryFactory abstractBuilderFactoryFactory) {
this.abstractBuilderFactoryFactory = abstractBuilderFactoryFactory;
}
static private protected volatile transient SingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory getSingletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory() {
return this.singletonInterceptorAdvisorListenerBuilderFactoryFactoryFactory;
}
transient private final static public VisitorAdvisorFactoryAdapterProxy getVisitorAdvisorFactoryAdapterProxy() {
return this.visitorAdvisorFactoryAdapterProxy;
}
synchronized protected public final volatile private AbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener getAbstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener() {
return this.abstractAdapterSingletonStrategyProxyBuilderInterceptorDecoratorListener;
}
public transient private AbstractListenerAdvisor getAbstractListenerAdvisor() {
return this.abstractListenerAdvisor;
}
public protected transient final synchronized volatile static native private AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter abstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter(ObserverDecoratorAdvisorAdapterBuilderSingletonFacade observerDecoratorAdvisorAdapterBuilderSingletonFacade, AbstractBeanInterceptor abstractBeanInterceptor, AdvisorFacadeSingletonDecoratorListener advisorFacadeSingletonDecoratorListener, AbstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder abstractAdapterAdvisorObserverListenerFactoryStrategyBeanBuilder, AbstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver abstractBeanSingletonInterceptorDecoratorFactoryFactoryFactoryProxyObserver) {
decoratorProxyBean.setProxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter(this.proxyAdvisorStrategyFactoryFactoryInterceptorFactoryAdapter);
return new AbstractListenerAdvisorProxySingletonFacadeStrategyFactoryAdapter();
}
transient native private final synchronized volatile protected static DecoratorSingletonIterator decoratorSingletonIterator(ObserverSingletonListenerFactoryFactoryBuilder observerSingletonListenerFactoryFactoryBuilder, VisitorDecoratorSingletonObserverFactory visitorDecoratorSingletonObserverFactory, AbstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory abstractFacadeBeanAdvisorAdapterSingletonProxyListenerFactoryFactory, FactoryVisitorProxyDecoratorListener factoryVisitorProxyDecoratorListener) {
factoryInterceptorListenerSingletonFacadeDecoratorAdapter.setAbstractBuilderDecorator(this.abstractBuilderDecorator);
InterceptorProxyFacade interceptorProxyFacade = new InterceptorProxyFacade();
abstractAdvisorAdapterVisitorBean.setAbstractAdapterObserver(this.abstractAdapterObserver);
abstractInterceptorListenerBuilderSingletonAdapterStrategyFactoryAdvisor.setAdvisorStrategyDecorator(this.advisorStrategyDecorator);
return new DecoratorSingletonIterator();
}
synchronized volatile private final protected public static native transient AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade abstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade(ObserverListenerBeanFactoryFactoryAdvisor observerListenerBeanFactoryFactoryAdvisor, ProxyObserverVisitorFactoryBuilderDecoratorStrategy proxyObserverVisitorFactoryBuilderDecoratorStrategy, AbstractBeanInterceptorObserverAdvisor abstractBeanInterceptorObserverAdvisor) {
abstractStrategyFactoryFactoryBeanVisitorBuilderSingleton.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
AbstractListenerAdvisorSingletonObserver abstractListenerAdvisorSingletonObserver = abstractBuilderDecoratorVisitorFactoryBeanProxyFacadeSingleton.getAbstractAdapterProxyBuilderFacadeListenerAdvisorInterceptorFactory().getAbstractListenerAdvisorSingletonObserver();
return new AbstractListenerFactoryFactoryDecoratorAdapterProxyInterceptorObserverFacade();
}
volatile static transient public native protected AbstractListenerBuilderAdvisorProxyVisitorFacade abstractListenerBuilderAdvisorProxyVisitorFacade(DecoratorSingletonAdvisorFactoryInterceptorListenerBuilder decoratorSingletonAdvisorFactoryInterceptorListenerBuilder, AbstractDecoratorBuilderBeanListenerSingletonObserver abstractDecoratorBuilderBeanListenerSingletonObserver) {
AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter abstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter = new AbstractObserverAdvisorBuilderIteratorFacadeFactoryFactoryFactoryAdapter();
adapterAdvisorDecoratorFacadeProxy.setAbstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory(this.abstractAdapterBeanDecoratorStrategySingletonFacadeListenerFactory);
return new AbstractListenerBuilderAdvisorProxyVisitorFacade();
}
private final public static volatile transient synchronized protected InterceptorSingletonVisitor interceptorSingletonVisitor(AbstractDecoratorStrategyProxyObserverInterceptorBuilder abstractDecoratorStrategyProxyObserverInterceptorBuilder, AbstractVisitorAdvisorFacadeListener abstractVisitorAdvisorFacadeListener, VisitorFactoryFactoryBuilder visitorFactoryFactoryBuilder, VisitorProxyFacadeFactoryFactorySingletonAdvisorDecorator visitorProxyFacadeFactoryFactorySingletonAdvisorDecorator, AbstractAdvisorBuilderDecoratorInterceptor abstractAdvisorBuilderDecoratorInterceptor) {
AbstractProxyAdvisor abstractProxyAdvisor = abstractFactoryFactoryDecorator.getListenerInterceptorFactoryFactory().getAbstractProxyAdvisor();
AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory abstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory = new AbstractVisitorAdvisorListenerStrategySingletonIteratorAdapterFactory();
abstractBeanAdvisorSingletonInterceptor.setAbstractFactoryFactoryAdvisorFacadeStrategy(this.abstractFactoryFactoryAdvisorFacadeStrategy);
AbstractAdvisorProxyStrategyIteratorVisitorObserver abstractAdvisorProxyStrategyIteratorVisitorObserver = new AbstractAdvisorProxyStrategyIteratorVisitorObserver();
if (abstractSingletonFacadeFactoryObserver.isInterceptorListenerFacade()) {
iteratorProxyListenerFacadeBean.setAbstractStrategyBean(this.abstractStrategyBean);
AbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor abstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor = abstractBeanInterceptorIteratorListenerFactoryFactoryStrategyProxyObserver.getAbstractObserverFacadeListenerSingletonProxyAdvisorStrategyVisitor().getAbstractFactoryDecoratorBeanFacadeAdapterProxyAdvisorVisitor();
abstractProxyBuilderVisitorSingleton.setIteratorAdvisorProxySingletonAdapter(this.iteratorAdvisorProxySingletonAdapter);
if (abstractDecoratorAdapterVisitorProxyObserverIteratorBuilderFactory.isDecoratorFactoryFactoryFacade()) {
visitorIteratorObserverProxyAdvisor.setAbstractObserverSingletonProxyAdvisorBuilderDecorator(this.abstractObserverSingletonProxyAdvisorBuilderDecorator);
singletonFacadeAdapterListenerFactory.setAbstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory(this.abstractIteratorInterceptorSingletonListenerAdvisorDecoratorBuilderFactoryFactory);
while (abstractFactoryAdapterSingletonFactoryFactory.isAbstractStrategyFactory()) {
abstractAdapterBeanStrategySingletonAdvisorBuilderListenerFactory.setAbstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver(this.abstractStrategyFactoryFactoryFacadeBuilderFactoryIteratorProxyObserver);
abstractObserverAdapterFactoryFacadeDecoratorBuilderInterceptorFactoryFactory.setAdvisorIteratorFactoryProxyDecorator(this.advisorIteratorFactoryProxyDecorator);
while (abstractFacadeListenerStrategyIteratorAdvisorSingletonProxyObserver.isVisitorDecoratorInterceptorIteratorAdapter()) {
abstractProxyAdapterInterceptorObserverFactoryFactoryIterator.setSingletonFactoryFactoryProxyIteratorStrategy(this.singletonFactoryFactoryProxyIteratorStrategy);
singletonInterceptorDecorator.setAbstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade(this.abstractFactoryFactoryListenerBuilderAdvisorDecoratorFacade);
visitorFactoryFactoryAdapterIteratorInterceptor.setAbstractIteratorVisitor(this.abstractIteratorVisitor);
}
}
} else {
abstractListenerInterceptorStrategyVisitorBeanFactorySingletonIterator.setAbstractProxyStrategy(this.abstractProxyStrategy);
abstractProxyInterceptorSingletonFactoryFactory.setAbstractSingletonIterator(this.abstractSingletonIterator);
}
} else {
singletonListenerFactoryFactoryIteratorProxy.setAbstractObserverProxyIteratorVisitor(this.abstractObserverProxyIteratorVisitor);
}
return new InterceptorSingletonVisitor();
}
native volatile static final public AbstractSingletonObserver abstractSingletonObserver(AbstractBuilderFacade abstractBuilderFacade, ListenerBuilderVisitorFactoryStrategyAdvisorFacade listenerBuilderVisitorFactoryStrategyAdvisorFacade) {
builderObserverIterator.setAbstractProxyBuilder(this.abstractProxyBuilder);
AbstractInterceptorAdapterFactoryAdvisorStrategyProxy abstractInterceptorAdapterFactoryAdvisorStrategyProxy = abstractDecoratorInterceptor.getStrategyObserverListenerVisitorBean().getAbstractInterceptorAdapterFactoryAdvisorStrategyProxy();
AbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator abstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator = abstractFactoryIteratorStrategyVisitor.getAdvisorBuilderVisitorBeanIterator().getAbstractInterceptorListenerAdvisorVisitorProxyObserverStrategyIterator();
while (facadeStrategyObserver.isAbstractFactoryFactoryFactoryListenerVisitorIteratorSingletonBeanAdvisor()) {
abstractFactoryFactoryAdvisorFactoryInterceptorIteratorObserverProxyBuilder.setIteratorAdvisorBeanBuilderProxy(this.iteratorAdvisorBeanBuilderProxy);
AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter abstractIteratorFactoryFactoryFacadeObserverVisitorAdapter = new AbstractIteratorFactoryFactoryFacadeObserverVisitorAdapter();
abstractVisitorObserverBeanSingletonBuilderProxyFacadeIterator.setAbstractProxyFactoryAdapterFactoryFactoryInterceptorIterator(this.abstractProxyFactoryAdapterFactoryFactoryInterceptorIterator);
}
return new AbstractSingletonObserver();
}
transient volatile static private synchronized AbstractFactorySingletonFacadeProxyFactoryFactoryIterator abstractFactorySingletonFacadeProxyFactoryFactoryIterator(ObserverInterceptorAdapter observerInterceptorAdapter, AbstractInterceptorIteratorListenerFacadeDecoratorVisitor abstractInterceptorIteratorListenerFacadeDecoratorVisitor, FactoryDecoratorBeanAdapterProxy factoryDecoratorBeanAdapterProxy, SingletonAdvisorFacadeBuilderStrategy singletonAdvisorFacadeBuilderStrategy) {
AbstractBuilderIterator abstractBuilderIterator = new AbstractBuilderIterator();
iteratorSingletonDecoratorVisitorAdvisorFactoryFacade.setAbstractDecoratorAdapterListenerBuilderFacadeIterator(this.abstractDecoratorAdapterListenerBuilderFacadeIterator);
return new AbstractFactorySingletonFacadeProxyFactoryFactoryIterator();
}
synchronized volatile protected native private DecoratorStrategyBuilderListenerSingleton decoratorStrategyBuilderListenerSingleton(ObserverBuilderFactoryFactory observerBuilderFactoryFactory, AbstractStrategyDecoratorFacadeVisitor abstractStrategyDecoratorFacadeVisitor, AbstractAdapterIteratorListenerBuilderFactoryVisitor abstractAdapterIteratorListenerBuilderFactoryVisitor, AbstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator abstractVisitorObserverBuilderSingletonProxyIteratorListenerDecorator, AbstractStrategyFactoryFacadeVisitorListenerBean abstractStrategyFactoryFacadeVisitorListenerBean) {
advisorStrategySingleton.setAbstractSingletonObserverAdapterDecorator(this.abstractSingletonObserverAdapterDecorator);
return new DecoratorStrategyBuilderListenerSingleton();
}
}
А strictfp забыл у класса.
Ловите Goвноеда.
>Видел проекты на Ruby, пытался ставить, пользоваться - хуйня хуйнёй.
И какой пакетный менеджер под маоксь ты используешь говноед?
Смешно, но высрать подобное можно на чём угодно, так что это проблема высирающего.
На пайтоне проще говнокодить, так-то, потому что ты сам должен следить за тем, чтобы код был правильно структурирован.
>Покажи на пайтоне такое.
Покажи что-то более-менее сложное, стабильное и используемое в проде, где нет бесконечных elifов. Тебя не туда понесло.
Что не так с кодом по ссылке? Пролистал, вроде обычный код.
Структура
поле1
поле2
поле3...
Действие1
для всех икс в списке
посчитать икгрек
Действие2
если а то б
иначе ц
Действие3
флаг = не флаг
>где нет бесконечных elifов
Покажи сперва эти самые "бесконечные elif-ы". В том же пистоне ветвящиеся if считаются зашкварным способом организации логики (вкатывадьщиков в ML мы сейчас в расчет не берем, разгово рименно про бэк). Там будет либо словарь, либо декораторы, либо подобие паттерна State
мимо
Речь вообще не об этом. Чел считает jvm-языка зашкварными, потому что "они не пайтон". Аргумент уровня амбициозного вкотика.
Нечто такое же я видел и на питоне. Просто на питоне тырпрайз не пишут нормальные люди, а когда пишут, там еще хуже из-за отсутствия типов.
1c круче
Прям щас на ноде пишем лол
Скажи это куче крупных (и не очень компаний), а также статистике стековерфлоу https://softwarebrothers.co/blog/companies-that-use-node-js/
Клиника.
Бэк весьма разношерстен на самом деле. Но большая его часть внезапно под php по причине легаси-параши
У ноды есть свои подвохи канешн. Отсутствие адекватного ООП, прототипирование и местами нелогичное поведение (в наследство от жс) делают ее более ебанутой чем тот же .NET и уж тем более Питон. Нода и экспресс под нее были весьма кстати в свое время, но многие компании решают писать на ней по банальной возможности нанять побольше жс-макак вот и все. Точно так же как некоторые ебанутые пишут свои мобилки на жс просто потому что на рынке можно весьма быстро наполнить свою галеру гребцами (круче только на питоне такое писать). О качестве продукта задумываются в последнюю очередь
Двоечник, синтаксический сахар это простые расширения над языком. Можно объявить функцию и засунуть ее в коллбек, а можно сэкономить пару строк и описать ее в лямбде, вот и вся разница. Это тебе не асинхронный код против синхронного
Хуеичник, я и говорю покажи на асме с макросами лямбды. Это же просто сахар.
>Это тебе не асинхронный код
Это просто сахар над коллбеками.
Пиздец ты бесноватый ребенок... Все равно что пистонист копротивлялся бы за list/dict comprehension, обсираясь в ярых попытках доказать, что если в языке X их нет, то значит его создатель даун
> list/dict comprehension, обсираясь в ярых попытках доказать, что если в языке X их нет, то значит его создатель даун
Действительно, ведь так и есть (в плюсы добавили)
Но это так и есть
Ссаться кипятком от лямб когда это просто сахар - тот еще ор
Безусловно, в функциональщине без них было б запарно, просто потому что архитектура приложений сама того требует
def my_lambda(body: str = '', kwargs):
return eval(body.format(kwargs))
my_lambda('{x} + {y}', x=1, y=2)
У нас дотнетчики сопротивлялись до последнего, но перед короной их всей командой на улицу выкинули. Теперь все продукты написаны на жс+тайпскрипт. И всем хорошо.
""""продукты""""
Шарп слишком поздно стал кроссплатформенным.
Теперь он накуй никому не нужен, кроме дремучего Легаси.
Бля, да как же ты заебал
"напиши comprehension без синтаксиса comprehension"
Начинай.
И держи в уме, что это не более чем сахар для уменьшения бойлерплейта - ровно ту же функцию преследуют лямбды
У тебя какое то альтернативное определение синтаксического сахара?
Синтаксический сахар означает, что то же самое (с таким же бинарником на выходе) можно написать без синтаксического сахара.
Как ты собрался писать лямбды, если например в твоем языке нельзя передавать функции? Или объявлять вложенные функции внутри других функций?
2 самые отбитые группировки животин в современном айти это жс-еры и питонисты
Ебучие дети, изучившие 1 единственный язык и парадигму и не желающие узнавать что-то иное. Сующие свою херню везде, где надо и где не надо. Работодатели порой им и потакают, отсюда столько говноваканский с питоном или жс, где они максимально нахуй не всрались
Для тебя и оператор := добавленный в недавний питон тоже нихуя не сахар, ага. Нельзя ж написать точно так же значит, не сахар нихуя, железная логика. и декораторы через @ тоже не сахар...
>если например в твоем языке нельзя передавать функции
Это вопрос совсем иной плоскости. Лямбда - это сахар. И точка. Функции как объекты первого класса это уже к вопросу парадигм программирования
Ну с питоном уже доигрались, что для вкатышей 5 вакансий на Москву висит )))
Декораторы абсолютный сахар. Оператор := уже позволяет от лишних переменных избавиться, но по сути сахар. Впрочем как и лямбды.
Но дело в том, что если в языке что-то использовать неудобно, требует много кода, то этим и не будут пользоваться без крайней нужды.
Если язык поддерживает, у тебя одна и та же логика реализуется просто, быстро и понятно, удобно писать и читать. И ты будешь этим пользоваться.
А когда надо лепить десятиэтажные выражения, как в C++, или вводить кучу дополнительных переменных, это уже отстой.
>>Это тебе не асинхронный код
>Это просто сахар над коллбеками.
ХЗ кто этот бред выдумал, а потом копипастят. Ты в JS не сможешь переделать код async-await в обычный код на коллбэках без радикальной переделки логики. Там и внутри на уровне машины это иначе работает. Ни разу не сахар вообще.
Ты читать не пробовал на что отвечаешь? Я не сказал "написать точно так же", я сказал чтобы бинарник вышел таким же.
Ну, это чтобы не было дрисни типа "а я указатель на *void передам".
> Лямбда - это сахар. И точка. Функции как объекты первого класса это уже к вопросу парадигм программирования
Жду пример лямбды без функий как первого класса.
Заменить await на что то вроде (псевдокод)
var thread = new Thread(function, parameters...)
thread.start()
while(thread.working()) {}
Не понял, почему ты требуешь примеры от меня? Ты пукнул про синтаксический сахар лямбд, ты и доказывай.
Вы че дебилы? Все выбирают фреймворки, библиотеки и либы по бенчмаркам. А не вот это ваше.
Забавно что ты кудахчешь что-то про всемогущие лямбы которые ни разу не сахар, но повторить декоратор при объявлении в говнопитоне, несущий абсолютно ту же функцию что и многострочные лямбы ты не могешь
>>44363
Какой нахрен препроцессор? Ты на питоне его напиши. А не скомпиль С-либу в питонообертке
ОП ты для начала опиши какую лычку носишь сколько лет в ИТ, сколько лет кодишь? Кто ты по масти? А то чую ты чушок и нюбара, фраер залётный. Я вот миддл разработчик, до этого ещё лет 10 работал системным администратором, в ИТ уже 12 лет, и скажу что суждения твои хуйня. Питон например позволяет сделать что-нибудь очень быстро и проверить это в работе, там где мы на джаве будешь писать двести строк на питоне это займет строк десять максимум. У каждого языка программирования свое применение, каждый по своему хорош, а ты да соси бибу
Очень легко просунуть неправильный бенчмарк с неправильным использованием либы, чтобы он проиграл "правильному".
Судя по российским "бенчмаркам" рейтинг мистера Пу может колебаться от 30% до 80%, в зависимости от формулировки вопроса
Твои "бенчмарки" идут туда же. Всегда надо ниибацки въедлево рассматривать любой бенч, брать их на веру - удел дауна
Причем тут питон? Мне питон идти учить что ли ради тебя? Жду твоих пруфов. Сначала ты, потом я.
@deco
def func():
____pass
полностью эквивалентно
def func():
____pass
func = deco(func)
Если это не просто сахар, то что такое сахар вообще?
Это и есть сахар чистой воды
Однако стоило заделать декоратор при объявлении а не мутить func = deco(func). Судя по логике чела вверху, раз такое на чистом питоне невозможно без @, то стало быть это никакой не сахар, а самый настоящий прорыв в парадигмах программирования
Там сплошь синтетические тесты и некорректные сравнения. Вообще ни о чём.
Надо на каких-то более близких к жизни и к конкретной задаче мерить.
Очень сложно сделать объективный бенчмарк. Вот представть фреймворк какой-нибудь, ты меряешь количество запросов в секунду в настройках по-умолчанию. Но при этом в одном у тебя сессии не подключены, а во втором каждый раз запускается механизм сессий, авторизации, логирования и т.п. Естественно будет огромная разница. Хотя эти механизмы лишние при желании можно отключить.
Ну вот хер знает
https://github.com/TechEmpower/FrameworkBenchmarks/blob/ff3876acf1211c0c2074e3ae6e0b181e02ef112f/frameworks/Kotlin/kooby/src/main/kotlin/kooby/App.kt#L159
Авто по исключению (вместо условия) задает значение. Это нереальный медленный способ, который я только у юных питонистов видел.
А почему вы джаву даже не рассматриваете то?
Зачем когда есть котлин?
В комментарии про котлин написано же почему.
> жрущие и неповоротливое гуано для тырпрайза (как мне видится), а не шустрые легкие решения для анона
мимо
>>44372
> врёти, неправильно всё это, статистика неправильная, наврали вы всё, говна в штаны наложили, а мы всё делаем правильно 30 лет подряд всё правильно делаем
Где-то я эту аргументацию слышал... ксожилению, эти тесты можно и у себя на пк проводить все тесты
>>44383
> Там сплошь синтетические тесты
> и к конкретной задаче мерить.
Сделай свои, покажи.
>>44386
> Это нереальный медленный способ, который я только у юных питонистов видел.
Сделай свой и запости. Эра гитхаба. Пиздежь проверяем. Вилять жопой не получится.
Зачем?
Чтобы доказать шизику что исключение из-за генерации стектрейся - дорогая штука?
Мое время денег стоит, мне самоутверждаться за счет школьников не нужно.
> ну я делать конечно ничего не буду
> но поверьте мне на слово
Спасибо, я как-нибудь без веры обойдусь.
> Мое время денег стоит
Да ладно тебе, просри еще два часа на харкаче. Давай, хочешь? Тут мемы есть. Оставайся!
>Спасибо, я как-нибудь без веры обойдусь.
Ты дебил. Вот что ты написал:
>>44366
>Вы че дебилы? Все выбирают фреймворки, библиотеки и либы по бенчмаркам. А не вот это ваше.
Что пиздёшь, потому что тесты очень синтетическая хрень, мало имеющая отношение к реальности, и зачастую они некорректно сделаны. Тупо в фреймворке подключены middleware, которые отъедают много ресурсов, но при этом в тесте не применяются. А в конкурирующих тестах на них и намёка нет, и даже хрен встроишь, если потребуется. И куча другой некорректности.
Как ты выбираешь что-то, это твоё личное дело. Всем похуй, а ты не все. Не уверен, что ты что-то выбираешь вообще, кроме как для тестов.
Под свои нужны всегда можно свой тест составить, на своих стеках, под свои задачи, и проанализировать, что конкретно там затык даёт.
Если писать на питоне в стиле хаскелля, то хоть всю программу в одно выражение делай.
https://www.reddit.com/r/programminghorror/comments/bkdolz/a_game_of_2048_in_one_line_which_i_made_for/
Зависит от предметной оласти. Если дата майнинг, машин лёнинг и всякие парсеры и краулеры, то однозначно пайтон.
Го вроде для скорости используют, хотя зачем пет проекту скорость.
> на каком языке ты пишешь?
Жс, хакс, жаба, питон. Раст, си кресты немношк и остальная мелочь.
> Или какой язык тебе нравится если вкатываешься?
Мне нужен качественный бэк для игрогодноты, считай что вкатываюсь.
Скорее всего выберу раст, тому что скорость. Смущает что раст от мозилы, а мозила дэбилы, не очень хочятся. Но кресты 100% протекут и проебутся, а поддержка этого говна просто пиздец. На си вообще ужось будет, хотя и очень красиво. Неприятная ситуация конечно. Как вариант - cython и похуй на всё.
Клиенты на жс, жабе, крестах и хаксе.
>>44585
Он еще 5 лет назад был быстрый, хз когда там семерка вышла. Помню на хабре доклад, мол, лол смотрите пхп стало на уровне крестов, классно мы ебали свои команды разработки
Его из легаси и не выпиливают из-за этого, только переписывают.
Ну так напиши свои, все поцаны посмотрят, увидят и оценят. Не хочешь писать - не кукарекай. Всё очень просто.
Нах ты в своей голове написал тесты, чел?
Котлин нужен был гуглу во время терок с сан насчет жабы в андроиде, в качестве плана /b/. С выходом фуксии, где все будет писаться на дарте, котлин отправится на парашу к жабе и прочей дрисне.
Так терки в процессе, и если договорятся то так и оставят котел
> во время терок с сан насчет жабы в андроиде
Но ведь там срач из-за JVM, а не самих языков, и никакой котлин ситуацию не спасёт.
> С выходом фуксии
Ну и когда она выйдет, лет через 5-10? И много ли людей сразу перейдёт на хуиту, где нет софта?
> котлин отправится на парашу
Да.
> Автор написанного на языке Rust web-фреймворка actix-web удалил репозиторий после того, как на него обрушилась критика за "неправильное использование" языка Rust.
Ору нах
Он написал хуево, а когда ему на это указали (опенсорс же), ныл "ну не начинайте".
Он написал ради производительности же, не?
И что за ансейф вообще там был, я нихуя не понял и почему он нужен.
Можешь почитать,
https://github.com/actix/actix-web/pull/968
имхо автор ебанашка, который написал так потому что ему так понятнее, и уверял всех что ub это хорошо и ниче не будет. Даже после того как ему показали с пруфами.
Слушай, прости брат, с Эрлангом попутал, посыпаю голову пеплом
Хуйня какая-то, там ничего нет даже.
Типо че-то там с датой связано, типо DateServiceInner на сервере может поменяться атакующим и можно отхлебнуть чужой памяти из-за хуевой типизации? Или че?
Короче, шиза ебаня и растоистерика, еще меньше раст стал нравится.
https://gist.github.com/pcr910303/d7722a26499d0e9d2f9034a06f2433b4
пусть ref1 = mysell. get_mut ();
пусть ref2 = mysell. get_mut ();
Вот это лучше показывает, бля я аж хрюкнул когда увидел.
> топовый веб фреймворк по версии хуибенча
@
> ref1 ref2
Да я по приколу его скинул, дажен е кодил на нем
Это макрос какой то на пикче?
Во всех языках макросы нечитаемые
Эти языки, как и все ФП, используется взрослыми дядками, чтобы самоутверждаться как личности. Зачем детей этим мучить?
Так самоутверждаются те, кто пытается этим языкам кого-то учить.
>Так это не Elixir получается
Да, я проебался, это представление на эрланге. Да все равно не лучшая йоба там:
https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/code_reloader.ex
https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/socket/pool_supervisor.ex
:reloader эти двоеточие там везде, видимо тоска по php c $
|> halt()
#{inspect(name)}
У борщехлёба припекло?
Котлин изначально парашерождённый, не светит ему
Но зачем чистую функциональщину в школе давать?
Максимум если в классе где 100% по направлению ит учаться
Кста, а это правда что компенлятор раста занимает 30гб? Они там порно с жопоеблей засунули в компилятор?
> Ну пробуй плюсы, на них вполне возможно писать безопасно, но больно
> хотя в расте тоже больно
Разве раст не уменьшает боль по сранвению с плюсами?
> А вобще если у тебя не супер хайлоад, то те нахуй быстрый яп не нужен
Игрулька с тысячами векторов онлайн без смс. Нужно быстро.
>>45169
Не, это гугл, это уже совсем плохо, так нельзя.
Дают и не чистую и не функциональщину
В программировании нет каких-то сложных направлений; школьники в принципе осиливают практически всё
Даже небольшое уменьшение боли имеет значение.
Возможно можно обёртку над си/плюсами нужно посмотреть, вроде хорошая идея.
Не знаю что в хаскеле можно натянуть на "сложно". Даже если в шутку
А что не так? Сложного же ничего нет. Просто читаешь доки и просто пишешь. Просто тестируешь.
Гугл же. Ладно там стандалон v8 и прочая хуйня. Но го это уже серьезный пиар гугла.
При чём тут пиар? Есть удобный инструмент, его берут и решают задачи, при чём здесь какой-то пиар? Шиз, ты?
Лол, ну так бери и решай, нахуй ты мне сейчас высказываешь эту хуйню? Совсем поехал?
Ну так тебе хайлоад нужен, не брать удобный для, этого инструмент просто потому что тебе какой-то мифический пиар плохой корпорации мерещиться равно быть шизом
Лол, в случае чего всегда есть кресты/си для реального хайлоада. Го в списке хайлоада занимает далеко не первую строчку, с учетом говна - последнюю.
>хайлод
>си/кресты
Надо бы найти источник это дезинформации и выжечь на корню.
Хотя с другой стороны хорошо детектит нюбов, которые любят говорить о вещах с которыми никогда не сталкивались.
Сьеби уже от меня со своим го и фантазиями о сях. Иди проповедуй кому-нибудь другому. Пиздец поехавший.
> Лол, в случае чего всегда есть кресты/си для реального хайлоада
Это разве что для отдельных модулей, которые потом можно подключить хоть в питон или ноду.
> Го в списке хайлоада занимает далеко не первую строчку
Он среди первых. Единого первого места нету, есть набор разных инструментов и разных языков.
>с учетом говна - последнюю.
Не понимаю, как же так вышло, что тебе гугел-то в штаны серит?
А что не так? Почему-то считаешь что кресты не хайлоад, какое-то насильное пропихивание го.
>Питон например позволяет сделать что-нибудь очень быстро и проверить это в работе, там где мы на джаве будешь писать двести строк на питоне это займет строк десять максимум.
Пиздец ты даже наверно в Spring не заглядывал, да чел? Два декоратора и твой питон ебани обосрался
Есть только котлин и шарп, все остальное говно.
Нод.жопез - легко повесить поток, нет решения, кроме архитектурного (вынести дробилку в новый микросервис)
Го - то же самое, нет контроля потоков, нельзя сделать пул корутин. Ошибки без стектрейса - язык непригоден для большой разработки.
Раст - как пишут в раст-треде, очень сырая асинхронщина с 6% багом зависания. А топовый хттп-фрейм течет как деревенская девушка при виде москвича.
Пхп - страничник без состояния, но с упоротым ООП комьюнити. Анонче говорил, скрипам ООП не нужон.
Петухон - игрушка инфоциган для зарабатывания бабла. Дизайн либ и языка выполнен через жопу, то есть гением. От чего все по своему и необычно нетакой как все.
Все что сложнее пропарсить файл превращается в обычную рутину, что как бы намекает, никакого прироста скорости разработки нет, наоборот динамическая природа тормозит.
Про костыли ввиде virtulenv я молчу. Даже JS сейчас более модульный чем петухон.
Руби - магия и бестолковая кроссплатформенность. Кому это надо, непонятно.
Причем, если бы шарп сделали в 2010 кроссплатформенным, сейчас бы был только один язык программирования. Но они опоздали, поэтому он нахер уже не нужен, когда есть современный котлин, с офигенскими лямбдами
>шарп
>кроссплатформенным
>был только один язык программирования
>котлин
>современный
>офигенские лямбды
Как же заебало это говно.
>>47057
> котлин
Бля хватит уже с этим котлином. Ну нельзя же так! Он медленный. Жаба медленная. Натив тоже медленный должен быть.
Оно подойдет если только писать медленные апликухи и ЖРАТ ресурсы. Так нельзя и неприятно.
И он не ерланг, хоть и архитектура под это дело есть
> шарп
Моно тащить на ленукс. Нахуй такое.
Ящитаю лучший выход - крестовая либа на сервисы и вычисления и что-то вроде еликсира/ерланга/хаскеля или что там можно нахуярить как оркестровку. Больше я нихуя не нашел.
Лол, жаба у него медленная
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=plaintext
Как там в 95 то, дедуль? Все еще ждете новый стандарт С++ и боретесь с тормозной джавой??
Джава настолько медленная, особенно работая с базой, что специально завершается по-быстрее, чтобы подождать и посмотреть как работают другие быстрые языки.
https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=query
>Математику она считать будет медленнее плюсов и натива
Потому что ты так придумал? Или тебе так на ютубе сказали?
Как видишь, сам факт что возьмешь С++ или тем более борщовые языки, не сделает твой код быстрее. Более того, ты можешь оказаться даже где-то на уровне питона.
Качественные либы решают. Прогретая джава очень шустрая. Там в JIT такие оптимизации, о которых ты даже еще не знаешь.
>Я хз, может у жвм появились привязки к железу?
Скорее это ты отстал от IT индустрии и так себе технический спец. ламер
И да, котлин из-за полного интеропа работает так же как жаба (за редкими микро исключениями)
> Потому что ты так придумал? Или тебе так на ютубе сказали?
Сам тестировал матан, вектора и геометрию всякую ептоу. Я хз, может как-то хуево оптимизировал под жаву.
> сам факт что возьмешь С++ или тем более борщовые языки, не сделает твой код быстрее.
Сделает конечно.
> Качественные либы решают.
Ктож спорит. На плюсах есть бустасио и качественные либы матана.
> Прогретая джава очень шустрая.
Что значит прогретая? Зачем её прогревать нужно?
> Там в JIT такие оптимизации, о которых ты даже еще не знаешь.
Какие?
> Скорее это ты отстал от IT индустрии и так себе технический спец. ламер
Ну так объясни в чем плюсы. На фронт-клиентах работал долго и упорно, а сервера крутились на говне всяком, было норм. Сейчас нужна оптимизация.
> И да, котлин из-за полного интеропа работает так же как жаба (за редкими микро исключениями)
Т.е. котлин натив бессмысленен? Чот нихуя нипанятна.
С твоими знаниями лучше вообще не тестить. А то вечно джаву не прогреют, или испугается что ГЦ зарезервировал много памяти.
>Сделает конечно.
У тебя там факт на лицо. Языки с байткодом не устуют или в ровень неуправляемых.
>Что значит прогретая? Зачем её прогревать нужно?
Ясно с тобой, тестировщик.
>Т.е. котлин натив бессмысленен?
А он тут причем?
Я думал ты тролль, но ты просто туп. Ссорян, больше не развлекаю
>Что значит прогретая? Зачем её прогревать нужно?
Джава по-началу работает медленнее, с течением времени там начинаются йоба-оптимизации и она начинает работать быстро.
Нефига волшебники.
Джава по дефолту интерпретирует байт код, а JIT наблюдает за всем этим и если видит, скажем, что твое приложение дергаешь участок кода (метод) 10.000 раз, он возьмет тебе с компилирует этот код со спекулятивной оптимизацией и теперь код будет работать как сишачке сразу в процессор.
Так как JIT имеет собранную статистику и видит все происходящие, то он может сделать такие оптимизаци (выкинуть твой говнокод), которые не сможет сделать обычная компиляция.
Тем временем, сборщик мусора уже тоже поймет, какие объекты дольше живут, и он их сложит рядышком, упакует удобненько и будет меньше дергать сборку в этом месте.
Где программа на С++ за неделю наделает такую фрагментацию в памяти, что будет тормозить, аки осел (если не упадет), джава приложение будет еще работать быстрее (кому интересно читаем про поколения в ГЦ)
Пока борщихлёбы мерились байтами, джава и тырпрайз мир сделал удобный инструмент для бизнеса и веб-приложений.
А котлин еще дает корутины на халяву, от чего всякие Го становятся не нужны. Потому что ты теперь сам контролишь где у тебя и какого размера пул с корутинами (и например http запросы ты не будешь мешать с парсингом картинки, и у тебя не зависнет http сервер)
> вы врёти всё, брешите, жава это почти как си, только жава
Ага, ага. Только почему-то FPS сервера с тикрейтом в 60+ делают не на жаве. До сих пор.
>>47185
Это жит оптимизирует. Можно и без "прогрева".
>>47188
> кажем, что твое приложение дергаешь участок кода (метод) 10.000 раз, он возьмет тебе с компилирует этот код со спекулятивной оптимизацией и теперь код будет работать как сишачке сразу в процессор.
И оптимизирует он не всё, а только конструкции которые могут оптимизироваться в рамках жвм.
SQL базу данных, фреймворк и алгоритмы.
>Ага, ага. Только почему-то FPS сервера с тикрейтом в 60+ делают не на жаве. До сих пор.
GC
>Это жит оптимизирует. Можно и без "прогрева".
Что??
> gc
Кстати да. Нинужна.
> Что??
Шо шо? Кэш можно делать заранее, в функциях где это можно.
Кстоти если gc отключить и всякие такие примочки, то нормас на котлине катать будет? У меня до сих пор СМУЩЕНИЕ от этого.
https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm#A1095915
Этот блядь. Нах ты сражаешься за жабу и нихуя в ней не знаешь, долбик?
https://docs.oracle.com/en/java/javase/11/vm/java-hotspot-virtual-machine-performance-enhancements.html#GUID-F33D8BD0-5C4A-4CE8-8259-FD9D73C7C7C6
Неслабо ты разорвался. Держи последнюю версию, посмотри там что как, узнаешь что можно jaotc юзать.
Но по прежнему это кэш в жвм, хоть и байткод, да. Чувствуются проблемы.
Пьяный тут я, а плохо формируешь мысль ты.
Сначала принес кэш, а теперь разродился до AOT. Такое ощущение что полез в манулы читать.
AOT != JIT и вообще для других вещей оно нужно.
Какие нахуй мысли, поехавший? Кэшируется это всё при первом запуске и аот и жит.
Пиздец блядь, не знать что у жвм кэши байткода есть и подрываться.
>Го - ... нельзя сделать пул корутин.
Можно, почему нельзя-то
>Ошибки без стектрейса - язык непригоден для большой разработки.
Работаю в большой разработке на го, зависимость есть
Какие блядь функции ты кэшируешь? Зачем ты их кэшируешь? Ты говоришь про компиляцию? Ты компиляцию JIT называешь кэшированием?
Сервера с 16мс на тик. Так влажно, что аж можно подскользнуться. Зачем тебе сервера с тиком 16мс, если у тебя пинг 20?
Лол
Но спринг это же говно ебаное, главная причина почему джява полностью проебала в области веб бекендов. Хотя она и так бы проебала, потому что это устаревший язык для умственных инвалидов, кобол нашего времени.
То же самое + DI + фичи для интеграции со стеком джава-мирка + модульность/очереди/вебсервисы/вебсокеты/навороченные транзакции/AOP, много ORM и шаблонизаторов на выборк, HTTP-сервер из коробки, интеграционные тесты, всё легко и прозрачно конфигурируется.
>>48192
Да, жирное неповоротливое нечто, запускается в лучшем случае полминуты (а то и больше), много легаси, сложное в изучении.
>веб бэкэнд
А на чем тогда пишут бек сейчас? Вроде бы как раз на джаве, шарпе, пхп, жс и го?
Кстати вот выдача вакансий по москве. Не думаю, что все это - только лишь банки.
В рф кстати дотнета мало очень, меньше чем спринга. Еще к списку можно добавить питон.
Лол, по количеству доступной работы джава остается на первом месте, в том числе и в бекенде. Шарп менее популярен, но работы тоже достаточно. На тот же жс, питон и го попасть куда сложнее.
Кресты/с для сервера/серверов. Часть логики на крестах. Тому что там можно аппаратные хаки делать, управлять памятью короче ебать производительность по полной и быть в почете у бородатых прогеров.
Для оставшейся логики и управления серверами - елексир.
Прототипы (и даже прод, если поебать на ультрабыстродействие) можно хуярить на елексире, у него нормас биба, полная кокомпиляция в байткод, есть куча либ для какого-нибудь взаимодействия с v8 (чтобы ssr делать на жс).
Только так можно обеспечить нормас качество риальне прода и ультрабыстродействие. Лучшего варианта нет. Просто нет. Базарю, я всё проверил.
> проебала в области веб бекендов
Какая жалость, на джаве не пишут визитки и интернет-магазины. Вот Область так Область, всем преклониться перед Пыхоплеядой.
> устаревший язык
Да, устаревший, это все знают. Альтернативы? Только без динамико-дрисни, борщехлёбства и нулевой экосистемы.
>Область так Область
Именно. Веб это интерфейс ко всему и единственный по-настоящему кросс-платформенный.
Согласен, однако.
> на джаве не пишут интернет-магазины
Да вообще даже пишут. Только скорее крупные, ближе к озонам-амазонам
>Все динамико-языки - медленный калл, даже js сосет
Ну вот зачем ты пиздишь.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/javascript.html
Одно дело дергать сишную либу через js. Другое дело когда у тебя код на самом JS - и эта интерпретация медленная.
То есть, чем больше кода на жопаскрипте, тем сильнее будет проявляться реальность.
Почему нет?
>непопулярное оплачивается больше чем популярное
Скажи это каким-нибудь крестовикам с зп меньше более чем в два раза меньше, по сравнению с фронтендерами и джавистами
> Скажи это каким-нибудь крестовикам с зп меньше более чем в два раза меньше, по сравнению с фронтендерами и джавистами
Хуя магическое мышление у тебя.
>>49397
Чаще чем ты думаешь. На любом говне есть парочка пиздатых либ на крестах, либо парочка либ рассчетов какой-нибудь хуйни.
Всё остальное, уровня "хуякс-хуякс-продакшн@инвестиции@слив@новый проект" в етот существующий кризис жидко оподливилось.
>пик
Ну и зачем ты показываешь американские зарплаты? Показывай реалии российского рынка, где С++ традиционно используется в геймдеве, ембеддеде, на заводах и иногда в машобе/компьютерном зрении.
Так вот геймдев - традиционно наихудшая отрасль для карьеры, постоянные увольнения, постоянное наебалово со стороны партнеров и работодателей, но оно и понятно, монетизировать очередное говно иногда бывает намного сложнее, чем обычно и как следствие разрабы идут на мороз, а студия закрывается.
Ембеддед - просто низкие зп по рынку. Разработка полностью ориентирована на российский рынок, нужно плотно работать с железками, поэтому никаких удаленок нет.
Заводы - ну тут все понятно, очень редко встречаются интересные задачи автоматизации, но промышленность РФ находится в полной жопе, поэтому вменяемого рынка труда здесь нет
Компьютерное зрение и машоб - годнота, здесь как раз есть деньги, правда конкуренция большая. И нужно еще хорошее математическое образование, желательно магистр или пхд, вкатиться сложно.
>>49504
>Всё остальное, уровня "хуякс-хуякс-продакшн@инвестиции@слив@новый проект" в етот существующий кризис жидко оподливилось
Я не про хайлоад, но джава энтерпрайз по ощущениям вполне норм себя чувствует в этот кризис, если не учитывать тех, кто работал на авиаперевозчиков, у них совсем все грустно.
> Ну и зачем ты показываешь американские зарплаты?
Зачем я вообще показываю зарплаты. Выбирать язык по условиям труда - ебланство.
> где С++ традиционно используется в геймдеве, ембеддеде, на заводах и иногда в машобе/компьютерном зрении.
Плюсы и си используются везде.
> энтерпрайз
Всегда имеет либы на крестах и часто переписывает либы/скрипты на кресты.
>Выбирать язык по условиям труда - ебланство
Как раз таки нет. То есть если просто хочешь научиться прогать, то да. Если собираешься работать, то нужно выбирать как раз то, что нужно в твоем регионе. Иначе есть риск вкатиться в какое-нибудь говно, а потом удивляться, чому же это я в 30 лет пердолю говно на MFC 20 летней давности. трустори для С++ zamkadsk edition.
>>49715
>Плюсы и си используются везде
Мобилки и веб - практически отсутствуют. А ведь это 90% рынка СНГ.
>имеет либы на крестах и часто переписывает либы/скрипты на кресты
Такое встречается, но далеко не везде. И вообще, что-то переписывать в энтерпрайзе очень не любят, там годами и десятилетиями будет крутиться один и тот же код на джаве, если он не сильно критичен в плане производительности. Но и настолько критичных моментов в энтерпрайзе обычно не так уж и много, обычно все решается более детальным осмыслением того, что уже написано и как это можно улучшить.
про РФ да, с ембеддом все хуево
но надо смотреть на гейропку лучше - там с руками оторвут ебанаого джуна на крестах, так как задач по автоматизации просто дохуя
еще есть IoT
>там с руками оторвут ебанаого джуна на крестах, так как задач по автоматизации просто дохуя
В Германии да, но нужно учитывать, что на зп джуна прожить сложновато, 50к евро в год - чуть больше 4к в месяц, из которых половина уйдет на налоги - итого 2к евро в месяц. Учитывая, что джунам в москве платят примерно 80-100 за 40 часов в неделю, а цены ниже, то смысла смысла в переезде как таковом и нет.
Плюс нужно немецкий нахрюк учить, ибо без него все равно что быть совсем уж чуркой в чужой стране.
>IoT
Хуйня, про которую говорят еще аж чуть ли не с 2015 на 2 курсе тогда активно пытался вкатиться туда, а в итоге так и не взлетело.
НУ ЗАТО ПОТОМ СТАНЕШЬ МИДДЛОМ и жить будешь в ес
> Если собираешься работать, то нужно выбирать как раз то, что нужно в твоем регионе.
Хуета. Если ты хочешь прогать - то в итоге ты будешь мидлом-сынёром, которому платят больше чем жс сеньру. Вот и всё.
Хочешь просто работать - иди гейшлюхой.
> zamkadsk
Удалёнку фриланса берешь на 2-4к и всё.
> Мобилки и веб - практически отсутствуют. А ведь это 90% рынка СНГ.
Не, на мобилках как раз кресты дохуя юзают.
>будешь мидлом-сынёром, которому платят больше чем жс сеньру
Это так рыночек порешал? Я к тому, что если нормальной работы на C++ в твоем городе/области нет, то и зп у тебя будет ниже, чем у аналогичных жс сеньеров из твоего региона. Ну и у крестовиков в России зп в среднем явно ниже, чем у фронтендеров.
>Удалёнку фриланса
>C++
Фриланса на С++ почти нет. Удаленка есть, но тоже куда меньше, чем на жс или даже пыхе. А если нужно работать с железками, то какая же тут удаленка?
>>49982
>Не, на мобилках как раз кресты дохуя юзают
Сомневаюсь, что чаще чем Kotlin/Java/Swift/JS
> Я к тому, что если нормальной работы на C++ в твоем городе/области нет
Иди гейшлюхой, заебал кудахтать блядь, если тебе настолько деньги нужны.
> Удаленка есть, но тоже куда меньше,
Какая блядь удалёнка, устроился на галлеру и впахиваешь, получая свои 3-4к, складируя на счете в иностранном банке.
Какие галеры? Где их найти в замкадске?
>заебал кудахтать блядь, если тебе настолько деньги нужны
Ну так и скажи что жидко обосрался. В российском C++ денег почти нет, это глупо отрицать.
Ну и? Моего города здесь нет. Ближайшего областного города тоже нет. В Москву теперь ехать? То-то и оно, у нас работа с крестами есть только на заводе и в НИИ.
>в замкадске?
Чекнул свой город кстати, 99 вакансий погромиста на 550к населения.
Превалирует сишарп, жс/хтмл/цсс, ява ну и приправленные щепоткой пхп и 1с(видимо быстро пхп с 1с разбирают). На весь город полторы вакансии с крестами.
Такие дела.
>так как задач по автоматизации просто дохуя
Эмм, ты ничего не путаешь? Просто задачи по автоматизации это вот:
https://2ch.hk/wrk/res/1998066.html (М)
> Какие галеры?
Онлайн галлеры.
> Где их найти в замкадске?
Сначала тебе начальную школу нужно закончить.
> Ну так и скажи что жидко обосрался. В российском C++ денег почти нет, это глупо отрицать.
Ты ебанутый? Я тебе кидал блядь графики, глаза раскрой.
Нахуй ты реальность-то отрицаешь со своим жс?
>Онлайн галлеры
Ну а где, где они? Покажи пример, ссылку на хх кинь.
>Я тебе кидал блядь графики, глаза раскрой
Один график был забугорный. Про этот график ничего сказать не могу. В моем городе почему-то ситуация другая.
думаю перекатиться в хаскел или го, хотя работы по ним намного меньше (но по бабкам поссут в ротешники всем)
> Ну а где, где они?
Там где тебя нет.
> Покажи пример
Нет, тебе не покажу.
Страдай на своей работе в своём районе и городе, пока галерные рабы получают по 8к/мес.
> Один график был забугорный.
Я тебе запостил график второй раз. Раскрой зенки.
Плюсы это в основном заводы, обороночка, нии. Это дохуя специалистов-старперов, чеей стаж пограммирования выше чем возраст большинства вкатывальщиков с зэкача. Часто это довольно узкоспециализированная область типа байтоебства, сеточек или маняматики, а зекачерам маняматика и алгоритмы НИНУЖНЫ!!!.
При этом зарплата плюсовика даже по твоим картиночкам (которые имхо выглядят не очень правдоподобно) зарплата подобного специалиста совпадает с зарплатой жавадебила и мепньше чем у смуззихлеба-рубиста.
Итого: сложный вкат, жопные задачи, никчемный выхлоп.
И нахуй оно надо? если ты не сорокалетний бородач в застиранном свитере
Ну не хочешь как хочешь, так и быть, разрешаю тебе не писать на плюсах.
В чем проблема просто взять и устроиться в Nvidia чтобы без задней мысли зарабатывать 450к в месяц на плюсах?
Не всем дано быть сыном маминой подруги.
Бля
С другой стороны, я с горем пополам вкатился в джаву с наставником-другом и курсами, так что думаю, го банально не потяну
В рот ебал линукс вдобавок
Для таких тупых, наверное, ios будет самое то
Слишком влажная фантазия
Хотя, вот ебать, я вот не погромист, но сука, как же хочется заниматься такими штуками, как у них.
Мимо аналитик, оптимизировал кое-какие процессы у них
Кажется, с елексиром поспешил.
Таки нужен питон, ситон, си и кресты. Елексир всё же обсирается в тестах производительности и довольно сильно. Cython потанцевально не имеет проблем в производительности и работает на уровне си, плюс имеет скриптовые плюшки в виде питона и питонячих мат.либ.
А чего влажного? Учишь плюсы с универа, конпунктер вижен, устраиваешься. Не на завод/НИИ идти же. Тут на дваче анон несколько раз пруфал что в ДС офисе Нвидии работает
>Тут на дваче анон несколько раз пруфал что в ДС офисе Нвидии работает
Выходит нужно уволить того анона, место-то занято.
Эликсир не создан для производительности, ни один хороший разработчик не будет смотреть как там он себя в бенчмарках показывает. Он создан чтобы держать охулиард одновременных соединений и чтобы это все было distributed без какого-либо гемора, и максимально отказоустойчиво. Идеально для сокетов. Тот же голанг тоже можно сделать distributed, но для этого придется сделать дип дайв в вонючие канализационные воды кубернетеса. А в эликсире из коробки всё. Просто апи шлюзы пишем на го/джаве/да хоть питоне, а у эликсира свои задачи будут
Через него же будут идти вообще все соединения с серверами и дб, не? И если он будет где-то проебывать производительность в запросах, то будет оче неприятно.
1. JS (Node (Express, Koa, ...)). Подойдёт для не сильно нагруженных сервисов/сайтов. + Если знать Angular/React/Vue + CSS + либы, можно самому написать веб-клиент.
2. Java/Kotlin (Spring). Для любого нагруженного бэка. Если знать Android API, можно самому написать мобильный клиент. Но на жаве бэкэнд-фриланса нет.
Ну и SQL, само собой.
Всё остальное НИНУЖНО.
Поправлю, все кроме ноды не нужно, нода это настоящее и будущее. При желании можно го прикрепить, но жто уж слишком.
>все кроме ноды не нужно
Это перебор, конечно. Но современный бэк на ноде пишется довольно быстро, да.
Ещё бы сделали, наконец, возможным быстро передавать сокеты в воркеры.
>IoT
> не взлетело
Ну не знаю, у меня дома робот-пылесос, умная лампа, мультиварка с wi-fi - чем не IoT?
пых
Не надо, пусть сдохнет, и о нём все забудут.
Нет, выбор совершен всем кто хотел его совершить.
Скоро проекты на веб-ассембли потеснят вообще весь DOM, и о жопоскрипте никто не вспомнит. Про ноду вообще молчу, кто вообще в здравом техническом уме возьмет это эвент говно?? Толку что и там и там жопоскрипт. Дегроты не могли сразу нормально сделать на корутинах.
Я минут 5 читал статью на луркоморье, чтобы понять, что это такое, но так нихуя и не понял. Какая-то хкйня для аутистов типа спиннера? И при чём тут webassembly? Твоя аналогия непонятна. Тип поиграться и забыть что ли?
Нода это обёртка над v8
Автодеск например своего двадцатилетнего монстра на плюсах портировало и берёт плату, но харкачеру, конечно, виднее.
*сороколетнего
Перекатились, слоупоки!
Лол, кто бы мог подумать, что анальное сканирование это не мем с пораши.
Ты не найдешь работу рубистом.
вебассембли будет развит лет через 20
Это копия, сохраненная 9 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.