LINUX.ORG.RU

На чём разрабатывать бэкенд под Linux: Java или ASP.NET?

 ,


0

1

Обычно в бэкенд-разработке юзаю php и Go (ещё немного Python), но регулярно слышу и читаю где попало о том, что это «не серьёзные инструменты». Понятное дело, что особо близко не принимаю к сердцу подобные заявления, но возникла мысль изучить для себя (по крайней мере, пока что) либо Java, либо ASP.NET Core для написания различных «серьёзных» API. Понятно, что для себя без разницы что изучать, но хотелось бы определиться.

Мне ASP.NET Core, на первый взгляд, приглянулся (в плане синтаксиса, т.к. Typescript напоминает, с которым я имел дело), но задался вопросом: насколько удобно вообще разрабатывать на нём под Linux? Или это всё же лучше делать на стеке Microsoft? Гуглил, читал - мнения у людей расходятся. Кто-то за Java топит, кто-то - за C#. Кто-то вообще пишет, что Java умирает, нафиг никому не упала, и ничего нового на ней не начинают.

Ответ на: комментарий от dimuska139

Во-первых картина меняется, во-вторых даже если на работе режешь мясо ножкой от стула, то в свободное время неплохо попробовать дорогой сбалансированный японский нож.

Если ты работаешь в консервативных компаниях, то Rust решает одну очень неявную задачу - учит тебя писать отличный C++ код. Rust не даёт делать многие виды неправильных решений по структурированию кода и управлению памяти. После того как это входит в привычку, ты потом то же делаешь в С++.

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от fernandos

Ну тут можно подставить любой язычок на твой вкус в зависимости от степени извращенности :)

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

Java изображает сложность. Там формализовано много того, на что можно было бы забить и писать попроще без каких-либо рисков и проблем. Но должно выглядеть дорого

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от fernandos

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

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 2)
Ответ на: комментарий от vertexua

Если ты работаешь в консервативных компаниях, то Rust решает одну очень неявную задачу - учит тебя писать отличный C++ код. Rust не даёт делать многие виды неправильных решений по структурированию кода и управлению памяти. После того как это входит в привычку, ты потом то же делаешь в С++.

Но пока получается очень плохо.

https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=rust

Помнится забанившийся фалкон утверждал, что Rust избавляет от целого класса ошибок «use-after-free» и «double-free». Как видим из списка CVE это ложь.

Ещё были утверждения, что разделение safe, unsafe уменьшает время нахождения багов/уязвимостей, нужно лишь смотреть в unsafe функции.

Как показывают исследования: https://cseweb.ucsd.edu/~yiying/RustStudy-PLDI20.pdf

уязвимости могут быть в любой части программы:

и в safe

и в unsafe

и в safe -> unsafe

и в unsafe -> safe.

Так что пока Rust активистам лишь остаётся нести чушь типа:

https://alexgaynor.net/2019/aug/12/introduction-to-memory-unsafety-for-vps-of-engineering/

Organizations which write large amounts of C and C++ inevitably produce large numbers of vulnerabilities that can be directly attributed to memory unsafety. These vulnerabilities are exploited, to the peril of hospitals, human rights dissidents, and health policy experts. Using C and C++ is bad for society, bad for your reputation, and it’s bad for your customers.

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

Линукс просто технология из 90х, он же как-то развивается, а пхп в принципе тупиковая ветвь развития во всех отношениях.

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

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

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

JavaScript — смотрим на название, там джава, какой ужас.

Ещё раз, пыха выросла из этого.

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

Полная чушь) Боюсь узнать, что ты тогда про C/C++ скажешь, учитывая их время появления.

dimuska139 ★★
() автор топика

Обычно в бэкенд-разработке юзаю Go

И зачем тебе Java и C# тогда? Устаревшие инструменты.

Писал на C# под венду, норм, но под линукс забудь. Пишу на Java уже 5 лет один огромный CRUD и трейдинговые алгоритмы, все на linux. Очень круто, но некоторые вещи в жабе это боль. На пример, дробные числа или даты, особенно считывание оных из excel.

Go умеет все то же самое, только по-новому, проще, быстрее, более лучше. Сиди на нем.

