LINUX.ORG.RU

Шарп vs. Джава

 , ,


4

8

Товарищ Indaril_Shpritz предложил создать топик «Что лучше: C# или Java».
Товарищ считает, что C# «технически лучше». Я думаю, что он имеет ввиду всякие проперти и синтаксический сахар (типа foreach).
Я считаю, что Java лучше, ибо JVM есть для любой кофемолки, есть процессоры с аппаратной поддержкой байт-кода Java, Java можно даже скомпилировать в native code (правда, с трудом). А весь этот синтаксический сахар не нужен, ибо не Ъ, а дальнейшая судьба Mono очень неоднозначна.
Кто прав?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Я в том же треде указал как минимум одно выгодное отличие шарпа: в нём нет бардака с неопределёнными состояниями.

devsdc ★★
()

Что характерно, шарп действительно технически лучше. А жаба действительно есть в любой кофемолке(но почему то прижилась только на очень больших). О чем спор то?

RedPossum ★★★★★
()

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

slyjoeh ★★★
()

Давайте лучше сраться про дотнет вс. жвм. А то это два не лучших представителя соответствующих семейств, скажем прямо.

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

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

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

Синтаксического сахара у него действительно побольше будет

Там не только сахар. Те же делегаты, или отсутствие боксинга value types в generic'ах, или отсутствие стирания типов, изкоробочная работа с ast. Это я мимопроходил, а четкие шарпеи тебе ещё кучу всякого назовут.

RedPossum ★★★★★
()

Если ты считаешь, что ява лучше - для тебя ява лучше. Если он считает, что шарп лучше - для него шарп лучше.

Получив в этом топике кучу субъективных комментов ты явно не найдёшь истину, кхем.

Я предлагаю более фундаментальный вопрос: что лучше - разбивать яйца с тупого конца или с острого?

Lilly
()

Если уж и сравнивать с сишарпом, то сравнивать java EE. Отсюда вопросы, где ты ее (в смысле ЕЕ) видел на кофемолках и как оно себя ведет.
//Я кстати за C++ Java!

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

Там не только сахар. Те же делегаты, или отсутствие боксинга value types в generic'ах, или отсутствие стирания типов, изкоробочная работа с ast. Это я мимопроходил, а четкие шарпеи тебе ещё кучу всякого назовут.

Делегаты и ивенты - тот же синтаксический сахар. Преимущества С# я и так знаю, но практически все они не такие значительные, чтобы на них обращать внимание. К тому же, нормальные средства разработки для последних дотнетов есть только под Windows. Для меня это жирный-жирный недостаток, учитывая, что у меня нет лишнего компьютера, куда бы я воткнул виндовс.

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

Разумеется с тупого — там, в подавляющем большинстве случаев, оказывается воздушная камера, что упрощает как разбитие, так и дальнейшую очистку.

Stahl ★★☆
()

PHP всяко превосходит обоих

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

Я предлагаю более фундаментальный вопрос: что лучше - разбивать яйца с тупого конца или с острого?

Вареное яйцо? Лучше с того конца, где находится под скорлупой пузырек воздуха, а он как правило в районе тупого конца.

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

Как правило, это все используется вкупе c параметрическим полиморфизмом, и, как правило, редко когда у конструктор объекта вызывается без аргументов. Поэтому без затирания дженериков, думаю, было бы что-то вроде объемного условного блока с ручной диспетчеризацией по аргументам. Но может, и не так. По крайней мере, почти везде, куда классы передаются, так обычно и бывает.

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

«ему было под тридцать, но был он до сих пор одинок, чем и объяснялось периодическое желание подвигать биты ручками»

anonymous
()

Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders.

Что значит «лучше»? Если единственным критерием является мультиплатформенность, то лучше вообще Fantom.

jerk-of-all-trades
()

и то и другое не нужно, но если бы я выбирал из этих двух, то наверно выбрал бы жабу.

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

Только аноним может в теме про жабу опошлить битовую арифметику:)

Stahl ★★☆
()
Ответ на: комментарий от jerk-of-all-trades

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

anonymous
()
Ответ на: комментарий от jerk-of-all-trades

Если единственным критерием является мультиплатформенность,

Кому и зачем сегодня может понадобиться «джава без переносимости», пусть и технически более совершенная? Если язык не работает ни под одной из более-менее современных платформ ни в AIX, ни в IOS, ни в HP-UX, ни в Android, ни в Solaris, ни даже в Linux несмотря на попытки портирования каких-то кусков - кому он вообще нужен этот язык? Как его вообще можно сравнивать с кросс-платформенной Java-ой, которая практически и по праву является сегодня промышленным стандартом?

то лучше вообще Fantom.

Хм, интересно. Они не планируют сделать его конпелируемым в бОльший набор языков (PL/SQL например)? Для описания логики приложения хороший был бы промежуточный язык.

