LINUX.ORG.RU

Microsoft предупреждает: использование Linux грозит судебными исками


1

0

На конференции в Сингапуре 18-го ноября CEO Microsoft Стив Баллмер заявил, что азиатские правительства, в последнее время активно продвигающие Linux в качестве своей основной ОС, будут преследоваться судом за нарушение патентов на интеллектуальную собственность (IP). По утверждению Баллмера, Linux нарушает более 228-ми разнообразных патентов. Хотя ни разу не было сказано, что иски будет подавать именно Microsoft, но подтекст высказывания вполне четок: Microsoft начинает IP-войну против сообщества Open Source. Строгое соблюдение прав на интеллектуальную собственность является одним из условий вступления страны в ВТО, куда сейчас вступают многие азиатские страны. Как сказал Баллмер, "рано или поздно, во всех странах, вступивших в ВТО, кто-то будет искать свои потерянные деньги, которые ему должны за использование его IP rights."

>>> Статья в Register

★★★★

Проверено: Demetrio ()
Ответ на: комментарий от amm

> Кто дает такие гарантии? Стандарт?

Нет, просто это я погорячился. :) Под областью действия префиксной операции можно понимать разные вещи, согласен...

Sorcerer ★★★★★
()
Ответ на: комментарий от Sun-ch

2Sun-ch * (*) (19.11.2004 13:35:58)

ты сдаешь, раньше ты шутил веселей =)

а плюсы зачем? плюсы нам не нужны, там единственное что хорошо это исключения - все остальное реализуеться и на Си если ну уж очень приперло =) см gtk+ source code - к примеру ...

alphex_kaanoken ★★★
()
Ответ на: комментарий от anonymous

>Начитались книжек про "язык C++" и не понимают, что реальный девелопер (кодер) должен еще и об оптимизации заботиться.

А мне риальные программеры сказали, что С хорош для маленьких проектов

< 50 тыс. строк, а дальше будет цырк Жопито.

Sun-ch
()
Ответ на: комментарий от alphex_kaanoken

Не, я серьезно.

Поглядел я тут, как ты со строками паришься и подумал а нафига

когда есть стандартные классы?

Sun-ch
()
Ответ на: комментарий от Sun-ch

2когда есть стандартные классы?

Sun-ch Я ж говорил неоднократно что мне плюсы не нравяться, и для боьлших проектов Си еще как годиться - просто надо правильно проектировать и не делать кашу. В случае xneur - там проектирование никакое - писалось просто так - сейчас все в порядок приведу, фитчей добавлю баги поисчу исправлю ...

alphex_kaanoken ★★★
()
Ответ на: комментарий от anonymous

> Я учусь пока. ;-) А потом у нас в стране два пути - либо сваливать в спокойную и нормальную страну,

Ну вот и сваливай молча. Только побыстрее. Не забудь заклинание "яправильносделалчтоуехал". Глядишь у нас будет воздух почище.

kraw ★★★★
()
Ответ на: комментарий от alphex_kaanoken

> ++i значит что перед использованием значения этой переменной над ней совершаеться действие - i++ значит после испоьлзования значения произвести действие - и в чем там страшно ? и кстати это зависит не от компилятора вовсе =) это язык Си =))

Стандартом порядок и момент выполнения побочных эффектов любого выражения, кроме случаев когда это особо оговоренно, не определён. В выражении x = ++y; гарантируется только то что при выполнении операции "=" x присвоится значение на единицу большее первоначального значения y. То, в какой момент произойдёт увеличение самого y на 1 Стандарт не определяет. Это, действительно, звучит немного странно, но, на самом деле, по Стандарту так оно и есть. В любом случае безопасное правило такое - любую переменную которая изменяется за время вычисления выражения можно использовать в выражении только один раз.

Ron
()
Ответ на: комментарий от Ron

ак а в чем ошибка? там все правильно - мы преде использованием i провели действие - потом второй раз значение подставили и инчего с ним не делали - все верно между прочим =)

и выглядит нормально, вместо дополнительной строчки в виде i+=1; или i++; или ++i; - там в отдельной строчке уж не важно будет - но так красивей выглядит - так что чего придрались не ясно - кстати так делаю не только Я - во многих исходниках найдешь подобные приемчики =)

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

Сдается мне Альпекс, что ты либо лентяй и не хочешь учить ++

либо несешь какое-то тайное знание про С, которым не хочешь делиться.

Ведь ты пишешь за деньги?

А программы потом сопровождаешь?

Sun-ch
()
Ответ на: комментарий от Vertelkins

2Vertelkins:

Да все он прекрасно понимает. Ему надо флейм погнать. Чтобы потом убеждать себя "яправильносделалчтоуехал"

kraw ★★★★
()
Ответ на: комментарий от Sun-ch

