Эдгар Дейкстра. Два взгляда на программирование. Часть 2…

Откуда взялся взгляд В? Были люди, которые чувствовали, что появление больших и быстрых машин заменит тесные башмаки хотя бы на башмаки по размеру, и что, несмотря на это, эффективность выполнения программ останется серьезной заботой программиста. Заботой, которая станет даже более важной по мере роста машин и приложений, а более сложные установки поставят перед нами еще более трудные проблемы. Также было замечено, что переключение с машинного кода на языки высокого уровня вовсе не гарантирует тех преимуществ, на которые возлагали столько надежд. В частности, программисты продолжали столь же охотно выдавать большие куски непонятного кода, и единственное различие было в том, что теперь они делали это в
более грандиозных масштабах, а высокоуровневые ошибки пришли на смену низкоуровневым. Люди также поняли, что появление языков программирования высокого уровня не уменьшает потребности в скрупулезности: избыточность языков высокого уровня лишь уменьшает вредный эффект от некоторых видов небрежности. И тогда появился взгляд В. (Взгляд В не является реакцией на кризис программного обеспечения, который стал очевиден в 1968 г., тогда как на самом деле он намного старше. Фактически сторонники взгляда В предсказали этот кризис, что не менее не истребило взгляда А.)
После этой интермедии по поводу появления взгляда В вернемся к нашему вопросу: как и почему наряду с очевидными проблемами программного обеспечения взгляд А (а именно: программирование по сути — вещь несложная) все еще здравствует. Вот ответ: из-за веры, причем не веры в лучших программистов, а веры в лучшие языки программирования или (диалоговые?) системы программирования, а также веры в лучшие технологии программного менеджмента. Я придерживаюсь мнения, что программирование — один из наиболее сложных разделов прикладной математики, поскольку оно также является одним из наиболее сложных направлений инженерии, и наоборот. Когда я попытался разъяснить одному из моих коллег-математиков, почему я придерживаюсь этого мнения, он довольно бесцеремонно отказался выслушать мои доводы и вместо этого обвинил меня и моих единомышленников-компьютерщиков в том, что мы до сих пор не создали язык программирования, который сделал бы программирование настолько простым, насколько ему и подобает быть! Возможно, мне стоило бы спросить его, почему математики до сих пор не разработали руководство, которая позволила бы любому, невзирая на отсутствие профессиональной подготовки, заниматься математикой? Копнув чуть глубже, выясняется, что сторонники взгляда А не отрицают потенциальной сложности программ и их разработки, но верят, что жизнь программистов будет становиться все легче, поскольку все наиболее сложные части задачи будет брать на себя машина. Они указывают на появление языков программирования высокого уровня, которые уже сделали программирование гораздо легче, чем во времена старых машин, и опрометчиво утверждают, что в будущем программирование станет вовсе тривиальным. Но оправданы ли такие заявления? Я много программировал как в машинных кодах, так и на языках высокого уровня, и последние, несомненно, более удобны, поскольку в этом случае многие решения, относящиеся к внутренним деталям программы, такие как распределение памяти, не приходится принимать явно, поскольку ими занимается алгоритм распределения памяти компилятора. Переход к языкам высокого уровня освобождает нас от многих обычных забот. Это вывело из программирования большую часть нудной работы и очень многое стало зависеть от изобретательности: именно та часть работы, которая занимала целые дни, исчезла! Вывод, который следует из появления языков программирования высокого уровня, — о том, что необходимы программисты большего интеллектуального калибра, — полностью подтвердился наблюдениями в Западной Европе (где я мог следить за разработками последнего времени): в конце 1960-х гг. многие крупные организации испытывали проблемы в подборе подходящей работы для программистов, нанятых 1950-е гг., поскольку профессия
переросла их интеллектуальные возможности.

PS: наткнулся на блог Евгения Степанищева - bolknote.ru. Очень позитивный, душевный и приятно оформленный “прямыми” руками блог =)). Рекомендую. А ящерицу я чето сразу заприметил =)

Ипотечный брокер…

