Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.02;
Скачать: CL | DM;

Вниз

.NET vs Java   Найти похожие ветки 

 
wicked ©   (2007-07-30 23:21) [40]

> _Mike_   (30.07.07 23:14) [38]
http://www.bash.org/?772595


 
wicked ©   (2007-07-30 23:22) [41]


> oxffff ©   (30.07.07 23:20) [39]
>
> И пошло поехало.
> Парни Линейки дать?

лучше транспортиры :)


 
ferr ©   (2007-07-30 23:22) [42]

> Ага. Вот Вам и RAD - то что на Delphi я делал за 1.5 дня,
> на сях за 1 день, на долбанном NET убил 4 дня :(
> Фигня этот NET. Так. Рюшечки огромного размера. Да еще и
> нифига не совместим между собой.

я Вам завидую, а что конкретно там несовместимо?


 
wicked ©   (2007-07-30 23:24) [43]

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

отсюда вывод - тема флуд и сотрясение электронов :)


 
Petr V. Abramov ©   (2007-07-30 23:34) [44]

ну рбота с БД на D лучше, с точки зрения RAD. надо переделывать, хоть и не в корне


 
DrPass ©   (2007-07-30 23:35) [45]


> Вот Вам и RAD - то что на Delphi я делал за 1.5 дня, на
> сях за 1 день, на долбанном NET убил 4 дня :(

Самая вероятная причина - прокачанность скилов: "Мастер Сей", "Аппрентис Дельфи", "Новайс .NET"


 
_Mike_   (2007-07-30 23:42) [46]

Ох. Зацепили за больное. Ну давайте по порядку. Во первых. Испорт функций (учитывая, что там 90% нуждого нет)

Delphi

type PBluetoothFindFirstRadio = function (var pbtfrp: BLUETOOTH_FIND_RADIO_PARAMS; var phRadio: HANDLE): HBLUETOOTH_RADIO_FIND; stdcall;
var _BluetoothFindFirstRadio: PBluetoothFindFirstRadio = nil;

_BluetoothFindFirstRadio := GetProcAddress(hLib, "BluetoothFindFirstRadio");


C++
typedef HBLUETOOTH_RADIO_FIND (__stdcall *PBluetoothFindFirstRadio) (BLUETOOTH_FIND_RADIO_PARAMS* pbtfrp, HANDLE* phRadio);
typedef BOOL (__stdcall *PBluetoothFindNextRadio) (HBLUETOOTH_RADIO_FIND hFind, HANDLE* phRadio);
PBluetoothFindFirstRadio _BluetoothFindFirstRadio = NULL;

_BluetoothFindFirstRadio = (PBluetoothFindFirstRadio) GetProcAddress(hLib, "BluetoothFindFirstRadio");


Внимание. C#
private unsafe delegate uint PBluetoothFindFirstRadio (ref BLUETOOTH_FIND_RADIO_PARAMS pbtfrp, uint phRadio);
private static PBluetoothFindFirstRadio _BluetoothFindFirstRadio = null;

IntPtr Ptr = (IntPtr)BFWin32.GetProcAddress(hLib, "BluetoothFindFirstRadio");
_BluetoothFindFirstRadio = (PBluetoothFindFirstRadio)Marshal.GetDelegateForFunctionPointer(Ptr, typeof(PBluetoothFindFirstRadio));


причем GetProcAddress тоже где-то отдельно. Ладно. Дальше.


unsafe
{
 fixed (byte* p = Buffer)
 {
   BFIrDAAPI.DEVICELIST* DeviceList = (BFIrDAAPI.DEVICELIST*) p;
   DeviceList->numDevice = 0;
 }
}


Далее. потоки работающие в среде COM (не свободные причем). Далее отсутсвие напроч возможностей межпотоковых коммуникаций (за исключением извращений через зад). Нет критических секций. Многопоточность не поддердивается (потому как COM). Точнее она есть - но лучше бы ее не было и т.д. и т.п.

Так что давайте не будем про "попробовать все".... С Java хоть все более или менее понятно. Она и проектировалась для конкретных целей и должна быть как можно более абстрагирована от железа и нижлежащего ПО (OS). Но нафига так с NET Было делать если и ежу понятно что будет она работать только под виндой.

Ок. Можно мне возразить про CF. Но он не совместим на NET для PC. Под него все равно перекомпилять нужно. Но! Если я пользую C++ + MFC мне достаточно просто перекомпилять проект с другими опциями. Если же я пользую NET - мне придется 40% кода переписать, потому как CF и NET PC различны. Например в CF Есть класс Window (и процедура SendMessage там есть), а в NET Для PC таковой процедуры нема.

Далее в CF Отсутствует напрочь половина функционала. Что еще припомнить? А! Сборки. Нифига они не одинаковые для различных версий NET.

Вот такие вот пироги.

Я понимаю, что общий уровень образованности программистов не уклонно падает, но это уже совсем дял идиотов изобретено...


 
_Mike_   (2007-07-30 23:44) [47]


> Самая вероятная причина - прокачанность скилов: "Мастер
> Сей", "Аппрентис Дельфи", "Новайс .NET"

Ага. Прокачанность. см [46] И прикинте скоько времени нужно на сях и дельфях для описания порядка 100 импортируемых функций и сколько на жто нужно времени на NET (тупого набивания + подпор типов параметров + еще куча тупой работы с Ansi/Unicode)
И это только цветочки... ягодки дальше начинаются.


 
ferr ©   (2007-07-30 23:53) [48]

.net и c# в частоности, не предназначены для работы с нативным кодом. В порядке исключения, добавлена возможность экспорта из нативных dll, этим можно пользоваться, но для этого надо делать нормальную оболочку для этих нативных библиотек.

Где многопоточность не поддерживается, не понял?

CF запускается под эмулятором.


 
ferr ©   (2007-07-31 00:00) [49]

> Так что давайте не будем про "попробовать все".... С Java
> хоть все более или менее понятно. Она и проектировалась
> для конкретных целей и должна быть как можно более абстрагирована
> от железа и нижлежащего ПО (OS). Но нафига так с NET Было
> делать если и ежу понятно что будет она работать только
> под виндой.

.net проектировался чтобы обскакать джаву, и что с того? Кроссплатформенность, это не только то что приложение должны работать под разными операционками, но в первую очередь то, что приложение может работать на разных архитектурах. В частности сидя на AMD x64 часто напарываюсь на ситуации когда приложения для 32-разрядной операционки не запускается у меня, а про Itanium и говорить нечего.


 
_Mike_   (2007-07-31 00:03) [50]


> net и c# в частоности, не предназначены для работы с нативным
> кодом. В порядке исключения, добавлена возможность экспорта
> из нативных dll, этим можно пользоваться, но для этого надо
> делать нормальную оболочку для этих нативных библиотек.

Вопрос решаемых задач. И еще как предназначены, не зря там Marshal есть - ограничения же все - ограничений COM+ модели.


> Где многопоточность не поддерживается, не понял?

Открываем MSDN и упорно читаем про многопоточность в COM приложениях (в частности Single и Aprtment модели).


> CF запускается под эмулятором.

Вы не внимательны. Он у меня и на PDA прекрасно запускается. Я писал про несовместимость версий NET PC и NET CF - я не спршивал где мне и как ее запускать (потому как это второй и очень не существенный для меня вопрос).


 
_Mike_   (2007-07-31 00:04) [51]


> В частности сидя на AMD x64 часто напарываюсь на ситуации
> когда приложения для 32-разрядной операционки не запускается
> у меня, а про Itanium и говорить нечего.

Я Вам 100% гарантирую что NET (некоторые) также не запустятся.


 
wicked ©   (2007-07-31 00:07) [52]

> type PBluetoothFindFirstRadio = function (var pbtfrp: BLUETOOTH_FIND_RADIO_PARAMS; var phRadio: HANDLE): HBLUETOOTH_RADIO_FIND; stdcall;

> typedef HBLUETOOTH_RADIO_FIND (__stdcall *PBluetoothFindFirstRadio) (BLUETOOTH_FIND_RADIO_PARAMS* pbtfrp, HANDLE* phRadio);

> private unsafe delegate uint PBluetoothFindFirstRadio (ref BLUETOOTH_FIND_RADIO_PARAMS pbtfrp, uint phRadio);

вы точно с обьявлениями не напутали?
в паскале и си++ 2-й параметр - указатель, в си-шарп - простой uint


 
ferr ©   (2007-07-31 00:08) [53]

> Открываем MSDN и упорно читаем про многопоточность в COM
> приложениях (в частности Single и Aprtment модели).

COM устарела, в DOS-е тоже знаете много что не поддерживается.

Если пытаться тащить за собой вагон и тележку старого кода, то естественно что про какую-либо скорость разработки говорить не стоит. А вот создание приложений с нуля в .net занимает рекордно короткие сроки, по субъективным ощущениям.


 
Sdubaruhnul   (2007-07-31 00:08) [54]

>.net и c# в частоности, не предназначены для работы с нативным кодом. В порядке исключения, добавлена возможность экспорта из нативных dll, этим можно пользоваться, но для этого надо делать нормальную оболочку для этих нативных библиотек.

Не предназначалась, а приходится. На одном .NET можно делать только вылизанные приложения из разряда Demo. Если посмотреть примеры решений на разных сайтах, например, http://www.codeproject.com, то импортируются ф-ии Win32 API сплошь и рядом - иначе никак. Да и как можно, если в том же RichView всё точно так же - SelStart и SelLength. Там в основе та же comctrl"овская компонента.


 
_Mike_   (2007-07-31 00:08) [55]


> Кроссплатформенность

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

Ок. Ок. Perl и прочие скриптовые языки не берем в расмотрение.


 
_Mike_   (2007-07-31 00:10) [56]


> в си-шарп - простой uint

Во-первых, там нет указателей. Во-вторых - какая разница? 4 байта они и в африке 4 байта.


 
_Mike_   (2007-07-31 00:13) [57]


> COM устарела

Ой ли? Это Вы только что придумали или это Вам по секрету сам Билли сказал. Я обычно принимаю за факт то, что вижу, а не то , что в рекламе написано. И если я вижу что сама MS не использует NET в Vista и что Vista также продолжает использовать COM (ок, для ярых сторонников точныз терминов - COM+) - то я никак не могу верить что COM умер.

И если NET - это COM в шоколадной оберткой - то про какие бы CLR мне не говорили - он COMом и останется.

p.S. Если кто помнит - была такая библиотека DreamControls (наверное и сейчас есть) - так вот, они эту NET лет 8 назад на Delphi 2 еще реализовали :)


 
Petr V. Abramov ©   (2007-07-31 00:14) [58]

