Защо Java
123 отговора
6565 прегледа
Re: Кажи и на нас тая конвенция, де
Абе сигурно ще ми е трудно, понеже съм свикнал, ама и без друго напоследък имам нови любимци откъм езици - там проблеми с терминологията няма :))
Re: Кажи и на нас тая конвенция, де
Е то конвенция не беше точната дума де, но идеята е, че ако не искаш извиканата функция да си пази указател, предаваш &.
Което пък е, защото ако предаваш &, може да предадеш & към temporary(през 'cast' ctor), и тогава ако му вземеш адреса и го запазиш, ще се самоопънеш здраво.
Сигнатура!
Което пък е, защото ако предаваш &, може да предадеш & към temporary(през 'cast' ctor), и тогава ако му вземеш адреса и го запазиш, ще се самоопънеш здраво.
Сигнатура!
Re: Като по учебник
Аз не знам на какви платформи сте пускали Java програмите си, но аз съм имал достатъчно проблеми с "многоплатформенността". Това разбира се са бъгове в имплементациата на JVM-а, но клиента който ти купува програмата казва че проблема е твой и не му пука.
И да не съм голословен опитайте под AIX да си заделяте масив от обекти да си го нулирате и пак и пак. Да видиме кога ще гръмне JVM-а с OutOfMemory. Така че да не се ползва пулове е красиво под някой платформи, ама като не работи под други да видиш как почват да се ползват. Аз бях свидетел как една седмица 5 души търсят memory leak в Java програма и се чудиш да плачеш ли или да се смееш. До тук за прекрасня GC.
Не ми се иска да изпадам в подробности, ама толкова бъгове има в това чудо, че понякога се чудя ако го забранят със закон дали няма да е по-добре. Е поне докато го направят да работи.
Един прост пример под HPUX напишете java -X и погледнете опцията XdoCloseWithReadPending и помислете колко време бихте загубили докато намерите причината защо програмата жи не завършва под HP, след като на всички останали платформи работи. Подобен бъг има и под Linux в по-старите версии, но там и опция няма.
А някой замислял ли се е как се чете XML файл под ОС390? Че header-а не е ASCII a EBCDIC. Ами нали има encoding? Предложения какъв да е файл-а и с какъв енкодинг да почнеме да го четем?
Ех многоплатформенност, многоплатформенност
И да не съм голословен опитайте под AIX да си заделяте масив от обекти да си го нулирате и пак и пак. Да видиме кога ще гръмне JVM-а с OutOfMemory. Така че да не се ползва пулове е красиво под някой платформи, ама като не работи под други да видиш как почват да се ползват. Аз бях свидетел как една седмица 5 души търсят memory leak в Java програма и се чудиш да плачеш ли или да се смееш. До тук за прекрасня GC.
Не ми се иска да изпадам в подробности, ама толкова бъгове има в това чудо, че понякога се чудя ако го забранят със закон дали няма да е по-добре. Е поне докато го направят да работи.
Един прост пример под HPUX напишете java -X и погледнете опцията XdoCloseWithReadPending и помислете колко време бихте загубили докато намерите причината защо програмата жи не завършва под HP, след като на всички останали платформи работи. Подобен бъг има и под Linux в по-старите версии, но там и опция няма.
А някой замислял ли се е как се чете XML файл под ОС390? Че header-а не е ASCII a EBCDIC. Ами нали има encoding? Предложения какъв да е файл-а и с какъв енкодинг да почнеме да го четем?
Ех многоплатформенност, многоплатформенност
Многоплатформеност
Това е друга бира. За това още не беше ставало дума. Аз съм портвал Жаба за МАК, после я портваха и за Linux. Да не говорим, че в един момент това което го правехме на 1.1.8 с awt се оказа, че с последната версия на машината на Майкрософт спря да работи ( т.е. не е и почвало - появи се нова версия и се оказа, че на нея не бачка ). И после тва дето жабата била мултиплатформена да го разправят на баба ми. Ако беше на чисто C далеч по-голям шанс щеше да има да мине без доработки.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: Многоплатформеност
Нормално. Последната MS JVM поддържа 1.1.4, а не 1.1.8. Мултиплатформеността се осигурява от JVM. Това, че МС за пореден път не са си свършили работата като хората не е вина на Java. По-скоро Sun са виновни, че са одобрили МС ВМ-то. Не обвинявай "Жабата" за своите проблеми.
Johny Cage
------------------------------------------------
DOOM Will Never Die, Just The Players
Johny Cage
------------------------------------------------
DOOM Will Never Die, Just The Players
Re: Многоплатформеност
Както не трябва да се обвинява Java за проблемите на определена имплементация на JVM, така не трябва и да се обвинява С/С++ за грешките на програмистите (т.е. за проблемите на определена имплементация на някакъв проект).
Изобщо спора Java срещу C/C++ е безмислен - всеки език си има предназначение и приложение...
Изобщо спора Java срещу C/C++ е безмислен - всеки език си има предназначение и приложение...
Re: Като по учебник
Сега, дай да не си говорим за бъгове, да не почвам аз на тема standard compliance на C++ компилаторите. Има бъгове, но това е положението, навсякъде има, и в самите OS. На Linux, Windows и Solaris не съм срещал особени проблеми. Ясно е, че нещата не работят съвсем еднакво навсякъде, но освен скрипт езиците, няма кой да ти даде толкова многоплатформеност... има C++ frameworks, сигурно има и добри такива, но по правило поддържат по-малко платформи, не са много използвани, и са по-трудни (по-слаби като абстракция от платформата). Да пишеш наистина многоплатформен код на С++ БЕЗ framework е МНОГО лоша идея, поне за приложение което разчита на платформата за повечко неща (като GUI).
Re: Като по учебник
То щото да пишеш на Java без framework-а е много умна идея... Такава мултиплатформеност ще постигнеш че ще ти се замае главата...