>Сдается мне Альпекс, что ты либо лентяй и не хочешь учить ++

Я занимаюсь вещами которые лучше всего делать на Си, зачем мне плюсы?Да Я ленивый и часто бываю невнимательным когда мне надо чего быстро сделать, у меня процесс происходит так - сначала пишу фитчи - потом в них ловлю и правлю баги - каждый делает как хочет - вот Я так хочу мне удобней;

>либо несешь какое-то тайное знание про С, которым не хочешь делиться.

Нет, все эти знания есть в замечательной книжки Кернигана и Ричи =) плюс во всяких справочниках плюс опыт - так что ничего тайного. Пока не могу сказать что Я мега-девелопер на Сях, но думаю через год два уже смогу такое заявить - надо еще скиллов набраться побольше;

>Ведь ты пишешь за деньги?

в том числе да

>А программы потом сопровождаешь?

да и что, часто приходиться разбираться и в чужом коде - это не очень замечательно но что делать.

alphex_kaanoken ★★★
()
Ответ на: комментарий от anonymous

>И если уж тут наезжают на святое (на kernel), критикуют goto и проч. То извините, меня, супер-пупер-мега-девелоперы, но вы будете сильно удивлены, когда узнаете, что любой if, switch, while, for на уровне асма превратится в "goto". И что плохого в том, чтобы явно сказать компилятору, что надо сделать *безусловный* переход, вместо того, чтобы мудрить с while'ом и кучей флагов?

На самом деле это зависит от двух факторов:

1) Стиль, к которому привык разработчик (сам пишу без goto, другим то же самое советую, но считаю, что это не показатель уровня грамотности) 2) Задача, стоящая перед разработчиком написать быстро или оптимально. Или же сначала добиться, чтобы быстро начало дышать, а потом заняться тюнингом и вылизыванием кода.

kraw ★★★★
()
Ответ на: комментарий от alphex_kaanoken

>> ак а в чем ошибка?

Объясняю, в чём.

ret[++i]=tolower(word[i]);

Один компилятор сначала может увеличить i на единицу вычисляя ++i в левой части, а потом вычислять, tolower(word[i]), а другой наоборот - сначала будет вычислять tolower(word[i]), а потом вычислять ++i в левой части. Результат будет разный - в одном случае в итоге получится что-то типа "ret[1] = tolower(word[1])", а в другом "ret[1] = tolower(word[0])". Мне даже страшно подумать, сколько времени кому-нибудь придётся провести за отладчиком, если при тестах это вылезет. Впрочем, не в обиду, альфекс, но глядя на твой код возникают сильные сомнения, что он вообще до стадии тестирования доживает.

Ron
()
Ответ на: комментарий от Sun-ch

>несколько прог на ruby за выпивку.

А за "пожрать" еще писать не начал?

>Я тут тоже хотел начать изучать С, но мне не разрешили, сказали что...

Похоже тебя в "черном теле" держат. Даже за выпивку писать приходится.

kraw ★★★★
()
Ответ на: комментарий от Ron

постой ++i имеет более высший приоритет нежели = или что-то путаю?

>Впрочем, не в обиду, альфекс, но глядя на твой код возникают сильные сомнения, что он вообще до стадии тестирования доживает.

Доживает и поверь все работает =) Да находят и баги - но кто пишет _ИДЕАЛЬНО_ ? никто не ипшет идеально это нереально- ну разве что "Hello world!" можно написать идеально =)

Потом там исключительно gcc-oriented проект и зачем мне заботиться о другом компиляторе? Далее - говорю глянь дургой код - там тоже такие приемчики фиксить?

Да и найди мне где будет не так как должно? приведи пример и покажи - а то что-то не верю Я тебе.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

>постой ++i имеет более высший приоритет нежели = или что-то путаю?

по идеи если этого компилятор не поймет то в топку такой компилятор это ж стандартом вроде как определено - или как m$ делать забивать на стандарты? =)

alphex_kaanoken ★★★
()
Ответ на: комментарий от Ron

Пардон, это автоопределение кодировки там так работает как выяснилось.

Ubnormal
()
Ответ на: комментарий от kraw

>Похоже тебя в "черном теле" держат. Даже за выпивку писать приходится.

Меня еще хотели в жопу поцеловать и подарить щенка бульдога.

Но я отказался, т.к. хорошо воспитан.

Sun-ch
()
Ответ на: комментарий от alphex_kaanoken

При чём тут приоритет "=" и "++"?  Я же тебе сказал - Стандарт не определяет порядок вычисления отдельных подчастей выражения.
В качестве наводящего вопроса - как следует разобраться, что должен выдать такой код:

void f( int i, int j ) {
  printf("%d %d\n", i, j);
}

int i = 0;
f(++i, i);