о птичках.
когда только появлялся Oracle, он задумывался как работающий ну на всех платформах (что так и есть). И вставал вопрос - на чем писать. В результате писать решили на С (и на чем-то GNU-сном так и пишут), а для тех платформ, для которых тогда С-шного компайлера не было, его написали.
Может, и легенда, но очень официальная, оракловская


 
wicked ©   (2007-07-31 00:15) [59]


>
> Во-первых, там нет указателей. Во-вторых - какая разница?
>  4 байта они и в африке 4 байта.

в делфи коде, ничтоже сумяшеся, был использован var... да и первый параметр прототипа на це-шарп обьявлен как ref - отсюда и вопросы... имхо, такие вот старательно разложенные грабли самому себе

а разница ДОЛЖНА быть чисто принципальная, особенно, если код пойдет на 64-битные архитектуры -
там sizeof(int) - 4 байта,
а sizeof(void *) - 8 байт
с этим могу и ошибаться, но я вижу это так - код, предполагающий sizeof(int) == sizeof(void *) непортабелен... хоть и иногда сам так пишу


 
wicked ©   (2007-07-31 00:17) [60]


> когда только появлялся Oracle, он задумывался как работающий
> ну на всех платформах (что так и есть). И вставал вопрос
> - на чем писать. В результате писать решили на С (и на чем-
> то GNU-сном так и пишут), а для тех платформ, для которых
> тогда С-шного компайлера не было, его написали.

