Все знают, что при заключении договора с дьяволом важно точно и досконально прописать все условия, иначе душа будет продана весьма невыгодно.
Ну, лично я, ввиду своего невежества, не знаю, как нужно заключать договоры с дьяволом.
Что касается темы, "программы как договора", то это договор между кем? Компьютер стороной договора быть не может т.к. не волен по своему усмотрению согласиться или отказаться от выполнения программы. Разработчик стороной договора быть не может т.к. тоже не принимает решения о запуске программы. Пользователь стороной договора быть не может т.к. сам по себе программный код (без лицензии на его использование) не предоставляет пользователю никаких прав и не налагает никаких обязанностей.
Здравствуйте, L.K., Вы писали:
LK>Компьютер стороной договора быть не может т.к. не волен по своему усмотрению согласиться или отказаться от выполнения программы.
Да ну? Что он, по-Вашему, делает, отказываясь выполнять деление на нуль или обращение по невалидному адресу?
А право согласиться/отказаться вообще не является обязательным элементом при заключении договора вообще, оно предусмотрено только для определенных видов договоров, отнюдь не для всех.
LK>Разработчик стороной договора быть не может т.к. тоже не принимает решения о запуске программы.
И что же он делает, запуская программу для тестирования?
LK>Пользователь стороной договора быть не может т.к. сам по себе программный код (без лицензии на его использование) не предоставляет пользователю никаких прав и не налагает никаких обязанностей.
В этом вопросе отделение разработчика от пользователя вообще не имеет смысла.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Наткнулся в канале одного умного человека на уподобление программы договору[/url].
Как по мне так очень натянутое сравнение.
Код это код (набор инструкций), договор — это договор. В смысле обычно договор это соглашение, предусматривающее что обязана сделать каждая из сторон, а инструкция — односторонний документ.
Совершенно не понятно в чем ценность того, чтобы называть компьютерную программу (набор инструкций) договором.
Впрочем, почитав несколько его постов, утвердился во мнении что стиль этого умного человека чем-то похож на стиль графомана velkin на этом форуме.
Возможно поумнее, но вот с форматирование беда, есть над чем поработать
ЕМ>Интересная точка зрения, мне раньше не попадалась.
Если ты про вторую часть, где разбирается необходимость изменения традиционного подхода к разработке для адаптации к современным реалиям,
таким как фрагментированное мышление и необходимость изменений уже в процессе разработки,
то как же массовый переход на "гибкие технологии разработки" (аджайл в смысле, в гипертрофированном виде — скрам) и его обоснование?
Здравствуйте, bnk, Вы писали:
bnk>договор это соглашение, предусматривающее что обязана сделать каждая из сторон
Да, и для достижения поставленной цели программист обязуется написать правильный код, а компьютер обязуется правильно его исполнить.
bnk>инструкция — односторонний документ.
Который имеет смысл лишь тогда, когда обязателен к исполнению.
bnk>Совершенно не понятно в чем ценность того, чтобы называть компьютерную программу (набор инструкций) договором.
Просто несколько более широкий взгляд на вещи, чем традиционный.
bnk>утвердился во мнении что стиль этого умного человека чем-то похож на стиль графомана velkin на этом форуме.
Подозреваю, что то же самое Вы скажете о любом человеке, не стремящемся к краткости изложения.
bnk>Возможно поумнее
Думаю, минимум на порядок умнее, и на столько же образованнее.
bnk>Вот с форматирование беда, есть над чем поработать
Ему, слава богу, неинтересны такие мелочи, а то б я разочаровался.
ЕМ>>Интересная точка зрения, мне раньше не попадалась.
bnk>как же массовый переход на "гибкие технологии разработки"
А тут прослеживается неплохая аналогия с договорами граждан с банками, сотовыми операторами и другими поставщиками услуг.
LK>>Компьютер стороной договора быть не может т.к. не волен по своему усмотрению согласиться или отказаться от выполнения программы. ЕМ>Да ну? Что он, по-Вашему, делает, отказываясь выполнять деление на нуль
Компьютер не отказывается, а покорно выполняет деление на ноль строго в соответствии с заданными ему инструкциями (которые предписывают ответить выбрасыванием исключения). Сделать что-либо наперекор инструкциям компьютер не может в принципе.
ЕМ>А право согласиться/отказаться вообще не является обязательным элементом при заключении договора вообще
Я не представляю себе договора без права согласиться или отказаться. Это уже не договор, а приказ.
LK>>Разработчик стороной договора быть не может т.к. тоже не принимает решения о запуске программы. ЕМ>И что же он делает, запуская программу для тестирования?
Тестирование — это необходимая часть разработки. Разработчик обязан запустить программу для тестирования, он не может отказаться (а если откажется, то он уже не разработчик).
ЕМ>В этом вопросе отделение разработчика от пользователя вообще не имеет смысла.
Разработчик — разрабатывает программу. Пользователь (это не обязательно человек; это может быть и организация) — пользуется программой, извлекает из неё пользу.
Здравствуйте, L.K., Вы писали:
LK>Компьютер не отказывается, а покорно выполняет деление на ноль строго в соответствии с заданными ему инструкциями (которые предписывают ответить выбрасыванием исключения).
Фишка в том, что в отдельно взятой программе эти инструкции, как правило, не указаны — они являются частью более общего соглашения (типа закона). Ситуация несколько напоминает признание договора ничтожным по причине противоречия отдельных его положений законодательству.
LK>Сделать что-либо наперекор инструкциям компьютер не может в принципе.
С поправкой: если исправен (соблюдает условия всех известных законов/соглашений).
LK>Я не представляю себе договора без права согласиться или отказаться.
Да, это типичное обывательское понимание.
Когда Вы родились, государство взяло на себя обязательство защищать Ваши права, жизнь и здоровье. А Вы таким же образом взяли на себя обязательства соблюдать установленные государством законы. Соотношение этих прав и обязанностей несколько раз менялось в течение Вашей жизни, без каких-либо телодвижений с Вашей стороны.
Еще, если Вы дадите объявление о продаже чего-либо, не оговорив особых условий, то не будете иметь права отказать любому из обратившихся (само собой, пока продаваемая вещь находится в Вашем обладании). В случае отказа будет возможность принудить Вас передать эту вещь желающему за оговоренную цену. Называется "публичная оферта".
LK>Разработчик — разрабатывает программу. Пользователь (это не обязательно человек; это может быть и организация) — пользуется программой, извлекает из неё пользу.
Это не имеет значения в вопросе взаимодействия программы с компьютером.
LK>>Компьютер не отказывается, а покорно выполняет деление на ноль строго в соответствии с заданными ему инструкциями (которые предписывают ответить выбрасыванием исключения). ЕМ>Фишка в том, что в отдельно взятой программе эти инструкции, как правило, не указаны
В команде "рота, вперёд!" тоже не указан план стратегического наступления.
Дело не в том, где указаны инструкции, а в том, что компьютер обязан их исполнить.
LK>>Сделать что-либо наперекор инструкциям компьютер не может в принципе. ЕМ>С поправкой: если исправен (соблюдает условия всех известных законов/соглашений).
Если компьютер не исправен (или если человек невменяем), стороной договора он не может быть в принципе.
ЕМ>Когда Вы родились, государство взяло на себя обязательство защищать Ваши права, жизнь и здоровье. А Вы таким же образом взяли на себя обязательства
Я, только что родившийся, взял на себя какие-то обязательства?
LK>>Разработчик — разрабатывает программу. Пользователь (это не обязательно человек; это может быть и организация) — пользуется программой, извлекает из неё пользу. ЕМ>Это не имеет значения в вопросе взаимодействия программы с компьютером.
Не с компьютером, а с программой (речь же шла о программе). Как это не имеет значения? Пользователь запускает программу добровольно (напоминаю, что пользователь может быть не человеком, а организацией; скажем, пользователем коммерческой 1C является коммерческая фирма, а вовсе не наёмный бухгалтер). Разработчик запускает программу вынужденно, для тестирования (которое является необходимым этапом разработки).