Ron
()
Ответ на: комментарий от alphex_kaanoken

> 1 0 \n
> будет результатом в данном случае исходя из всего.

Исходя из твоего представления о Стандарте. А исходя из Стандарта - результат не определён. Может быть и "1 0", и "1 1" - и то и другое будет правильно.

Ron
()
Ответ на: комментарий от Ron

>Может быть и "1 0", и "1 1" - и то и другое будет правильно. 

да ничего подобного =) ладно сейчас возьму gcc и посмотрим и так 

 $ cat test.c
void foo(int i,int j)
{
   printf("%d %d\n",i,j);
}


int main(int argc,char **argv)
{
   int i=0;
   foo(++i,i);
   
   return 0;
}

 $ gcc test.c -o test
 $ ./test
 1 0

других компиляторов нету - посмотрел бы, видимо не только Я имею такое "представление о стандарте" ;-)

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

> других компиляторов нету - посмотрел бы, видимо не только Я имею такое "представление о стандарте"


Альфекс, pardon my French, ебонамать, ты вообще понимаешь значение выражения "the behaviour is undefined"??

Ron
()
Ответ на: комментарий от alphex_kaanoken

>Может быть и "1 0", и "1 1" - и то и другое будет правильно.

$ cat test.c
void foo(int i,int j)
{
printf("%d %d\n",i,j);
}


int main(int argc,char **argv)
{
int i=0;
foo(++i,i);

return 0;
}

$ gcc test.c -o test
$ ./test
1 0


любой нормальный компилер сделает так же так как справа налево параметры идут в стек а любой нормальный программер не использует инкремент и вычисления вообще при вызове функции

vm ★★
()
Ответ на: комментарий от alphex_kaanoken

И ещё, альфекс, тебя разве мама-папа не учили, что свои исполняемые поделия не стоит называть словом "test"? :-)

Ron
()
Ответ на: комментарий от Ron

это Я тебе для примера так обозвал

вообщем твою придирку не считаем

alphex_kaanoken ★★★
()
Ответ на: комментарий от vm

> любой нормальный компилер

Что такое "нормальный компилер" не процитируете ли Стандарт на тему того что, согласно нему, называется "нормальным компилером"? А то я за давностью лет уже вспомнить не могу никак...

Ron
()
Ответ на: комментарий от Vertelkins

Млять анонус! Ты запарил!!! У тебя че дерьмо вместо мозгов или где? Вот тебе еще один пример: я работаю за деньги - пишу под винду. А линуксом занимаюсь ради удовольствия и повышения программистких навыков.

И много у тебя серьезных проектов под Линукс?

anonymous
()
Ответ на: комментарий от anonymous

>> Извиняюсь, долбаный Explorer!

Гюмхлюер. Я этой парашей не пользуюсь... Опера тебя опкакала...

Foster
()
Ответ на: комментарий от Sorcerer

Первый толковый пост по делу -- уважаю!

Свои пять копеек: lc test.c ./test 1 0

Попробую сейчас tcc, если соберется :) PS: имхо забыли #include<stdio.h> :)

Lumi ★★★★★
()
Ответ на: комментарий от alphex_kaanoken

как выяснилось -- зависит от оптимизации.. :)

$ gcc 1.c -o 1
$ ./1
1 0
$ gcc 1.c -o 1 -O
$ ./1
1 0
$ gcc 1.c -o 1 -O1
$ ./1
1 0
$ gcc 1.c -o 1 -O2
$ ./1
1 0
$ gcc 1.c -o 1 -O3
$ ./1
1 1
$ gcc 1.c -o 1 -O4
$ ./1
1 1

QqQ
()
Ответ на: комментарий от Sun-ch

>> Меня еще хотели в жопу поцеловать и подарить щенка бульдога.

Тонкая месть! Я б даж до такой не додумался.... ))))

Foster
()
Ответ на: комментарий от QqQ

>> как выяснилось -- зависит от оптимизации.. :)

Смешные))) грозит судебными исками))))

Foster
()
Ответ на: комментарий от Sorcerer

$ cc -o test test.c
$ ./test
1 1
$ cc -V
cc: Sun WorkShop 6 update 2 C 5.3 2001/05/15
usage: cc [ options] files. Use 'cc -flags' for details
$ gcc -o test test.c
$ ./test
1 1
$ gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/specs
gcc version 2.95.3 20010315 (release)
$

Так что "нормальных" компиляторов не так уж и много. :)
В предыдущем посте были тесты с gcc 3.4.2 и Intel Compiler 8.1 на x86.

Sorcerer ★★★★★
()
Ответ на: комментарий от QqQ

аааа вот чего глючило у меня gentoo иногда откомпиленное с -O3 - ясно ясно ;-) Но все таки проверять надо случай с ret[++i]=tolower(word[i]); что сделать просто.