именно... а примером для меня всегда будет zlib :)


 
_Mike_   (2007-07-31 00:19) [61]


> если код пойдет на 64-битные архитектуры

Этот код не пойдет на 64 бит. Для 64 бита используется IntPtr.


 
P_   (2007-07-31 00:22) [62]


> _Mike_   (31.07.07 00:08) [55]
>
>
> > Кроссплатформенность
>
> Ненавижу это слово. Нет кроссплатформенности. Есть портируемый
> исходный код, который с разной долей успеха и скорости можно
> перекомпилять для различных платформ/архитектур. Вот и вся
> кроссплатформенность.
>
> Ок. Ок. Perl и прочие скриптовые языки не берем в расмотрение.


А как же Java?


 
_Mike_   (2007-07-31 00:24) [63]


> в делфи коде, ничтоже сумяшеся, был использован var... да
> и первый параметр прототипа на це-шарп обьявлен как ref
> - отсюда и вопросы... имхо, такие вот старательно разложенные
> грабли самому себе

А это пример хренового написания кода (зато быстрого) :) Так писать не нужно.
Дело в том, что hRadio мне в общем то нафиг не нужен (я с ним не работаю и какого он реально типа мне все равно - по сему он может быть хоть string (для Delphi)). Но так как Delphi позволяет заюзать var - что красиво в коде - я ее и заюзал. Так как C++ нет var но есть тип - его заюзал тоже. Ну а в C# что осталось.

