Re[12]: Вот я не понимаю...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 31.08.07 05:41
Оценка:
Здравствуйте, FR, Вы писали:

FR>Насколько я понимаю сейчас java это делает на порядок хуже чем нормальный программист вручную на C++.

Почему вы так думаете?

FR>Тем более на C++ все гарантированно а на java может быть разместит а может и нет, гарантий никаких.

Гарантий, конечно, никаких, ведь при условии динамической компиляции выделение памяти на куче может быть через некоторое время сконвертировано в выделение на стеке.
Re[13]: Вот я не понимаю...
От: Курилка Россия http://kirya.narod.ru/
Дата: 31.08.07 05:57
Оценка:
Здравствуйте, rsn81, Вы писали:

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

FR>>Тем более на C++ все гарантированно а на java может быть разместит а может и нет, гарантий никаких.
R>Гарантий, конечно, никаких, ведь при условии динамической компиляции выделение памяти на куче может быть через некоторое время сконвертировано в выделение на стеке.

Дак вопрос не в самом месте размещения объектов, а в гарантиях налагаемых на принимаемые условия. Примером слабости таких в JVM и .Net может служить ветка в немерловом форуме про notnullable ссылки, которые там (в Н) нельзя получить из-за модели самой платформы (дотнета).
Re[13]: Вот я не понимаю...
От: FR  
Дата: 31.08.07 06:09
Оценка:
Здравствуйте, rsn81, Вы писали:

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


FR>>Насколько я понимаю сейчас java это делает на порядок хуже чем нормальный программист вручную на C++.

R>Почему вы так думаете?

Потому что вижу что тот же GUI на яве где как раз используются кучи подобных мелких объектов шустрее не стал.

FR>>Тем более на C++ все гарантированно а на java может быть разместит а может и нет, гарантий никаких.

R>Гарантий, конечно, никаких, ведь при условии динамической компиляции выделение памяти на куче может быть через некоторое время сконвертировано в выделение на стеке.

Угу а на C++ железно будет на стеке и будет и шустрее и надежнее (относительно NULL и освобождения ресурсов).
Re[16]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 31.08.07 10:20
Оценка:
Здравствуйте, eao197, Вы писали:

E>
E>class Demo {
E>    static public void main( String[] args )
E>    {
E>        StringBuffer buf = findAppropriateBuffer();
E>        for( int i = 0; i != args.length; ++i )
E>            buf.append( args[ i ] );
E>        System.out.println( buf );
E>    }

E>    static private StringBuffer findAppropriateBuffer()
E>    {
E>        return null;
E>    }
E>}
E>


И что? buf явно проинициализирован. Тот, кто не прочитал спецификацию на возвращаемое значение — сам дурак.
Этот код точно так-же пишется на С/С++, только он выкинет не exception, а core dump.

E>ЗЫ Теперь понятно, почему тебе SymADE&SOP так понравился... ты просто не писал никогда сложных программ, не участвовал в сложных проектах.


В SymADE для отслеживания нулевых указателей и гарантии, что не будет NullPointerException нужно всего-то написать плагин к компилятору, что делается одним человеком за пару месяцев (и наверняка будет написан уже до того, как большинству он понадобится). В Java для этого нужно менять синтаксис языка (JSR-308), и переписывать все средства программирования, от javac до Eclipse. Это займёт несколько лет минимум, и будет сделано не так, как нужно для конкретных проектов — как и произошло с assert, enum, generic types.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[16]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 31.08.07 10:21
Оценка:
Здравствуйте, FR, Вы писали:

FR>Угу, имеет значение совсем другое. Насколько я понимаю в java любому объекту можно присвоить null. В С++ нет. И соответственно число ошибок обращения по нулевому указателю должно быть меньше. Ну и тот же RAII над которым так любят посмеятся поклоники манджед сред тоже имеет значение.


Объекту вообще нельзя присвоить null. Его можно присвоить только ссылке на объект. Точно так-же, как в C++.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[13]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 31.08.07 10:23
Оценка: :)
Здравствуйте, rsn81, Вы писали:

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


FR>>Насколько я понимаю сейчас java это делает на порядок хуже чем нормальный программист вручную на C++.

R>Почему вы так думаете?

Потому, что в java нельзя передать ссылку на объект в стеке в хип или другой тред. А в C++ можно. То есть C++ может больше.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[17]: Вот я не понимаю...
От: FR  
Дата: 31.08.07 10:49
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Объекту вообще нельзя присвоить null. Его можно присвоить только ссылке на объект. Точно так-же, как в C++.


В С++ ссылке присвоить NULL без хаков затруднительно
Но дело не в этом а в том что в C++ есть не только ссылочные объекты.
Re[18]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 31.08.07 11:07
Оценка:
Здравствуйте, FR, Вы писали:

