2007-03-24

*** и *****

Большинство С программистов использовало иногда в своем коде указатель на указатель, что дает в записи две звездочки: int **p; При этом мы бормотали "...две звездочки, три звездочки, но лучше, конечно, пять звездочек!". Но мало кто мог придумать разумное использование для таких конструкций. Ну так слушайте, дети мои, рассказ о том, где и как я использовал три и больше звездочек. Представьте, что вам надо сделать матрицу из двух измерений. В языке С нет многомерных массивов. Поэтому матрицу можно либо зарезервировать в виде одного одномерного массива и всё время пересчитывать индексы, либо сделать массив массивов, или в случае, когда размерность не известна, массив указателей: int **p=(int**)malloc(N*sizeof(int*)); for(int i=0;i При этом в программе обращение к элементу будет иметь вид p[i][j], что наглядно, и вполне компилируемо даже при том, что размерность в момент компиляции не известна. Это довольно типичный прием, но фишка в том, что возвращаемое значение будет иметь уже желаемые три звездочки: void create_matrix(int ***pp){   int **p=...;   *pp=p;   } Легко видеть, что там можно создавать и матрицы более высоких порядков, причем число звездочек равно числу измерений матрицы, что, кстати, очень наглядно. А возвращаемое значение через параметр всегда на одну звездочку больше. Поэтому желаемые пять звездочек можно получить при работе с четырех-мерными или пяти-мерными матрицами. Такие матрицы вполне типичны в задачах логического перебора, где число измерений может быть довольно высоким. Дарю идею, друзья-программисты. Представляете, читает кто-нибудь код и видит: int *****p; // Do not drink less then 5 stars!

2007-03-21

Линус про GPL и алхимию

Цитата:

Finally, the real basic issue is that I think the Free Software Foundation simply doesn't have goals that I can personally sign up to. For example, the FSF considers proprietary software to be something evil and immoral.

Me, I just don't care about proprietary software. It's not "evil" or "immoral," it just doesn't matter. I think that Open Source can do better, and I'm willing to put my money where my mouth is by working on Open Source, but it's not a crusade -- it's just a superior way of working together and generating code.

It's superior because it's a lot more fun and because it makes cooperation much easier (no silly NDA's or artificial barriers to innovation like in a proprietary setting), and I think Open Source is the right thing to do the same way I believe science is better than alchemy. Like science, Open Source allows people to build on a solid base of previous knowledge, without some silly hiding.

 

Линус сравнивает с алхимией, а я бы сравнил с политическими системами. Естественно, Линус, как видный деятель опенсорсной партии будет приводить доводы, почему за нее надо голосовать, но что это значит для меня, как рядового "избирателя"? Что лучше работает? Мой ответ - всё работает хреново. И софт весь стал отстойный, что тот, что другой. И что же выбрать? Неужто опенсорсная разработка эффективнее? Непохоже.

Я бы сравнил это скорее с демократией и монархией-диктатурой. Некто скажет, что демократия - набор демагогов и жуликов, что работает плохо, никакой реальной реформы сделать не может, то ли дело монарх-диктатор. Он волевой человек, ему не надо завоевывать голоса, он может провести реформы жестко и целенаправлено, не отвлекаясь на предвыборный популизм. Так и софтовая компания, руководимая умным и волевым человеком сделает продукт лучше, быстрее, с более агрессивным маркетингом, хорошей поддержкой. Всё решает сила, скажет этот некто, всё решают деньги.

Ну допустим. А что волнует бедного гражданина-мещанина, возделывающего свой огород и не вникающего в тонкости геополитики? А волнует его, чтобы этот монарх-диктатор не призвал этого гражданина в армию завоевывать свои геополитические цели или не сгноил в лагерях. И сам помрешь, и огород жалко. А потому уж лучше пара грызущихся партий, чем один амбициозный диктатор. Главное - в живых остаться. Вот она, разница! Не эффективность важна - простое физическое выживание.

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

Конечно можно и наоборот, заигрывать с диктатурами, разрушать старый мир, строить новый, быть впереди, крутить миллиарды, вести на смерть миллионы. Иметь короткую, но бурную жизнь. Это вам не огород возделывать 90 лет! Вот и выбирайте.

2007-03-16

Шаг влево

Вчера перестанавливал систему на своем ноутбуке. Он у меня не новый, но любимый. Sony Picturebook. Теперь таких не делают. После прошлогодних попыток брать его на работу, чтобы во время непрерывных бессмысленных митингов читать почту и новости, он, не вынеся всего того креатива, который на него наставил наш доблестный IT, впал в состояние непрерывного свопинга. Когда вся пямять забита, а процессор занят, компьютер становится абсолютно безопасен для корпоративной сети.

После перестановки системы, которая делалась восстановлением всей системы с фирменного соневского бакапа пятилетней давности, я потратил пару часов удаляя уже соневский мультимедийный креатив и ставя бесконечные хотфиксы и сервис паки. После чего система зажила вполне нормальной привычной жизнью. И настала пора поставить те программы, которыми я пользуюсь обычно, и из за которых мне и нужен ноутбук. Этот набор складывался годами и в него иногда что-то добавляется, а что-то уходит.

Так вот, к моему собственному удивлению оказалось, что из микрософтовских программ я на этот раз не поставил НИЧЕГО! Совсем! Даже ворда! Ничего, кроме основной системы, Windows XP Home. Исторически я любил микрософтовские программы, кое что ставил по необходимости. Сейчас ноль! Даже наоборот, кое что удалилось уже из системы. Первый раз, за полной ненадобностью, вызванной переходом на gmail, убрал Outlook Express. Не стал грузить IE7 и новый Media Player. Explorer в качестве основного shell заменил на минималистский bblean, к которому ещё, правда, не привык, и не уверен, что привыкну. Но новый вид десктопа радует глаз. И своё обязательное место заняли FAR, Firefox, Picassa, OpenOffice, Miktex, несколько плейеров и кодеков, и, конечно, мой Infoviewer, Winscript, и всякая куча мелких утилит командной строки.

Вот я и подумал: "Что бы это значило?". Нет, это не происходит от нелюбви к МС на почве совместной жизни. Это от того, что для моих домашних занятий эти программы подходят лучше, потому, что они действительно во многом лучше. Это от того, что мои требования к программам всё больше и больше отличаются от требований МС, и всё больше приближаются к open source. В процессе перестановки я многократно материл windows со своими бесконечными перезагрузками и добрым словом вспоминал недавнюю установку Ubuntu на домашнюю машину, которая поставилась сразу последней версии, без всяких сервис паков и десятков хотфиксов. Но я еще не готов совсем перейти на linux. Слишком много старых привычек. Следующая перестановка покажет. Остался один шаг.

2007-03-14

Виадук, тоннель и голосование

В Сиэтле всё решают что делать со старым виадуком, перестроить или заменить на тоннель. Провели голосование. Спросили два вопроса:
1. Строить ли виадук -- 45% за, 55% против
2. Строить ли туннель -- 30% за, 70% против
Естественно, получилось, все против всего! Почему естественно? Представьте, что половина хотела виадук, половина тоннель, и только один человек не хотел ни того ни другого. В результате партия этого одного победила! Если голоса делятся почти поровну, небольшая группа "против всех" победит гарантированно, поскольку собирает отрицательные ответы у всех сторонников. Очевидно, что "против всего" были 25%, если полагать, что никто не хотел строить и то и другое сразу.

Надо было делать взаимоисключающий выбор и считать по большинству:
1. виадук -- 45%
2. тоннель -- 30%
3. другие варианты -- 25%

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

2007-03-07

Мартовское традиционное

Cleartype

Упорству, с которым данная технология впихивается во все продукты можно было бы найти более полезное применение. Явные усилия прикладываются к тому, чтобы её нельзя было выключить! И это при том, что множество мониторов с технологией несовместимо, и множество пользователей её не любит. Жалуются на слезящиеся глаза, некоторые даже жалуются на головные боли. IE7, Office 2007, Vista - если в первом, народ убедил сделать галочку, (её непросто найти, но она есть в Advanced Settings), то последние два, похоже, непробиваемы.

Причем возражение на предложение сделать выключатель такое: "а мне нравится и многим пользователям нравится!". Похоже люди не понимают, что такое бизнес. Покупатель всегда прав, в том числе и тот, который не в большинстве. Если кто-то просит кофе без сахара, значит надо дать без сахара. А сахар в пакетиках рядом на полочке, класть по вкусу. Что тут сложного и непонятного?

Кто-то должен засудить МС, мне кажется, по этому поводу. Надо доказать повышенную утомляемость на BGR или CRT мониторах, и вчинить коллективный иск. Только тогда, наверное, разрешат сделать ещё пару галочек.

2007-03-05

Parental Control

И продолжая еретические рассказы о ненужном, вот вам до кучи, ещё одна вещь, которой никогда не пользовался и не собираюсь: parental control. Ни в телевизоре, ни в интернете. Маленьким детям всё "это" не интересно, если явно не запрещено и если родители сами не озабочены "этим" непрерывно. А устраивать "гонку вооружений" с теми, кто постарше, тоже нет никакого желания. В телевизоре, кстати, ничего и нет, кроме рекламы, всё равно смотрим одни местные новости. В интернете можно найти всё, что угодно и в обход всяких control-ов. Это как антивирус, который отсеивает только то, что знает, а знает он далеко не всё, и наоборот. Кстати, мой сайт у сына в школе недоступен, отнесён в списки сомнительных. Что они там нашли? И уж наверняка эти системы не знают про русские сайты. Зашёл я тут случайно на Грани.Ru, который когда-то был "диссидентским" сайтом. Кошмар. Диссидентство во всём своём великолепии. Новодворская по прежнему брызжет слюной, форум напоминает битву под Москвой, остальные статьи тоже какие-то все невменяемые, даже про грамматику, где автору не угодила буква "ё". Психиатрия. И наверняка этот сайт не входит в списки сомнительных, скорее наоборот, считается оплотом "демократической оппозиции".

2007-03-03

Дефендеры и антивирусы

Сейчас скажу страшную и неприличную вещь! Д и А - самые бесполезные программы. За всё время, что я работаю с компьютерами, а это уже лет двадцать, они не нашли ни одного вируса и ни одного трояна. И стоит ли результат геморроя? Антивирус замедляет работу системы, поскольку влияет на самый медленный тракт - дисковый обмен, сидит постоянно в памяти, занимая её всякой ерундой - вирусными сигнатурами, а иногда даже приводит к серьезным проблемам, нарушая работу программ, поскольку не вполне прозрачен для приложений. Мне cкажут: "А вдруг вирус?" Так и не найдёт он его. Пока антивирусные базы обновятся, вирус уже сделает всё, что хотел. Лучше, господа, блюсти разумную гигиену. Аттачменты дурацкие не открывать, программы неизвестно откуда не грузить, на кнопки не глядя не жать. Неплохо иметь аппаратный router-firewall, вовремя ставить обновления и пользоваться менее распространёнными браузерами и почтовыми программами. Выкинул я все эти e-trust-ы со своей домашней машины, когда решил немного её почистить. Кстати, оказалось, что выкинул и последнюю программу, использующую .NET. Тоже занятный опыт. Практика показывает, что программы, написанные на VB и .NET - не живут. Я уже привык, увидев VB runtime DLLs, стирать сразу, ибо всегда халтура. Похоже, это справедливо и для других .NET программ. Ну не живут они у меня долго, всегда удаляются, раньше или позже. Просто их писать, вероятно, а потому и пишутся быстро, почти не думая, и так же быстро удаляются, почти не сожалея.