alphex_kaanoken ★★★
()
Ответ на: комментарий от Foster

>Это глисты, - это пройдет... )

ага, скоро с этим флеймом будем на первом месте в top10, только еще анонизмусов всяких не хватает и господина Harzah или как его там, он бы загнул про GPL. Жаль у меня времени мало - работать надо и еще с работы сегодня раньше уйти, так бы повеселились =))) точно говорят анекдот-ру отдыхает по сравнению с ЛОР.

alphex_kaanoken ★★★
()
Ответ на: комментарий от alphex_kaanoken

> Но все таки проверять надо случай с ret[++i]=tolower(word[i]);
> что сделать просто.

$ cat test.c
int foo(int i)
{
return i;
}

int main(int argc,char **argv)
{
int a[2],b[2];
int i=0;

a[0]=a[1]=0;
b[0]=50;
b[1]=100;

a[++i]=foo(b[i]);

printf("a[0]=%i, a[1]=%i\n",a[0],a[1]);
return 0;
}
$ gcc -o test test.c
$ ./test
a[0]=0, a[1]=50
$ cc -o test test.c
$ ./test
a[0]=0, a[1]=100
$ gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/specs
gcc version 2.95.3 20010315 (release)
$ cc -V
cc: Sun WorkShop 6 update 2 C 5.3 2001/05/15
usage: cc [ options] files. Use 'cc -flags' for details
$

Sorcerer ★★★★★
()
Ответ на: комментарий от alphex_kaanoken

Особенно если твой код публиковать в треде. Лучше писать так, чтобы работало не зависимо ни от компилятора, ни от оптимизации, так как было задумано, а не как приспичило. И ЛОР здесь ни при чём.

Lumi ★★★★★
()
Ответ на: комментарий от Sorcerer

Нда... Старые песни о Главном...

anonymous
()
Ответ на: комментарий от alphex_kaanoken

>более 228-ми разнообразных патентов... -это сколько? 229? тогда почему не сказать: "229 патентов"

anonymous
()
Ответ на: комментарий от Ron

> Стандартом порядок и момент выполнения побочных эффектов любого выражения, кроме случаев когда это особо оговоренно, не определён.

Неправда ваша. Он не определен только для операций с равным приоритетом. Т.е. например:

a[++i] = b[++i];

Имеем пять операторов: ++, ++, [], [], =. Из них первые два являются модифицирующими и имеют одинаковый приоритет, но он выше, чем у остальных. Как следствие, последовательность их выполнения не гарантируется. Сие проистекает из пункта 6.5.1 стандарта где написано: "Except as specified later (for the function-call (), &&, ||, ?:, and comma operators), the order of evaluation of _subexpressions_ and the order in which side effects take place are both unspecified." В данном случае речь идет именно о _subexpressions_ (т.е. то что внутри []). А вот если взять такое:

a = ++b;

То имеем два оператора: ++ и =, причем ++ имеет высший приоритет (см. таблицу в стандарте), и _всегда_ выполнится первым. Иначе получим бред, потому что чтобы присвоить переменной a значение (b+1), его надо сначала посчитать, а для этого нужно сначала выполнить ++b, который в процессе выполнения увеличит значение b. Это вполне очевидно, если заменить ++b на вызов функции:

void incr(int *i) { ++*i; }

a = incr(&b);

Ты же не будешь утверждать, что вызов incr() может не выполниться до присваивания? =)

int19h ★★★★
() автор топика
Ответ на: комментарий от vm

> любой нормальный компилер сделает так же так как справа налево параметры идут в стек

Ткни пальцем где в стандарте описан порядок следования параметров на стеке? И вообще упоминается слово "стек"? А если это __fastcall (что оптимизирующий компилятор вполне может сделать для static-функций)?

int19h ★★★★
() автор топика
Ответ на: комментарий от int19h

> Ты же не будешь утверждать, что вызов incr() может не выполниться до присваивания? =)

Маловероятно, но теоретически может. Просто представь, что компилятор этот вызов при оптимизации для начала заинлайнил.

Ron
()
Ответ на: комментарий от alphex_kaanoken

Блин. Тебе тут уже 10 раз показали что ты просто не умеешь программировать, а ты опять за свое. Бросай ты это дело. Не твое это. Иди в манагеры. Или еще куда.

Braindead.

anonymous
()
Ответ на: комментарий от anonymous

>А что ли уже замена МС есть? Видимо уже дрова неплохие начали делать на АйТи и Нвидиа этц...да? ;)
Этц да, этцц... ц! Ты не поверишь, но ДА, НАЧАЛИ и уже давно (года 3) сижу на GF2Pro without any prob, yeahh, так сказать. АйТи (IT) такой фирмы не знаю.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.