ps: сам скоро на голанг перескочу с этой жабы.

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

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

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

Чего это у них ниши разные? Го давно теснит жабу на веб бекенде. Ну кроме ентерпрайза и легаси.

У меня сложилось впечатление, что писать на го таки быстрее. Там где в жабе try-catch с кучей ifов и встроенных formatterов, на го 1 чистая строчка.

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

Сложно сказать. Нужно делать if err != nil на каждый чих (это хорошо, кстати), а также всяких Hybernate для работы с базой не найдёшь. Есть Gorm, но это такое себе. Я Squirrel юзаю, но это чисто квери-билдер и не более того.

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

Я на нём 10 лет пишу уже. Мне он малость поднадоел, да и часто приходится ему замену брать в виде Go или Python, особенно когда грабберы-парсеры пишу (асинхронность нужна). Ну и хотелось бы не динамическую типизацию, а это не про php.

dimuska139 ★★
() автор топика
Ответ на: Да, на С не все. от Moisha_Liberman

А нафига он нужен, этот cgi/fastcgi, когда проще через балансировку нжинксом просто проксировать tcp/http на твой libuv сервер? Как и для go приложения. Имхо, это лишняя, херня этот cgi/fast cgi

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

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

fernandos ★★★
()

На чём разрабатывать бэкенд под Linux

Erlang/Elixir - хороший вариант, elixir можно за пару недель осилить, ну и в целом приятно на нём писать.

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

Да вариантов дофига и больше) Меня интересовали именно перспективы изучения и использования C# под Linux, и есть ли вообще в этом смысл.

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

Кому как.

nginx действительно в таком случае работает как проксик-балансировщик нагрузки. В описанном мною случае работы меньше нужно делать. Писать свой веб-сервер, например. Он просто не нужен. nginx делает свою работу, мой код свою. Причём, есть чёткое разделение по задачам. У nginx свои, у меня мои.

Был бы FastCGI не нужен, его бы в похапе не использовали. Так бы и обрабатывали по одному чиху на запрос. Вот и вот.

И тут дело в другом. Вопрос в том, что называть ненужной хернёй. В моём случае ненужной хернёй является Go или Rust или что там придумаете ещё. Мне всего-навсего нужен nginx с поддержкой fastcgi, сама по себе libfcgi и мой сишный код. Ну ещё либы для работы с СУБД. В крайнем случае, чтобы с шаблонами документов работать, libctemplate (это аналог перлового HTML::Template для С) может сгодиться, чтобы из каких-нибудь .tmpl делать .html. Всё, пожалуй. Никакой инфраструктуры Java, php, rust, go или python. Этих языков вообще может не быть в системе, так что в моём случае именно go является какой-то ненужной хернёй, если честно. Впрочем, если кому-то нравится, то я и не против. Однако, дикий ржач вызывает то, что люди сейчас по второму кругу изобретают колесо которое уже ездит. И, кстати, всегда ездило.

Вопли про «несовременный», «небезопасный» и прочая-прочая-прочая, я слышу вот уже который год. Равно как и лет 20 уже слышу «sanitize user input». Ничего нового, Вы знаете… Это просто умиляет даже. =)))

И да. Лет 10 назад на лорчике модно было вопрошать «а пачиму ни на ирланге?!?». Ну и где этот ваш «ирланг»? Где всё это громадьё высокопроизводительных и высоконагруженных систем, который по их словам тут каждый второй писал? Да там же, где и все эти новомодные и более безопасные альтернативы С. В… ну, Вы поняли, да? =)))

P.S. О! Вон кто-то про Erlang/Elixir вспомнил… Ну и память у человека… =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Кому как. от Moisha_Liberman

Ну и память у человека…

Прямо сейчас пишу на elixir большой коммерческий продукт. Ну и знаю далеко ненулевое количество непубличных/закрытых проектов на нём. Наслышан что в телекоме erlang'а полно. Даже на ЛОРе есть минимум пара эликсирщиков и пара эрлангистов. Ну и т.д. и т.п.

ddidwyll ★★★★
()
Последнее исправление: ddidwyll (всего исправлений: 2)
Ответ на: комментарий от ddidwyll

Простите....

