LINUX.ORG.RU

Мертв ли C# и Java?

 , , ,


2

3

Привет всем, дорогие форумчане.

Я постараюсь максимально конструкутивно донести свою идею, сорри если кому-то не понравится.

Я - человек со стажем в 5 лет программирования на Шарпе. Изучал не только его, ес-но.

Читал Эванса, его книги по DDD. Изучал многие другие практики, как CQRS+ES, читал Фаулера, имел опред. успех в работе.

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

За время моей эволюции, я понял, что C# и его экосистема не так уж хороши. И спасибо, тут наверное, можно сказать мировому тренду в мир Docker/K8S. Ведь, именно благодаря им - я осознал насколько все-таки, M$-продукция - лажова. Но… Это в какой мере касается и Java.

Меня перестало устраивать их качество, их направление развития. Я считаю их - мертвыми. Для своего времени, как более легкий порог входа и обхода C/C++ - они сыграли свою роль.

Но, вот… Посидев и посмотрел, как условно работают C#/.NET/Dapper, даже если ты не доверяешь ОРМ и пишешь сам параметризированные SQL-запросы и оформляет, как repository… Все равно, это колымага проигрывает по производительности С/C++/libpq (если PgSQL юзается, хотя справедливо и относительно другого)…

В целом, делать SOLID, DDD, CQRS/ES можно даже и на Ruby с Питоном, и это совсем не шутки.

Я понял, насколько все C#/Java - это неудобные инструменты… При этом в последних своих версиях, видимо создатели данных языков решили внести все, что можно в языки. Извратив их и превратив в какой-то швейцарский нож, но получился не швейцарский…

В итоге… Картина такая: что порог входа выше, чем для Golang, Ruby, Python. А в плане производительности .NET/JVM, хоть ты их тюнь 100500 раз - очень сильно проигрывают. А если, вы начнете тюнить приложения с C/C++, Python, Ruby - так они лучше картину покажут…

Спасибо, конечно Шарпу - что меня заставил учить GoF, DDD/CQRS+ES… Теперь эти знания можно применить в других языках, и сидеть на Linux only env.

В итоге, я для себя сделал вывод:

  1. Хочешь клепать фичи по-быстрому для PoC/MVP - Ruby или Python.
  2. Хочешь интересно дизайна ПО - Haskell.
  3. Хочешь high load - C/C++.
  4. Обязательно Linux, забыть про Windows.

PS: дядя шарпист уходит в нирвану Linux. PS2: да, я понимаю что это ЛОР, понимаю что наверное меня кто-нибудь обоссыт за такие выводы… Ну и ладно, зато я сказал - как есть, что на душе. Желаю всем перейти на Linux. PS3: Шарпист, если ты читаешь этот пост - бросай его перейди на Kotlin, Java… не знаю, если перейдешь - потом перейдешь на Haskell, Elixir или др., главное!!! держись подальше от корпораций M$ и Oracle PS4: таки, вспомнил за что еще не люблю Жабу… от нее веет enterprise, и всякие OracleJDK позорят ее… да, есть OpenJDK… но… PS5: всем - добра, peace


Хочешь клепать фичи по-быстрому для PoC/MVP - Ruby или Python.

Так и есть.

Хочешь high load - C/C++.

Тут скоро надо будет писать «C++/Rust», при чем с акцентом на второй.

А на C — много вы видели прикладных, а не системных проектов на чистом C? И чтоб прям high load?

Хочешь интересно дизайна ПО - Haskell.

Ммм… пожалуй, нет, спасибо. :D

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

Наброс засчитан.

Ну если 10 страниц наберётся, то да. А пока рано.

wandrien ★★
()

За время моей эволюции, я понял, что C# и его экосистема не так уж хороши. И спасибо, тут наверное, можно сказать мировому тренду в мир Docker/K8S. Ведь, именно благодаря им - я осознал насколько все-таки, M$-продукция - лажова.