M>>Объекту вообще нельзя присвоить null. Его можно присвоить только ссылке на объект. Точно так-же, как в C++.


FR>В С++ ссылке присвоить NULL без хаков затруднительно


Не путай, то, что слова одинаковые, не означает одинакового смысла. В яве ссылка соответствует C-шному указателю.

FR>Но дело не в этом а в том что в C++ есть не только ссылочные объекты.


На автоматических переменных это никак не сказывается. Все локальные переменные должны быть проинициализированы, а проинициализированы ссылкой на объект в хипе, или созданы на стеке — имеет отношение только к скорости работы (кстати, аллокатор в нынешних явах — для каждого треда отдельный, и в виду heap compaction, затраты на него не превышают пары инструкций процессора).
Большее количество проблем с null в чём-то другом. Может в том, что все объекты наследуются от одного класса, или ещё в чём-то, но не в автоматических переменных — с ними контроль более жёсткий, чем в C++.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[17]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 31.08.07 13:23
Оценка:
Здравствуйте, mkizub, Вы писали:

M>И что? buf явно проинициализирован. Тот, кто не прочитал спецификацию на возвращаемое значение — сам дурак.

M>Этот код точно так-же пишется на С/С++, только он выкинет не exception, а core dump.

Подучили бы C++ прежде чем такие заявления делать. В C++ можно возвращать объекты по значению. В этом случае NULL объекту вообще нельзя будет присвоить.

А в Java -- пожалуйста. И шибко умный компилятор Java может только проверить, что переменная-ссылка получила значение, но какое это значение компилятор Java понять уже не может. А вот компилятор Nice -- может.

Кроме того, это пример явно демонстрирует некорректность вашего категоричного утверждения:

Ошибки NullPointerException возникают исключительно по причине передачи null в качестве аргумента метода, и null ссылки в полях классов.



SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[19]: Вот я не понимаю...
От: Стэн http://stanonwork.blogspot.com/
Дата: 31.08.07 15:56
Оценка:
Здравствуйте, mkizub, Вы писали:

M>Большее количество проблем с null в чём-то другом. Может в том, что все объекты наследуются от одного класса, или ещё в чём-то, но не в автоматических переменных — с ними контроль более жёсткий, чем в C++.


А как объяснить тот факт, что способ создания объектов в Delphi похож на то, что в Java, и там тоже большое кол-во проблем с null (nil)?
И как влияет на это общий базовый класс?
Re[20]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 31.08.07 16:15
Оценка:
Здравствуйте, Стэн, Вы писали:

С>А как объяснить тот факт, что способ создания объектов в Delphi похож на то, что в Java, и там тоже большое кол-во проблем с null (nil)?


Да, что-то общее есть. И другая закономерность есть — практически все люди, евшие огурцы — уже померли или вскоре помрут. Тоже загадка...

С>И как влияет на это общий базовый класс?


Это мне так почудилось. После дальнейших размышлений — от этой идеи я отказался. Появилась другая — в С++ нет (небыло долгое время, и сейчас нет, если выключить RTTI) безопасного способа upcasting-а, легче определение и код для невиртуальных методов — как результат, в нём меньше шаманят с полиморфизмом, используют другие приёмы проектирования. А полиморфизм через ссылки/указатели и может быть только реализован, то есть сама структура языка меньше располагает к использованию указателей вообще, и как следствие — NULL в частности.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[21]: Вот я не понимаю...
От: Константин Л.  
Дата: 31.08.07 20:28
Оценка:
Здравствуйте, mkizub, Вы писали:

[]

M>Это мне так почудилось. После дальнейших размышлений — от этой идеи я отказался. Появилась другая — в С++ нет (небыло долгое время, и сейчас нет, если выключить RTTI) безопасного способа upcasting-а, легче определение и код для невиртуальных методов — как результат, в нём меньше шаманят с полиморфизмом, используют другие приёмы проектирования. А полиморфизм через ссылки/указатели и может быть только реализован, то есть сама структура языка меньше располагает к использованию указателей вообще, и как следствие — NULL в частности.


Прости, но ты пишешь ерунду.

пс: полиморфизм использую чуть-ли не на каждом шагу, но вот upcasting'а нету нигде (за исключением комовского QI).
Re[12]: Вот я не понимаю...
От: MatFiz Россия  
Дата: 01.09.07 00:53
Оценка:
Здравствуйте, EvilChild, Вы писали:

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


EC>С какого перепугу из качественности кода следует его unmaintainability?

EC>Maintainability как раз главный показатель качества.
EC>Оно перпендикулярно усилиям потраченным на написание.

