Здравствуйте, hi_octane, Вы писали:
O>>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет. _>На каких именно трёх? А то для кого-то три платформы это Android, iOS, Tizen и тогда у C# есть решение в виде Xamarin. А на десктопе развиваются (но конечно до "развилась" ещё пару лет минимум) — Avalonia UI, и Uno, которые уже заявляют что production ready. Хотя, уверен, глюков у них у всех хватает, но для каких-то проектов точно сойдёт. Для экзотического UI можно посмотреть на Noesis GUI, хоть он и с уклоном в игры, но для настоящего самурая это не проблема а вызов _>С другой стороны я например, иногда играю с детьми в игру Overload, а она написана для трёх платформ — Win/Mac/Lin, и вполне на C# — получается тоже кросс-платформа.
Ну все равно Java покрывает больший спектр решений.
И когда встает выбор — какой путь выбрать, который приятнее писать но много заборов которые не перепрыгнуть или чуть менее приятно — но все дороги открыты ?
Мне кажется второй более разумен, ты потенциально можешь решить больше задач на большем количестве платформ.
O>>Java поддерживает намного больше платформ чем C#.
_>Ну разумеется выбирать язык под проект следует исходя из всех требований. И требование запускаться на микроволновке может сразу ограничить список языков до C.
Не речь не о том что давайте напишем приложение под все железки.
На что мы решим затачивать свой скил — на C# ок, но будем спотыкаться когда придет время написать что-то из UI под MacOS/Linux.
Ведь нужно привыкать к инструментарию и лучше привыкнуть к тому инструменту который позволяет больше препятсвтий преодолеть.
O>>C чем соглашусь что C# приятнее синтаксис, но когда у тебя задача написать кроссплатформенный UI, то приятным синтаксисом придется принебречь. _>Ну вот нафигачишь ты основной код на C# гораздо быстрее, больше времени на поддержку разных платформ останется
Не уверен что быстрее — дело привычки.
Написать поддержку платформы намного сложнее чем пару лишних букв в коде.
O>>И спрашивается а зачем C# ?
_>Ну когда компания на серьёзных щщах, "мы не-стартап, мы решение для бизнеса", то в 90% случаев язык выбирается исходя из того что лучше знает команда. А команду набирал техлид под себя, соответственно что техлид знал когда был сеньёром, на том и пишут
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
O>Ну все равно Java покрывает больший спектр решений. O>И когда встает выбор — какой путь выбрать, который приятнее писать но много заборов которые не перепрыгнуть или чуть менее приятно — но все дороги открыты ? O>Мне кажется второй более разумен, ты потенциально можешь решить больше задач на большем количестве платформ.
Ну ты мыслишь с категории "я хочу быть более универсальным программистом". Но при этом сам же себя ограничиваешь одним языком. Но посмотри на все современные языки — они просто безумно одинаковые и убогие. Буквально пол-сотни разных концепций которые надо изучить, после чего для тебя любой современный язык воспринимается словно чек-лист: "исключения есть/нет; async/await есть/нет; метапрограммирование есть/нет; текстовые макросы есть/нет; gc нет/ref-counting/full; ковариантность ...; high order ...; hkt ...; green threads; first-class actors; и т.д.". Ну и немного нюансов каждой VM если язык крутится на VM. И вот когда все эти концепции в голове улеглись, синтаксис и библиотеки становятся глубоко вторичными. Ты можешь натурально впервые видеть язык с его библиотеками, но зная этот самый "чеклист" платформы и языка, уже примерно представлять как этим языком решить задачу, и какие у решения будут ограничения и слабые места.
O>На что мы решим затачивать свой скил — на C# ок, но будем спотыкаться когда придет время написать что-то из UI под MacOS/Linux.
Так на любом языке будешь спотыкаться. Я даже больше скажу — релиз Linux приложения на соседней Linux-машине — это сплошное спотыкалово Более-менее сложное приложение (java, C#, native) так или иначе потащит за собой готовые нативные библиотеки, тут и обнаружится что разные linux-билды отличаются друг от друга больше чем win7 от win10; какой бардак на MacOS, как получилось что мы тащим за собой весь OpenSSL?!! и т.д.
O>Ведь нужно привыкать к инструментарию и лучше привыкнуть к тому инструменту который позволяет больше препятсвтий преодолеть.
Ну привыкнешь ты, а куда расти? Я всё-таки стараюсь каждую вторую работу находить вне зоны комфорта. Да приходится страдать, ведь прежде всего в глаза бросается убогость и косяки, и только через пару месяцев начинаешь замечать достоинства. Но в каждом языке есть куча уникальных идей про которые на соседних платформах даже не знают что "а так можно было?". Например scala с её sbt — это прям образец того как правильно делать билд-системы для языка, читабельные и на этом же самом языке. Но кто про это знает? В том же .NET вместо того чтобы тупо скопировать идеи sbt чуть не сделали нечто "такое же как на xml только на json" Набив шишек, естественно, одумались и вернулись в "зону убогости" с билд-файлами на xml.
Здравствуйте, hi_octane, Вы писали:
O>>Ну все равно Java покрывает больший спектр решений. O>>И когда встает выбор — какой путь выбрать, который приятнее писать но много заборов которые не перепрыгнуть или чуть менее приятно — но все дороги открыты ? O>>Мне кажется второй более разумен, ты потенциально можешь решить больше задач на большем количестве платформ. _>Ну ты мыслишь с категории "я хочу быть более универсальным программистом". Но при этом сам же себя ограничиваешь одним языком. Но посмотри на все современные языки — они просто безумно одинаковые и убогие.
Отчасти согласен, но дело же не только в синтаксисе, твоя продуктивность зависит от IDE, а они разные, от библиотек, а они очень разные, от пакетных менеджеров и способов их настройки — тоже куча вариаций.
Поэтому прыгать с языка на язык — это малоэффективный универсальный солдат.
O>>На что мы решим затачивать свой скил — на C# ок, но будем спотыкаться когда придет время написать что-то из UI под MacOS/Linux. _>Так на любом языке будешь спотыкаться. Я даже больше скажу — релиз Linux приложения на соседней Linux-машине — это сплошное спотыкалово Более-менее сложное приложение (java, C#, native) так или иначе потащит за собой готовые нативные библиотеки, тут и обнаружится что разные linux-билды отличаются друг от друга больше чем win7 от win10; какой бардак на MacOS, как получилось что мы тащим за собой весь OpenSSL?!! и т.д.
Да но это таково устройтсво мира с этим бардаком ничего не поделать — он одинаков для всех языков. Не влияет на выбор языка.
O>>Ведь нужно привыкать к инструментарию и лучше привыкнуть к тому инструменту который позволяет больше препятсвтий преодолеть. _>Ну привыкнешь ты, а куда расти? Я всё-таки стараюсь каждую вторую работу находить вне зоны комфорта. Да приходится страдать, ведь прежде всего в глаза бросается убогость и косяки, и только через пару месяцев начинаешь замечать достоинства. Но в каждом языке есть куча уникальных идей про которые на соседних платформах даже не знают что "а так можно было?". Например scala с её sbt — это прям образец того как правильно делать билд-системы для языка, читабельные и на этом же самом языке. Но кто про это знает? В том же .NET вместо того чтобы тупо скопировать идеи sbt чуть не сделали нечто "такое же как на xml только на json" Набив шишек, естественно, одумались и вернулись в "зону убогости" с билд-файлами на xml.
Дело тут не в привыкании, а в совершенствовании. Это тоже выход из зоны комфорта — например частая картина даже у сеньеров — перестать пользоваться мышкой и научиться пользоваться клавиатурой например, а настройки в большинстве IDE разные если не считать совсем простых операций. Java и C# настолько огромны выучить там все не получится, так что будет много не комфортных моментов. С каждым шагом ты преодолеваешь очередной барьер и делаешь свою работу еще продуктивнее — в этом смысл.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Здравствуйте, a_g_99, Вы писали:
__>Здравствуйте, AlexRK, Вы писали:
ARK>>По-моему, порицать сишарп и при этом одновременно говорить про инженерную культуру на примере жабы — это что-то весьма странное. Не?
__>почему? я конечно смотрю из своего монастыря java/c++/python но лучшие инженерные решения были сделаны на джава.
Прям не монастырь, а какое-то отделение ада, если лучшие решения в нем на java.
Здравствуйте, a_g_99, Вы писали:
__>Но Россия? Это же против рынка. На рынке джава там востребован и тп. Откуда это все? Зачем??
Так понимаю, топик создан чтобы обосрать C#. Может быть это хорошо и правильно, хотя восхвалять java нехорошо и неправильно, но если отнестись к вопросу серьёзно. Вот читаю вакансии в моём не московском регионе: барс, unity, xamarin, asp.net, epam. Получается, что C# по крайне мере в моём регионе это аутсорс. Люди пишут какой-то прикладной софт для коммерческих организаций, используют как скриптовый язык для игр, так же идёт разработка для мобильных приложений и сайтов.
S>Да что там шарп, у нас Delphi лет 20 как работает.
Вот прям тот же Дельфи, что 20 лет назад? Что-то слабо верится. ЕМНИП, Borland-Inprise–Embarkadero тоже в свое время зашкварились то в переписывании одного и того же по 10 раз (VCL, CLX, Kylix, потом то же самое, но совместимое с C++Builder), то в утяжелении своих творений до бешеных весов. Могу, конечно ошибаться: впечатления очень давние и поверхностные, что происходит сейчас не знаю.
S>И легаси переписывать не нужно S>MS уже несколько раз свой ASP переписал. Удачи, чё )))
C# как бухгалтерский калькулятор с большими кнопками.
java как инженерный калькулятор с кучей кнопок для всякой всячины.
clojure как программируемый калькулятор.
Здравствуйте, a_g_99, Вы писали:
__>ну программы наса для марсоходов написаны на джава как я помню. и движки всякие есть — хадупы, кассандры, спарки и пр. вполне. я не отрицаю мощь С++ но отдаю должное джаве
Есть каки-нибудь ссылки на описание софта марсоходов и использованных средств разработки? В НАСА традиционно Ada используют. Интересно, что ещё и для каких задач?
Здравствуйте, hi_octane, Вы писали:
__>>друг мой чтобы вы знали — быстрее джава только С++. я не про микробенчмарки сейчас а про производительность _>JVM хорош и отполирован, но время его исключительности всё-таки в прошлом. C# все эти годы развивался в направлении высокопроизводительных и при этом всё ещё managed программ гораздо быстрее, и соответственно сейчас продвинулся очень далеко. Множество фич которые уже доступны в C# тупо отсутствуют в языках для jvm. Пока в jvm со скрипом добавляют value-type (для той самой производительности), CLR в деле этих самых value-type ушёл тупо за горизонт. Project Valhalla, который просто value-types всё ещё в EA, в то время как в C# в релизе уже года 3-4 ref-like types, stacalloc, и т.п. ништяки для микрооптимизаций. В стандартной библиотеки first-class citizen'ами стали Span<T> для удобной типизированной работы с произвольными буферами. Пока в большинстве языков программирования любой асинхронный код это куча аллокаций и низкая производительность по определению, в .NET постоянная работа над оптимизацией дошла до того что async/await для высокопроизводительного кода может вообще быть alloc-free (ValueTask и собственные "IAwaitable"). Когда хочется поиграть в alloc-free код нет нужды одевать монокль и вглядываться в каждую строчку — к решарперу ставится плагин, который подчёркивает выделения памяти, и любые места которые могут нагрузить GC тупо не проходят код-ревью. Если хочется работы с железом (всё еще типизированной!) — System.Runtime.Intrinsics.X86 к твоим услугам, и хоть мультимедиа-кодек пиши. Хочешь поработать с памятью без GC — бери готовый аллокатор типа smmalloc, или делай свой. И т.д., и т.п. Другими словами писать производительный код в C# не просто можно, это делается с комфортом и быстро.
Здравствуйте, okon, Вы писали:
O>Здравствуйте, hi_octane, Вы писали:
__>>>друг мой чтобы вы знали — быстрее джава только С++. я не про микробенчмарки сейчас а про производительность _>>JVM хорош и отполирован, но время его исключительности всё-таки в прошлом.
O>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет.
На каких C# не может? Огласи O>Java поддерживает намного больше платформ чем C#.
O>C чем соглашусь что C# приятнее синтаксис, но когда у тебя задача написать кроссплатформенный UI, то приятным синтаксисом придется принебречь.
O>И спрашивается а зачем C# ?
Здравствуйте, okon, Вы писали:
O>Мне кажется наоборот, на Java можно написать приложение работающее на трех платформах, на C# нет. O>Java поддерживает намного больше платформ чем C#.
это вот всё тоже от области применения зависит.
например, в геймдеве C# вообще никаких шансов Java не оставляет.
у меня есть клиент с игрой на Java, они уже не первый год мечтают о том, чтобы на C# всё переделать.
просто, а в РФ, как известно любому неконченому, конченых хоть отбавляй.
__>>я жестко плюсанул того комрада спасибо за линк! так победим!
F>Парни, вы под веществами что ли?
нет. просто я на шарпе программирую, ну а дальше всё понятно..
Здравствуйте, Farsight, Вы писали:
F>Здравствуйте, varenikAA, Вы писали:
F>Совсем неудачный пример, чтобы показать, что C# это калькулятор с большими кнопками.
AA>>Согласен, java и clojure AA>>
AA>>(dotimes [n 10] (println n (square n)))
AA>>
В целом C# норм, конечно, но лет так 10 назад, сейчас из него пытаются выжать еще что-то.
F# конечно по прикольней смотрится, но у него та же проблема, что и у сишарпа — меньше чем в жаве библиотек.
Причем, все еще грустнее.
Например, провайдеры типов, круть конечно.
Но до сих пор не работает по кору. или работает но так намаешься с настройками (особенно под ГНУ Линукс), что больно становится.
Хотя сам язык гораздо более развит чем сишарп.
Здравствуйте, varenikAA, Вы писали:
AA>В целом C# норм, конечно, но лет так 10 назад, сейчас из него пытаются выжать еще что-то.
В него добавляют полезные фичи, что конкретно не устраивает?
AA>F# конечно по прикольней смотрится, но у него та же проблема, что и у сишарпа — меньше чем в жаве библиотек.
Это стандартная матра jvm-щиков. Чего-то конкретного не хватает?
AA>Причем, все еще грустнее. AA>Например, провайдеры типов, круть конечно. AA>Но до сих пор не работает по кору. или работает но так намаешься с настройками (особенно под ГНУ Линукс), что больно становится.
Не скажу, не сталкивался пока. Дата провайдеры вроде норм под .Net Standard 2.0.