У меня даже очень хороший знакомый на нём пишет. На то ли на erlang, то ли на elixir. Так что, малость про положение дел я в курсе.

Я просто стебусь, если честно. =) Просто в своё время erlang считался альфа и омега, просто нашим новым всем (ну примерно как сейчас Go и Rust). А сейчас разве что старики упомнят и поведают младому поколению… =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Простите.... от Moisha_Liberman

Когда был erlang в моде - не было Go. У них действительно неплохая vm для определённых задача (распределённых), но с приходом Go он стал выглядеть не такими универсальным, проще и быстрее написать на Go, чем разбираться в кодовой базе этих эрланг фреймворков, в их абстракциях…

menangen ★★★★★
()
Ответ на: Кому как. от Moisha_Liberman

Однако, дикий ржач вызывает то, что люди сейчас по второму кругу изобретают колесо которое уже ездит. И, кстати, всегда ездило

Не согласен, писать много поточный сетевой софт на Си, это всегда было геморрой. А когда пришёл Go - то показал, что всё может быть гораздо проще и удобнее, сборка быстрая, многопоточность удобная, бери и пиши, и не надо заливать, что в 2000 было всё то же самое: не было ни libuv, ни ноды, ни go, а, значит, только бородатые задроты и писали сервисы на C/C++, молодёжь вся «пёрла» с пёрла на пхп по простой причине - пхп прост как валенок

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от menangen

Да ничё, вроде...

пейшу… Всё это описано не по одному и не по два даже раза на всех заборах в интернет. Даже есть green threads (аналог есть и в Go). Для С это называется GNU Pth, например, т.к. это один из вариантов. Есть и другие, но я использую этот , т.к. там API очень похож на стандартные pthreads.

писать много поточный сетевой софт на Си, это всегда было геморрой.

Могу, кстати, ещё идейку подкинуть – можно в принципе свою приложуху вебовскую даже в виде модуля или модулей к nginx написать. Или в виде модулей к апачу, хотя, я уже давно апача не встречал в проде. nginx.

Хотя, там конечно тоже С. Вот или вот.

Тогда приложение просто частью веб-сервера становится. Сразу. Горизонтальная масштабируемость растёт просто махом. Сколько серверов поставите, столько копий приложения и будет работать.

пхп прост как валенок

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

Но «пхп» это сразу означает резко сузить круг решаемых задач. С точки зрения изучения технологии как инвестиций своего времени и сил в своё же будущее, я такой подход принять для себя лично не могу. Безусловно что на php можно написать даже linux daemon. Но у меня от этого просто кровь из глаз и как запустить такой демон на платочке с ARM я даже подумать боюсь. Хоть и можно запустить в принципе, т.к. современные ARM вполне потянут, но это же п-ц, господа!

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: Да ничё, вроде... от Moisha_Liberman

У всего своя ниша. Писать какое-нибудь API эндпоинтов на 200 на С в виде модулей для Nginx - это тоже п-ц, господа! А вот на том же пхп это реализуется без особых проблем. Трудозатрат сильно меньше. А производительности от написания модуля на С ты и не увидишь, ведь в вебе всё в сеть и базу упирается.

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

Кек, кукарек, Расто-адепты врети.

Ты серьезно вот так переубеждать собрался?

Удачи, особенно со всякими прыжками через логическую пропасть между «если задаться задачей, то Раст можно поломать» и «Раст не дает дополнительной защиты по сравнению с С++»

Ещё были утверждения, что разделение safe, unsafe уменьшает время нахождения багов/уязвимостей

Да, уменьшает

нужно лишь смотреть в unsafe функции.

Нет, с них нужно начинать.

уязвимости могут быть в любой части программы

safe

Да могут.

if user.isCool() {  // maybe this check is insufficient, but who cares
  format('/dev/sda1');
}

Удобно придумать самому позицию Rust разработчиков «Rust спасет вас от всех багов, аминь», потом ее оспорить и уйти почесав ЧСВ и защитив свое право не знать Rust. Успокойся, можешь не писать на Rust, я разрешаю, это твое право без криков на ЛОРе. Я буду получать пользу от того что дает Rust будь то предотвращение 100% багов или 10% багов, так как эргономика языка меня тоже намного больше устраивает по сравнению с С++

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 11)
Ответ на: Да ничё, вроде... от Moisha_Liberman