anonymous
()

JVM - убогое, ограниченное говно. Нет явного управления стеком, нет unsafe операций, нет generics, нет хвостовых вызовов, есть жесткие ограничения на размер метода. Параша, короче. .Net в разы лучше.

anonymous
()

JVM есть для любой кофемолки, есть процессоры с аппаратной поддержкой байт-кода Java

А что толку-то? Как будто ты и вправду думаешь, что один и тот же java код может работать на разных jvm.

rupert ★★★★★
()

http://соснули.рф

Но как по мне, анальная зависимость от майкрософта куда хуже.

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

Отсутствие стирания в дженериках - не всегда преимущество. Вон Скалу из-за этого не удалось сделать под .NET.

stevejobs ★★★★☆
()

Шарп лучше, ибо встречается реже. Жабу сложнее развидеть.

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

«проблемы с генериками нативными» были в том, что они без стирания типов, поэтому скалу на этом сделать нельзя.

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

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

RedPossum ★★★★★
()

Как мне кажется, .net лучше джавы только в одном - слышал я, что он умеет сохранять как-то профили jit-компилятора и сверхтолстые энтерпрайзные приложения разгоняются до рабочего состояния десять минут и сами, а не час и с использованием разгонялки.
Сравнивать это можно, разве что, с джавой от azul и их ahead-of-time конпелятором.

GblGbl ★★★★★
()

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

ya-betmen ★★★★★
()
Ответ на: комментарий от RedPossum

Вроде бы они сделали только прототип, но не допилили его. Первая причина в том, что аффтары не уверены, что Microsoft не выбросит .NET через 10 лет. (аффтары хотят делать только на том, что будет веками высечено в граните). Вторая причина, что они не асилили генерить правильные generics для C#/CLR > 2.0, н-р им пришлось реализовывать type erasure поверх дотнета и получилось говно. Нагуглить форумы не смог, только вот эту презенташку: http://lampwww.epfl.ch/~magarcia/ScalaNET/slides/TourCLRGenerics.pdf Но в общем ясно, что работа с нативными дженериками стала одним из важных надгробных камней для scala.net

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

C hackernews: For more context on why F# does in fact run into problems, see https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/22... To my understanding, F# only allows type variables to vary, not type constructors (all generic variables must be escorted by a concrete type), and to go a step further, it doesn't allow type constructors to be used as higher-kinded type variables, which is useful sometimes. I see no reason why these couldn't be implemented on top of the JVM, though.

stevejobs ★★★★☆
()

Ты сравниваешь тёплое с мягким.

Если сравнивать C# и Java, как языки, Java проиграет по количеству фич. И там есть в том числе важные фичи, которые помогают писать хороший и надёжный код.

Если сравнивать .NET и JVM, как виртуальные машины, то .NET продуманней сделана, но JVM более кроссплатформенна. Т.е. если мы работаем в Windows, все серверы у нас на Windows и переходить ни на что другое никто даже не думаект в ближейшие 50 лет, то .NET будет лучше. Если не Windows, ну значит Java.

Если сравнивать стандартные библиотеки, тут я ничего не могу сказать. Мне Java не нравится, там много всякого маразма и устаревшей гадости, но .NET я плохо знаю.

Если сравнивать экосистему, Java тут на коне. Очень много разных IDE, много разных вспомогательных инструментов. Библиотек - тьма, для некоторых это даже становится проблемой, сложно выбрать. 99.9% библиотек - open source. Когда я сталкивался с .NET, там всё было печально и неудобно.

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

сказки пошли

Нет явного управления стеком,

зато есть тайпсэйф гарантии

нет unsafe операций

sun.misc.unsafe

нет generics

это в джаве 1.4 (счас 1.8)

нет хвостовых вызовов

рекурсии компилируются в циклы в джвм, но ты наверное не знал

есть жесткие ограничения на размер метода.

а ну я не знал что ты быдлокодер и у тебя методы весят 20мб

----------------------

самые плохие места джавы - void, null, synchronized, volatile в общемто, 1е не обойдёшь никак, остальные уже обойдены в 1.5-1.8, если сравнивать с шарпом, то там тоже самое в общем случае, но шарп проигрывает по мощности платформы, джава нет.

anonymous
()

Все зависит от того, с какой целью ты пишешь.

//тред

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

В .net можно прозрачно использовать любые библиотеки от Java. А вот в обратную сторону это невозможно.

anonymous
()

Холивар Java vs C# сводится к холивару Open Source vs Proprietary. И на надо тут про моно, моно - говно. /thread.

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

с 7й версии тоже можно потюнить jvm. Почитай про профили и параметры типа -XX:+TieredCompilation

ii8_ ★★★★
()

уж на что жаба не нужна, но c# не нужен в 100 раз больше

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