Wednesday, May 16th, 2012 12:12 am
Я не очень внимательно слежу за судом Оракла и Гугля, но, насколько я понимаю, на сегодня Гугль уличили в копировании куска кода из Оракла, а именно - функции rangeCheck(). Вот как эта функция выглядит сейчас:

private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
         if (fromIndex > toIndex)
            throw new IllegalArgumentException("fromIndex(" + fromIndex +
                       ") > toIndex(" + toIndex+")");
        if (fromIndex < 0)
            throw new ArrayIndexOutOfBoundsException(fromIndex);
        if (toIndex > arrayLen)
            throw new ArrayIndexOutOfBoundsException(toIndex);
}


Насколько я понимаю, это уже после устранения краденого из Оракла кода, но можно видеть, сколь мощный кусок интеллектуальной собственности, без которого Андроид никогда бы не имел шанса на рынке, Гугль пытался нагло украсть. Я думаю, это вполне стоит  двух миллиардов долларов, которые Оракл требовал у Гугля.

Интересно также почитать беседу судьи Алсупа с адвокатом Дэвидом Бойесом (Оракл). Судья говорит - дескать, это ж тривиальный код, я сам такой могу написать одной левой. Адвокат отвечает, что он сам не смог бы справиться с написанием вышепроцитированного кода и за полгода. Что напоминает мне старую шутку про адвокатов.
Wednesday, May 16th, 2012 07:27 am (UTC)
Если разработчики следуют стандартам названий переменных и оформления кода (которые в java среде довольно узки), то это - единственная возможная имплементация :) Её даже не надо воровать.
Оракл еще бы пожаловался на то, что переменная цикла называется 'i'.
Wednesday, May 16th, 2012 07:36 am (UTC)
На да, про IP в этой функции странно говорить :)
Wednesday, May 16th, 2012 07:41 am (UTC)
Скока-скока за это просят? Чорт, живут же люди.
Wednesday, May 16th, 2012 07:53 am (UTC)
Ну блин, написано же четким английским языком: private static же!
Раз private – не трожь! :)
Вон судья к public методам претензий не имел.
Wednesday, May 16th, 2012 08:01 am (UTC)
Yes!!!! :)))
Wednesday, May 16th, 2012 09:00 am (UTC)
Тривиальный, конечно, но и тут можно, имхо, ошибку сделать:
Может быть вместо if (toIndex > arrayLen) лучше проверять if (toIndex >= arrayLen)
т.к. первый элемент массива это 0, а не 1?
Wednesday, May 16th, 2012 09:23 am (UTC)
Обычно всё же toIndex используют как
for (... ; i < toIndex; ...)
При таком раскладе ограничение на допустимые значения toIndex-а такое: toIndex <= arrayLen, и, соответственно ошибка, если toIndex > arrayLen.
Wednesday, May 16th, 2012 09:29 am (UTC)
Ok. Тогда верно. Хотя я часто сильно не задумываясь использую именно
for (... ; i <= toIndex; ...), т.к. лень держать в голове, что индекс from включается в рассмотрение, а toIndex - нет. Не люблю "выколотые точки", но это уже дело вкуса :).
Wednesday, May 16th, 2012 09:52 am (UTC)
Я, пожалуй, даже и не знаю никого, кто бы делал i <= toIndex;
Edited 2012-05-16 09:55 am (UTC)
Wednesday, May 16th, 2012 09:59 am (UTC)
Значит это моя личная заморочка :).
Wednesday, May 16th, 2012 01:09 pm (UTC)
Там суд не про это, а про Sequence, Structure and Oragnization. Не знаю, приходилось ли тебе продумывать и писать API для библиотек (в отличие от, например, имплементации по уже готовому API), но в этом (имхо) вполне есть креативного элемента в духе промоутинга Progress of Science and useful Arts.
Wednesday, May 16th, 2012 01:12 pm (UTC)
ЗЫ. Кроме гроклоу, полезно (для баланса) знакомиться с мнением Мюллера, например тут.
Wednesday, May 16th, 2012 03:59 pm (UTC)
Ну конечно не единственно возможная :)
Условия местами можно переставить
Thursday, May 17th, 2012 02:13 am (UTC)
Убииииил!
Thursday, May 17th, 2012 06:52 am (UTC)
А что, эта ваша Java сама не умеет проверять валидность индеска?

Меж тем становится страшно за судьбу Oracle - сумеет ли выжить предприятие, когда несуны из Google нагло воруют с производства столь ценный код? Немедленно выписать им стимулуса, ящитаю.
Thursday, May 17th, 2012 06:57 am (UTC)
Упс, кажется ступил. Речь видимо об имплементации Гуглом Dalvik'a.