Вроде сейчас .NET Core предоставляет самый офигенный Docker experience, МС пакует отличные базовые и сборочные образы, вопросов к ним нету. Я даже на арме гонял

vertexua ★★★★★
()

Хочешь клепать фичи по-быстрому для PoC/MVP - Ruby или Python.

JavaScript/TypeScript, Go

Хочешь интересно дизайна ПО - Haskell.

Rust

Хочешь high load - C/C++.

Rust. Возможно Go нуачо все работает.

Обязательно Linux, забыть про Windows.

Да

vertexua ★★★★★
()

ВНИМАНИЕ НАБРОС

А на чём кроссплатформенный гуи-то писать? Если я хочу по-быстрому для high-load.

cocucka ★★★★☆
()

в Раби

Вы украинскую и с русской ы перепутали.

Это в какой мере касается и Java

Да, слышал, что когда-то был прекрасный язык, сейчас — такое.

Хочешь клепать фичи по-быстрому для PoC/MVP - Ruby или Python.

Туда же джаваскрипт и тайпскрипт. Первый похуже будет.

Хочешь интересно дизайна ПО - Haskell.

Или лисп.

Хочешь high load - C/C++.

Раст сюда же.

fernandos ★★★
()

Обязательно Linux, забыть про Windows.

И выбросить 99% прикладного корпоративного десктопного ПО. Здорово.

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

А на C — много вы видели прикладных, а не системных проектов на чистом C? И чтоб прям high load?

ФФмпег, дарктэйбл, гимп.

Ммм… пожалуй, нет, спасибо. :D

Это только для души. ;P

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

Lazarus

Там auto layouting уже сделали или так и приходится кнопки руками класть по фиксированным координатам так что всё расползётся если шрифт не тот?

X512 ★★★★★
()

Живее чем хацкель

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

Пиши обработчики onShow/onResize и не выеживайся.

Это прошлый век. В этих обработчиках получается длинная нечитабельная простыня кода. Во всех актуальных тулкитах (Qt, GTK, Haiku, WinForms, WPF) есть поддержка auto layout.

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

Я просил по-быстрому.

А что там не так с быстротой? Создал шаблонный проект в QtCreator, накидал контролов на форму, написал код обработчиков и всё. Тот же Delphi/Lazarus только более современный и менее кривой.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)

PS5: всем - добра, peace

ты думал этим нас умиротворить, утихомирить и заставить замолчать? муахаха.

подставляй карманы, ща тебе насуют.

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

Не одними лайаутами живы )

Зачем нужен Lazarus, если есть QtCreator, который умеет тоже самое и много чего ещё?

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

И со сложными таблицами? А может оно сможет рисовать графики с овердохера точками в реальном времени?

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

С++ + по-быстрому = сегфолты в случайных местах.

Не пользуйтесь голыми указателями и не будет таких проблем. Используйте RAII, std::unique_ptr/shared_ptr.

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

а чем офигенный-то? долгое время сидели на Debian-образах, которые не проходили нормальный DevSecOps-цикл… помню я анализы от Trivy и др., огромнный пласт проблем

плюс, таки образы - жирнее

плюс еще, таки не сможешь ты статичнкую линковку устроить из-за Reflection… есть АОТ-компилция, но от нее толку… сугубо для демо, что есть АОТ…

с Alpine образами стало лучше… но долгое время на .NET Core 2 были баги…

плюс, любой нормальный DevOps собирает собственный образ с анализом и др.

еще плюс, если ты имел удовольствием возиться с self-contained … то даже если соберешь single бинарничек, он с собой потащет весь рантайм… будет капризиничать из-за линковок…решаемо все, конечно.. НО! все же не настолько удобно, как прямая работа с gcc или компилятором Golang, где интереснее сборки проходят

hazkel
() автор топика

PS3: Шарпист, если ты читаешь этот пост - бросай его перейди на Kotlin, Java…

