Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 5 основных отличий между Java и C++ 
:(
    Опции темы
JUncle
Дата 9.5.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(w1nd @  9.5.2006,  18:20 Найти цитируемый пост)
С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.

А можно подробнее?


Цитата(w1nd @  9.5.2006,  18:20 Найти цитируемый пост)
Это не так, не следует воспринимать буквально слова о сообщениях.

За что купил, за то и продал. smile 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(w1nd @  9.5.2006,  16:20 Найти цитируемый пост)
С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.


Код

class OOProgramm
{
public static void main(String[] argv)
{
 System.out.println("Hello world!");
}

}


Полностью ОО - программа без извращений smile 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
w1nd
Дата 9.5.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Полностью ОО - программа без извращений

Не вижу ничего, что указывало бы на объектно-ориентированность. Конструкция языка "класс" имеет к ОО весьма опосредованное отношение.

Добавлено @ 18:48 
Я вообще не понимаю разговоров о "некроссплатформенности" Java. Один из аргументов - разница в наборе классов RT; другой - разные JVM, на которых один и тот же код может выполняться по-разному; третий - не везде есть JVM. Все эти утверждения несостоятельны: байт-код исполняется одинаково везде. Если в в JVM для утюга отсутствуют классы для работы с дисплеем или в какой-то реализации JVM попросту наделано ошибок, то это никак не относится к вопросу о кроссплатформенности. Если для платформы X нет JVM - никто не мешает её написать. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 9.5.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



В таком случае напишите пожалуйста полностью ООПрограмму на С++ (Ну или "более" ООПрограмму) smile

Цитата(w1nd @  9.5.2006,  16:45 Найти цитируемый пост)
Если для платформы X нет JVM - никто не мешает её написать.  

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
S.A.P.
Дата 9.5.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Java - кодеры, дайте пожалуйста точное определение кроссплатформенности, чтобы знать с какой точки начать обсуждение. 
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(S.A.P. @ 9.5.2006,  19:39)
Java - кодеры, дайте пожалуйста точное определение кроссплатформенности, чтобы знать с какой точки начать обсуждение.

Для java: перенос с платформы на платформу без изменений. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 9.5.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(w1nd @  9.5.2006,  17:49 Найти цитируемый пост)
Для java: перенос с платформы на платформу без изменений.  

Перенос чего? Кода? Бинарника? Проекта? 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
cromm3
Дата 9.5.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 22.3.2006

Репутация: нет
Всего: нет



Цитата

Вместо примера кода классический пример из книжек: класс Point, класс Size обладают некоторыми полями и методами, класс Square их наследник и в то же время и Point, и Size. К сожалению, на Java этого номально не сделать. Так же нельзя сделать гуишный компонент для ввода строки наследником строки.


Не честноsmile
Это множественное наследование… в Java оно реализуется(частично) через implements… а вообще по Эккелю Java более чистокровный ОО язык.
И еще, на Java можно реализовать аспектно-орентированный подход в программировании, в C++ это сделать трудней… 
PM   Вверх
w1nd
Дата 9.5.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(sergej.z @ 9.5.2006,  19:58)
Цитата(w1nd @  9.5.2006,  17:49 Найти цитируемый пост)
Для java: перенос с платформы на платформу без изменений.  

Перенос чего? Кода? Бинарника? Проекта?

Разумеется, конечного программного продукта. Бинарника, то бишь.

Добавлено @ 20:20 
Цитата
Не честно
Это множественное наследование… в Java оно реализуется(частично) через implements…

Почему не честно? А реализовывать один и тот же метод на страницу текста в пяти-десяти-сотне классов вместо одного это честно и удобно? Или то, что класс, обладающий координатами к координатам откастить нельзя - это апогей ООП?
Цитата
а вообще по Эккелю Java более чистокровный ОО язык.

Чистокровный? Ну уж ерунды-то не говорите. Да и кто такой Эккель? Это что за авторитет такой? 
Цитата
И еще, на Java можно реализовать аспектно-орентированный подход в программировании, в C++ это сделать трудней… 

Да, в C++ это делать несколько трудней, но ничто не мешает. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
ALKS
Дата 9.5.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



[QUOTE=sergej.z,9.5.2006,  18:23]
Цитата(ALKS @  9.5.2006,  16:10 Найти цитируемый пост)

Хм.. Только это к языку и философии программинга мало относится. Можно проект на асме написать, который без проблем скомпилится на любой платформе. Но Асм назвать кроссплатформенным думаю ни у кого язык не повернётся smile

А на Яве кроссплатформенный именно бинарник, а не "проект". Что само по себе, кроме этого удобстава несёт ещё и удобства контроля и управления проектом (который не надо пичкать if else #ifdef _WIN32 итд.) Один исходник, один бинарник. Это в рамках большого проекта экономит тысячи долларов (говорю для того чтобы немного расшевелить вышеприведённое определение). Каждый, кто несколько лет занимался разработкой кроссплатформенных проектов на Си и Си++ меня поймут  smile   smile

Про ASM это ты ляпнул! smile стоимость портирования ASM приложения на другую процессорную архитектуру равна как минимум стоимости разработки проекта с нуля smile напиши прогу на асме и пропартируй на x86, Motorolla, Z80 и мой любый мэинфрейм DEC smile - убедишся сам. В истории софта, самая-самая "много на ASM" система была Novell Netware 2.x. Они говрили что она написана на ASM на 30% (невероятно много!!! ). история помнит что установка этой OS, была настолько сложным делом что возникли 100-ни контор в этом помогающие... а дело в том что там было необходимо фактически компилировать OS под каждый конкретный сервер... smile

Ну а про Java никто не спорит, да сравнительно очень просто, да экономит массу денег.Нo не то чтобы совсем без усилий и проблем.

Для меня "более" объектен тот язык который предоставляет мне больше эээ... ОО-возможностей. С++ есть множесетвенное наследование классов, перегрузка операций, шаблоны. да можно спорить о том хороший ли скажем стиль - активно применять множественное наследование в глубоких иерархиях и т.д и т.п. но эта возможность в С++ есть, а в java - нет. Есть масса примеров когда грамотное применение множественного наследования действительно порождает изящество и помогает избежать маштабного дублировнаия кода. множественное наследование интерфейсов и внутринние классы зглаживают, но не заменяют.

перегрузка операций это что-то отсутсвие чегов Java  меня злит постоянно.... я искренне не понимаю почему её не возможно реализовать хотябы на уровне компилятора. ээххх каждый раз  когда я работаю с JDBC вспоминаеться объектно орриентированная С++ библиотека для работы с сервером SQLBase... они перегрузили только 2 операции а 10-ки строк кода тупых сэтов и гетов просто ушли... 
PM   Вверх
Бонифаций
Дата 9.5.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



На мой взгляд самое принципиальное различие - java требует чтобы программист обрабатывал ошибки.
То есть если вы к примеру из программы открываете файл, java на стадии компиляции будет проверять налилче обработчика IOException. Если ее нет - класс просто не скомпилируется. 


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

И наконец третье важное отличие явы - конструкция finally {} после try, которая гарантированно выполняется независимо от того, были exceptions или нет.  Этот finally очень облегчает работу с ресурсами и уменьшает количество ошибок.

  

Это сообщение отредактировал(а) Бонифаций - 9.5.2006, 21:48


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
w1nd
Дата 9.5.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
На мой взгляд самое принципиальное различие - java требует чтобы программист обрабатывал ошибки.
То есть если вы к примеру открываете файл, java на стадии компиляции будет проверять обработку IOException. Если ее нет - класс просто не скомпилируется. 

Что вы говорите? А как же быть с тем, что когда исключения появились в C++, Java была только в проекте?
Цитата
другое принципиальное отличие - совершенно другая работа с памятью. GC и все такое

Ничто не мешает реализовать GC в программе на C++. GC - это мимо кассы однозначно.   

Это сообщение отредактировал(а) w1nd - 9.5.2006, 21:48


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
cromm3
Дата 9.5.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 22.3.2006

Репутация: нет
Всего: нет



Цитата

А реализовывать один и тот же метод на страницу текста в пяти-десяти-сотне классов вместо одного это честно и удобно? Или то, что класс, обладающий координатами к координатам откастить нельзя - это апогей ООП?

Хм… ну в таком случаи нужно сравнивать С++ с С# там тоже убрали множественное наследование в чистом виде… C# это ж не отход от принципов ООП а, как предполагается, их развитие… 
PM   Вверх
Бонифаций
Дата 9.5.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  21:45 Найти цитируемый пост)
Что вы говорите? А как же быть с тем, что когда исключения появились в C++, Java была только в проекте?


ключевые слова "требует" и "позволяет" - тут есть разница.  


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
JUncle
Дата 9.5.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(ALKS @  9.5.2006,  21:25 Найти цитируемый пост)
перегрузка операций это что-то отсутсвие чегов Java  меня злит постоянно.... я искренне не понимаю почему её не возможно реализовать хотябы на уровне компилятора. ээххх каждый раз  когда я работаю с JDBC вспоминаеться объектно орриентированная С++ библиотека для работы с сервером SQLBase... они перегрузили только 2 операции а 10-ки строк кода тупых сэтов и гетов просто ушли... 

Если время дорого, имеет смысл подумать о применении фреймворков. И почему геты и сеты тупые? Это же часть технологии JavaBeans, играющей не последнюю роль в вышеупомянутых фреймворках (сериализация объектов в РБД и пр...)  

Это сообщение отредактировал(а) JUncle - 9.5.2006, 21:52
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0600 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.