Какое слово вселяет надежду в нас надежду, хоть на какое-то светлое будущее в собственной квартире? Правильно - ипотека. Хотя не такое уж и светлое =). Знаете же эту поговорку: если раньше девушка видела парня на собственной тачке, то думала что он крутой и успешный, а теперь она думает, что у него взят кредит на 5 лет =))). Но вернемся к ипотеке. Как любое финансовое обязательство ипотека представляет собой довольно сложный механизм, что уж говорить о процедуре ипотечного кредитования. Поэтому не имея “денежного” образование лезть в эти дела с веником и совком наверно не стоит, а доверить выбор профессионалу. Таким профи является ипотечный брокер, который предоставит вам полную информацию об имеющихся на рынке ипотечных продуктах и расскажет все в деталях. На мой взгляд пользоваться или нет услугами ипотечного брокера, это такой же выбор между принятием адвокатских услуг или мединского обследования. Надеятесь на себя? Пожалуйста. Все знаете сами? Пожалуйста. Выбор за вами, в конце концов ипотечный кредит выплачивать Вам.

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

ipoteka

Мир Вашему Дому!

Удачи!

Posted in Life. No Comments »

Эдгар Дейкстра. Два взгляда на программирование. Часть 1…

Я уже как-то публиковал статью Дейсктры. Вот новая. Перевод с англ. Олег Хачкинаев (Alf), 14 августа 2004:

Существует два расхожих и радикально противоположных взгляда на программирование:
Взгляд А: Программирование по сути — вещь несложная.
• Взгляд В: Программирование — это очень сложно.
Такое противоречие можно объяснить тем, что в этих двух утверждениях само слово «программирование» употребляется в двух совершенно различных значениях, и на этом успокоиться. Тем не менее этого все-таки недостаточно. От того, какой из взглядов считается более предпочтительным, зависят не только кадровая политика организаций, использующих компьютеры, и учебные программы высших учебных заведений, но и направление развития и исследований в самой компьютерной науке. Таким образом, имеет смысл более детально рассмотреть природу различий между этими двумя убеждениями и по возможности очертить обстоятельства, в соответствии с которыми люди выбирают один подход, а не другой. В этом и есть назначение данного документа.
В этом исследовании мне видится одно препятствие: в этой дискуссии я не являюсь нейтральной стороной. Я — убежденный сторонник взгляда В и рассматриваю взгляд А как основную причину многих печальных заблуждений.

С другой стороны, я не считаю, что наличие собственного мнения дисквалифицирует меня как автора, особенно если я заранее предупрежу об этом своих читателей и не буду притворяться нейтральным. В процессе анализа мы раскроем, как эти различные взгляды на программирование (которое является человеческой деятельностью!) связаны с различными человеческими убеждениями. Влияние предрассудков и мнений — уже само объясняет то почти религиозное рвение, с которым ведутся сражения между сторонниками разных лагерей. Начальный период истории автоматических вычислений делает взгляд А очень понятным. До того как у нас появились компьютеры, программирование вообще не являлось проблемой. Затем появились первые машины: по сравнению с нашими нынешними компьютерами они были просто игрушками, и по сравнению с тем, что мы пытаемся делать сейчас, они использовались лишь для «микроприложений». Если на этом этапе программирование и было проблемой, то весьма незначительной. Добавьте к этому источники трудностей, которые в то время поглощали — или лучше
сказать узурпировали? — большую часть нашего внимания:
1. Арифметические устройства были слишком медленные по отношению к тому, что мы хотели делать с их помощью: эти башмаки почти всегда оказывались слишком тесными, и ради эффективности программы допускались все возможные трюки кодирования (и очень немногие из них реально не использовались).
2. Разработка и конструирование арифметических устройств были настолько новой и, следовательно, трудной задачей, что, если очередная аномалия в коде инструкции могла избавить от каких-либо кульбитов, от них обычно избавлялись — разумеется и потому, что у нас было так мало опыта в программировании, мы не могли хорошо распознавать «аномалии в программном коде»; в результате нам не было необходимости использовать трюки в коде, но также у нас была великолепная возможность их применять.
3. Памяти всегда было слишком мало, и это вместе с ненадежностью первого оборудования препятствовало более разумному использованию машин.