Как шарпист с многолетним стажем, окунувшийся недавно в яву, скажу - сорта говна.

С одной стороны майкрософт, который может в новом релизе что-то конкретно поменять и скромно написать об этом в issue на гитхабе (переход между asp net core 2 и 3 это кекич был, жаль ссылки не сохранил).

С другой - могучая экосистема-помойка с 20+ лет мертвых решений, энтерпрайзных спецификаций с единственной реально используемой реализацией и популярными библиотеками, которые в 2021 году не поддерживают Java 8 Date/Time API без додрочек или попросту портят данные на дефолтных настройках

В целом для веб дрисни у дотнета экосистема получше как мне кажется. Как говорят «бедненько. но чистенько».

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

Не ну ты сравнил с Go конечно )

Там все делалось под контейнеры с первого дня. Один бинарь и все, даже возни с OpenSSL нету, как например для Rust

vertexua ★★★★★
()

На шарпе написаны, как минимум, quantower и cscalp, а ТС… ТС обычный неумеха, который не смог во что-то более сложное, чем hello world.

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

Да, насчет ЖС и ТС - согласен. Про Го - упомянул.

А вот, насчет Раст - несогласен… Во-первых, даже на их форумах, народ пишет, что непонятно куда он развивается… Не все однозначно…

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

Ну и плюс… Я не очень, что он привносит особенного… По мне так, это какой-то новый язык D. Только в профиль… Ну императивщина… Тот же, OCaml или Haskell, как языки - намного интереснее и богаче… Уровень абстракций, который можно вытворять с ними - намного интереснее.

Кстати, не очень понимаю… Почему так Haskell тыкают… в Hackage - уже несколько тысяч пакетов, есть стабильные весьма… Ну да, вряд ли на Хацкелле вы похвастаетесь наличем стабильного GraphQL/gRPC

Но, к примеру REST API с JSON - на Хаскелле вполне можно собрать стабильное. Собирал сам на Yesod && Scotty с Aeson, вполне норм. И лучше показатели показыват нежели, чем Шарп с Жабой.

Плюс, у Хацкелля чувствуется проработанность в плане атомарности и транзакционности. Да это есть и у других языков, но блин… Чувствуется, что в Haskell на это особо анонировали, и причем годно.

В целом, я думаю это мистификация вокруг него, что он якобы такой сложный… Нет, после C#/Java - конечно будут нестандартные ощущения, но за недели 2-е можн спокойно привыкнуть.

Мне лично среди функциональных именно на Haskell - больше всег понравилось. F#, Clojure, CLISP, OCaml, Erlang - как-то не вставило изнутри. А Хаскелль прямо прочувстовал. Классный язык. Без шуток и без стеба.

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

У ЛОРа отличный кроссплатформенный гуй. Надеюсь намек понятен

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

Раст однозначно развивается для занятия ниши С++, но так чтобы на нем было не с страшно писать веб софт. Плюс WebAssembly приоритетное направление

Ну и плюс… Я не очень, что он привносит особенного… По мне так, это какой-то новый язык D. Только в профиль… Ну императивщина… Тот же, OCaml или Haskell, как языки - намного интереснее и богаче… Уровень абстракций, который можно вытворять с ними - намного интереснее.

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

OCaml еще и однопоточный в основном. Там какая-то разработка ведется чтобы это поправить.

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

Он там всегда был. Можешь считать это тестом на внимательность… как переключатель раскладки в КДЕ3.

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

Можешь считать это тестом на внимательность

Его даже адепт Lazarus, которому я отвечал, не прошёл. Начал предлагать мне писать layout вручную в onShow/onResize.

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

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

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

Это ЛОР. Местные эксперты умеют только танцполить и жаловаться в некорректные.

anonymous
()

Тут какие-то чувства, эмоции, а C# не про это. Он чтобы работу работать за деньги. Для этого он годится. А для фанатства лучше выбрать другой язык, конечно.

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