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

Поиск:

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


Новичок



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

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



Цитата(raiskaa @ 9.5.2006,  12:54)
Вот это про кроссплатформенность?

"The output of a Java compiler is not executable code. Rather it is bytecode. Using bytecode to represent programs is the easiest way to create truly portable programs."


В таком случае можно ли сказать, что кроссплатформенность это следствие пункта:
C++ - машинный код / Java - интерпретируемый код 
 
PM MAIL   Вверх
powerOn
Дата 9.5.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Кроссплатформенность Java, (уж какая есть  smile ), обеспечивается благодаря первоначальной компиляции программы  в байт код и Интерпретации / JIT компиляции при выполнении.
  

Это сообщение отредактировал(а) MoonCat - 9.5.2006, 13:53


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(raiskaa @  9.5.2006,  11:47 Найти цитируемый пост)
В таком случае можно ли сказать, что кроссплатформенность это следствие пункта:
C++ - машинный код / Java - интерпретируемый код

Да! Я её там вынес как раз в тот пункт. Просто это зачастую наиболее важный аргумент, который хотят услышать профы smile 


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


Новичок



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

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



спасибо, понятно! 
PM MAIL   Вверх
raiskaa
Дата 9.5.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



to Sergej.z

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java -отсутствие глобальных переменных

И это лучше не брать. В Java есть модификатор static.

запуталась! А как же вот это:
" All the code in a Java program is encapsulated within one or more classes. Therefore, Java does not have global variables or global functions."

http://www.csupomona.edu/~dlbell/cppexplanationsfa99/23.html
 smile

Добавлено @ 14:25 
[QUOTE=sergej.z,9.5.2006,  10:19]
Цитата(Void @  8.5.2006,  23:35 Найти цитируемый пост)
Добавлено @ 23:36 

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java:  нет указателей

Лучше написать. В Java у программиста нет выбора между работой с указателями, ссылками, или самими обьектами как в С++. В Java определено, что обьекты передаются по ссылке, а данные прим. типа копируются.



"Perhaps the single biggest difference between Java and C++ is that Java does not support pointers. Pointers are inherently insecure and troublesome. Since pointers do not exist in Java, neither does the -> operator. Some other C++ features are not found in Java."
и это оттуда же! Вполне однозначно написано:"Java не поддерживает указатели"
Вот поди разберись! 
PM MAIL   Вверх
ALKS
Дата 9.5.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



smile "->" это операция из С++. как она правильно называеться? блин, совсем С забыл smile
да ничего подобного в Java нету. но это операции с указателями а не сами указатели. т.е. указатели то в Java есть и они неявно испозуються. но вот явного синтаксиса для работы с ними, как в C/C++ - нету. но это всё - большие тонкости... 
PM   Вверх
sergejzr
Дата 9.5.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



raiskaa, это же просто люди писали. Всё зависит от абстрактной позиции, которую занимаешь. 
Естественно программист не найдёт в Ява указателей при программинге. Но всё же они там есть, просто скрыты от нас. Поэтому сказать "Ява не поддерживает указатели" - слишком мало. Не хватает ", но ..."  smile 


Цитата(raiskaa @  9.5.2006,  12:19 Найти цитируемый пост)
Therefore, Java does not have global variables or global functions.

Нет, но есть статические члены/мемберы класса.

Код

class Static
{
public static staticVar;
public static void staticFunc(){}
}


Вот у нас и аналог глобальной переменной и глобальной функции.

  


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


Новичок



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

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



Еще раз спасибо, теперь проясняется  smile  
PM MAIL   Вверх
JUncle
Дата 9.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
ууу smile ну уж нет. не все так просто. вэб приложение на J2EE вы на мобильнике не запустите. кроме того криво написанное Java приложение не заработает где попало.

Ну - J2EE это не pure java. Это просто набор спецификаций.

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
С другой стороны, не ошибусь если скажу что плактичиски любая платформа имеет компилятор С, но далеко не любая - JVM...  

Это не совсем то - т.к. в общем понимании кроссплатформенность присуща программе, когда ее бинарник не нужно  формировать заново для новой платформы (как в случае с С \ С++).

Цитата(sergej.z @  9.5.2006,  14:53 Найти цитируемый пост)

Код

class Static
{
public static staticVar;
public static void staticFunc(){}
}


Следуя хорошему тону, static поля вообще то должны быть финальными (final), и аналогом в С будут уже скорее макросы, а не глобальные переменные (которые, как правило, есть знак плохой архитектуры).   

Это сообщение отредактировал(а) sergej.z - 9.5.2006, 17:56
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(JUncle @  9.5.2006,  15:41 Найти цитируемый пост)
Следуя хорошему тону, static поля вообще то должны быть финальными (final)

