maxnovikov's Journal
(Latest 10 entries) (Calendar) (Friends) (User info)
Monday, August 6, 2007
Wednesday, July 26, 2006
Expert programmers are those who write code even idiot programmers can understand. Idiot programmers are those who write code not even expert programmers can understand.
Sunday, April 16, 2006
Программа - это продукт, это инженерное решение, такое же решение, как и автомобиль. Почему это можно утверждать? Потому что программы (как продукты) проявляют такие же свойства, что и автомобили.
Любой продукт имеет две составляющие: информационную и материальную (ресурсную). Соотношения этих двух составляющих в разных продуктах разное, но обе составляющие есть в каждом продукте. Важно отметить, что возможно существование отдельно информационной составляющей, но не существует отдельно только материальной составляющей: из последней всегда можно извлечь информационную составляющую.
Рассмотрим два вида продуктов: автомобили и программы.
Вы купили автомобиль. Материальная составляющая этого продукта - это полторы-две тонны железа, резины, полимеров, кожи и еще чего угодно. Информационная составляющая - это инженерные решения, заложенные в автомобиль, его конструкция. Узлы и детали соединены именно таким способом, а не как-то иначе. Вы можете разобрать автомобиль (провести "анализ" автомобиля) до последнего винта и получите информацию о строении автомобиля. Т.е. получите информационную составляющую. В принципе, информационную составляющую можно получить и у производителя автомобилей.
Теперь программы. Материальная составляющая - это носитель, на котором продается программа. Программ без носителей не бывает. Носителями могут быть мозги инженера, компакт-диски, сетевые кабели или беспроводные каналы связи. Информационная составляющая - это опять же инженерные решения, почему операторы (машинные команды) идут именно в такой последовательности, а не как-то иначе.
Итак, программа - такой же продукт, как и автомобиль. Эти два продукта различаются только соотношением в них информационной и материальной составляющих.
Возникает вопрос: почему производители автомобилей продают автомобили и не напрягаются по поводу использования информации из их продуктов для создания копий?
Все дело в материальной составляющей. А именно: ресурсоемкость создания копии продукта на основе информационной составляющей. Т.е. воспроизведение материальной составляющей продукта по информационной.
Что получается с автомобилем. Мы купили автомобиль. Разобрали все, что можно разобрать и получили информационную составляющую. Теперь у нас есть достаточно информации, чтобы сделать копию автомашины. Но создание такой копии ресурсоемко. Настолько ресурсоемко, что производители автомобилей не волнуются по поводу создания пиратских копий. Хотя теоретически можно создать копию автомобиля по его информационной составляющей, практически это невозможно. Вот что важно: производители автомобилей позволяют пользоваться информационной составляющей их продуктов без ограничений. Мы могли бы, разобрав автомобиль, почерпнуть какую-нибудь хитрую мысль и использовать ее по нашему усмотрению. Но производитель не волнуется: главное, что мы не можем создать копию из полученной информационной составляющей.
Теперь программы. Мы купили программу. Материальная составляющая - это носитель, например, компакт-диск. Сделать копию программы по ее информационной составляющей не сложно, скорее даже очень просто. Если кто-то продиктует нам какую-то программу по-байтно, т.е. передаст нам информационную составляющую, мы без труда сделаем копию, т.е. восстановим материальную составляющую по информационной. Тем не менее, создание копии программы потребляет ресурс. Пусть малый, но потребляет. Так что утверждения типа "копирование программ ничего не стоит", не верны. Стоит, хотя и мало. Для передачи информации требуется энергия, это закон. Именно из-за низкой ресурсоемкости создания копии программ и процветает пиратство ПО. Если бы автомобили копировались с такой же легкостью, как и программы, производителям автомобилей пришлось бы как-то защищать себя от пиратов.
Рассмотрим такую ситуацию: копирование программ очень ресурсоемко. Некоторый производитель продал своему клиенту некую программу. Клиент пересказал эту программу по-байтно третьему лицу. Что получается? И клиент, и третье лицо знают о программе (продукте) столько же, сколько знает и производитель. Т.е. все трое имеют информационную составляющую продукта. Но только производитель имеет достаточно ресурсов, чтобы делать копии. Именно ресурсный барьер делает невозможным пиратское копирование продукта.
Что из всего этого следует.
1. Программы - это продукт, который может продаваться как оптом, так и в розницу, или вообще как вздумается производителю.
2. Из-за существования двух составляющих, информационной и материальной, существуют два способа бороться с пиратским копированием продуктов вообще и программ в частности.
Первый способ, использует материальную составляющую: увеличить ресурсоемкость создания копии продукта. К слову сказать, методы защиты ПО от пиратского копирования, использующие всякие драйверы, мониторы, шпионы и пр., даже теоретически уязвимы: они сами являются программами, и могут быть скопированы вместе с основной программой практически с той же ресурсоемкостью. Т.е. наличие таких наблюдателей не делает копирование менее доступным. После создания такой копии (основная программа + наблюдатель) применяется взлом. Естественно, взлом применяется и к оригиналу, т.е. взлом - это один из способов пользования продуктом (не обязательно программой). Не путайте взлом с копированием: после взлома новых копий не появляется. Производителю все равно, взломали вы вашу легальную копию или нет, ему все равно. В своей копии вы можете ковыряться сколько угодно (разборка автомобиля это тоже своеобразный взлом). Но если вы сделаете копию продукта, не важно, взломанную или нет, - это производителю не понравится.
Второй способ, использует информационную составляющую: устранить вообще информационную составляющую продукта, а значит устранить само понятие продукта. Предоставлять только услуги. Производители автомобилей больше не производят автомобили, они продают транспортные услуги. Производители СУБД больше не продают программ СУБД, они продают услуги хранения и обработки данных. От услуги нужен только результат. Только результат и продается. Как именно конкретная услуга предоставляется, клиенту без разницы.
3. Производитель может спокойно открывать информационную составляющую своих продуктов, если он уверен, что копирование продукта достаточно ресурсоемко. Производители автомобилей этим в принципе и занимаются, предполагая, что у покупателей нет соответствующих мощностей для создания копий.
Wednesday, March 15, 2006
Объектный подход (подход, или моделирование, но не объктно-ориентированное программирование) использует три основных принципа:
1. Всё есть объект. 2. Объект хранит свое состояние. 3. Доспут к состоянию объекта можно получить единственным способом - послать сообщение объекту.
Следствие: объектная модель некой реальной сущности занет о самой себе достаточно, чтобы соответствовать заданному уровню абстракции. Другими словами, объектная модель предполагает единственный источник информации об объекте - это сам объект.
Пример: моделируем кирпич. Кирпич - объект. Состояние объекта - это его атрибуты, возьмем длину, ширину, высоту и массу (т.е. детальнее нам кирпич задавать не нужно). Чтобы узнать, скажем, массу кирпича, посылаем кирпичу сообщение и получаем значение массы в каких-то единицах массы, в кг например.
Получается, что объектная модель наделяет реальные объекты знанием о самих себе. Модель кирпича должна распознавать входящие сообщения (отличать одно от другого), знать свою внутреннюю структуру и выдавать корректный результат. Реальный кирпич ничего этого, яссное дело, не делает, а модель кирпича делает.
То, что объектный подход использует атрибутивизм - нет ничего страшного. Моделирование (и объектное в частности) может использовать любые предположения и условности, чтобы описывать реальные сущности, главное чтобы модель в конечном счете была адекватной этой самой реальной сущности.
Sunday, March 5, 2006
Планета. Люди. Люди за-по-ло-няют планету... :)
Мотоциклисты без шлемов погубят человечество, а точнее популяцию людей как вид. Ну не погубят, но повысят риск вымирания :)
Я вот чего подумал. Популяция (как целое) породила это правило, потому что популяции не выгодно, чтобы ее индивидумы умирали просто так.
Цели популяции не совпадают с целями индивидумов из которых она состоит. Ее единственная цель - выжить, при чем в прямом смысле. Популяция рассуждает примерно так.
Вот один тут решил покататься на байке без шлема, не фиг. Убъется ненароком - глупая, пустая смерть. Ты нужен популяции как материал для латания всяких дыр. Популяция не знает, что брать от каждого, потому что все разные, и определять каждый раз чем кто хорош - накладно. Поэтому она берет то, что есть у любого - смерть.
Ты что-там говоришь о свободе выбора, что сам выбирашь как умереть... Ты пришел в популяцию - значит у тебя есть права и обязанности. Не нравиться - идешь и сам изобретаешь байк, ДВС, колесо и т.д. и катаешься. Без шлема. Своим рождением в род. доме ты уже должен популяции.
Права: пользоваться благами популяции. Где ты взял свой байк? Купил? За деньги? Кот-то изобрел этот байк, чтобы ты сейчас на нем ездил, кто-то позволил тебе заработать денег, в конце концов кто-то придумал сами деньги. Пользование правами налицо.
Обязанности: ты соблюдаешь правила популяции. Одно из них - умереть просто так нельзя :) Если ты решил умереть, умри так, чтобы было выгодно популяции. Т.е. у тебя два варианта смерти: либо естественная (тут популяция пока бессильна), либо полезная для популяции. Ты нужен, что бы в нужный момент умереть за популяцию, лечь в канаву чтобы другие прошли по тебе как по мосту. А так ты убъешся раньше времени катаясь по-пьяни без шлема.
Так что езда без шлемов, без ремней безопасности, аборты - все это не выгодно популяции :) Иногда цели индивидума совпадаеют с целями популяции.
Monday, December 19, 2005
Каждому, кто оставит коммент, я: 1. Расскажу случайный факт о вас. 2. Скажу какая песня/фильм/произведение напоминают мне о вас. 3. Скажу что-то, что будет иметь смысл только для нас двоих (ну, если есть такое). 4. Расскажу свое первое воспоминание о вас. 5. Скажу какое животное вы мне напоминаете. 6. Спрошу вас что-то, что всегда хотел знать о вас. 7. Если я это сделаю - вы должны запостить этот опрос в своем дневнике.
Писали мы тут доку. Пытались избавится от двусмысленности и определить все однозначно. Вот два забитых до сметри слова, "сервер" и "сервис". Программисты и инженеры, кто знает определение слова "сервер"? :)
Вот есть такие свойства программ: надежность, безопастность, производительность, ремонтопригодность, ясность. В каком в убывающем по важности порядке все это расставить? Одно свойство на строке :)
Saturday, December 10, 2005
В "Кавказской пленнице", тост М.Глузского заканчивался словами "Так выпьем же за то, чтобы наши желания всегда совпадали с нашими возможностями". Этот тост ограничен сверху. Наверное лучше вот так: "... чтобы наши возможности всегда совпадали с нашими желаниями". А этот ограничен снизу :) Почувствуйте разницу.
Friday, December 2, 2005
У А.К.Дойла (кажется в "Последнее дело Холмса") есть такое выражение: наличие определяет все, отсутствие не определяет ничего. Великий принцип, которым люди почему-то пренебрегают. Фактически это идея использования трехзначной логики. Люди больше жалуют принцип "кто не с нами, тот против нас". Не поймите буквально, речь не идет о вопросах войны и мира, просто людям видимо так проще - что не белое, значит оно черное.
Пример диалога. Что интересно, диалоги с таким содержанием чаще всего встречаются в... анекдотах.
... - Он не хороший. - Так значит он плохой... - Я этого не говорил. - Ты только что сказал, что он нехороший?! - Я сказал что он не хороший, т.е. ничего хорошего он мне не сделал. Но и ничего плохого тоже. Я вообще мало знаю о нем. Для меня он не хороший и не прохой.
После последней фразы собеседник в шоке. Как ему объяснить что есть третий вариант, когда нельзя сказать ни да, ни нет? Пока человек не сделал что-нибудь плохое, его нельзя считать плохим, даже если он не сделал ничего хорошего. Это и сказал Дойл: наличие плохого поступка однозначно делает человека плохим, а отсутствие такового - никак человека не определяет и судить о нем - значит просто фантазировать. Короче говоря, презумпция невиновности рулит.
Жаль, что строгость мышления у людей не в чести. У бинарных людей.
|
|