Re[3]: C# .NET vs Java 1.5
От: Joker6413  
Дата: 18.05.04 05:31
Оценка: +1 :)
Здравствуйте, Gregory_krovosos, Вы писали:

G_>>>Про недостатки .NET сразу приходит в голову — отстутствие реальной кроссплатформенности и поддержки большого числа компаний.


J>>А оно надо? Что-то win до сих пор это никак не мешало...


G_>Windows завоевало клиента, но не сервер.


Поглядим что через пару лет будет .
Re[4]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 10:59
Оценка:
S>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&only=1
Автор:
Дата: 30.03.04

S>>> А вот скорости нужно сравнить
G_>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.

Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться
с применением класса вместо этой структуры.
Re[5]: C# .NET vs Java 1.5
От: BiТ  
Дата: 18.05.04 11:03
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:


S>>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&only=1
Автор:
Дата: 30.03.04

S>>>> А вот скорости нужно сравнить
G_>>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.

G_>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>с применением класса вместо этой структуры.

На вскидку — плотные вычисления над большими матрицами комплексных чисел. .
Re[4]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 11:12
Оценка:
G_>>fixed — ?

AVK>Блокировать класс от перемещения в памяти сборщиком мусора. Нужно для того чтобы обойтись без маршалинга при общении с неуправляемым кодом.


G_>>using — имеется в виду очевидно использование IDisposable? (а не подключение пакетов?) Этого в Яве нет, но в концепции сборщика мусора нужно ли это?


AVK>Нужно. Ждать пока сборщик вызовет финалайзеры для некоторых ресурсов (например файловые хендлы или соединение с БД) неприемлемо.


G_>>unsafe — это возможность вызова платформенного кода? Если да — это вроде бы в Яве с рождения.


AVK>Нет, возможность явного использования указателей и адресной арифметики. Обычно используется совместно с fixed.


G_>>Interop -?


AVK>А вот это как раз и есть взаимодействие с нативным кодом.



Насчет автоматического вызова финалайзера — это неплохая возможность, но она уже не так значима как, скажем, в C++.

Все остальное, как я понимаю, есть мудреные технологии, которые позволяют юзать COM-объекты и найтивный код.
Вообще-то, как я понимаю Java и .NET создавались как раз чтобы избежать этого... В любом случае, в Java есть JNI. Он дает возможность
писать платформенный код.
Re[5]: C# .NET vs Java 1.5
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 18.05.04 11:13
Оценка: +1
Здравствуйте, Gregory_krovosos, Вы писали:


G_>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>с применением класса вместо этой структуры.
Здесь дело не в том, что нельзя решить а в эффективности использования в массивах
1. Более быстый доступ (без лишней ссылки)
2. Ипользование DDR памяти с фоновой подкачкой, при использовании массива попадает только ссылка, и при больших объемах при не попадании в кэш процессора доступ в 10 раз медленнее
3. Экономия памяти. В Net под объект дополнительно выделяется 8 байт (ссылка на VMT, SincBlockIndex)
4. Не нужно ЖЦ следить за объектом, отсутвие write Barier. http://www.rsdn.ru/Forum/Message.aspx?mid=558877&only=1
Автор: Yury_Malich
Дата: 03.03.04
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[4]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 11:17
Оценка:
G_>>>>Начать можно со такого вопроса — чего есть в C# + .NET такого чего нет в Java? Принимается все — начиная от конструкций языка и заканчивая технологиями и скоростями работы.
kuj>>>enumerations, fixed, using, unsafe, Interop...
G_>>Enum в 1.5 появились.
kuj>А поддержку со стороны библотек тоже сделали?

Не знаю, есть поддержка нового for(item:collection). Вот пример оттуда:

public enum Suit { spade, diamond, club, heart };

public enum Value { ace, two, three, four, five,
six, seven, eight, nine, ten,
jack, queen, king };