А вот тип структуры мне важен - так как я сним работаю и должен знать что это. По сему как ref/var (да. и еще потому, что в C# нельзя написать BLUETOOTH_FIND_RADIO_PARAMS* pbtfrp в параметрах функции. Т.е. можно написать для базового типа byte* или Int*, но нельзя для структуры... Короче все запущено там).


 
_Mike_   (2007-07-31 00:27) [64]


> А как же Java?

Ну попрбуйте заставить работать Java с SonyEricson на Java Nokia - потом мне сами и ответите.

P.S. Как вариант можно расматривать Managed C++ - есть, конечно, ограничения - но классы и указатели не отменяли. И стандартные библиотеки + функции API + все остальные прелести жизни :) Но он полезен только для разработки сборок для использования этих сборок в C# :) В общем еще один костыль.


 
celades ©   (2007-07-31 00:47) [65]


> Ну попрбуйте заставить работать Java с SonyEricson на Java
> Nokia - потом мне сами и ответите.
>

если имеются ввиду мидлеты, то запросто! Ещё как-то раз я сам лично мидлет запускал как аплет в браузере. Зароботало.


 
_Mike_   (2007-07-31 00:50) [66]


> celades ©   (31.07.07 00:47) [65]

Я не имею ввиду простейшие частные случаи. Я имею ввиду общий случай. Ладно - долго не буду рапинаться. Посетите форумы разработчиков Nokia и SE. Потом мы можем долго общаться более предметно. ОК?


 
celades ©   (2007-07-31 00:58) [67]


> Я не имею ввиду простейшие частные случаи. Я имею ввиду
> общий случай.

Простейшие случаи - понятия растяжимое. Во многих случаях можно тянуть очень много. А общий случай - это проблемы вендоров и нестандартности их расширений VM и библиотеки пакетов, а не Java как платформы.


 
_Mike_   (2007-07-31 00:59) [68]


> расширений VM и библиотеки пакетов