Элементарная логика. Следи за руками.
Maintainable ==> качественный
тогда
Некачественный ==> Unmaintailable.
How are YOU doin'?
Re[13]: Вот я не понимаю...
От: EvilChild Ниоткуда  
Дата: 01.09.07 07:54
Оценка:
Здравствуйте, MatFiz, Вы писали:

MF>Maintainable ==> качественный

MF>тогда
MF>Некачественный ==> Unmaintailable.
Это твоё сообщение противоречит твоему предыдущему.
Я именно это и утверждал.
now playing: Psidream — Magrathea
Re[14]: Вот я не понимаю...
От: MatFiz Россия  
Дата: 01.09.07 08:01
Оценка: +1 -3
Здравствуйте, EvilChild, Вы писали:

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


MF>>Maintainable ==> качественный

MF>>тогда
MF>>Некачественный ==> Unmaintailable.
EC>Это твоё сообщение противоречит твоему предыдущему.
EC>Я именно это и утверждал.

Я утверждаю только то, что код, написанный с трудом,- некачественный, ибо и поддерживать его придется с трудом.
How are YOU doin'?
Re[12]: Вот я не понимаю...
От: Klapaucius  
Дата: 01.09.07 12:04
Оценка: +1 :)
Здравствуйте, eao197, Вы писали:

FR>>>Нифига списки вполне сопоставимые http://www.digitalmars.com/d/changelog.html и по ICE тоже. Похоже на самом деле ошибки больше зависят от квалификации пишущих а не от используемого языка.

K>>Надо учитывать, что компиляторы Scala и D по сложности, мягко говоря, сильно отличаются.

E>Ой-ли.


Т.е. это не надо учитывать? Вы утверждаете, что можно сравнивать языки по багтрекерам двух разных проектов, которые писали разные люди, разное время и на разных языках? Методикой не поделитесь, очень интересно.
... << RSDN@Home 1.2.0 alpha rev. 726>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[13]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 01.09.07 17:55
Оценка: +1
Здравствуйте, Klapaucius, Вы писали:

FR>>>>Нифига списки вполне сопоставимые http://www.digitalmars.com/d/changelog.html и по ICE тоже. Похоже на самом деле ошибки больше зависят от квалификации пишущих а не от используемого языка.

K>>>Надо учитывать, что компиляторы Scala и D по сложности, мягко говоря, сильно отличаются.

E>>Ой-ли.


K>Т.е. это не надо учитывать? Вы утверждаете, что можно сравнивать языки по багтрекерам двух разных проектов, которые писали разные люди, разное время и на разных языках? Методикой не поделитесь, очень интересно.


Мое "ой-ли" относилось к вашему утверждению о том, что сложность компиляторов Scala и D слишком различаются. По моему мнению, D вовсе не проще Scala, скорее наоборот. Соответственно, и сложность компиляторов Scala и D не слишком различаются.

К тому же багтрекер, как ни крути, очень объективный показатель качества программного продукта (ну или разработчиков). Более объективный, может быть, чем мифические человеко-месяцы или KLOC-и.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Вот я не понимаю...
От: minorlogic Украина  
Дата: 02.09.07 10:05
Оценка:
Здравствуйте, mkizub, Вы писали:

M> Появилась другая — в С++ нет (небыло долгое время, и сейчас нет, если выключить RTTI) безопасного способа upcasting-а, легче определение и код для невиртуальных методов — как результат, в нём меньше шаманят с полиморфизмом, используют другие приёмы проектирования.


Не понимаю логики , как связан upcasting с использованием полиморфизма? Вообщет хороший стиль подразумевает минимизацию upcasting?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[22]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 02.09.07 12:30
Оценка: :))
Здравствуйте, minorlogic, Вы писали:

M>Не понимаю логики , как связан upcasting с использованием полиморфизма?


Ты вынужден искать такие алгоритмы, так проектировать программу, чтоб тип данных был известен во время компиляции точно. Как следствие, тебе нужно меньше ссылок (потому как через ссылки полиморфизм и реализуется), и получается меньше null-евых ошибок.

M>Вообщет хороший стиль подразумевает минимизацию upcasting?


В C++ — наверняка.

ЗЫ В любом случае, это просто предположение.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[14]: Вот я не понимаю...
От: Left2 Украина  
Дата: 03.09.07 08:10
Оценка: +1
E>К тому же багтрекер, как ни крути, очень объективный показатель качества программного продукта (ну или разработчиков). Более объективный, может быть, чем мифические человеко-месяцы или KLOC-и.

Не сказал бы что слишком обьективный. Но есть определённая корреляция — как правило, чем БОЛЬШЕ записей в багтреккере (всех вместе — открытых и закрытых), тем ВЫШЕ качество программного продукта.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.