|
|
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Kakoi globalinoe razlicie mejdu C++ i Java. I znaiu sledscie: Java: 1. Net ukazatelei. 2. Suscesvuiet poniatie Garbage Colector, JVM sledit za osbojdeniem pamiati pri vihodi iz programi 3. Bolee lehhkii dlia izucenia iazik 4. Orientirova na Internet 5. Tipizirovanii iazik programirovania, na moment compiliatii vse peremenie i virajania imeiut tip. 4to esti u C++ i netu u Java. Kakie sujestvuit ije razlicia mejdu atimi dvumea iazikami ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 16:24 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
1. templates - отсутствие этого в java делает язык игрушечным и малопригодным. 2. скорость работы приложений. поэтому место java на мобилах и в скриптах. Ну а С++ вечен поэтому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 17:08 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
-управление преобразованиями типов -нет друзей, т.е. нет например возможности запрета наследования класса -вызов перекрытого метода -отсутствие работы с кучей, переопределение операторов new и delete -отсутсвие префикса наследования классов virtual -(кажется) отсутсвие встраиваемых функций и методов -отсутсвие упаковки классов при наследовании -я, чесно гря, ничего не слышал о статической инициализации переменных всего чичаз и не упомнишь. в с++ каждый день открываю до сих пор что-то новое. ЗЫЖ звиняйте за глупый вопрос, а typedef есть в яве? плюс каковы там правила поиска имен в плане различных областей видимости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 11:14 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
автор-нет друзей, т.е. нет например возможности запрета наследования класса -вызов перекрытого метода -отсутсвие префикса наследования классов virtual -(кажется) отсутсвие встраиваемых функций и методов -я, чесно гря, ничего не слышал о статической инициализации переменных может я и гоню, но это в яве есть... хотя спорить не буду, последний раз писал серъёзное 2 года назад. надо будет почитать... А ещё есть такая прикольная штука как сервлеты - удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 11:44 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
ну значит мои данные устарели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 12:59 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Глобально - так: С++ - рулез, Java - отстой. Это если не вдаваться в подробности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 16:01 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
а вот и врете! нету в Яве статической инициализации переменных. Нет, канеш там можно определить статический член класса, да и любой другой и задать для него значение. Но это не статическая а динамическая инициализация. Потому что классы в Яве можно распологать только в куче. Или я не те книжки читал. Статическая инициализация в С++ (чаще это обнуление) происходит до динамической, хотя имхо она происходит еще на этапе компиляции, когда статические данные связываются со своими значениями и просто размещаются в сегменте данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.12.2004, 17:35 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
1. Net ukazatelei. Напротив, там *только* указатели либо атомарные типы. На объекты можно ссылаться только с помощью указателей. 5. Tipizirovanii iazik programirovania, na moment compiliatii vse peremenie i virajania imeiut tip. Вот с этим промах. В связи с отсутствием шаблонов чересчур часто используется Object и downcasting. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 10:57 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
MasterZivГлобально - так: С++ - рулез, Java - отстой. Это если не вдаваться в подробности. Только у нас почему-то всех С++идов на Джавистов и Дотнетчиков переучивают. Интересно, с чего бы это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:00 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
dwlа вот и врете! нету в Яве статической инициализации переменных. Нет, канеш там можно определить статический член класса, да и любой другой и задать для него значение. Но это не статическая а динамическая инициализация. Потому что классы в Яве можно распологать только в куче. Или я не те книжки читал. Статическая инициализация в С++ (чаще это обнуление) происходит до динамической, хотя имхо она происходит еще на этапе компиляции, когда статические данные связываются со своими значениями и просто размещаются в сегменте данных. Есть там статическая инициализация. Код: 1. 2. 3. 4. a и b инициализируются во время загрузки класса в память и в дальнейшем изменить их нельзя. Чтобы их можно было изменить, надо убрать final. Они имеют статическую область видимости, то есть они одни на весь класс. Чего еще надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:07 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич MasterZivГлобально - так: С++ - рулез, Java - отстой. Это если не вдаваться в подробности. Только у нас почему-то всех С++идов на Джавистов и Дотнетчиков переучивают. Интересно, с чего бы это? Это провокация с целью повышения уровня всемирного отстоя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 11:50 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто провокация с целью повышения уровня всемирного отстоя. 2 my mind чем больше человеку нравится C++, тем меньше он его знает. А вообще, какие копмиляторы C++ на дынный момент актуальны? g++ - для написания консольных программ под уникс-образные ОС хорош, но Win32 GUI на нем не пишут. Borland C++ Builder - отвратная документация, ориентированная на Паскаль. Очень посредственное качество кодогенерации. Нелюбимое дите Борланда, которое они выкинули на помойку. Watcom - RIP Comeau - одно время все восхищались его соответствию т.н Стандарту, приводили результаты онлайновой компиляции как эталон. Но сейчас про него ничего не слышно. MSVC++ 6.0 SP5. Мой любимый компилятор. Но он был выпущен 8 лет назад. MSVC++ 7.0 Занимает уже не первое почетное место в Visual Studio. По ходу повторит судьбу С++ билдера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 12:33 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич a и b инициализируются во время загрузки класса в память и в дальнейшем изменить их нельзя. Чтобы их можно было изменить, надо убрать final. Это не статическая инициализация - это динамическая, т.е. при вызове конструктора класса. А т.к. в Яве классы могут располагаться только в куче, то ни о какой статической инициализации речи быть не может. Статическая инициализация, когда не создается никакого кода, когда эти "константы" известны еще на этапе компиляции и они сразу попадают при линковке в область данных ЕЩЕ до ЗАПУСКА программы. На этом основано несколько приемов программирования С++, правда почти все они связаны с generic programming. ЗЫЖ С++ умирал уже сто раз. Завидую стабильности этих возгласов о его скорой прискорой смерти. ЗЫЖ2 судя по MSVC 2005 микрософт не оставляет компилер с++ без внимания, делая его использование в управляемой среде более удобным. В сравнении языков не вижу смысла. Одни сплошные имхо. причем жутко эмоциональные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 14:49 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
dwl Это не статическая инициализация - это динамическая, т.е. при вызове конструктора класса. А т.к. в Яве классы могут располагаться только в куче, то ни о какой статической инициализации речи быть не может. Статическая инициализация, когда не создается никакого кода, когда эти "константы" известны еще на этапе компиляции и они сразу попадают при линковке в область данных ЕЩЕ до ЗАПУСКА программы. На этом основано несколько приемов программирования С++, правда почти все они связаны с generic programming. Никакого вызова конструктора еще нет. Эти переменные инициализируются, как только класс загружается JVM. Класс загружается в JVM *ДО* любого создания экземпляров этого класса. dwl ЗЫЖ С++ умирал уже сто раз. Завидую стабильности этих возгласов о его скорой прискорой смерти. Это напоминает речи фанатов OS/2. (Чтоб ты так жил, как OS/2 умирает!!!) Чем яростнее фанаты, тем больше сигналов, что не все ладно в датском королевстве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:00 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Сергей ИльичНикакого вызова конструктора еще нет. Эти переменные инициализируются, как только класс загружается JVM. Класс загружается в JVM *ДО* любого создания экземпляров этого класса. еще раз повторю, они известны на этапе компиляции, по сути они равносильный константам, но только обладают областью видимости. Т.е. инициализации как таковой у них нет, в противовес глобальным константам, которые наподобие статичных переменных Явы инициализируются на этапе загрузки до вызова main(). не вижу смысла дальше это обсуждать - на вопрос автору темы ответили. Тему можно и нужно закрывать. Кстати, в добавлении о разнице между Ява и С++. Первый является обычным ООП-языком. С++ же помимо технологий ООП вмещает в себя еще и generic programming. Приемы последнего ПРИ УМЕЛОМ ИСПОЛЬЗОВАНИИ позволяют вывести разработку приложений на более высокий уровень безопасности типов, чем Ява. Пример - контейнеры. Для того чтобы их реализовать в Яве придется прибегать к преобразованиям типов или полиморфизму( если разрабатывать контейнер под известную иерархию классов ). Однако все это откладывает проверку типов с этапа компиляции на этап выполнения. И чаще требует от разработчика большего опыта, нежели использование контейнеров С++. Возможность generic programming вместе с приемаи ООП, позволяет добиться еще большего. Например, создания некоторых возможностей языка, о которых не знали во время его разработки. Например, мультиметоды, делегаты, проперти. Язык достаточно прозрачен в реализации этих возможностей. Так, например, сделать это в Яве без изменения самого языка не представляется возможным. Тоже кстати можно сказать о сборщике мусора. Использование умных указателей выполняет ту же функцию, за той лишь разницей, что все в руках программиста. С++, как и любой другой ЯП, как и любая другая программа не идальны и не лишены минусов. Я не говорю о том, что он лучший. Или о том что все остальные языки саксь, а те кто их используют - тупицы. Я так даже не думаю. Фишка в том, что чем опытнее специалист становится в том или ином вопросе, тем больше он врастает в систему, которую использует. Поэтому естесственной реакцией является протест и скептицизм по отношение к другому. Кстати именно поэтому С++ пришлось делать во многом совместимым с С, и из-за этого он проиграл сильно в модульности. Как и теперь, нельзя сказать - то что происходило в С++ никак не повлияло на другие языки. повлияло! вот вам "небольшая" разница между явой и с++ с моей точки зрения, т.е. в сочетании нескольких приемов программирования. А дальнейший разговор, в плане плохо это или хорошо, будет напоминать спор музыкальных фанатов. Поклонники поп-музыки будут говорить о небывалой популярности своего направления, и страшно кричать о непонятности и немелодичности других направлений. А другие будут им вторить. во флейме никогда нету смысла. сори за многословность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:37 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Да... господа и дамы, ну вы конечно дали... А на самом деле Java - полный отстой но по другой причине. 1. Там нет явных указателей! Они все подразумеваемые. 2. И еще но этом гребаном языке ничего нельзя сделать не создав класс. Вы представляете сколько нужно потратить времени чтобы написать обычную процедурную программку? Просто кошмар. 3. А еще, еще, знаете как они называют coredump? Они это называют NullPointerException. Ха-ха-ха 4. И вообще идиотский язык, который сразу же падает при попытке переполнения массива... Нет чтобы как в нормальном сишнике, взять да и упасть на попытке доступа к уже освобожденному объекту, чтобы потом хороший программист имел много приятных часов затраченных на ослеживаение того, чья же всетаки функция запорола объект и не вычистила его из списка. 5. Но особенно меня раздражают люди которые используют алгоритмы из STL. Это же каким надо быть уродом, чтобы лишать себя удовольствия в очередной раз написать qsort, поотлаживать его... Вобщем я в шоке... каждый раз когда гляжу на себя в зеркало - думаю. Как же хорошо, что я программирую на C++ а не на Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:47 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
- нет друзей, т.е. нет например возможности запрета наследования класса а как же final классы? Шаблоны - уже появились вроде Насчет статики тодже не совсем верно - у меня может быть статический член класса, я его могу использовать, не создав еще ни одного экземпляра класса, конструктор при этом не вызывается (он может вообще недоступным быть), а только блоки статической инициализации. И наконец, Жабу тоже все время хоронят, но она не скоро умрет - это основной общий признак с C++ {после скобочек фигурных конечно} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 15:59 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Borland C++ Builder - отвратная документация, ориентированная на Паскаль. Нелюбимое дите Борланда, которое они выкинули на помойку. Документация видимо имеется в виду по VCL-ю. А так вроде бы его хвалят. И на счет нелюбимого дитя - нелюбимое - это BCB, а сам компилятор, я думаю, никто не собирается выкидывать. Я его сам не использую, но говорят, что он у них Comeau - одно время все восхищались его соответствию т.н Стандарту, приводили результаты онлайновой компиляции как эталон. Но сейчас про него ничего не слышно. Кстати, я так понял, его у нас в России писали, хотя я могу и ошибаться. Статья была (лирического содержания) о том, как это происходило. Без указания , естественно, бурж. фирмы, на которую они работали. Но я так понял, что это оно и было. Хотя это только догадки, конечно. MSVC++ 7.0 Занимает уже не первое почетное место в Visual Studio. По ходу повторит судьбу С++ билдера. Сомневаюсь, что повторит. Его вроде бы тоже хвалять, что странно для компиляторов от MS (речь о соответствии стандарту, до которого MSVC50 и 60 не дотягивались). Еще я лично могу порекомендовать компилятор от Intel. Он встраивается в ту же Visual Studio. Работает хотя и заметно медленнее MS-овского (раза в три визуально), но гораздо лучше соответствует стандарту, не падает (как MS-овский иногда) и может генерировать код под Itanium. Мне он понравился очень хорошей диагностикой и действительно умными предупреждениями, которых MS не выдавал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 17:13 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
2Сергей Ильич ---Borland C++ Builder - отвратная документация, ориентированная на Паскаль. вы ей просто пользоваться не умеете --Очень посредственное качество кодогенерации. кого это сейчас волнует ? --Нелюбимое дите Борланда, которое они выкинули на помойку. у вас неверные сведения. читайте описание Borland Studio 2005 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2004, 19:55 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
dwl Возможность generic programming вместе с приемаи ООП, позволяет добиться еще большего. Например, создания некоторых возможностей языка, о которых не знали во время его разработки. Например, мультиметоды, делегаты, проперти. Язык достаточно прозрачен в реализации этих возможностей. Так, например, сделать это в Яве без изменения самого языка не представляется возможным. Тоже кстати можно сказать о сборщике мусора. Использование умных указателей выполняет ту же функцию, за той лишь разницей, что все в руках программиста. Шаблоны не могут быть скомпилированы в случае, если декларация класса лежит в одном файле, а реализация - в другом. Объединять их, чтобы персобирать весь проект в случае добавления одной строчки, я не собираюсь. Если тебе нравится химичить, возьми какой нибудь язык функционального программирования (Lisp, Ocaml, Haskell ...) и поразись, насколько там все это круче. mardiyan 1. Там нет явных указателей! Они все подразумеваемые. Обычные там указатели. Только они безразмерные. Если бы они были размерными (некоторое смещение), то это бы бессмысленно, поскольку уборщик мусора имеет обыкновение периодически дефрагментировать кучу. Поэтому объекты периодически перемещаются по памяти. Что бы тебе дало число, которое само по себе изменяется? Кстати в С++ для того, чтобы переместить объект, надо использовать конструктор копирования и placement new. memmove не катит. mardiyan 2. И еще но этом гребаном языке ничего нельзя сделать не создав класс. Вы представляете сколько нужно потратить времени чтобы написать обычную процедурную программку? Просто кошмар. Гы. А сколько времени надо потратить в C++, чтобы состыковать несколько модулей от разных производителей, в нетривиальной программке? mardiyan 3. А еще, еще, знаете как они называют coredump? Они это называют NullPointerException. Ха-ха-ха Странная проблема. Написать в javadoc "cannot be null" и спать спокойно. А также возвращать вместо нулей коллекции нулевого размера. mardiyan 4. И вообще идиотский язык, который сразу же падает при попытке переполнения массива... Нет чтобы как в нормальном сишнике, взять да и упасть на попытке доступа к уже освобожденному объекту, чтобы потом хороший программист имел много приятных часов затраченных на ослеживаение того, чья же всетаки функция запорола объект и не вычистила его из списка. Это шутка? mardiyan 5. Но особенно меня раздражают люди которые используют алгоритмы из STL. Это же каким надо быть уродом, чтобы лишать себя удовольствия в очередной раз написать qsort, поотлаживать его... Не понял. Collections.sort() может отсортировать любую последовательность, реализующую интерфейс List, если элементы реализуют интерфейс Comparable. Lepsik ---Borland C++ Builder - отвратная документация, ориентированная на Паскаль. вы ей просто пользоваться не умеете Почему документация на незнакомом мне языке? Ну не знаю я Паскаль... Мне нужен компилятор С++... В Java документация - это вообще результат работы javadoc, натравленной на исходный код Java. И ничего, кушать можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 09:40 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
gda Для Вас этот вопрос философский или имеет какое-то практическое значение? Если философский - то пардон, я тут ничего не могу сказать, кроме того что в этом случае вопрос целесообразнее перенести в пивную. А если ближе к делу то язык, сам по себе, - это вообще пшик, ничто. Так, вершина айсберга. С++, Java, Pascal - одна батва, мелкие стилистические отличия. Вся разница в библиотеках. А в Java и С++ они совершенно разные. Перечислить нельзя - просто все другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 12:09 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Шаблоны не могут быть скомпилированы в случае, если декларация класса лежит в одном файле, а реализация - в другом. Объединять их, чтобы персобирать весь проект в случае добавления одной строчки, я не собираюсь. 1)у вас неверные сведения. не те книжки читали. 2)Химичить? Т.е. для вас написать массив нетипизированных укзателей проще? а потом мучатся с кучей преобразований типов. а мне проще так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. что ж тут такого трудного? и главное строгая проверка типов. И все на этапе компиляции. Напишите контейнер на Яве, КОТОРОМУ БЫЛО БЫ ПОФИГ какой тип хранить. и вам сможете сделать только две вещи: 1) взять какой-нить аналог variant и писать массив для него. НУЛЕВАЯ ПРОВЕРКА ТИПОВ 2) взять какой-нить класс от которого наследуют все остальные классы вашей проги. Но тогда для вызова неполиморфных методов вам придется проверять на тип и вызвать при правильном преобразовании типа нужный метод. ХА. но это все делается в рантайм. Шаблоны лучше и это очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 15:22 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
dwl Сергей Ильич Шаблоны не могут быть скомпилированы в случае, если декларация класса лежит в одном файле, а реализация - в другом. Объединять их, чтобы персобирать весь проект в случае добавления одной строчки, я не собираюсь. 1)у вас неверные сведения. не те книжки читали. MSVC++ не позволяет разделять декларацию и имплементацию шаблонов. В g++ AFAIK та же история. А это основные компиляторы С++. [quot dwl] 2)Химичить? Т.е. для вас написать массив нетипизированных укзателей проще? а потом мучатся с кучей преобразований типов. а мне проще так <.. SKIP ..> 1) взять какой-нить аналог variant и писать массив для него. НУЛЕВАЯ ПРОВЕРКА ТИПОВ 2) взять какой-нить класс от которого наследуют все остальные классы вашей проги. Но тогда для вызова неполиморфных методов вам придется проверять на тип и вызвать при правильном преобразовании типа нужный метод. ХА. но это все делается в рантайм. Шаблоны лучше и это очевидно. [/quote] В IDEA достаточно набрать List list = obj.method(); А потом itco<tab> И среда сама сформирует цикл для итерации по коллекции, дедуцируя все чего надо. Гораздо проще найти 10 рунтаймовых ошибок в Java, чем разобрать одну ошибку с STL, которая приводит к появлению 10+ килобайт error-сообщений с развернутыми шаблонами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 15:54 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
у страха глаза велики - вы излишне все преувеличивайте, возводя это в ранг дефакто. я лично не испытаваю никаких сложностей с использованием шаблонов. у меня ни разу не было 10 килобайтных ошибок. более того сообщениями об ошибках я могу управлять при помощи тех же шалонов делая их более понятным и краткими. нежелание разобраться с тем как использовать generic programming приводит к раздуванию из мухи слона. Еще раз говорю, статическая проверка типов, которую дают шаблоны гораздо удобней кучи преобразований типов. и не просто удобней, но и безопасней с точки зрения разработки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:01 |
|
||
|
C++ & Java
|
|||
|---|---|---|---|
|
#18+
- насчет "среда сама сформирует" - не все среда может сама сформировать. Пусть вам среда "сама напишет" алгоритм удаления (недавно на форуме написал) из строки пробелов заключенных в двойные кавычки. это так фигня. - а может ваща "среда" написать мультиметод? если вы канчно знаете что это такое. - а может ваша суперсреда спрограммирует за вас анонимные методы? - в Яве насколько я знаю нету делегатов. Что нужно нажать в вашей среде чтобы они там появились? список можно продолжать долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2004, 16:07 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32843993&tid=2029679]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
187ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 568ms |

| 0 / 0 |