Тогда приложение просто частью веб-сервера становится. Сразу. Горизонтальная масштабируемость растёт просто махом. Сколько серверов поставите, столько копий приложения и будет работать.

Изобретение уровня Бог. А если Apache PHP сделать как во времена раннего палеозоя, то тоже

Сколько серверов поставите, столько копий приложения и будет работать.

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

Можно просто провести сравнение уязвимостей в с++ с количеством уязвимостей в rust за период жизни rust, давая фору с++ в плане того что он язык более зрелый (и его вроде как должны были сделать лучше) нивелируется что rust молодой (и на нем практически ничего не написано). И в итоге все равно уязвимостей в с++ будет больше, такие дела. Кстати если внимательно посмотреть на перечень уязвимостей, предоставленный фсб, большинство это сторонние крейты, а там где не сторонние, а в самом std rust ошибки в unsafe коде. В общем очередное взаимное нападение фанатиков друг на друга, один в блоге пишет обобщенную чушь, другой на форуме потомка Колумба отыгрывает.

anonymous
()

Как в основном C#/Web разработчик, мало знаю про текущее состояние Java, но сейчас прекрасное время, чтобы начать изучать .NET

С выходом .NET 5 закончилась чехарда core/не-core и теперь наконец есть универсальный базис, на который можно ориентироваться и быть уверенным в завтрашнем дне.

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

Всё определяется текущими задачами.

И их ограничениями. В конечном итоге, при работе сервиса важнее всего не то, насколько быстро будет написан сервис (сейчас уже таких «сервисов» и «серьёзных фреймворков» как кала за баней). Важнее всего то, сколько денег Вы потратите на оборудование для развёртывания и прочие накладные расходы на обеспечение работоспособности. Что произойдёт (и в какие деньги выльется) масштабирование бизнеса. «Быстро написать» не самоцель. Квалифицированный сишник и квалифицированный программист на другом языке справятся примерно за одинаковое время. Вопрос будет что потом произойдёт при деплое и последующей эксплуатации.

Например вот:

«Recently, Facebook provided us with some information on their server park. They use about 30,000 servers, and not surprisingly, most of them are running PHP code to generate pages full of social info for their users. As they only say that ‘the bulk’ is running PHP, let’s assume this to be 25,000 of the 30,000. If C++ would have been used instead of PHP, then 22,500 servers could be powered down (assuming a conservative ratio of 10 for the efficiency of C++ versus PHP code), or a reduction of 49,000 tons of CO2 per year. Of course, it is a bit unfair to isolate Facebook here. Their servers are only a tiny fraction of computers deployed world-wide that are interpreting PHP code.»

Это данные и оценка за 2009г. Сейчас, поди, ещё хуже.

С другой стороны, да, Вы правы:

в вебе всё в сеть и базу упирается.

Безусловно да. Я просто вижу цель в данном случае – как можно быстрее отработать запрос и как можно быстрее отдать результат. С минимумом затрат и накладных расходов. Ну а с базами тоже всё не сложно. Как правило, любая база имеет интерфейсную либу для С.

Ну и с третьей стороны… Вы знаете, а пофиг в принципе-то, если вдуматься. Хоть это к «вебу» и не относится, но в С я не ограничен только вебом или только системным программированием или только… ещё чем. В принципе, возможности С-программиста ограничены только его знаниями/навыками и наличием/отсутствием библиотек для конкретной задачи. А уж чего-чего а либ полно каких угодно и подо что угодно.

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

Вы так говорите...

как будто это что-то плохое.

Изобретение уровня Бог.

Это просто одна из возможностей. Выше вон, раб Божий предлагал вообще писать серверы с применением libuv. Ну можно конечно. Хоть с libuv, хоть с libevent, но только я не вижу смысла устраивать безудержный трах с http/2, например. nginx на отличненько справляется.

А если Apache PHP сделать как во времена раннего палеозоя, то тоже

Да так-то хоть свой язык программирования можете запилить. Благословляю. =)))

Moisha_Liberman ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.