Я думаю одна из проблема - это отсутствие гарантий что C# будет продолжать существовать под linux. Потому что как только MS взбредёт в голову (а скорее как только наберётся некоторое кол-во линуксового народу подвязанного на ДО-диез) то они просто запретят моно и перетащат всех на windows.
Очень хороший вариант - прямо-таки ловля на блесну - дурик её хап, а она тебя на берег^H^H в windows.
> Я думаю одна из проблема - это отсутствие гарантий что C# будет продолжать существовать под linux.
Слово думаю в этой фразе надо было взять в кавычки, поскольку одна из проблем это идиоты, считающие, что мокрософт способна что-либо сделать с языком, на который есть международный стандарт.
Это вам не жаба, здесь такие фокусы невозможны в принципе.
Кто-нибудь может разбяснить, в чём преимущества C# перед C/C++ ?
Зачем еще один велосипед? Какой смысл переходить на микрософтовское поделие, если есть много всего разного и вкусного?
> поскольку одна из проблем это идиоты, считающие, что мокрософт способна что-либо сделать с языком, на который есть международный стандарт. Это вам не жаба, здесь такие фокусы невозможны в принципе.
1. Поясни про международный стандарт? Это MicroSoft-овский что-ли?
До-диез - это детище микрософт, и с ним она может делать что угодно. C# 2.0 отличается от C# 1.1 - так же круто, как Java 1.4 от JAVA 5.0
2. А вот изменения, вносимые в Java наоборот тщательно взвешиваются, прежде чем пойти в релиз. Внесение изменений в язык осуществляется при помощи JSR, которые обсуждаются чуть ли не всенародно.
Не нужен Си-Шарп под линукс. И под вындовуз тоже не нужен. Visual Studio 6 с нестандартным Це++ и так хватало для мастдайских поделок.
"Джава с указателями" и лишними сущностями типа структур идет в БИОРЕАКТОР! Не знаю даже, нужно ли было в сам язычок делегаты на уровне синтаксиса включать.
сравнивать java и с# можно только теоретически, поскольку второй интегрирован и в среду линукс и в среду windows, а первый что там что, там накладным горбом (если не брать в расчет gcj, им мало что компиляется...).
>Кто-нибудь может разбяснить, в чём преимущества C# перед C/C++ ?
В том же, в чём и преидущества Java. Если уж C# и сравнивать, то с джавой.
>C# 2.0 отличается от C# 1.1 - так же круто, как Java 1.4 от JAVA 5.0
Гораздо круче. Дженекири человеческие, а не бантик для красоты, как в Java. Впрочем, обратная совместимость языка полная.
>"Джава с указателями" и лишними сущностями типа структур
Ты где в С# указатели увидел, чудо? Разберись сначала, чем ссылки от указателей отличаются.
> сравнивать java и с# можно только теоретически, поскольку второй интегрирован и в среду линукс и в среду windows, а первый что там что, там накладным горбом (если не брать в расчет gcj, им мало что компиляется...).
Э-э-э... объясни мне, как это C# встроен в Linux и в Windows? Вместе с Windows ставится .NET FRAMEWORK (по сути - тот же JVM). Если бы SUN JRE не был бы выкинут из Windows - ты бы тоже говорил о том, что java встроена в windows и linux?
А насчет встраивания в linux java - это пока нет open-source реализации JVM.
Хотя насколько я знаю ASF этим занимается - все спецификации открыты. Как только она появится - то и в linux будет встроен нормальный JVM, а не GCJ
1) Поставь JVM и попробуй запустить приложение простым щелчком по нему, как екзешник на C#
2) Виджеты в яве свои. Это убого и никак на интеграцию не тянет... SWT - костыль. Практически все явские приложения одинаково ужасны и инородны в любой среде
Насчет линукса - нет, значит нет. яве уже сколько лет по сравнению с c#, а открыт почему то моно...
В Java дженерики - не более чем косметический фантик. Только для автоприведения типа в коллекциях. Например, вот так:
public class MyClass<E>
{
private E m_E;
public MyClass()
{
m_E=new E();
}
}
> нет, поскольку это проприетарнарная игрушка сантехников:
Ну и дальше то что? Сан без JCP процесса нихрена не меняет а JCP процесс он единолично не контролирует.
ECMA-стандартизированный C# микрософт меняет единолично как хочет и когда хочет.
Так что стандартнее, нестандартизированная java которую меняют учасники рынка в коллегиальном режиме, или стандартизированный C# который меняет как хочет одна корпорация?
Ты разделяй c# и его реализацию в .net, которого хочет догнать mono, дурилка :-)
Будь c# сколь угодно каким международным стандартом, его реализация в .net запросто может не совпадать с твоей ссылкой. Ибо за .net стоит M$, которая вольна как угодно изменять твой продукт. А в пределах одной платформы(windows) всё будет работать нормально.
Насчет стандарта - вообще-то нет, но по первым двум пунктам Вы абсолютно правы! Медленно, но верно начинают надоедать заклинания "они ничего не сделают со стандартом"! Неужели человек на самом деле не въезжает, что именно и какой версии было стандартизировано? Согласитесь, это что-то уже из области религиозных чувств? :)
>Ну и дальше то что? Сан без JCP процесса нихрена не меняет
И кто ему запретит?
>ECMA-стандартизированный C# микрософт меняет единолично как хочет и когда хочет.
Бред сивой кобылы. ECMA-стандартизированный C# (спеки версии 1.2) микрософт НЕ меняет. MS разрабатывает ДРУГУЮ версию (на данный момент 2.х). Это совершенно нормальный процесс, называемый эволюцией. Точно также эволюционирует язык С или любой другой. Да и не только язык - посмотри например на Posix.
>С# - управляемый интерпретируемый язык а ля ruby/python/java
Не совсем так. С# - НЕ ИНТЕРПРЕТИРУЕМЫЙ. Вообще .нет не имеет виртуальной машины. Промежуточный код, который хочет выполнится (метод например) предварительно компилится jit-ом до машинного кода или аот-ом полностью все приложение до машинного кода. Часто запускаемые приложения можно за аот-ить в глобальный кэш.
>первый что там что, там накладным горбом (если не брать в расчет gcj, им мало что компиляется...).
Если принять во внимание распространенную практику custom ClassLoader-ов, модифицирующих байт-код, то о компиляции как и о шаринге кода между приложениями вообще говоря можно забыть. Не будет этого. Ибо ВООБЩЕ ГОВОРЯ при каждой новой загрузке одного и тогоже класса в жаба возникает (для тупых - может возникать) новый байт код.
>Это какая же коллегия придумала такие убогие дженерики?
Да! СтОит посмотреть на эти их коллегиальные обсуждения! Одни только вопли "что хотите делайте только JVM не меняйте!" дорогого стоят! Видимо очень большой кровью им этот JVM достался. Да и любой нормальный, кто видел этот код наверняка согласится, что это редкая помойка. А как дженерики нормальные зделать не меняя JVM?
>Возьми 10 приложений написанных на JDK1.5 и они будут работать на
Linux,Solaris,Windows,MacOS X, Free BSD
Я например написал достаточно. Не на С# конечно, а на славном старом С++. И чтобы вы думали, ни разу у нас небыло проблем с кроссплатформенностью, потому, что в 99.(9)% случаев она просто не нужна. Это в основном 2-х и 3-х (с CORBA) звенки в стандартном раскладе - апп-серевер и бд на соляре, морда на винде или апп-серевер на винде бд на соляре морда на винде или очень редко - все на винде. Ниразу небыло проблем перенести апп-сервер с винды на соляру или наоборот.
>Вопрос, а зачем тогда на linux нужен mono когда есть wine?
Вопрос - а почему это вас так задевает? Вы ведь за это не платите. Делают люди, которым это интересно и которые считают, что это полезно. Правы они или нет - рассудит будующее. Два-три года всего то подождать.
>Да! СтОит посмотреть на эти их коллегиальные обсуждения! Одни только вопли "что хотите делайте только JVM не меняйте!" дорогого стоят! Видимо очень большой кровью им этот JVM достался. Да и любой нормальный, кто видел этот код наверняка согласится, что это редкая помойка. А как дженерики нормальные зделать не меняя JVM?
Потому-что если ты изменишь JVM, то код, написанный для JDK 1.3 не будет работать в JDK 1.5. И потому-что нечего всякой ненужной чешуей язык замусоривать. Зачем мне что-то внесенное в язык, если я могу сделать то же самое при помощи внешней библиотеки?
На мой вопрос "А чем же плохи дженерики" меня грубо обозвали. Я не работал в Java с Generics, и просто спрашивал. Вопросы в этом форуме уже не приветствуются? Кстати, Анонимус, объясни пожалуйста, чем все же плохи дженерики, и где они используются?
re:Я например написал достаточно. Не на С# конечно, а на славном старом С++. И чтобы вы думали, ни разу у нас небыло проблем с кроссплатформенностью, потому, что в 99.(9)% случаев она просто не нужна.
Не было проблем потому, что не нужна - это решение. ;-)
Я говорил о классе приложений, в которых переносимость нужна или желательна.
Учитывая текущую ситуацию - это касается почти всех приложений, за исключением системных утилит.
re:Ниразу небыло проблем перенести апп-сервер с винды на соляру или наоборот.
Ссылку на AppServer дайтие пожалуйста.
Или хотя бы на одно написанное вами приложение, которое работает под Windows,Solaris.
>Потому-что если ты изменишь JVM, то код, написанный для JDK 1.3 не будет работать в JDK 1.5
У меня на машине установлено одновременно .NET 1.1 и .NET 2.0 оба вида приложений благополучно работают. Что мешает поступить с Java?
>На мой вопрос "А чем же плохи дженерики" меня грубо обозвали
Я уже приводил пример - на Java нельзя в дженерик классе создать объект того класса, который используется как параметр. Посмотри тред - там есть пример.
>Это какая же коллегия придумала такие убогие дженерики?
Положим не колегия, а какието австралицы, и придумали они их чтобы выкрутиться без замены байткода и vm. Cовсем другой вопрос стоило ли держаться за JVM, хотя аргументы понятны. Но генерики в java такие не потому что ничего лучше не смогли придумать, а потому что не хотели менять JVM. Хотя даже в этом контексте могли бы многие вещи сделать...
> В Java дженерики - не более чем косметический фантик. Только для автоприведения типа в коллекциях. Например, вот так: public class MyClass<E> { private E m_E; public MyClass() { m_E=new E(); } }
>на Java 5 сделать нельзя, а в С#2 можно.
Вот, нашел. А зачем так делать? Такие вещи должен делать паттерн Factory. Зачем вносить что-то подобное в язык?
А если E - это интерфейс? Как ты new для интерфейса вызывать будешь?
Что будет в C# если ты попытаешься сделать такое для класса, у которого нет пустого конструктора?