Re: Като по учебник
Почвам да се чувствам виновен за това че програмата ми не работи на всички платформи по един и същи начин?
Всъщност имаме и C API работещо на всички платформи на които имаме и Java API и може да ти звучи невероятно, но съм потрошил повече време да търся многоплатформенните бъгове на Java-та отколкото на C-то.
Бе не ми спори за глупости, ако клиента иска и плаща ще му направя АПИ-то и на shell script ама...
Колата ми е с Java скоростна кутия. Някак си превключва, ама не тогава когато аз искам. Следващата ще е със C скоростна кутия.
Както са казали някой хора "Красотата е в простотата" (да не се бърка с простоията)
Всъщност имаме и C API работещо на всички платформи на които имаме и Java API и може да ти звучи невероятно, но съм потрошил повече време да търся многоплатформенните бъгове на Java-та отколкото на C-то.
Бе не ми спори за глупости, ако клиента иска и плаща ще му направя АПИ-то и на shell script ама...
Колата ми е с Java скоростна кутия. Някак си превключва, ама не тогава когато аз искам. Следващата ще е със C скоростна кутия.
Както са казали някой хора "Красотата е в простотата" (да не се бърка с простоията)
Re: Многоплатформеност
Не разбрах много Sun, MS или Columbino са виновни за бардака?
Според мене Columbino що я е ползва като е калпава?


Според мене Columbino що я е ползва като е калпава?
azureus - 3 милиона
[линк]
над 3 милиона доунлоада за миналата седмица. Браво на тях - момчетата са французи и съм си приказвал често с тях. Никакви пари не изкарват от тая работа, правят го за предимно за кеф. Те обаче ползват SWT а не Суинг.
И на конкретния въпрос на Гуру - в конкретния случай Джава е по-добър избор защото притежава механизми за асинхронно и/о, докато в .нет би се наложило да се слиза до системни компоненти (поне Дешев така каза, може и да не съм прав). Протоколът Битторрент изиква да се поддържат към 100-300 сокета отворени във всеки един момент, в който случай блокиращото и/о просто убива машината, независимо кой език се ползва.
над 3 милиона доунлоада за миналата седмица. Браво на тях - момчетата са французи и съм си приказвал често с тях. Никакви пари не изкарват от тая работа, правят го за предимно за кеф. Те обаче ползват SWT а не Суинг.
И на конкретния въпрос на Гуру - в конкретния случай Джава е по-добър избор защото притежава механизми за асинхронно и/о, докато в .нет би се наложило да се слиза до системни компоненти (поне Дешев така каза, може и да не съм прав). Протоколът Битторрент изиква да се поддържат към 100-300 сокета отворени във всеки един момент, в който случай блокиращото и/о просто убива машината, независимо кой език се ползва.
Re: azureus - 3 милиона
А вие само чист суинг ли ползвате? Някакви адд-они за интерфейс къстом правите ли си...
Аз съм леко предубеден, верно. Не съм виждал много интерфейси на Джава, тези които съм виждал (Оракъл) са ужасяващи.
--
Sometimes the sole purpose of your life is to serve as a warning to others.
Аз съм леко предубеден, верно. Не съм виждал много интерфейси на Джава, тези които съм виждал (Оракъл) са ужасяващи.
--
Sometimes the sole purpose of your life is to serve as a warning to others.
Re: azureus - 3 милиона
в конкретния случай Джава е по-добър избор защото притежава механизми за асинхронно и/о, докато в .нет би се наложило да се слиза до системни компоненти (поне Дешев така каза, може и да не съм прав
Каквото и да е това - системни компоненти.... Дешев.... абе не разбрахте ли, че да плещиш полусвързани приказки за това колко е хубаво и т.н. да се правят unit tests, няма много общо с даването на нормални и адекватни съвети... оффф лека
Каквото и да е това - системни компоненти.... Дешев.... абе не разбрахте ли, че да плещиш полусвързани приказки за това колко е хубаво и т.н. да се правят unit tests, няма много общо с даването на нормални и адекватни съвети... оффф лека
Re: azureus - 3 милиона
не знам как стоят нещата в .нет, но под "системни компоненти" имах предвид нещо дето си го написваш на С++ ръчно защото го няма в апи-то. Ай като си такъв спец, има ли еквиваленти на select() & poll() в .нет? Или някакъв начин от една нишка да се прави и/о на много сокети без да се блокира нишката.
А юнит тестовете управляват
А юнит тестовете управляват
Re: azureus - 3 милиона
чист суинг с един-два аддона (ама те са си суинг). В новата жава 1.5 суинга се опитва да прилича на нейтив програма, но мен лично СВТ ме кефи повече - там директно управляваш контролите на системата, а не някви измислени жаварски такива. Но това е друг флейм за друга тема...
Re: azureus - 3 милиона
Има. Потърси например за BeginAccept.
А pool и select са доста неудоби по принцип, и не се препоръчват под Windows (pool не се поддържа изобщо). Има си WSAWaitForMultipleEvents и е много по-приятно за ползване (е поне в някой случаи).
А pool и select са доста неудоби по принцип, и не се препоръчват под Windows (pool не се поддържа изобщо). Има си WSAWaitForMultipleEvents и е много по-приятно за ползване (е поне в някой случаи).
Re: azureus - 3 милиона
Има да, даже под WinNT се препоръчва IOCompletionPorts, koeto e bez znachenie vyv sluchaq.