Вообще-то Ява не запрещает их делать не final. Для этого есть хорошие причины, например private static абсолютно не противоречит "хорошему" тону (взять хотя бы тот же синглтон из Вашей подписи smile ). 
Кстати насчёт "хорошего" тона или "плохой" архитектуры  smile  - это на 99% процентов зависит от поставленной задачи и её условий, но так как мы обсуждаем отличия от С++, это к делу не относится.
  


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


Бывалый
*


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

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



Цитата(sergej.z @  9.5.2006,  17:53 Найти цитируемый пост)
Вообще-то Ява не запрещает их делать не final. Для этого есть хорошие причины, например private static абсолютно не противоречит "хорошему" тону (взять хотя бы тот же синглтон из Вашей подписи smile ). 

Если бы Java запрещала что-то, то об этом не было бы и речи  smile
А в случае private полей, действительно, разговор другой, но и о глобальных переменных тогда тоже речи не идет. 

А насчет отношения Java и C++ к ООП -
С++ не может быть "более-ООП" языком, т.к. на нем все-таки можно написать действующую не-ООП программу.
С другой стороны, на Java можно тоже написать программу, с точки здравого смысла абсолютно не ООП. Однако формально она все-таки будет ООП программой (если не принимать во внимание примитивы).
Кстати, читал, что назвать Java ООП языком не позволяет, кроме примитивов и еще один факт. Объекты должны общаться посредством сообщений, а методы Java это несколько другое. 

Цитата(sergej.z @  9.5.2006,  17:53 Найти цитируемый пост)
Кстати насчёт "хорошего" тона или "плохой" архитектуры  smile  - это на 99% процентов зависит от поставленной задачи и её условий, но так как мы обсуждаем отличия от С++, это к делу не относится.

Ну что ж, кроме цифры 99, вообще согласен smile Хорошо, не будем об этом. 

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


Опытный
**


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

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



Цитата(JUncle @ 9.5.2006,  17:41)

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
ууу smile ну уж нет. не все так просто. вэб приложение на J2EE вы на мобильнике не запустите. кроме того криво написанное Java приложение не заработает где попало.

Ну - J2EE это не pure java. Это просто набор спецификаций.

Согласен J2EE - плохой пример. я не сталкивался с J2ME вообще, к сожалению. Но разве J2SE программа написанная, для простоты, в рамках любых классов из трех основных пакетов - lang, io и util пойдет без всяких ограничений в рамках J2ME?

Цитата(JUncle @ 9.5.2006,  17:41)

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
С другой стороны, не ошибусь если скажу что плактичиски любая платформа имеет компилятор С, но далеко не любая - JVM...  

Это не совсем то - т.к. в общем понимании кроссплатформенность присуща программе, когда ее бинарник не нужно  формировать заново для новой платформы (как в случае с С \ С++).

с определением кросплотформенности не соглашусь. мне намного более правильным кажется примерно следующее:
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я 
PM   Вверх
JUncle
Дата 9.5.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(ALKS @  9.5.2006,  18:10 Найти цитируемый пост)
Согласен J2EE - плохой пример. я не сталкивался с J2ME вообще, к сожалению. Но разве J2SE программа написанная, для простоты, в рамках любых классов из трех основных пакетов - lang, io и util пойдет без всяких ограничений в рамках J2ME?

Да, я это забыл отметить, действительно, есть некоторые ограничения. В т.ч и обратные - т.е. в случае J2ME программы на J2SE JVM,

Цитата(ALKS @  9.5.2006,  18:10 Найти цитируемый пост)
с определением кросплотформенности не соглашусь. мне намного более правильным кажется примерно следующее:
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я  

Ну может быть... Однако один из самых широких классов - GUI программы - в случае с С++ кросплатформенными никак назвать нельзя.

И если допустить, что С++ программы кроссплатформенны, получается, что Java программы более кроссплатформенны, т.к. для их переноса на другую платформу в общем случае требуется меньше затрат* -  мб ввести такую величину как коэффициент кроссплатформенности? smile  

* - при условии что на платформе етсь JVM
Однако в случаее с С++ для платформы так же должен существовать компилятор. Так что тут они в равных условиях. 

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


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


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

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



Цитата
С++ не может быть "более-ООП" языком, т.к. на нем все-таки можно написать действующую не-ООП программу.

С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.

Цитата
Объекты должны общаться посредством сообщений

Это не так, не следует воспринимать буквально слова о сообщениях.
 


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


Un salsero
Group Icon


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

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



Цитата(ALKS @  9.5.2006,  16:10 Найти цитируемый пост)
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я  

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

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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