Re[8]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.08.07 17:09
Оценка: -1
Здравствуйте, EvilChild, Вы писали:

E>>В одной раз забабахали утверждения, что managed-языки и ФП -- рулез.

EC>Т.е. ты предполагаешь, что если бы писали на unmanaged и без ФП, то список исправленных ошибок был короче?



Просто по моим субъективным впечатлениям, Java программы падают от null-евых ссылок чаще, чем C++ные. Пишут их, правда, разные люди. Но, вполне возможно, C++ требует более тчательного подхода к разработке. А Java позволяет писать тяп-ляп. Ну и результат такой же


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Вот я не понимаю...
От: IT Россия linq2db.com
Дата: 30.08.07 17:10
Оценка: 1 (1)
Здравствуйте, eao197, Вы писали:

E>В одной раз забабахали утверждения, что managed-языки и ФП -- рулез.


Детский сад, штаны на лямках. Я ведь я тебя считал почти взрослым человеком.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Вот я не понимаю...
От: EvilChild Ниоткуда  
Дата: 30.08.07 17:51
Оценка:
Здравствуйте, eao197, Вы писали:

E>Просто по моим субъективным впечатлениям, Java программы падают от null-евых ссылок чаще, чем C++ные. Пишут их, правда, разные люди. Но, вполне возможно, C++ требует более тчательного подхода к разработке. А Java позволяет писать тяп-ляп. Ну и результат такой же

Требовать может и требует, но на нём точно так же пишут как придётся.
Я видел много кода, что на C++, что на VB или C# и не заметил, чтобы качество плюсового было в среднем лучше.
Качественный пишется всегда с трудом на любом языке.
now playing: Architect — Belgian Connection
Re[9]: Вот я не понимаю...
От: Стэн http://stanonwork.blogspot.com/
Дата: 30.08.07 17:56
Оценка:
Здравствуйте, eao197, Вы писали:

E>Просто по моим субъективным впечатлениям, Java программы падают от null-евых ссылок чаще, чем C++ные. Пишут их, правда, разные люди. Но, вполне возможно, C++ требует более тчательного подхода к разработке. А Java позволяет писать тяп-ляп. Ну и результат такой же


Скорее дел в том, что в C++ есть стековые объекты, которые создаются автоматически, а в Java все объекты должны создаваться явно в куче. Кстати, в Delphi — таже ситуация и те же проблемы.
Re[9]: Вот я не понимаю...
От: FR  
Дата: 30.08.07 17:57
Оценка:
Здравствуйте, Klapaucius, Вы писали:

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


EC>>Т.е. ты предполагаешь, что если бы писали на unmanaged и без ФП, то список исправленных ошибок был короче?


K>Конечно короче. Вот список неисправленных был бы намнооого длиннее.


Нифига списки вполне сопоставимые http://www.digitalmars.com/d/changelog.html и по ICE тоже. Похоже на самом деле ошибки больше зависят от квалификации пишущих а не от используемого языка.
Re[10]: Вот я не понимаю...
От: Klapaucius  
Дата: 30.08.07 18:06
Оценка: +1
Здравствуйте, FR, Вы писали:

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


Надо учитывать, что компиляторы Scala и D по сложности, мягко говоря, сильно отличаются.
... << 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[9]: Вот я не понимаю...
От: EvilChild Ниоткуда  
Дата: 30.08.07 18:08
Оценка:
Здравствуйте, Klapaucius, Вы писали:

EC>>Т.е. ты предполагаешь, что если бы писали на unmanaged и без ФП, то список исправленных ошибок был короче?


K>Конечно короче. Вот список неисправленных был бы намнооого длиннее.


Об этом, собственно и речь.
now playing: Implex — PI
Re[11]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.08.07 18:11
Оценка: +1 -1
Здравствуйте, Klapaucius, Вы писали:

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


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


Ой-ли. Тем более, что человеко-лет (мифических, естественно), в разработку Scala было вложенно больше, чем в D.
К тому же DMD написан на C++.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.08.07 18:14
Оценка: :))
Здравствуйте, IT, Вы писали:

E>>В одной раз забабахали утверждения, что managed-языки и ФП -- рулез.


IT>Детский сад, штаны на лямках. Я ведь я тебя считал почти взрослым человеком.


Я просто очень большой ребенок А любимые игрушки -- велосипеды


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Вот я не понимаю...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 30.08.07 18:52
Оценка:
Здравствуйте, Стэн, Вы писали:

С>Скорее дел в том, что в C++ есть стековые объекты, которые создаются автоматически, а в Java все объекты должны создаваться явно в куче. Кстати, в Delphi — таже ситуация и те же проблемы.

