Открывать код под лицензией BSD, это всё равно, что всё своё свободное время проводить программируя для Microsoft (c) кто-то из девелоперов ядра linux.
Под BSDL там только утилиты и примеры. А основной код, в случае коммерческого использования, под JDL. Это как раз та самая лицензия, за нарушение которой Sun уже один раз засудила Microsoft.
> Надо ли считать это первым шагом на пути превращения Java в OpenSource продукт?
Не стал бы на это сильно надеяться. JDL - это далеко не совместимая с GPL лицензия =) На самом деле, AFAIK, это те же условия, под которыми исходники явы распространяются сейчас. То есть вроде бы и free, но все время под бдительным оком Sun.
Видимо, оно все-таки свершится... и там есть еще такие радующие слова: "Clearly we'll need to release the code under an open source (i.e., OSI approved) license". То есть это не майкрософтовский "shared source".
"Дядя, вы дурак?" (с) Или влом разобраться что все объекты не примитивных типов являются указателями. Пример:
private MyObject mo; mo = new MyObject();
Теперь передаем его в какую нибудь функцию, проводим над ним изменения и видим, что объект mo изменился. Вывод - мы передали не объект, а указатель на него. Так что отсутствие звездочки (*) еще ничего не значит ;)
Теперь насчет упомянутого кем-то DirectX и OpenGL для .NET. Наверное их будут считать "настоящим 3D", когда начнут "по настоящему" тормозить :)
> Теперь передаем его в какую нибудь функцию, проводим над ним изменения и видим, что объект mo изменился. Вывод - мы передали не объект, а указатель на него.
Это не указатель, это ссылка. Указатель - это то что можно двигать ;)
> Теперь передаем его в какую нибудь функцию, проводим над ним изменения и видим, что объект mo изменился. Вывод - мы передали не объект, а указатель на него. Так что отсутствие звездочки (*) еще ничего не значит ;)
Какой-такой объект? Объект - в функцию! Без указателя, пожалуйста :)
> Вывод - мы передали не объект, а указатель на него. Так что
>отсутствие звездочки
Гм... зря ты так... надо бы тебе про передачу по ссылке почитать ;-).
Там ещё был прикол с программированием - на табличке при входе в квартиру:
10 HOME SWEET
20 GOTO 10
И ещё гэг когда в замке с робопривидениями появляется надпись кровью:
1010011010
пересчитав в десятичные мы долго ржали (:
в С существует 1 метод передачи пар-ра в ф-цию - по значению
в C++ добавился еще один способ - под значению
в Java - для элементарных типов по значению, для классов по ссылке
PS: (для С\C++) Для дебилов указатель это отдельный тип данных и он передается по значению или по ссылке
Так я смотрю тут собрались крутые программисты, всю жизнь изучающие теорию C/C++/Java без примененения на практике. Вы конечно очень красиво говорите про разницу между указателем и передачей по ссылке, только позвольте мне вот что вам сказать:
1) Я яве все объекты сложным типов являются именно указателями по своей сути. Ничего кроме указателей и примитивных типов там нет. За подтверждениями лезте в любой учебник по Java2.
2) Между передачей указателя на объект и передачей объекта пос ссылке нет никакой практической разницы, эффект будет один и тот же. Разве что pointer->MyMember() vs. reference.MyMember().
>1) Я яве все объекты сложным типов являются именно указателями по своей сути. Ничего кроме указателей и примитивных типов там нет. За подтверждениями лезте в любой учебник по Java2.
Если взять за основу утверждение, что указатель может менять своё значение, а ссылка нет, то разница-таки есть.
А в любом учебнике по яве, кстати, сказано, что ява реализует ссылочную семантику. То бишь, вероятно, авторы этих учебников согласны с вышеприведённым утверждением.
>2) Между передачей указателя на объект и передачей объекта пос ссылке нет никакой практической разницы, эффект будет один и тот же. Разве что pointer->MyMember() vs. reference.MyMember().
Если ты решил перекинуться на C++, то твоё утверждение неверно. Разница есть и весьма ощутимая.
>Так я смотрю тут собрались крутые программисты, всю жизнь изучающие теорию C/C++/Java без примененения на практике.
> Так я смотрю тут собрались крутые программисты, всю жизнь изучающие теорию C/C++/Java без примененения на практике. Вы конечно очень красиво говорите про разницу между указателем и передачей по ссылке, только позвольте мне вот что вам сказать:
> 1) Я яве все объекты сложным типов являются именно указателями по своей сути. Ничего кроме указателей и примитивных типов там нет. За подтверждениями лезте в любой учебник по Java2.
> 2) Между передачей указателя на объект и передачей объекта пос ссылке нет никакой практической разницы, эффект будет один и тот же. Разве что pointer->MyMember() vs. reference.MyMember().
Мальчик, не надо. Разница хотя бы в наличии pointer arithmetics при работе с указателями. Или, к примеру, в способности получить указатель на указатель.
> Я яве все объекты сложным типов являются именно указателями по своей сути. Ничего кроме указателей и примитивных типов там нет. За подтверждениями лезте в любой учебник по Java2.
Во всех виденных мной учебниках, оно все-таки называется "ссылками", а не указателями.
Да, не надо путать ссылочные типы данных и передачу параметров "по ссылке" - это разные вещи!
> Между передачей указателя на объект и передачей объекта пос ссылке нет никакой практической разницы, эффект будет один и тот же.
При передаче в функцию - да. Но ведь это не единственная операция, которую в яве можно производить над ссылками на объекты. А как же присваивание? Или ты скажешь, что тут и "присваивание по ссылке"?
На самом же деле в яве _все_ параметры передаются по значению, просто когда ты пишешь что-то типа "Object x", тип x - ссылка на Object. И вот она и передается по значению. В чем очень легко убедиться:
void foo(Object x) { x = new Integer(666); }
void main() { Object x = null; foo(x); if (x instanceof Integer) { System.out.println("byref"); } }
Достаточно сравнить с C#, где при такой же семантике можно написать:
ЗЫ. Кстати, про goto! Может тут есть гуру по фортрану. Тут попросили фортрановскую прогу привести в рабочее состояние. Когда-то сто лет назад на фортран 77 ковыряться приходилось, и на всемирноизвестном гоутушном фортран 4. А тут что-то ну совсем невообразимое!! Может существует какой диалект, типа, фортран 90? А GCC умеет его юзать? Помажите советом, а то на паскаль перепру!
Да, GOTO - это очередная заноза в заднице. Один корифей бзднул - теперь все за ним. На ассемблере все программировали? Все. Оператор JMP все использовали? Все. Никто не сдох? Никто.
2 sbob: Ты упал что-ли? В большом проекте рисовать блок-схемы на каждый шаг - седалища не хватит. Ну я понимаю, там, деревья какие-нибудь - в рекурсии врубаться попервости. Но не больше.
>2 sbob: Ты упал что-ли? В большом проекте рисовать блок-схемы на
>каждый шаг - седалища не хватит. Ну я понимаю, там, деревья
>какие-нибудь - в рекурсии врубаться попервости. Но не больше.
ЗЫ. Товарисчь не втеме. Та фраза у нас с Бобом очень личная :))))