В это время программирование представлялось в первую очередь как битва с ограничениями машины, битва, которую нужно было выиграть хитростью. Это было систематическое использование специфических особенностей каждой машины: это был расцвет виртуозного кодирования. В течение следующих 10—15 лет процессоры стали в тысячи раз быстрее, памяти стало в тысячи раз больше, и языки программирования высокого уровня вошли в обиход. И именно в это время, с одной стороны, программирование все еще прочно ассоциировалось с тесными башмаками, в то время как с другой — чувствовалось, что башмаки жмут все меньше и меньше, и ожидалось, что
еще через пять лет технического прогресса проблемы в программировании вовсе исчезнут. Именно в это время сформировался взгляд А. В конце этого периода, на волне популярности взгляда А, был разработан Кобол с тем посылом, что он должен сделать программирование как вид деятельности профессиональных программистов ненужным, позволив «пользователю» (не в это ли время слово «пользователь» стало общеупотребимым?) записывать то, что он хочет, на «простом языке», который любой может прочесть и понять.

Все мы знаем, что эта прекрасная мечта так и осталась мечтой. Следующие пять лет принесли нам вместо исчезновения всех проблем, связанных с программированием, кризис программного обеспечения, и Кобол вместо того чтобы выжить профессиональных программистов стал грандиозным инструментом программирования для еще большего их числа; и по прошествии десяти лет мы все еще имеем машины, в которых ошибки базового программного обеспечения вызывают в среднем час простоя на каждые 15 часов работы. Очевидно, что серьезные проблемы программирования до сих пор налицо…

Забавная вещь: несмотря на полную очевидность обратного, взгляд А все еще жив. Некоторые объясняют этот странный факт, с укоризной указывая пальцем на большие организации. Также можно апеллировать к организациям, которые, привлекая специалистов, разделяющих взгляд А, из-за этого потеряли возможность свободно расстаться с ним, либо к фирмам-производителям компьютеров и образовательным институтам, которые поддерживают широко распространенный взгляд А, поскольку должны представлять его как основной для их рынка. Даже если этот упрек заслуженный, я не могу принять его как достаточное объяснение живучести взгляда А, и вынужден предположить, что подход А соответствует каким-то более глубинным потребностям человеческого сознания.

PS: смотрел буклеты в турагенстве - пляжи Хорватии и Черногории просто сногсшибательны. Все-таки красиво, там где нас нет! =))) Но мы скоро и туда доберемся.

Инна Розенсон. Основы Теории Дизайна. Особенность дизайнерского мышления. Часть 3…

А теперь попробуем сопоставить логику проблематизирующего подхода, нацеленного на получение новой вещи, с подходом, связанным с получением нового знания, как это прослеживается исследователем эволюции стиля на
учного мышления М. Х. Хаджаровым. Мы уже обращали внимание на то, что современное мышление отличается от традиционного, полагавшего между всеми явлениями бытия наличие однозначных связей. В процессе развития вероятностного стиля мышления в научный категориальный аппарат вошли такие понятия, как «неопределенность», «случайность», «возможность», «вероятность» и пр., которые обнаруживают тесную связь с новейшими философскими представлениями. Такую философскую и научную парадигму называют «вероятно
стной» и «системногда стремилась сочетать в процессе поиска новизны образное и системное начала (табл. 3.2).
Расшифровка «первого этапа» исследовательского процесса весьма напоминает процедуру проблематизирующего подхода, не правда ли? Дивергенция, то есть расширение смыслового контекста объекта проектирования или исследования, — универсальный путь поиска новизны. «Второй этап» призван лишь адаптировать найденное знание к насущной реальности, он сводит многообразие решений к оптимальному для конкретных условий. «Аналоговый» же подход начинает сразу со второго, редуцирующего этапа, и потому результаты его недалеко уходят от первоначального состояния материального объекта или знания.

таблица2_thumb[1]

Так называемый проблематизирующий подход был уже давно осознан внутри профессии и вполне самостоятельно применялся параллельно с происходящим в науке изменением стиля мышления от строго детерминированного (предсказуемого) — к вероятностному. Близость эта, видимо, объясняется тем, что вероятностное начало всегда присутствовало в художественное мышления дизайнера, и это, по выражению Ю. Шрейдера, не позволяло ему «превращать «бритву Оккама» в гильотину» [60]. Итак, дизайн — посредник между художественным и научным постижением мира, но дизайн, в силу прикладного характера, мысль свою материализует, изменяя не только ментальную сферу существования человека, но и его физическое бытие.

3c0eb67ca9ec4cf33703c181c640ba8a

…а музыка была: На Заре - Гришковец, Бигуди, и Рэйнарс Кауперс (супермегапесня рекомендс)

PS: многие уже пошли в отпуска, поехали на курорты. Эх Болгария, как же ты там без меня? =))) Ну ничего скоро и мы в отпуск пойдем =).