Вы не правы. ЯП Java исключает размещение объектов на стеке неспроста: внутри JVM [кажется, с версии Java SE 6 (Mustang)] встроен т.н. escape-анализ, который делает это действие за программиста. А с учетом того, что это делается в паре с динамической компиляцией JIT-ом, то... скорее именно C++ здесь аутсайдер.
Re[11]: Вот я не понимаю...
От: Стэн http://stanonwork.blogspot.com/
Дата: 30.08.07 19:00
Оценка:
Здравствуйте, rsn81, Вы писали:

С>>Скорее дел в том, что в C++ есть стековые объекты, которые создаются автоматически, а в Java все объекты должны создаваться явно в куче. Кстати, в Delphi — таже ситуация и те же проблемы.

R>Вы не правы. ЯП Java исключает размещение объектов на стеке неспроста: внутри JVM [кажется, с версии Java SE 6 (Mustang)] встроен т.н. escape-анализ, который делает это действие за программиста. А с учетом того, что это делается в паре с динамической компиляцией JIT-ом, то... скорее именно C++ здесь аутсайдер.

Не прав в чем? Например, что в Delphi одна из самых распространенных ошибок Access Violation (по нулевому адресу)? И это именно из-за того, что каждый объект должен создаваться динамически во время работы программы и на этапе компиляции нет возможности проверить — будет ли создан объект или нет.
Про Java у меня меньше знаний, но вопрос: если у класса в Java два конструктора с параметрами, то вызов какого из них будет сделан за программиста?
Re[10]: Вот я не понимаю...
От: MatFiz Россия  
Дата: 30.08.07 19:17
Оценка: -1
Здравствуйте, EvilChild, Вы писали:

EC>Качественный пишется всегда с трудом на любом языке.


Напомнило девиз настоящего программёра:

If it was hard to write, it should be hard to understand


Если качественный код пишется с трудом, код некачественный, потому что он не maintainable.
How are YOU doin'?
Re[12]: Вот я не понимаю...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 30.08.07 19:25
Оценка:
Здравствуйте, Стэн, Вы писали:

С>Не прав в чем? Например, что в Delphi одна из самых распространенных ошибок Access Violation (по нулевому адресу)? И это именно из-за того, что каждый объект должен создаваться динамически во время работы программы и на этапе компиляции нет возможности проверить — будет ли создан объект или нет.

А где это можно достоверно определить на этапе компиляции? Скажем, в Java/.NET конструктор может пробросить исключение, это единственный доступный конструктору способ "отказаться от создания объекта". Или я не о том?

С>Про Java у меня меньше знаний, но вопрос: если у класса в Java два конструктора с параметрами, то вызов какого из них будет сделан за программиста?

Вопрос не понял. Отвечаю, как понял: никакого.
Re[11]: Вот я не понимаю...
От: EvilChild Ниоткуда  
Дата: 30.08.07 19:33
Оценка:
Здравствуйте, MatFiz, Вы писали:

MF>Если качественный код пишется с трудом, код некачественный, потому что он не maintainable.

С какого перепугу из качественности кода следует его unmaintainability?
Maintainability как раз главный показатель качества.
Оно перпендикулярно усилиям потраченным на написание.
now playing: Pornbugs — Freaky Persons
Re[13]: Вот я не понимаю...
От: Стэн http://stanonwork.blogspot.com/
Дата: 30.08.07 19:35
Оценка:
Здравствуйте, rsn81, Вы писали:

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


С>>Не прав в чем? Например, что в Delphi одна из самых распространенных ошибок Access Violation (по нулевому адресу)? И это именно из-за того, что каждый объект должен создаваться динамически во время работы программы и на этапе компиляции нет возможности проверить — будет ли создан объект или нет.

R>А где это можно достоверно определить на этапе компиляции? Скажем, в Java/.NET конструктор может пробросить исключение, это единственный доступный конструктору способ "отказаться от создания объекта". Или я не о том?

С>>Про Java у меня меньше знаний, но вопрос: если у класса в Java два конструктора с параметрами, то вызов какого из них будет сделан за программиста?

R>Вопрос не понял. Отвечаю, как понял: никакого.

Все началось вот с этого:
>>> Java программы падают от null-евых ссылок чаще, чем C++ные
Так вот, в C++ если переменная объявлена как объект, а не как указатель на объект, то компилятор гарантирует, что объект будет инициализирован. Т.е. во время работы программы будет вызван соответствующий конструктор. Если программист указал параметры неправильного типа, либо нет подходящего конструктора, то будет ошибка времени компиляции. А еще у C++-ников есть привычка все указатели на объект заключать в какой-нибудь smart_ptr...
В результете всего получается, что в программах на C++ кол-во указателей на объекты гараздо меньше чем на Java, а за теми, которые есть, следят более пристально... Отсюда и статистика падений по null-ссылкам не в пользу Java...
Re[14]: Вот я не понимаю...
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 30.08.07 20:14
Оценка:
Здравствуйте, Стэн, Вы писали:

