Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
Кто что думает?
Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
09.10.12 23:04: Перенесено модератором из '.NET' — WolfHound
Здравствуйте, Osaka, Вы писали:
А>>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе. O>Это "догнать прошлую версию". А насчёт "перегнать" — это надо уже с рослином сравнивать. O>Кстати, с пропертями есть подвижки? А>>Осталось только что-то типа линка добавить O>И ещё как минимум linq-провайдер для mssql. O>И что совершенно точно ниасилят — починить сгаживание шрифтов в JavaFX.
И все это уйня. Nemerle заруливает и жабу и сидиез вусмерть.
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, Steamus, Вы писали:
S>>Ну-да нуда... Объявили фичу и тут же внедрили. Проснулись утром, а всё на планете рухнуло.
K>Как бы жабникам этого не хотелось, но такого с дотнтом не было _ни разу_
Ну разумеется, не было. Что может рухнуть от изменений в малораспространённом в серъёзной среде инструменте?
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. А>Кто что думает? А>Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
Вброс негодный, и опоздавший — дотнет уже давно стал лидирующей платформой, и у вас, как у жабника, данный факт вызывает попоболь, отсюда и топики аналогичные этому
Б>Только почему-то джава используется в low latency системах(финансы, к примеру)
low latency такой разный бывает, что лучше не поминать его всуе. Мы писали замену одной C++ системы на альфе-бете Nemerle (.NET). Полная иммутабельность входных данных, предварительное выделение памяти для выходных, и получаешь предсказуемо большую скорость на критических участках. И знаем что есть полный аналог от других людей на Haskel+C. Абсолютно тоже самое и в Java. Вот разбери к примеру disruptor — тоже один из компонентов финансовой системы. Там все те же ухищрения, от которых любой язык в C превращается. Деления сдвигом, память всю сразу выделяют, обрабатывают строго по месту, без копирований. При таком терминальном использовании язык совершенно вторичен.
Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.
Там просто тех директор сменился, и как раз удачно пришла пора заменить серваки. Как думаешь сколько можно попилить освоить на тупой модернизации, и сколько на переезде на новую платформу? Поиском посмотри, здесь уже раз 10 этот эпический переход обсуждали.
Здравствуйте, b-3, Вы писали:
b-3>Ну, а из-за чего, собственно, должны были быть эти ограничения? Экономия размера кода? Проблемы с системой типов и недостаточностью полиморфизма? Честно говоря, я не могу придумать убедительного объяснения. Вот, плюсовые шаблоны какими убогими были в 90 году, и какие стали к выходу стандарта. Это поломало совместимость плюсового кода? Да скорее нет, а ведь это далеко не явка в виртуальной машине. Почему теперь вся платформа должна страдать из-за этого "былого решения" — или почему это решение не предусматривало возможности "сделать потом нормально" — чистой воды загадка.
Ребята решили не оставлять информацию о типе в байткоде. Любая параметризация с сохранением информации о типе предполагает создание в байткоде экзепляра параметризованного класса уже с конкретным типом данных, которым он был реально параметризован, скажем, в объявлении. Это и ресурс и, возможно, совместимость байткода. Параметризация порождает много сложных и путанных вещей. Несогласные, могут попытаться проработать учебник Джосаттиса по шаблонам C++ (сам недавно обозрел его, в память о своём давнем C++ прошлом — тяжело было. Реальный проект, написанный с использованием этих подходов во всей красе, способна сопровождать только крайне сработанная и технически сильная команда).
Парни приняли решение, что дженерики будут работать только на этапе компиляции (примерно как в раннем MS C++, где они были на define построены, если правильно помню). Отсюда и некоторые логические ограничения и противоречия. Решение было не самое плохое, ибо мир Джосатисса общая масса программистов не потянула бы. Но, видимо, сработал понтовый инстинкт "хочу казаться умным". И подход был признан в итоге неудачным. Оно и сейчас все топырят пальцы и говорят что Скала наша всё, но реальных коммерческих проектов там не много. Есть всё таки разница между ночными упражнениями на сложных языках и коммерчески работающим проектом, где за ошибки и сбои реально финансово бьют по пальцам. И бьют больно. И вот там как-то оно всё сразу упрощается... Джава не зря стала самым популярным языком.
Здравствуйте, Steamus, Вы писали:
S>Парни приняли решение, что дженерики будут работать только на этапе компиляции (примерно как в раннем MS C++, где они были на define построены, если правильно помню).
Нет, реально оказалось, что они не сделали ни того, ни другого. Я бы понял, если бы они сделали дженерики полностью компайл-тайм, как шаблоны в С++, со всеми их возможностями, но в итоге вышло что-то вообще непонятное.
Кроме того, перед ними был пример успешной реализации рантайм-дженериков в дотнете — почему они не сделали это так, как там?
Здравствуйте, hi_octane, Вы писали:
_>Ну если конструктивно обсуждать в предложенном стиле, то я обязан ответить — "а в следующей яве досыпят ещё ключей для gc а все фичи перенесут на более следующую ".
Да ладно тебе — я вот уже десяток лет на дотнете пишу, и всё это время жабники грозятся, что МС на нас на всех забьёт и ты ды, и ты пы. Даже здесь они проявляют свой консерватизм — за 10 лет ни одного нового аргумента так и не придумали
А тем временем почему-то забыли, как в версии 1.4 жаба поломала обратную совместимость потому, что разработчики не асилили ввести контекстные ключевики, и как они изгалялись с ключами компилятора "компилить как в 1.3" vs "компилить как 1.4", в то время как новейший компилятор пятого сишарпа без проблем компилирует код, написанный 10 лет назад под первый сишарп, и этот код без проблем работает. Ну и кто после этого надёжней в плане обратной совместимости?
Здравствуйте, Бывалый, Вы писали:
Б>Здравствуйте, Sinix, Вы писали:
Б>А жабный у вас сколько выполняется? Ключи сервер ставили? Прогревали жвм? Это же всем давно известные факты.
Хе... проигрывать надо достойно. А не так уныло сливать.
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
точно! выходит джава, и шарп сразу теряет все свои преимущества, и скатывается до 1.0.
компайлер отказывается компилировать, ведь вышла джава 8. А>Кто что думает?
ящитаю, что вброс так себе. А>Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
бедный, уже 10 лет не может выстрелить.
у меня винда стоит уже года два, а джава так и не установлена. понимаешь, я попсу не хаваю. все ставят джаву сразу после установки винды, а я из принципа не ставлю.
Здравствуйте, ins-omnia, Вы писали:
IO>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.
.NET/struct
1352 : 12522034.8692291
.NET/class
4521 : 12522034.8692291
Java
41119 : 1.2522034869229091E7
Java
public class V3 {
public float X;
public float Y;
public float Z;
public V3(float x, float y, float z) {
X = x; Y = y; Z = z;
}
}
public class Test {
public static void main(String[] args) {
Random rand = new Random(0);
long s = System.nanoTime();
V3[] mesh = new V3[1 << 24];
for (int i = 0; i != mesh.length; ++i)
mesh[i] = MakeRandVector(rand);
V3 dir = MakeRandVector(rand);
double sum = 0.0;
for (int i = 0; i != mesh.length; ++i)
sum += mesh[i].X * dir.X + mesh[i].Y * dir.Y + mesh[i].Z * dir.Z;
long f = System.nanoTime();
long milliseconds = (f - s) / 1000000;
System.out.println(milliseconds + " : " + sum);
}
private static V3 MakeRandVector(Random rand) {
return new V3(rand.nextFloat(), rand.nextFloat(), rand.nextFloat());
}
}
.NET
[ Record ]
public struct V3
{
public X : float;
public Y : float;
public Z : float;
}
def rand = JavaRandom(0);
def MakeRandVector()
{
V3(rand.NextFloat(), rand.NextFloat(), rand.NextFloat())
}
def stopwatch = Stopwatch.StartNew();
def mesh = array(1 << 24);
for (mutable i = 0; i != mesh.Length; ++i)
mesh[i] = MakeRandVector();
def dir = MakeRandVector();
mutable sum = 0.0;
for (mutable i = 0; i != mesh.Length; ++i)
sum += mesh[i].X * dir.X + mesh[i].Y * dir.Y + mesh[i].Z * dir.Z;
stopwatch.Stop();
Console.WriteLine("{0} : {1}", stopwatch.ElapsedMilliseconds, sum);
S>Я не сталкивался с необходимостью возвращать что-то кроме Task, из async-метода, так что пока не вижу в этом проблемы. Можно сценарий, когда такой хардкод реально усложняет жизнь?
Есть клиентский код. Ему про существование каких-то ресурсов, шедулеров и прочих и знать-то не положено, всё равно забудут. async/await так и просится. Но async создаёт задачу и сразу делает ей start, никого не спросив. Ресурса нет, всё валится. Решение в лоб — заворачивать в свой await ресурса, а потом вызов клиентского метода обламывается из-за того что мы не знаем запустит клиент задачу для которой нужен ресурс, или запустит другую которой не нужен, а может вообще ничего не запустит.
Или вот захотелось дерево запущенных задач прямо в программе видеть. Казалось бы пишешь свой шедулер, держишь свой список задач, рисуешь асинхронно, какие проблемы. А вот надо ещё имена задач, имена методов внутри задач, и кой-какую статистику по времени работы собрать. Облом — все порождают только Task из AsyncTaskMethodBuilder, инфы 0, даже поля Tag не сделали. Дали бы возможность хотя-бы порождать MyTask, я бы нашёл через что выкрутиться, а так пичалька
Несерьезно. Если JavaFX полагается на некую "систему масштабирования" у Осаки, а не растрирует текст самостоятельно, это проблемы JavaFX, а не ее юзеров. Ненавижу MS образца 2012 года и один из немногих факторов, что меня удерживает на их платформах, это сами ихние шрифты (Tahoma, например, шедевр) и способ их отображения — как со сгаживанием (ихнее сгаживание, ClearType, наименее гадкое из всех, не считая Appl'овское на Retin'е), так и без.
Re[2]: C#5 и Java 8
От:
Аноним
Дата:
09.10.12 17:31
Оценка:
Здравствуйте, Osaka, Вы писали:
O>Можно поимённый список преимуществ?
Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе.
Осталось только что-то типа линка добавить и все — жаба торт.
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Я не раз смотрел шрифты под "лупой". Ничего подобного вашим снимкам там нет. У вас некая проблема с MSзависимостью или системой масштабирования. Желающие, смогут глянуть сами.
Здравствуйте, Sinix, Вы писали:
S>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
Здравствуйте, Sharov, Вы писали:
S>Студия чем не идея, или студия с решарпером.
У студии от дотнета только морда. А идея вся на жабе.
S>Какое отношение хадуп,касандра и проч. имеют S>к сравнению языков и платформ. Это говорит о том, что на яве разработчиков больше, плюс давняя нелюбовь OSS S>сообщества к ms. Так сложилось...
Потому что тут все пишут про сахар, а я написал, что важнее не сладкий синтаксис, а технологии, разрабатываемые на языке, а тут дотнет явно не фаворит.
Здравствуйте, ins-omnia, Вы писали:
IO>1. Это таки микробенчмарк. О производительности в реальных задачах по нему нельзя однозначно судить. IO>2. Непонятно почему Java настолько медленее в этом примере. IO>3. В реальной задаче подобного рода массив классов всё равно не будут использовать. IO>4. Правильным подбором примера можно показать, что Хаскел быстрее C.
IO>В целом Java вероятно хуже в таких низкоуровневых задачах, чем .NET. IO>Однако в каком-нибудь статистическом рассчете разница будет уже не заметна, я думаю.
Целью эксперимента было показать не какой язык быстрее, а пользу от value типов. Лучше всего она видна на примере .NET с использованием struct (value type) и class (reference type) для V3.
Во всех трёх случаях почти всё время уходит на инициализацию массива. Почему-то в Яве это занимает 15-40 секунд, с таким вот разбросом. Запускаю из Эклипса.
Работа с массивами векторов реально встречается на практике и .NET для неё подходит лучше. Всё ещё сильно уступает плюсам, конечно, но мне часто хватает.
Здравствуйте, dimaka, Вы писали:
D>Я думаю — им обоим кранты — победит язык АДА!
В одной известной статье язык Ада и в самом деле хвалили:
...К счастью, язык одобряемый Министерством Обороны, обладает достаточно интересными свойствами, которые делают его приемлемым — он невероятно сложен, включает в себя способы порчи операционной системы и перераспределения памяти...
предварительно поругав:
Кажется, что кто-то из высокопоставленных сосунков в Министерстве Обороны решил, что все оборонные программы должны быть написаны на некоем великом унифицированном языке ADA. Некоторое время казалось, что ADA была предназначена стать языком, который шел вразрез со всеми правилами настоящего программирования. Это язык со структурой, типами данных, строгим синтаксисом и точками с запятой. Короче, он был разработан для сдерживания творчества типичного настоящего программиста.
Заметим, что в Фортране операторы begin/end и { } отсутствуют. Точнее, end все-таки присутствует, это просто последний оператор в программе, и он ничего общего с begin/end в Паскале не имеет. Соответственно, вместо срачей споров "фигурные скобки vs begin/end" разработчики могут просто заниматься делом.
Здравствуйте, Steamus, Вы писали:
S>Я извиняюсь, но задам вопрос — а вы лично задумывались из-за чего Джава дженерики, как-бы, плохи? В чём кардинальное отличие от других дженериков? И почему был сделан такой баланс?
А это совершенно пофиг, что за тараканы были в голове у проектантов. Главное — результат совсем негодный.
S>Парни приняли решение, что дженерики будут работать только на этапе компиляции (примерно как в раннем MS C++, где они были на define построены, если правильно помню). Отсюда и некоторые логические ограничения и противоречия. Решение было не самое плохое, ибо мир Джосатисса общая масса программистов не потянула бы.
Вопрос стоит как "почему в яве не сделали генерики наподобие дотнета?", про шаблоны c++ речь не идёт. Общая масса программистов на c# спокойно тянет генерики, так что довод слегка не в тему
Итого, имеем разницу в скорости на порядок, просто играя ключами компиляции. И это я ещё не затрагивал тонкий тюнинг GC и HotSpot'а.
В реальных серверных приложениях Java работает сейчас быстрее, чем .NET — сказывается то, что в Sun работали на JVM намного дольше и имеют заметно больше опыта. В .NET реально выигрыш в скорости за счёт честных generic'ов не такой большой, если не рассматривать вырожденные случаи типа контейнера простых структур или примитивов.
Здравствуйте, hi_octane, Вы писали:
_>Если считать что CTP фич поштучно выкладывают на labs где-то за полгода до альф/бет, а потом ещё альфы/беты/rc полгода тянутся — как раз примерно год и выходит.
"Год" (один) и "годы" — это совсем разные вещи. По мне так подход МСа куда прагматичнее — придумали фичу, сваяли к ней демку ака CTP, и всё это отдали комьюнити на растерзание — а потом уже по итогам фидбека фичу либо допиливают до продакшена, либо выпиливают обратно... А в мире жабы сначала года 2 тока пишут спеку на фичу, потом ещё года 2 её имплементируют только затем, чтобы выяснить, что результат "не нужен™"
Здравствуйте, hi_octane, Вы писали:
_>Не ну я согласен. По затягиванию из действующих игроков, Java на гордом втором месте после C++ Что кстати приводит к тому что MS тоже расслабилось и начинает педалить фичи. В прошлые годы что не релиз .NET, то wow-эффект от того сколько всего нового. А .NET 4.5 в плане новинок наверное самый слабый из всех.
Потому что скоро мелкософт сольёт дотнет, как и все свои "прогрессивные" технологии. В следующем шарпе вообще только рослин намечается, если верить вики.
Вы бы уже определились — или "всё на планете рухнуло", или "малораспространённый в серъёзной среде инструмент"? Одновременно не бывает. Ох, уж эти жабники
_>>А .NET 4.5 в плане новинок наверное самый слабый из всех. S>Мне это очень напоминает холивары пятилетней давности: "В третьем шарпе только linq и какие-то малопонятные лямбды. Кто их будет использовать?!!"
Ну linq как раз понятный и чуть более продуманный чем async/await получился. linq можно натянуть на всё что угодно, из-за чего выросли linq to sql, linq to entities, linq to xml/dom, linq to regular expressions и ещё Rx немножко. А с async/await всё хуже. Хоть await и можно на всё что реализует IAwaitable, но роспись в конечный автомат делает жёсткий хардкод на System.Threading.Tasks, и никаких средств для исправления ситуации нету
Здравствуйте, Sinix, Вы писали:
S>Я не сталкивался с необходимостью возвращать что-то кроме Task, из async-метода, так что пока не вижу в этом проблемы. Можно сценарий, когда такой хардкод реально усложняет жизнь?
Какой нафиг сценарий? Ты форумом не ошибся? Здесь люди за идею воюют!
Здравствуйте, hi_octane, Вы писали:
_>А с async/await всё хуже. Хоть await и можно на всё что реализует IAwaitable, но роспись в конечный автомат делает жёсткий хардкод на System.Threading.Tasks, и никаких средств для исправления ситуации нету
Точно так же линк делает "жесткий хардкод" на Expression.Create. Только это нифига не проблема — и Expression, и Task — штуки весьма абстрактные и реализации почти не содержащие. Как их интерпретировать — дело конкретного провайдера.
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
Можно поимённый список преимуществ?
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. А>Кто что думает? А>Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
И когда java 8 грядет, если грядет?
При всем уважении к жабе, но 8, видимо, будет на уровне 3 шарпа.
Кодом людям нужно помогать!
Re[2]: C#5 и Java 8
От:
Аноним
Дата:
09.10.12 17:37
Оценка:
Здравствуйте, Sharov, Вы писали:
S>И когда java 8 грядет, если грядет?
Середина — конец 2013.
S>При всем уважении к жабе, но 8, видимо, будет на уровне 3 шарпа.
Возможно. Но зачем теперь использовать платформозависимый шарп? Моно умерло уже, не обновляется даже.
А>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе.
Это "догнать прошлую версию". А насчёт "перегнать" — это надо уже с рослином сравнивать.
Кстати, с пропертями есть подвижки? А>Осталось только что-то типа линка добавить
И ещё как минимум linq-провайдер для mssql.
И что совершенно точно ниасилят — починить сгаживание шрифтов в JavaFX.
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, Аноним, Вы писали:
А>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе. А>Осталось только что-то типа линка добавить и все — жаба торт.
Здравствуйте, Аноним, Вы писали:
O>>Можно поимённый список преимуществ?
А>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе.
Да, только кривое какое-то. А>Осталось только что-то типа линка добавить и все — жаба торт.
Тортом сама жаба не будет уже никогда. Но этого и не нужно.
На жаба-платформе есть нормальные языки на любой вкус.
Появление 8-й версии на это не повлияет никак.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, Don Reba, Вы писали:
DR>Value types?
Зачем?
Кодом людям нужно помогать!
Re[2]: C#5 и Java 8
От:
Аноним
Дата:
09.10.12 17:58
Оценка:
Здравствуйте, QrystaL, Вы писали:
QL>Что ж вам так дотнет покоя-то не дает? QL>Боитесь?
Нет. Чего бояться?
нет за 10 лет существования так и не смог перегнать жабу.
Заходим на кранч — там жаба более обсуждаемая, чем дотнет
Заходим на стэковерфлоу фоловеров больше у жаба, но шарп более обсуждаемый
на реддите жаба снова более популярная
на дайсе, сике, индиде, хх.ру вакух больше по жабе
так чего бояться то?
Re[4]: C#5 и Java 8
От:
Аноним
Дата:
09.10.12 18:09
Оценка:
Здравствуйте, BrainSlug, Вы писали:
BS>ну типа да, где-то фоловеров больше, а где на коболе до сих пор кодят, ну и что? или где-то премии дают за популярность языка?
Зачем выдирать одну фразу?
Я также написал про сайт с работой
Это прямой показатель популярности языка/технологии
Вот раньше писали, что жаба вс с++, но ведь жабка то популярнее и распространенней плюсов, не так ли?
Здравствуйте, Osaka, Вы писали:
O>И что совершенно точно ниасилят — починить сгаживание шрифтов в JavaFX.
Вроде красивые шрифты там. Были нюансы, но ещё в 2.2 бета были поправлены. Где-то в январе. Хотя может вы что-то особенное видите.
S>Хотя может вы что-то особенное видите.
Там можно сделать пиксел-в-пиксел, абсолютно без размыливания? В WPF это в 4.0 сделали.
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Re[6]: C#5 и Java 8
От:
Аноним
Дата:
09.10.12 19:01
Оценка:
Здравствуйте, Osaka, Вы писали:
O>Там можно сделать пиксел-в-пиксел, абсолютно без размыливания? В WPF это в 4.0 сделали.
Так впф же в восьмерке нет? Или я что-то путаю? Там же замл + шарп/с++ либо хтмл + жс?
Здравствуйте, Osaka, Вы писали:
S>>Хотя может вы что-то особенное видите. O>Там можно сделать пиксел-в-пиксел, абсолютно без размыливания? В WPF это в 4.0 сделали.
Не очень понимаю, что такое пиксел-в-пиксел. Вывод шрифтов всегда была отдельная песня. Свои сглаживания/апроксимации/антиаллиасинги. Там ведь не пиксел в пиксел, там разбавление, что бы сделать контур текста гладким и приятным. Раньше было видно — замутняет. Нехорошо. Сейчас — чётко и красиво.
Легко же глянуть, запустив Ensemble. Там демо приложение с обзором визуальных возможностей платформы (лучше обновить Java предварительно, но он и сам разберётся).
Впрочем, возможно, если что-то как-то хитро потягать за что-то, и как-то извернуться... то... окажется что есть дефекты, которые абсолютно неприемлимы для серьёзных пользователей.
А>Так впф же в восьмерке нет? Или я что-то путаю?
Всё, что было, продолжает работать (и даже местами развиваться). А>Там же замл + шарп/с++ либо хтмл + жс?
Xaml с C++ и прочее метро — это другая партия захватила власть, и пропихивает какое-то своё представление, опоздавшее лет на 20 или больше (монохромные квадратно-гнездовые дизайны напоминают 80е годы и cga-мониторы).
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, koandrew, Вы писали:
K>Вброс негодный, и опоздавший — дотнет уже давно стал лидирующей платформой, и у вас, как у жабника, данный факт вызывает попоболь, отсюда и топики аналогичные этому
Здравствуйте, Бывалый, Вы писали:
Б>Здравствуйте, koandrew, Вы писали:
K>>Вброс негодный, и опоздавший — дотнет уже давно стал лидирующей платформой, и у вас, как у жабника, данный факт вызывает попоболь, отсюда и топики аналогичные этому
Б>Пруф или не было.
D>Я думаю — им обоим кранты — победит язык АДА!
не, begin end вместо { } — это сено-солома
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, Don Reba, Вы писали:
DR>>>Value types? S>>Зачем?
DR>Для того, чтобы иметь возможность обрабатывать большие объёмы данных без лишних расходов на указатели и дополнительный уровень косвенности.
Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, Don Reba, Вы писали:
DR>Для того, чтобы иметь возможность обрабатывать большие объёмы данных без лишних расходов на указатели и дополнительный уровень косвенности.
Спасибо, поржал.
Только почему-то джава используется в low latency системах(финансы, к примеру)
А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.
Пруфы ваши, пожалуйста, на сравнение производительности именно на эти накладные расходы.
Здравствуйте, Бывалый, Вы писали:
Б>Пруфы ваши, пожалуйста, на сравнение производительности именно на эти накладные расходы.
The equivalent program in F# is not only shorter but also 17× faster:
...
Specifically, Java takes 6.967s initially and 5.733s steady state whereas F# takes only 0.414s.
Здравствуйте, Бывалый, Вы писали:
Б>Не увидел по ссылке си шарпа.
Так мы обсуждаем проблемы, не языка, а рантайма. Что c#, что f# генерят примерно одинаковый il-код, используют одни и те же типы — с чего им отличаться?
Ок, если просите — вариант на c# у меня выдаёт примерно 0.20 сек (скорее всего, дело в разнице между процессорами). Код (копипаста варианта на яве, просто поменял типы):
public static void Main(String[] args)
{
int n = 10000000;
for (int j = 0; j < 10; ++j)
{
var sw = Stopwatch.StartNew();
var hashtable = new Dictionary<int, double>(n);
for (int i = 1; i <= n; ++i)
{
hashtable.Add(i, 1.0f / i);
}
Console.WriteLine("m[100] = " + hashtable[100]);
Console.WriteLine("Took: {0}", sw.Elapsed);
}
}
Здравствуйте, Бывалый, Вы писали:
Б>Здравствуйте, Sinix, Вы писали:
Б>А жабный у вас сколько выполняется? Ключи сервер ставили? Прогревали жвм? Это же всем давно известные факты.
Нет и не собираюсь
Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
Здравствуйте, Бывалый, Вы писали:
Б>А вспомним переход лондонской биржи с дотнета на джаву и увеличение производительности и поймем, что ваш опус — спуск газов в лужу.
Вот тут пруф тоже бы не помешал.
Насколько я помню там речь шла не о переходе с дотнета на джаву, а о переходе с Windows на что-то юниксовое.
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
Если ты про лямбды и прочее, то всем пофигу. У жабы совершенно с другой области преимущества, а всякий синтаксический сахар — это мелочи: есть — хорошо, нету — ну да и хрен с ним. Все равно ИДЕ все геренит автоматически. А те, кто очень уж хочет всяких наворотов, берет скалу, и пишет на ней, благо, она полностью совместима с джавой, и они вполне уживаются в одном проекте.
Кстати, вещи вроде экстеншн методов вообще выглядят как костыль.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
А>>Замыкания, лямбды, экстеншен методы. Теперь все это есть в жабе. IO>Да, только кривое какое-то. А>>Осталось только что-то типа линка добавить и все — жаба торт. IO>Тортом сама жаба не будет уже никогда. Но этого и не нужно.
На самом деле, простота языка — это тоже элемент "тортовости". Просто с другой стороны.
IO>На жаба-платформе есть нормальные языки на любой вкус. IO>Появление 8-й версии на это не повлияет никак.
Именно.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, QrystaL, Вы писали:
QL>Здравствуйте, Аноним, Вы писали: А>>так чего бояться то?
QL>Что однажды проснетесь QL>А вокруг мир иной...
QL>Ну вы поняли
Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, romangr, Вы писали:
S>>Тут не по колёсам стучать надо, а движок менять. Ну нет в яве value types, поэтому загнать в словарь тонну значений без лишних аллокаций не выйдет. Не, для примитивов можно сгенерить пачку словарей для самых частых случаев типа <int,double>, <double, long> etc. С кастомными типами данных (точки, время, векторы etc) что будете делать?
R>Справедливости ради надо отметить, например, наличие Escape-Analysis в JVM, чего в CLR нет пока.
В примере со словарем он не поможет. С другой стороны наличие value-типов делает его ненужным в некоторых случаях.
Впрочем это всё схоластика. Количественных данных о влиянии эскейп-анализа (и value-типов) на производительность нет.
Разве что в каких-то микробенчмарках.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, Eugeny__, Вы писали: E__>Ты так говоришь, как будто переехать с жабы на шарп(или наоборот) — это какой-то рокет сайнс. Особенно в пределах одной предметной области.
Я вообще-то другое имел в виду...
Если автора так беспокоит, кто на первом месте, значит есть сомнения в выбранном направлении. Иначе он не создавал бы провокационно-холиварные темы )
Здравствуйте, quwy, Вы писали:
А>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. Q>Enumerations сделали уже?
У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Здравствуйте, HTML5, Вы писали:
HTM>Здравствуйте, Steamus, Вы писали:
HTM>Несерьезно. Если JavaFX полагается на некую "систему масштабирования" у Осаки, а не растрирует текст самостоятельно, это проблемы JavaFX, а не ее юзеров.
Да причём тут JavaFX? Смешались в кучу кони/люди... Человек что бы сделать снимки экрана с демоприложения, чем-то увеличил изображение. Чем он это делал, я не знаю. Но там какая-то грязь возле символов везде. Точки какие-то сверху... Я же просто "лупой" смотрел на то как шрифт нарисован — так вот нет там никаких случайных точек вокруг. Всё аккуратно. Дефекты, если какие и есть, то они не такого грубого уровня.
Здравствуйте, xRAZORx, Вы писали:
А>>>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. Q>>Enumerations сделали уже? RAZ>У вас какие-то мелкие хотелки. МС настолько подсадил вас на сладкий синтаксис и вы думаете, что синтаксис — самое важное, а самое важное — технологии.
Ага, а еще паттерны наше все.
Отсутствие перечислений -- это не сладости, это убогость.
RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Кто все эти люди?
Здравствуйте, Don Reba, Вы писали:
IO>>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере.
DR>
.NET/struct
1352 : 12522034.8692291
.NET/class
4521 : 12522034.8692291
Java
41119 : 1.2522034869229091E7
DR>
1. Это таки микробенчмарк. О производительности в реальных задачах по нему нельзя однозначно судить.
2. Непонятно почему Java настолько медленее в этом примере.
3. В реальной задаче подобного рода массив классов всё равно не будут использовать.
4. Правильным подбором примера можно показать, что Хаскел быстрее C.
В целом Java вероятно хуже в таких низкоуровневых задачах, чем .NET.
Однако в каком-нибудь статистическом рассчете разница будет уже не заметна, я думаю.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, xRAZORx, Вы писали:
RAZ>Я могу точно также написать: где аналог хадупу, где аналог идее, касандре и т.д.(тысячи их).
Студия чем не идея, или студия с решарпером. Какое отношение хадуп,касандра и проч. имеют
к сравнению языков и платформ. Это говорит о том, что на яве разработчиков больше, плюс давняя нелюбовь OSS
сообщества к ms. Так сложилось...
Здравствуйте, Steamus, Вы писали:
HTM>>Несерьезно. Если JavaFX полагается на некую "систему масштабирования" у Осаки, а не растрирует текст самостоятельно, это проблемы JavaFX, а не ее юзеров.
S>Да причём тут JavaFX? Смешались в кучу кони/люди... Человек что бы сделать снимки экрана с демоприложения, чем-то увеличил изображение. Чем он это делал, я не знаю. Но там какая-то грязь возле символов везде. Точки какие-то сверху... Я же просто "лупой" смотрел на то как шрифт нарисован — так вот нет там никаких случайных точек вокруг. Всё аккуратно. Дефекты, если какие и есть, то они не такого грубого уровня.
Что касается увеличенного варианта, возьмите обычную виндовую лупу и увеличьте в 4 раза. Для тех, кому делать лень, я так понимаю, второй скриншот и предназначался.
Вывод: у вас и у него текст рендерится по-разному, но только если вам поверить на слово, ибо гражданин свой скриншот представил, а вы — нет. Я бы сам проверил, но поганить
Здравствуйте, HTML5, Вы писали:
HTM>Вывод: у вас и у него текст рендерится по-разному, но только если вам поверить на слово, ибо гражданин свой скриншот представил, а вы — нет. Я бы сам проверил, но поганить
...свой компьютер ради одного скриншота не хочу, извините.
Здравствуйте, HTML5, Вы писали:
HTM>...свой компьютер ради одного скриншота не хочу, извините.
Да это понятно. Настоящие Джедаи — гордые, они только хатэмээля не опасаются.
E__>>На самом деле, простота языка — это тоже элемент "тортовости". Просто с другой стороны.
НС>А с какой стороны будет угребище под названием дженерики?
Со стороны недостатков, конечно. Иногда на совместимость ради значимых нововведений можно было бы и забивать.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Eugeny__, Вы писали:
E__>>На самом деле, простота языка — это тоже элемент "тортовости". Просто с другой стороны.
НС>А с какой стороны будет угребище под названием дженерики?
Я извиняюсь, но задам вопрос — а вы лично задумывались из-за чего Джава дженерики, как-бы, плохи? В чём кардинальное отличие от других дженериков? И почему был сделан такой баланс?
Здравствуйте, Ночной Смотрящий, Вы писали:
НС>Здравствуйте, Steamus, Вы писали:
S>>Я извиняюсь, но задам вопрос — а вы лично задумывались из-за чего Джава дженерики, как-бы, плохи? В чём кардинальное отличие от других дженериков? И почему был сделан такой баланс?
НС>А это совершенно пофиг, что за тараканы были в голове у проектантов. Главное — результат совсем негодный.
То есть, я так понимаю, вы не в курсе что, как и почему? Это не тараканы, это перестраховка. В целом, по факту и по прошествии лет, надо признать, решение было не лучшим. Отрицательная волна от людей, полагающих что проектировщики не знали какими должны быть "правильные" дженерики, перекрыла выбранный компромисс. Другими словами, большой процент народа не въехал из-за чего были ограничения и "затопал" подход ногами не въезжая в суть.
Здравствуйте, Steamus, Вы писали:
S>То есть, я так понимаю, вы не в курсе что, как и почему? Это не тараканы, это перестраховка. В целом, по факту и по прошествии лет, надо признать, решение было не лучшим. Отрицательная волна от людей, полагающих что проектировщики не знали какими должны быть "правильные" дженерики, перекрыла выбранный компромисс. Другими словами, большой процент народа не въехал из-за чего были ограничения и "затопал" подход ногами не въезжая в суть.
Ну, а из-за чего, собственно, должны были быть эти ограничения? Экономия размера кода? Проблемы с системой типов и недостаточностью полиморфизма? Честно говоря, я не могу придумать убедительного объяснения. Вот, плюсовые шаблоны какими убогими были в 90 году, и какие стали к выходу стандарта. Это поломало совместимость плюсового кода? Да скорее нет, а ведь это далеко не явка в виртуальной машине. Почему теперь вся платформа должна страдать из-за этого "былого решения" — или почему это решение не предусматривало возможности "сделать потом нормально" — чистой воды загадка.
Здравствуйте, Don Reba, Вы писали:
IO>>Тут должна быть ссылка на сравнение производительности C# и Java для "обработки большех объёмов данных" на каком-нибудь иллюстративном примере. DR>
DR>
.NET/struct
1352 : 12522034.8692291
DR>
.NET/class
4521 : 12522034.8692291
DR>
Java
41119 : 1.2522034869229091E7
DR>
DR>
Java
Тест кривой чуть менее, чем полностью. Вот результат начального теста на моём ноуте:
~/some/test$ time java -cp . Test
9518 : 1.2522034869229091E7
Теперь делаем так — просто повторяем тест несколько раз:
public class Test {
public static void main(String[] args) {
test();
test();
test();
}
public static void test() {
Random rand = new Random(0);
long s = System.nanoTime();
V3[] mesh = new V3[1 << 24];
for (int i = 0; i != mesh.length; ++i)
mesh[i] = MakeRandVector(rand);
V3 dir = MakeRandVector(rand);
double sum = 0.0;
for (int i = 0; i != mesh.length; ++i)
sum += mesh[i].X * dir.X + mesh[i].Y * dir.Y + mesh[i].Z * dir.Z;
long f = System.nanoTime();
long milliseconds = (f - s) / 1000000;
System.out.println(milliseconds + " : " + sum);
}
private static V3 MakeRandVector(Random rand) {
return new V3(rand.nextFloat(), rand.nextFloat(), rand.nextFloat());
}
}
Здравствуйте, Steamus, Вы писали:
S>Здравствуйте, HTML5, Вы писали:
HTM>>...свой компьютер ради одного скриншота не хочу, извините. S>Да это понятно. Настоящие Джедаи — гордые, они только хатэмээля не опасаются.
S>Вот смотрите:
S>пример 1 S>пример 2
Во-первых, непонятно, паразитируют ли они на виндовом рендеряторе (we've added the ability to use Windows-style LCD sub-pixel rendering). Windows-style — это закос или делегирование? Controls will be LCD-text enabled by default on Windows — а на линухах? Так пишут, черти, что не понять ничего. Недаром говорят, что в Оракуле на одного программиста 10 юристов. Теперь, вопрос в том, какой фонт на обеих их картинках. Выглядит как Courier New, но тот же ли это Курьер, что в студии Осаки? От этого зависят дальнейшие выводы (чем это отличается от WPF).
Здравствуйте, noname_user, Вы писали:
_>В реальных серверных приложениях Java работает сейчас быстрее, чем .NET — сказывается то, что в Sun работали на JVM намного дольше и имеют заметно больше опыта. В .NET реально выигрыш в скорости за счёт честных generic'ов не такой большой, если не рассматривать вырожденные случаи типа контейнера простых структур или примитивов.
При чём тут вообще серверные приложения и Java vs .NET? Я не о том писал.
Здравствуйте, noname_user, Вы писали:
_>Итого, имеем разницу в скорости на порядок, просто играя ключами компиляции. И это я ещё не затрагивал тонкий тюнинг GC и HotSpot'а.
Вобщем с помощью "тонкого тюнинга" и прочих шаманств можно попытаться достичь результатов .net искаробки. Мило.
_>В реальных серверных приложениях
_>Итого, имеем разницу в скорости на порядок, просто играя ключами компиляции. И это я ещё не затрагивал тонкий тюнинг GC и HotSpot'а.
_>В реальных серверных приложениях Java работает сейчас быстрее, чем .NET — сказывается то, что в Sun работали на JVM намного дольше и имеют заметно больше опыта. В .NET реально выигрыш в скорости за счёт честных generic'ов не такой большой, если не рассматривать вырожденные случаи типа контейнера простых структур или примитивов.
Резюмируя.
1.Есть сценарии, которые в яве надо оптимизировать, чтобы догнать .Net . Вопрос — есть ли в .Net сценарии, которые выполняются медленнее явы?
2.Назовите примеры реальных серверных приложений. Из несерверных я, например, периодически работаю с эклипсом. Запускается он небыстро, скажем прямо, да и UI там, канеш, не оч.Но шо тока не сделаешь ради изучения Скалы .
3.То,что вы называете вырожденным случаем, в .Net в общем-то нормальная общепринятая практика. Это не хак, не трюк, это нормальный сценарий работы.
HTM>Теперь, вопрос в том, какой фонт на обеих их картинках.
В студии courier new 9, в javafx не знаю (не менял). HTM>От этого зависят дальнейшие выводы (чем это отличается от WPF).
В WPF сгаживание отключается совсем (абсолютно), если отключено в настройках ОС. Ни серых, ни сизых разводов вокруг букв нет. И где такое невозможно — это халтура, ибо в букве 'I' вертикальная линия в 1 пиксел должна быть линией в 1 пиксел (и ни пикселом больше), а не флагом гей-движения шириной в 5 пикселов, как здесь.
Данное сообщение является художественным произведением и освещает вымышленные события в вымышленном мире. Все совпадения с реальностью являются случайными. Не является инвестиционной рекомендацией.
Здравствуйте, Osaka, Вы писали:
HTM>>Теперь, вопрос в том, какой фонт на обеих их картинках. O>В студии courier new 9, в javafx не знаю (не менял). HTM>>От этого зависят дальнейшие выводы (чем это отличается от WPF). O>В WPF сгаживание отключается совсем (абсолютно), если отключено в настройках ОС. Ни серых, ни сизых разводов вокруг букв нет. И где такое невозможно — это халтура, ибо в букве 'I' вертикальная линия в 1 пиксел должна быть линией в 1 пиксел (и ни пикселом больше), а не флагом гей-движения шириной в 5 пикселов, как здесь.
Насколько знаю я, есть шрифты, "оптимизированные" под сгаживание. И пока вы не включите какой-нибудь ClearType, все будет размыто и размазано. Как вы там написали? "ибо в букве 'I' вертикальная линия в 1 пиксел"? В ней, в этой букве, сначала автор шрифта должен предусмотреть однопиксельность вертикальной линии.
"В WPF сгаживание отключается совсем (абсолютно)" — вот отключаете его совсем, и ставите Calibri, и наблюдаете размазню. Ставите Courier New, получаете то, что у вас на картинке.
То, что у вас Courier New, я и так догадался. Вопрос, какой фонт "на обеих их картинках". Если тот же самый, что у вас, значит, старые, неиспорченные, фонты он отображает не так, как WPF (и я считаю, что портит — хотя по нынешним временам кому-то, может, это понравится больше). Но я вполне допускаю, что там что-то свое. Своя реплика Курьера, но "оптимизированная". Пока мы не узнаем, выводы делать нельзя.
Здравствуйте, DarthSidius, Вы писали:
DS>Здравствуйте, Ops, Вы писали:
Ops>>Здравствуйте, DarthSidius, Вы писали:
DS>>>И все это уйня. Nemerle заруливает и жабу и сидиез вусмерть.
Ops>>ДО
DS>Щито?
Здравствуйте, koandrew, Вы писали:
K>Нет, реально оказалось, что они не сделали ни того, ни другого. Я бы понял, если бы они сделали дженерики полностью компайл-тайм, как шаблоны в С++, со всеми их возможностями, но в итоге вышло что-то вообще непонятное. K>Кроме того, перед ними был пример успешной реализации рантайм-дженериков в дотнете — почему они не сделали это так, как там?
Дженерики в джаве появились раньше, чем в дотнете.
Здравствуйте, koandrew, Вы писали:
K>Нет, реально оказалось, что они не сделали ни того, ни другого. Я бы понял, если бы они сделали дженерики полностью компайл-тайм, как шаблоны в С++, со всеми их возможностями, но в итоге вышло что-то вообще непонятное.
Во во. Шиза конкретная. Либо дженерики компилируемые, и тогда всем понятно откуда ограничения. Либо они в compile time специализируются и тогда за каких фигом там констрейнты — одному богу известно.
K>Кроме того, перед ними был пример успешной реализации рантайм-дженериков в дотнете — почему они не сделали это так, как там?
Здравствуйте, koandrew, Вы писали:
K>А, ну тогда ясно. Я просто как-то привык к подходу МСа, когда от объявления фичи до её появления в продакшене проходят месяцы, а не годы
В джаве всегда так. Вон project jigsaw еще с 2008 года планируется, а они его никак осилить не могут, опять перенесли. Теперь не раньше 2015 будет.
K>А, ну тогда ясно. Я просто как-то привык к подходу МСа, когда от объявления фичи до её появления в продакшене проходят месяцы, а не годы
Если считать что CTP фич поштучно выкладывают на labs где-то за полгода до альф/бет, а потом ещё альфы/беты/rc полгода тянутся — как раз примерно год и выходит.
Здравствуйте, koandrew, Вы писали:
K>Здравствуйте, Ночной Смотрящий, Вы писали:
НС>>Они их просто до релиза тянули много лет. Из одного гавна в другое переливали многократно.
K>А, ну тогда ясно. Я просто как-то привык к подходу МСа, когда от объявления фичи до её появления в продакшене проходят месяцы, а не годы
Ну-да нуда... Объявили фичу и тут же внедрили. Проснулись утром, а всё на планете рухнуло.
Здравствуйте, koandrew, Вы писали:
K>Вброс негодный, и опоздавший — дотнет уже давно стал лидирующей платформой, и у вас, как у жабника, данный факт вызывает попоболь, отсюда и топики аналогичные этому
...под виндой.
K>"Год" (один) и "годы" — это совсем разные вещи. По мне так подход МСа куда прагматичнее — придумали фичу, сваяли к ней демку ака CTP, и всё это отдали комьюнити на растерзание — а потом уже по итогам фидбека фичу либо допиливают до продакшена, либо выпиливают обратно... А в мире жабы сначала года 2 тока пишут спеку на фичу, потом ещё года 2 её имплементируют только затем, чтобы выяснить, что результат "не нужен™"
Не ну я согласен. По затягиванию из действующих игроков, Java на гордом втором месте после C++ Что кстати приводит к тому что MS тоже расслабилось и начинает педалить фичи. В прошлые годы что не релиз .NET, то wow-эффект от того сколько всего нового. А .NET 4.5 в плане новинок наверное самый слабый из всех.
RAZ>Потому что скоро мелкософт сольёт дотнет, как и все свои "прогрессивные" технологии. В следующем шарпе вообще только рослин намечается, если верить вики.
Ну если конструктивно обсуждать в предложенном стиле, то я обязан ответить — "а в следующей яве досыпят ещё ключей для gc а все фичи перенесут на более следующую ".
Рослин это вообще-то ещё и выход на, хоть и убогое, но метапрограммирование. Кроме того рослин это промежуточный релиз, который делают как раз для того чтобы следующие фичи быстрее выкатывать. Сейчас даже если компилятор что-то умеет, некоторые штуки не пускают в релиз потому что IDE не успевает их полноценно поддержать.
Здравствуйте, hi_octane, Вы писали:
_>Ну если конструктивно обсуждать в предложенном стиле, то я обязан ответить — "а в следующей яве досыпят ещё ключей для gc а все фичи перенесут на более следующую ".
Java всегда была консервативной и часто фичи откладывали и реализовывали только проверенные временем. Так что это в порядке вещей.
_>Рослин это вообще-то ещё и выход на, хоть и убогое, но метапрограммирование. Кроме того рослин это промежуточный релиз, который делают как раз для того чтобы следующие фичи быстрее выкатывать. Сейчас даже если компилятор что-то умеет, некоторые штуки не пускают в релиз потому что IDE не успевает их полноценно поддержать.
Рослин должен был быть в 5, но не "шмогла". Вообще в каком он состоянии находится?
RAZ>Java всегда была консервативной и часто фичи откладывали и реализовывали только проверенные временем. Так что это в порядке вещей.
А можно список фич, которые откладывали, проверяли временем, и таки выкатывали такие чтоб все аж WOW? А то ощущение такое что они их как студенты откладывают, до сессии. А когда наконец выкладывают, народ ругается
RAZ>Рослин должен был быть в 5, но не "шмогла". Вообще в каком он состоянии находится?
Здравствуйте, xRAZORx, Вы писали:
RAZ>Java всегда была консервативной и часто фичи откладывали и реализовывали только проверенные временем. Так что это в порядке вещей.
Ага, например какие? Кривые дженерики? Или может быть type inference, который вообще очевидно придумали под воздействием каких-то очень сильных веществ, ибо сделали все наоборот — не справа налево, как во всех языках, имеющих эту фичу, а слева направо Или, наконец, параллельные иерархии для элементарных типов, вместо того, чтобы сделать lifted операторы? На жабные замыкания вообще без слёз смотреть нельзя
Здравствуйте, xRAZORx, Вы писали:
RAZ>Рослин должен был быть в 5, но не "шмогла". Вообще в каком он состоянии находится?
Не, я понимаю что холивар, НЕНАВИСТЬ и всё такое, передёргивать зачем?
стек технологий, которые затрагивает roslyn. Там работы явно не на два года, поэтому выпустить его вместе с vs2012 невозможно в принципе, об этом говорилось начиная с самых первых презентаций.
RAZ>только рослин
Roslyn по сути — это унифицированное api для работы с AST почти на всех уровнях, начиная от редактора кода в IDE и заканчивая хостингом скриптов у себя в приложении. Code rewrite, AOP, рефакторинг, code analysis, script hosting — ещё примеры нужны?
Даже если будет "только" roslyn — нам и его за глаза хватит
Здравствуйте, koandrew, Вы писали:
K>как новейший компилятор пятого сишарпа без проблем компилирует код, написанный 10 лет назад под первый сишарп, и этот код без проблем работает.
Справедливости ради, всякая экзотика связанная с выведением типов/разрешением методов слегка гуляет от релиза к релизу. Вот например, breaking change в c#4
Здравствуйте, hi_octane, Вы писали:
_>Ну linq как раз понятный и чуть более продуманный чем async/await получился.
Ну да, чтобы получился linq, сначала нужны были генерик-версии IEnumerable<T> + синтаксический сахар для порождения новых IEnumerable<T> (yield return).
С await у нас есть сам интерфейс (Task<T>/ICriticalNotifyCompletion/INotifyCompletion), синтаксический сахар для порождения новых async-методов, а вот библиотеки/сахара для их компоновки уровня линка пока не просматривается (RX всё-таки работает с повторяющимися последовательностями).
_>l Хоть await и можно на всё что реализует IAwaitable, но роспись в конечный автомат делает жёсткий хардкод на System.Threading.Tasks, и никаких средств для исправления ситуации нету
Я не сталкивался с необходимостью возвращать что-то кроме Task, из async-метода, так что пока не вижу в этом проблемы. Можно сценарий, когда такой хардкод реально усложняет жизнь?
Да я же написал — всё Работать с ним тоже самое что сейчас работать с Expression Tree. Завязанность на C# и VB.NET захардкожена. Адская, просто несуразная, многословность даже для простых вещей. Как берёшь пример в руки — полно работы со строковыми именами, типа symbol.Name == что-то, и другими пакостями.
Да по сравнению с тем что было, точнее с тем что ничего не было, — Roslyn это сто процентов шаг вперёд, но такое впечатление что они прямо с нуля изобретают, будто до них и не было ничего. Слепили бы на скорую руку из динамика или expression tree некое подобие квазицитирования, и на порядок более мощная технология получилась бы.
Здравствуйте, Ночной Смотрящий, Вы писали:
K>>Нет, реально оказалось, что они не сделали ни того, ни другого. Я бы понял, если бы они сделали дженерики полностью компайл-тайм, как шаблоны в С++, со всеми их возможностями, но в итоге вышло что-то вообще непонятное.
НС>Во во. Шиза конкретная. Либо дженерики компилируемые, и тогда всем понятно откуда ограничения. Либо они в compile time специализируются
Они в компайл-тайм проверяются. Это всё-таки лучше, чем ничего.
Гораздо удобнее писать
MyStruct s = coll.get(i)
// чем
MyStruct s = (MyStruct)coll.get(i)
НС>и тогда за каких фигом там констрейнты — одному богу известно.
Испугались зайти в дебри видимо.
Откуда же его [независимый суд] взять, если в нем такие же как мы? (c) VladD2
Здравствуйте, ins-omnia, Вы писали:
IO>Они в компайл-тайм проверяются.
Это нафик не нужно. Констрейнты в CLR, к примеру, ввели не столько для проверки, сколько для возможности компиляции дженериков. В результате дженерик в CLR — first class citizen. А вот в джаве дженерики на правах бедных родственников.
, только вот до их обсуждения обычно дойти не успеваем
Думаешь кому-то это интересно? Воевать-то куда веселее Тем более с дремучими жабниками, которые про дотнет слышали тока на ЛОРе лет 10 назад, но при этом выставляют себя мегаэкспертами
У меня прошлый контракт был в конторе, где бэкэнд был на жабе, а фронтенд — на дотнете. Эх, слышал бы ты наши священные войны во время тимбилдинга Самые злобные местные тролли — просто дети малые по сравнению с тем, что было там
Здравствуйте, xRAZORx, Вы писали:
RAZ>Потому что тут все пишут про сахар, а я написал, что важнее не сладкий синтаксис, а технологии, разрабатываемые на языке, а тут дотнет явно не фаворит.
"технологии, разрабатываемые на языке" — made my day
Итак, хотели map-reduce на C#? Полчите — Dryad, RavenDB, может что еще, я не слежу.
Вообще, сравнивать языки по таким вещам — довольно глупая затея. В таких разработках как hadoop, проблема вовсе не в языке и не в реализации на том или ином языке(объем кода zookeeper вроде не превышает 10KLOC). Да и вообще, принципы, на которых построен hadoop, стали известны благодаря Лесли Лампорту(AFAIK, работавшему в microsoft research), больше двадцати лет назад и были использованы в огромном количестве проектов, на самых разных языках
Здравствуйте, Lazin, Вы писали:
L>Итак, хотели map-reduce на C#? Полчите — Dryad, RavenDB, может что еще, я не слежу.
И что, этим кто-то пользуется, кроме самих разработчиков и фанатов дотнета?
L>Вообще, сравнивать языки по таким вещам — довольно глупая затея. В таких разработках как hadoop, проблема вовсе не в языке и не в реализации на том или ином языке(объем кода zookeeper вроде не превышает 10KLOC). Да и вообще, принципы, на которых построен hadoop, стали известны благодаря Лесли Лампорту(AFAIK, работавшему в microsoft research), больше двадцати лет назад и были использованы в огромном количестве проектов, на самых разных языках
Проблема не в языке, но с жабой таких примеров тысячи, а у дотнета за 10 лет как-то тухло.
Разница в них в том, что на жабе много либ пишут и потом используют совместно с другими языками, а дотнет такая "вещь в себе".
На жабе пишутся и сервера и иде, а дотнет используется некоторой прослой для с++ кода, что сервера, что иде там все на плюсах, только иногда шарповый интерфейс. Так и на какой фиг нужен этот дотнет, если работодатели предпочитают жабу?
Здравствуйте, Аноним, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
В 8-ой яве наконец то добавили возможность указывать параметры по умолчанию? Помню после С++ & C# эта фича явы стала для меня откровением))) А>Кто что думает?
кто вообще не думает. А>Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
а моей бабушке казалось что телевизор — "ящик дьявола". Ничего, так, теперь нравиться смотреть "как люди живут".
K>У меня прошлый контракт был в конторе, где бэкэнд был на жабе, а фронтенд — на дотнете. Эх, слышал бы ты наши священные войны во время тимбилдинга Самые злобные местные тролли — просто дети малые по сравнению с тем, что было там
Старнно, у нас дотнетчики и жависты прекрасно уживаются.
ЗЫ больше всего ножи точат друг на друга — тестеры и админы. Но без крайностей.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, xRAZORx, Вы писали:
RAZ>Здравствуйте, Lazin, Вы писали:
L>>Итак, хотели map-reduce на C#? Полчите — Dryad, RavenDB, может что еще, я не слежу.
RAZ>И что, этим кто-то пользуется, кроме самих разработчиков и фанатов дотнета?
RavenDB вполне себе пользуются, про Dryad я уже давно ничего не слышал.
RAZ>Проблема не в языке, но с жабой таких примеров тысячи, а у дотнета за 10 лет как-то тухло. RAZ>Разница в них в том, что на жабе много либ пишут и потом используют совместно с другими языками, а дотнет такая "вещь в себе". RAZ>На жабе пишутся и сервера и иде, а дотнет используется некоторой прослой для с++ кода, что сервера, что иде там все на плюсах, только иногда шарповый интерфейс. Так и на какой фиг нужен этот дотнет, если работодатели предпочитают жабу?
Я бы не сказал что тухло. Если вначале либы для дотнета были просто портами java библиотек и фреймверков(вроде NHibernate и log4net), то теперь их вытесняют самобытные проекты, появившиеся под .NET и от которых не попахивает этой вашей джавой. Я бы не сказал, что .NET всегда используется как "прослой", просто такие проекты, как visual studio живут очень долго и содержат в себе массу унаследованного кода. Мало того, .NET часто используется в связке с плюсами потому, что это очень просто, это дает очевидные преимущества, например возможность использовать C++/CLI и с легкостью смешивать нативный и управляемый код. P/Invoke это тоже очень просто и удобно. Интегрировать управляемый код в существующий проект на плюсах — просто, поэтому много проектов, использующих такую связку.
Здравствуйте, koandrew, Вы писали:
K>А, ну тогда ясно. Я просто как-то привык к подходу МСа, когда от объявления фичи до её появления в продакшене проходят месяцы, а не годы
НС>Точно так же линк делает "жесткий хардкод" на Expression.Create. Только это нифига не проблема — и Expression, и Task — штуки весьма абстрактные и реализации почти не содержащие. Как их интерпретировать — дело конкретного провайдера.
Тоже косяк. Любая завязка на статику это косяк, уж создатели фреймворка должны бы это понимать. Но Task ещё злее — подхватывает "текущий" контекст старта и сразу запускается. Хоть бы аттрибут на метод дали повесить что стартовать не надо, ёлы-палы. Чёт в случае с Expression им ума хватило не запускать его сразу после создания в провайдере с дефолтовой ConnectionString, например. И через Expression всякими хитростями можно дополнительную информацию просунуть, а с Task и в этом плане беда.
Здравствуйте, Lazin, Вы писали:
L>RavenDB вполне себе пользуются, про Dryad я уже давно ничего не слышал.
Зачем приводить то, что заведомо никем не используемо, а значит мертво? Или для галочки, что типа есть?
L>visual studio живут очень долго и содержат в себе массу унаследованного кода.
Какие продукты МС полностью написаны на дотнете? К примеру, блэнд на дотнете?
L>Мало того, .NET часто используется в связке с плюсами потому, что это очень просто, это дает очевидные преимущества, например возможность использовать C++/CLI и с легкостью смешивать нативный и управляемый код. P/Invoke это тоже очень просто и удобно. Интегрировать управляемый код в существующий проект на плюсах -просто, поэтому много проектов, использующих такую связку.
Если их просто смешивать, тогда не проще писать сразу на плюсах?
Здравствуйте, xRAZORx, Вы писали:
RAZ>Зачем приводить то, что заведомо никем не используемо, а значит мертво? Или для галочки, что типа есть?
Ну я какбэ не слежу, что вспомнил, то и назвал. RavenDB, кстати, вполне себе живой и активно развивается.
RAZ>Какие продукты МС полностью написаны на дотнете? К примеру, блэнд на дотнете?
Честно скажу что не знаю, откуда я знаю какие там у MS продукты и на чем они написаны
RAZ>Если их просто смешивать, тогда не проще писать сразу на плюсах?
Чем же проще? Любой код проще писать на дотнетике и поддерживать потом тоже проще. Просто одно дело, когда у тебя весь проект на шарпе, начальство может быть сложно убедить в том, что это ничем не аукнется в будущем. Ну, например, проект не упрется по производительности в низкое качество генерируемого JIT-компилятором кода или паузы GC. Во всех проектах на C#, в которых я участвовал, всегда рассчитывали на то, что любую критичную к производительности подсистему, можно будет переписать на С++. В общем, мой поинт в том, что шарп очень хорошо может интероп, поэтому постоянно используется в связке с плюсами.
А по поводу библиотек, могу лишь частично согласится с твоей точкой зрения. В принципе, под .NET есть почти все что угодно. Вот я, например, однажды не смог найти библиотеку, умеющую group membership, что-то типа JGroups или Appia. Но с другой стороны, покажи мне хороший GUI framework для java, ну или удобный интероп
Здравствуйте, QrystaL, Вы писали:
QL>Слушая фанатов джавы, складывается впечатление, что все остальные платформы они считают заведомо недостойными и неполноценными...
Мне просто непонятно почему на этом форуме так носятся с этим дотнетом, если есть более практичное решение в плане стоимости, простоты, переноса на другие платформы, заработной плате(что немаловажно), количестве предложений работы и либ, существующих на все случаи жизни.
Еще скажите, что это все не так важно, как сладкий синтаксис шарпа и возможность интеропа.
Здравствуйте, xRAZORx, Вы писали: RAZ>Мне просто непонятно почему на этом форуме так носятся с этим дотнетом, если есть более практичное решение в плане стоимости, простоты, переноса на другие платформы, заработной плате(что немаловажно), количестве предложений работы и либ, существующих на все случаи жизни.
Про недостатки что-то можете сказать? Или серебряную пулю нашли?
Здравствуйте, QrystaL, Вы писали:
QL>Про недостатки что-то можете сказать? Или серебряную пулю нашли?
Недостатков тоже хватает. Причём немало.
Но сейчас я изучаю скалу, которая лишена многих недостатков и смогу работать на тех же проектах, что и сейчас работаю.
На скалу вакансий не так много, но и конкуренция в разы меньше.
А дотнетчикам и остается только клепать асп.нет сайтики.
Здравствуйте, xRAZORx, Вы писали:
RAZ>Мне просто непонятно почему на этом форуме так носятся с этим дотнетом
???
Профильные форумы по дотнету/яве никто насильно посещать не заставляет, если нужды в них не будет — умрут сами. В КСВ от этого дотнета вообще набросов не было по-моему, всё больше айфонынашевсё/вендекопец/явавсехзарулит
RAZ>если есть более практичное решение в плане стоимости, простоты, переноса на другие платформы, заработной плате(что немаловажно), количестве предложений работы и либ, существующих на все случаи жизни.
Ок, вы нашли для себя хороший язык — я рад за вас. Только зачем тратить своё время, убеждая, что нет языка кроме явы, а если и есть — то отстой?
Здравствуйте, Аноним, Вы писали:
А>Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
Для начала пускай в моно приделают такую фичу, как доступ к clipboard. А пока эта лидирующая "кросплатформенная" платформа не может освоить сей нетривиальный трюк как копирование текста.
Здравствуйте, Vetal_ca, Вы писали:
V_>Для начала пускай в моно приделают такую фичу, как доступ к clipboard. А пока эта лидирующая "кросплатформенная" платформа не может освоить сей нетривиальный трюк как копирование текста.
А когда моно был "лидирующей"?
V_>У меня KeePass на маке, ненавижууу!
Здравствуйте, Алексей, Вы писали:
V_>>Для начала пускай в моно приделают такую фичу, как доступ к clipboard. А пока эта лидирующая "кросплатформенная" платформа не может освоить сей нетривиальный трюк как копирование текста.
А>А когда моно был "лидирующей"?
Это их исходного топика:
Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества.
Кто что думает?
Мне кажется, что дотнету никогда не стать лидирующей платформой. Никак не выстрелит.
Здравствуйте, <Аноним>, Вы писали:
А>Я думаю, что с приходом Java 8 c# потеряет практически все свои преимущества. А>Кто что думает? А>Мне кажется, что дотнету никогда не стать лидирующей платформой.
А на кой ему становиться "лидирующим"?
Трабл в том, что ниш стадо over9000 и стать лидером во всех просто нереально. Надо вобрать в себя все языки и подходы и при этом не превратиться в УГ.
Так что достаточно захапать пару тройку mainstream ниш и спокойно развивать их.