JSR 82 - стандарт - но везде по разному....


 
Alex Konshin ©   (2007-07-31 09:18) [69]

> _Mike_   (31.07.07 00:59) [68]
> > расширений VM и библиотеки пакетов
> JSR 82 - стандарт - но везде по разному....

Java-то тут причем? JVM-то работает? А библиотеки разные - так кто ж в этом виноват? Если очень захотеть, то любую идею испортить можно. Нужно только нанять по-больше народу.


 
Algol   (2007-07-31 12:03) [70]

2_Mike_
Да гадость этот хреймворк, гадость ;)
Нам меньше конкурентов будет )


 
alex_*** ©   (2007-07-31 14:54) [71]

to  _Mike_

Вот интересно, автор взял конкретную узкоспециализированную задачу, и на ее примере рассматривает общие вопросы использования .NET


 
Eraser ©   (2007-07-31 15:14) [72]


> _Mike_   (30.07.07 23:42) [46]

драйвера на .net не пробовал писать? )


 
StriderMan ©   (2007-07-31 15:57) [73]

не ожидал я такого холивара О_о. сорри.


 
iZEN ©   (2007-08-01 11:11) [74]


> _Mike_   (31.07.07 00:08) [55]
>
>
> > Кроссплатформенность
>
> Ненавижу это слово. Нет кроссплатформенности. Есть портируемый
> исходный код, который с разной долей успеха и скорости можно
> перекомпилять для различных платформ/архитектур. Вот и вся
> кроссплатформенность.


Б..ля. У меня NetBeans 5.5 в бинарниках запускается под Windows, FreeBSD, Solaris и Linux.
Вьюер Java DeJaVu без исходников работает прекрасно на всех платформах.
Sun Download Manager тоже просто работает.
Мидлеты в Sun WTK тоже запускаются и работают, причём на разных платформах.

Что я делаю не так, в чём моя ключевая ошибка? :O


 
alex_*** ©   (2007-08-01 11:33) [75]


> Что я делаю не так, в чём моя ключевая ошибка? :O

Надо писать на FW для мобил, тогда прочувствуешь :)


 
boa_kaa ©   (2007-08-01 12:08) [76]


> StriderMan ©   (31.07.07 15:57) [73]
> не ожидал я такого холивара О_о. сорри.

ой ли?

Вот только от темы совсем отвлеклись... Сравнение должно было идти .NET и Java. А сравниваете почему-то C# и Delphi, C# и C++ и т.д.

Что за детский сад? Тряпкой красной помахали - начали друг в друга горшками кидаться. Может, смените тон на конструктивный? По полочкам разложите + и -, глядишь, новичок какой сомневающийся прочитает и какие-то выводы сделает. Для себя.

А то только одно видно: "Там (неважно где) нельзя сделать это, как без этого жить?"


 
alex_*** ©   (2007-08-01 12:09) [77]

Как можно сравнить синее и зеленое


 
celades ©   (2007-08-01 12:24) [78]


> Как можно сравнить синее и зеленое
>

по цвету


 
alex_*** ©   (2007-08-01 12:26) [79]


> по цвету
>

ну да. Одно синее другое зеленое. Одно java, другое .net


 
boa_kaa ©   (2007-08-01 12:27) [80]


> alex_*** ©   (01.08.07 12:09) [77]
> Как можно сравнить синее и зеленое

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



Страницы: 1 2 3 вся ветка

Текущий архив: 2007.09.02;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.026 c
2-1186575343
wazaaaa
2007-08-08 16:15
2007.09.02
Wait until program starts


2-1186573782
Gamarnik
2007-08-08 15:49
2007.09.02
Memo


2-1186484910
Strate
2007-08-07 15:08
2007.09.02
Перевод из строки в TDateTime


2-1186662007
Gamer
2007-08-09 16:20
2007.09.02
работа с Firebird из Delphi 2006


2-1186662201
alex_tonk
2007-08-09 16:23
2007.09.02
Сохранить как DBF файл