Это понятно, я выше просто указал вам на то, что в Java объекты вовсе необязательно создаются только на куче, как вы предположили.
Re[14]: Вот я не понимаю...
От: mkizub Литва http://symade.tigris.org
Дата: 30.08.07 22:17
Оценка: :)
Здравствуйте, Стэн, Вы писали:

С>Все началось вот с этого:

>>>> Java программы падают от null-евых ссылок чаще, чем C++ные
С>Так вот, в C++ если переменная объявлена как объект, а не как указатель на объект, то компилятор гарантирует, что объект будет инициализирован. Т.е. во время работы программы будет вызван соответствующий конструктор. Если программист указал параметры неправильного типа, либо нет подходящего конструктора, то будет ошибка времени компиляции. А еще у C++-ников есть привычка все указатели на объект заключать в какой-нибудь smart_ptr...
С>В результете всего получается, что в программах на C++ кол-во указателей на объекты гараздо меньше чем на Java, а за теми, которые есть, следят более пристально... Отсюда и статистика падений по null-ссылкам не в пользу Java...

Вы уж извините, но это полный бред. Никакого отношения к нулевым указателям размещение объектов в хипе или стеке отношения не имеет. И ява точно так-же, как и остальные языки, гарантирует инициализации объекта. Даже более надёжно гарантирует — в виду наличия верификатора кода. К неинициализированной локальной переменной просто не может быть обращения, в отличие от С++, где это запросто, и выдаёт в ответ бодрый мусор.
Ошибки NullPointerException возникают исключительно по причине передачи null в качестве аргумента метода, и null ссылки в полях классов.
SOP & SymADE: http://symade.tigris.org , блог http://mkizub.livejournal.com
Re[15]: Вот я не понимаю...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 31.08.07 04:26
Оценка: +1 :))) :))
Здравствуйте, mkizub, Вы писали:

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


С>>Все началось вот с этого:

>>>>> Java программы падают от null-евых ссылок чаще, чем C++ные
С>>Так вот, в C++ если переменная объявлена как объект, а не как указатель на объект, то компилятор гарантирует, что объект будет инициализирован. Т.е. во время работы программы будет вызван соответствующий конструктор. Если программист указал параметры неправильного типа, либо нет подходящего конструктора, то будет ошибка времени компиляции. А еще у C++-ников есть привычка все указатели на объект заключать в какой-нибудь smart_ptr...
С>>В результете всего получается, что в программах на C++ кол-во указателей на объекты гараздо меньше чем на Java, а за теми, которые есть, следят более пристально... Отсюда и статистика падений по null-ссылкам не в пользу Java...

M>Вы уж извините, но это полный бред. Никакого отношения к нулевым указателям размещение объектов в хипе или стеке отношения не имеет. И ява точно так-же, как и остальные языки, гарантирует инициализации объекта. Даже более надёжно гарантирует — в виду наличия верификатора кода. К неинициализированной локальной переменной просто не может быть обращения, в отличие от С++, где это запросто, и выдаёт в ответ бодрый мусор.

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


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

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


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[15]: Вот я не понимаю...
От: FR  
Дата: 31.08.07 04:56
Оценка: +2
Здравствуйте, mkizub, Вы писали:

M>Вы уж извините, но это полный бред. Никакого отношения к нулевым указателям размещение объектов в хипе или стеке отношения не имеет.


Угу, имеет значение совсем другое. Насколько я понимаю в java любому объекту можно присвоить null. В С++ нет. И соответственно число ошибок обращения по нулевому указателю должно быть меньше. Ну и тот же RAII над которым так любят посмеятся поклоники манджед сред тоже имеет значение.
Re[11]: Вот я не понимаю...
От: FR  
Дата: 31.08.07 05:01
Оценка:
Здравствуйте, rsn81, Вы писали:

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


С>>Скорее дел в том, что в C++ есть стековые объекты, которые создаются автоматически, а в Java все объекты должны создаваться явно в куче. Кстати, в Delphi — таже ситуация и те же проблемы.

R>Вы не правы. ЯП Java исключает размещение объектов на стеке неспроста: внутри JVM [кажется, с версии Java SE 6 (Mustang)] встроен т.н. escape-анализ, который делает это действие за программиста. А с учетом того, что это делается в паре с динамической компиляцией JIT-ом, то... скорее именно C++ здесь аутсайдер.

Насколько я понимаю сейчас java это делает на порядок хуже чем нормальный программист вручную на C++. Тем более на C++ все гарантированно а на java может быть разместит а может и нет, гарантий никаких.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.