List<Card> deck = new ArrayList<Card>();
for (Suit suit : Suit.VALUES)
for (Value value : Value.VALUES)
deck.add(new Card(suit, value);

Collections.shuffle(deck);


G_>>fixed — ?

kuj>Лазейка на низкий уровень. Позволяет использовать адресную арифметику и запретить проверку на выход за границы массива.

G_>>using — имеется в виду очевидно использование IDisposable? (а не подключение пакетов?) Этого в Яве нет, но в концепции сборщика мусора нужно ли это?

kuj>Чисто ради удобства. В finally можно забыть закрыть системный ресурс, с using это происходит реже.

G_>>unsafe — это возможность вызова платформенного кода? Если да — это вроде бы в Яве с рождения.

kuj>Нет. unsafe используется обычно в паре с fixed.
kuj>The unsafe keyword denotes an unsafe context, which is required for any operation involving pointers.

G_>>Interop -?

kuj>Для вызова функции из внешних dll, создания COM, ActiveX объектов. В том числе предоставляет средства для маршалинга.


Ну, вообщем можно сказать что в C# более продвинутая поддержка наитивного кода?


G_>>>>Что на ваш взгляд является главным недостатком Java?

kuj>>>EJB Ах, да... еще создание GUI под Windows..
G_>>Имеются в виду тормоза Swing? Есть Eclipse.
kuj>Да это я в шутку. Сейчас GUI на Java вполне неплох. Даже swing`овый.

G_>>>>Про недостатки .NET сразу приходит в голову — отстутствие реальной кроссплатформенности и поддержки большого числа компаний.

G_>>>>Вообщем, прошу к барьеру
kuj>>>А если серьезно, то Java определенно более сильна в случае Enterprise-level систем.
kuj>>>Во всех других случаях можно долго выяснять кто же лучше, но это пустая трата времени, т.к. в общем случае они примерно равны. В итоге все сведется к выяснению у кого же лучший набор библиотек...
G_>>Ну так и у кого он лучший?
kuj>Это из серии: "в какой стране самые красивые девушки". Вопрос, на который физически не возможно дать объективный и однозначный ответ.

) Ну хотя бы субъективный)
Re[3]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 11:18
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Дарней, Вы писали:


Д>ах да! еще про атрибуты забыл


А в Яве 1.5 появились атрибуты.
Re[2]: C# .NET vs Java 1.5
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.05.04 11:51
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>из того, что я слышал — генерики в Яве эмулируются с помощью reflection'a,


Нет, не с помощью рефлекшена конечно. Дженерики там настоящие, просто из-за того что они приняли решение не менять рантайм они не создают специализированных реализаций для value-типов, а вместо этого заворачивают их в типы ссылочные. Отсюда даже дженерик-алгоритмы в джаве будут полиморфными.
... << RSDN@Home 1.1.4 beta 1 >>
AVK Blog
Re[5]: C# .NET vs Java 1.5
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.05.04 11:51
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:

G_>Не знаю, есть поддержка нового for(item:collection). Вот пример оттуда:


G_>public enum Suit { spade, diamond, club, heart };


G_>public enum Value { ace, two, three, four, five,

G_> six, seven, eight, nine, ten,
G_> jack, queen, king };

G_>List<Card> deck = new ArrayList<Card>();

G_>for (Suit suit : Suit.VALUES)
G_>for (Value value : Value.VALUES)
G_> deck.add(new Card(suit, value);

G_>Collections.shuffle(deck);


Не, это аналог шарпового foreach. Enum это другое, это перечисляемые типы

G_>Ну, вообщем можно сказать что в C# более продвинутая поддержка наитивного кода?


В дотнете.
... << RSDN@Home 1.1.4 beta 1 >>
AVK Blog
Re: C# .NET vs Java 1.5
От: VVB16 Россия  
Дата: 18.05.04 11:51
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:

G_>Про недостатки .NET сразу приходит в голову — отстутствие реальной кроссплатформенности и поддержки большого числа компаний.


У Java из этих двух недостатков есть только один — отсутсвие реальной кроссплатформенности.
Причем вызван он по-моему в основном неспешностью Sun в комплексе с его же схемой лицензирования и сертифицирования.
Re[6]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 12:51
Оценка:
G_>>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться
G_>>с применением класса вместо этой структуры.
S> Здесь дело не в том, что нельзя решить а в эффективности использования в массивах
S> 1. Более быстый доступ (без лишней ссылки)
S> 2. Ипользование DDR памяти с фоновой подкачкой, при использовании массива попадает только ссылка, и при больших объемах при не попадании в кэш процессора доступ в 10 раз медленнее

Это все довольно спорно. Компилятор может оптимизировать подобные вещи.

S> 3. Экономия памяти. В Net под объект дополнительно выделяется 8 байт (ссылка на VMT, SincBlockIndex)


Ну, это несерьезно. Выгоды больше.

S> 4. Не нужно ЖЦ следить за объектом, отсутвие write Barier. http://www.rsdn.ru/Forum/Message.aspx?mid=558877&amp;only=1
Автор: Yury_Malich
Дата: 03.03.04


Это касается принципа работы GC в .NET. В Яве gc работает по-другому.
Re[6]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 12:53
Оценка:
S>>>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&amp;only=1
Автор:
Дата: 30.03.04

S>>>>> А вот скорости нужно сравнить
G_>>>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>>>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.

G_>>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>>с применением класса вместо этой структуры.

BiТ>На вскидку — плотные вычисления над большими матрицами комплексных чисел. .


А почему нельзя это сделать с помощью классов?
Re[2]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 18.05.04 12:55
Оценка:
G_>>Про недостатки .NET сразу приходит в голову — отстутствие реальной кроссплатформенности и поддержки большого числа компаний.

VVB>У Java из этих двух недостатков есть только один — отсутсвие реальной кроссплатформенности.

VVB>Причем вызван он по-моему в основном неспешностью Sun в комплексе с его же схемой лицензирования и сертифицирования.

В смысле, что мало платформ поддерживается или что неаккуратно поддерживается?
Re[7]: C# .NET vs Java 1.5
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 18.05.04 13:02
Оценка: +1
Здравствуйте, Gregory_krovosos, Вы писали:


G_>>>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>>>с применением класса вместо этой структуры.
S>> Здесь дело не в том, что нельзя решить а в эффективности использования в массивах
S>> 1. Более быстый доступ (без лишней ссылки)
S>> 2. Ипользование DDR памяти с фоновой подкачкой, при использовании массива попадает только ссылка, и при больших объемах при не попадании в кэш процессора доступ в 10 раз медленнее

G_>Это все довольно спорно. Компилятор может оптимизировать подобные вещи.

Не сможет он соптимимизировать последовательное расположение. И на таких алгоритмах
http://www.rsdn.ru/forum/Message.aspx?mid=635534&amp;only=1
Автор: Serginio1
Дата: 11.05.04

отставание чудовищное.
S>> 3. Экономия памяти. В Net под объект дополнительно выделяется 8 байт (ссылка на VMT, SincBlockIndex)

G_>Ну, это несерьезно. Выгоды больше.


S>> 4. Не нужно ЖЦ следить за объектом, отсутвие write Barier. http://www.rsdn.ru/Forum/Message.aspx?mid=558877&amp;only=1
Автор: Yury_Malich
Дата: 03.03.04


G_>Это касается принципа работы GC в .NET. В Яве gc работает по-другому.

Есть идея протестировать такой код http://www.rsdn.ru/Forum/Message.aspx?mid=415352&amp;only=1
Автор: Serginio1
Дата: 20.10.03

http://www.rsdn.ru/forum/Message.aspx?mid=634878&amp;only=1
Автор: Serginio1
Дата: 11.05.04

. Но навряд ли есть большое различие.
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[7]: C# .NET vs Java 1.5
От: BiТ  
Дата: 18.05.04 13:05
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:


S>>>>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&amp;only=1
Автор:
Дата: 30.03.04

S>>>>>> А вот скорости нужно сравнить
G_>>>>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>>>>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.

G_>>>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>>>с применением класса вместо этой структуры.

BiТ>>На вскидку — плотные вычисления над большими матрицами комплексных чисел. .


G_>А почему нельзя это сделать с помощью классов?


Выделение большого количества памяти в куче гораздо более долгий процесс — нежели выделение того же объёма памяти в стеке.
P.S. А ещё лучше — сравните скорость создания больших (2048x2048) матриц с комплексными числами, в первом случае являющихся классами, а во втором — структурами.
Re[2]: C# .NET vs Java 1.5
От: WFrag США  
Дата: 18.05.04 15:50
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Reflection.Emit, то есть возможность генерации кода в run-time


В Java на самом деле это тоже есть (В Sun-овской реализации). Т.е можно сгенерировать класс в рантайме и тут же загрузить в JVM. Проблема в том, что эта функциональность скрыта. Видимо, Sun посчитала эту функциональность лишней (и оставила лишь ClassLoader.defineClass, без констант байт-кода и сборщика класса).

Более того, при десериализации это используется. Там какой-то хитрый класс зачем-то генерится.
Re[5]: C# .NET vs Java 1.5
От: kuj  
Дата: 18.05.04 18:39
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:

S>>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&amp;only=1
Автор:
Дата: 30.03.04

S>>>> А вот скорости нужно сравнить
G_>>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.
G_>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться
G_>с применением класса вместо этой структуры.
Вопрос в эффективности, а не в невозможности решения.
... << RSDN@Home 1.1.3 stable >>
Re[7]: C# .NET vs Java 1.5
От: kuj  
Дата: 18.05.04 18:39
Оценка: +1
Здравствуйте, Gregory_krovosos, Вы писали:

S>> 3. Экономия памяти. В Net под объект дополнительно выделяется 8 байт (ссылка на VMT, SincBlockIndex)

G_>Ну, это несерьезно. Выгоды больше.
Какой еще выгоды?
... << RSDN@Home 1.1.3 stable >>
Re[7]: C# .NET vs Java 1.5
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.05.04 20:03
Оценка:
Здравствуйте, Gregory_krovosos, Вы писали:

S>> 4. Не нужно ЖЦ следить за объектом, отсутвие write Barier. http://www.rsdn.ru/Forum/Message.aspx?mid=558877&amp;only=1
Автор: Yury_Malich
Дата: 03.03.04


G_>Это касается принципа работы GC в .NET. В Яве gc работает по-другому.


Т.е. к примеру в джаве GC следит за локальными переменными типа int?
... << RSDN@Home 1.1.3 beta 2 (mobile station) >>
AVK Blog
Re[8]: C# .NET vs Java 1.5
От: Gregory_krovosos  
Дата: 19.05.04 07:25
Оценка: -1
S>>>>>>>http://www.rsdn.ru/forum/Message.aspx?mid=588009&amp;only=1
Автор:
Дата: 30.03.04

S>>>>>>> А вот скорости нужно сравнить
G_>>>>>>Нууу. Наличие стуктуры, то есть класса, урезанного по функционалу, это вообще не аргумент!
kuj>>>>>Структура и класс в .NET совсем разные понятия. Структура — value-type — передается по значению. Класс — reference-type — передается по ссылке. Но самое примечательно, value-type зачастую передаются заметно быстрее reference-type. Именно поэтому структуру в .NET ну никак нельзя считать урезанным классом.

G_>>>>Приведите, пожалуйста, пример задачи, которая решается с применением структуры и не может решиться

G_>>>>с применением класса вместо этой структуры.

BiТ>>>На вскидку — плотные вычисления над большими матрицами комплексных чисел. .


G_>>А почему нельзя это сделать с помощью классов?


BiТ>Выделение большого количества памяти в куче гораздо более долгий процесс — нежели выделение того же объёма памяти в стеке.


Т.е. медленнее означает "нельзя"?

BiТ>P.S. А ещё лучше — сравните скорость создания больших (2048x2048) матриц с комплексными числами, в первом случае являющихся классами, а во втором — структурами.


Причем тут — матрица или не-матрица? Ясно, что создание большого объекта в куче займет больше времение чем операция sub esp, <большой_размер_объекта>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.