суббота, 16 января 2010 г.

[comp.prog.education] Что было хорошего когда я учился программированию в университете

Продолжение темы, поднятой статьей Страуструпа об обучении программистов. Я хочу рассказать об одной вещи, которую никто не упоминает в разговорах о подготовке программистов в ВУЗах. Которую, однако, я считаю очень важной и с которой мне в свое время очень повезло. Это – свобода в экспериментировании во время учебы.

Вот чем хороша учеба, так это тем, что можно пробовать разные вещи, совершать ошибки и бросать что-то недоделанным, когда к этому теряется интерес. Это время такое – хочется попробовать все. Да и преподаватели относятся к студентам именно как к студентам, прекрасно понимая, что много от них ждать не приходится.

Вот мы в свое время и пробовали. На первом курсе, когда машинное время (практически неограниченное) у нас выделялось на Robotron 1715, мы с друзьями писали на Turbo Pascal 3 простенькие игрушки (вроде Sokoban).

Потом нас пересадили на IBM PC и доступ к машинам сильно сократился, но все равно удавалось экспериментировать. Так, когда в качестве очередной лабораторной работы было озвучено задание “Работа с текстовыми файлами на языке Паскаль”, то мне захотелось сделать текстовый редактор по типу редактора Turbo Pascal 5.0. И написал, пусть сильно урезанный по возможностям, но работающий. И забросил его сразу же, поскольку больше он мне не был интересен.

А когда на втором курсе нам начали читать ассемблер x86, то вместо обычных лабораторных работ мы взялись написать растровый графический редактор. На ассемблере. Конечно, не написали. Но получили опыт, совершенно несравнимый с тем, который нас ждал, если бы мы пошли обычным путем – через простенькие задачки, вроде “написать процедуру сравнения двух строк на языке ассемблера”.

Потом были и другие эксперименты, которые развивались по одной и той же схеме – интересная идея, быстрое воплощение 80-90% от задуманного, затем резкая потеря интереса и, если повезет, то пропихивание проекта как курсового, или получение с его помощью автомата на зачете или даже экзамене. Но не смотря на то, что весь написанный код с удовольствием отправлялся в корзину, опыт-то оставался. Собственный опыт. Поскольку все приходилось познавать самостоятельно, а такие знания гораздо ценнее.

Подобная свобода творчества была невозможна без особой атмосферы здоровой соревновательности и обмена знаниями между студентами (и даже преподавателями). Кто-то научился программировать знакогенератор на IBM PC – нужно его расспросить и сделать что-то покруче, например, текстовые окошки с тенями. Сделали! Тут же у тебя расспрашивают, как тебе это удалось. А потом тот, кто тебя расспрашивал, показывает тебе графический курсор мыши в текстовом режиме – точь-в-точь такой, как в Norton Utilites. А ты в “отместку” делаешь библиотеку для реализации менюшек и диалогов с кнопочками и редакторами, как у тех самых утилит. А кто-то тебе показывает библиотеку Zinc Interface, а другой говорит, что Turbo Vision гораздо круче… :)

Конечно же, ничего этого не было бы без доброжелательного отношения к нашим “поискам” со стороны преподавателей. Контроля за их работой, наверное, было меньше в те времена. Поскольку за удачно решенную “на спор” с преподавателем задачу он мог зачесть все лабораторные работы за семестр, даже не требуя никаких формальных отчетов от тебя. Или мог поставить “отлично” автоматом на экзамене за то, что именно ты координировал работу всех остальных студентов при коллективной разработке общего большого задания. (Сейчас до меня доходят слухи, что работа преподавателей в родном универе жутко забюрократизированна – должны быть строгие учебные планы на каждую лекцию и лабораторную, все лабораторные должны быть запротоколированы, никаких “автоматов” на экзаменов и пр.)

Что оставалось после этого в сухом остатке? Хорошо развитые базовые навыки в написании программ. У нас уже формировался стиль (умение именовать сущности в программе именно тогда у меня сформировалось), накапливался опыт комментирования и документирования, отладки и, в какой-то степени, проектирования. Конечно, настоящими программистами нас ВУЗ не сделал. Но потом, как говорят, придя на производство, лично мне было просто – учиться программировать не нужно было. Сейчас же, беря молодого сотрудника на работу, первое время приходится тратить именно на обучение программированию.

Не могу сказать, что тогда было хорошее и актуальное преподавание профильных предметов. До очень многих вещей мы доходили сами, на своих ошибках. Но вот атмосфера и свобода, которая царила во время учебы – вот это было главным.

Почему я делаю акцент на свободе экспериментирования во время учебы? Потому, что насколько я могу судить, у студентов-программистов ее уже нет:

  • строже стала учеба (по слухам, сейчас в Белоруссии зарплата учителей напрямую зависит от количества заданных на семестр лабораторных, поэтому каждый преподаватель старается дать по 10-15 лабораторных по своему предмету – это очень много);
  • возрос спрос на программистов и студенты сейчас начинают работать уже на 2-3 курсах (а раз пошел работать, то все – лопату в руки и копай отсюда и до обеда).

В результате нет возможности безнаказанно совершать детские ошибки, нет той свободы поиска… Что не есть хорошо. Вряд ли бы я программировал бы так, как сейчас, если бы в конце первого курса у меня не было возможности написать простенький текстовый редактор в качестве лабораторной работы.

пятница, 15 января 2010 г.

[comp.prog] POCO 1.3.6p2 released!

Состоялся выход очередной обновленной версии POCO –1.3.6p2. Это bug-fix версия, переход на которую рекомендуется всем, кто использует модули Crypto, Net, NetSSL и XML. Полный список изменений можно посмотреть в CHANGELOG.

URL для скачивания: http://sourceforge.net/projects/poco/files/sources/poco-1.3.6

[comp.prog.thoughts] Краткое впечатление после прочтения статьи Б.Страуструпа об обучении программистов

Закончил чтение статьи “What Should We Teach New Software Developers? Why?” Первая мысль после прочтения: то, о чем пишет Страуструп, было в нашем, тогда еще советском, образовании. Я учился с 1990-го по 1995-ый. У нас было и общее направление – разработка ПО (в рамках которого читались курсы и по архитектуре ЭВМ, и по алгоритмам, и по структурам данных, и по языкам программирования, и по базам данных, и по системному программированию и т.д.). Но была и специализация – я шел по кафедре Вычислительной Математики и Программирования, и в рамках специализации нам читали спецкурсы по методам вычислений вообще, методу конечных разностей, методу конечных элементов, методу граничных элементов в частности. Чего не было у студентов соседней кафедры Математических Проблем Управления – у них были свои спецкурсы. Была общематематическая подготовка – дискретка, линейная алгебра, аналитическая геометрия, матан + ТФКП + основы функана, теория вероятностей, дифуры, уравнения мат.физики, методы оптимизации и пр. Были общеобразовательные курсы – от истории и философии до гражданской обороны и метрологии.

Было несколько учебных практик. Была большая производственная практика перед защитой диплома. Было множество лабораторных. Были курсовые работы (по нескольку штук на весь год). У многих курсовые перерастали в большой, долгоиграющий проект, который выливался в диплом. Зачастую толковые студенты писали код для своих научных руководителей, некоторые при этом участвовали в коммерческих проектах, которые эти руководители вели. Так что к моменту завершения ВУЗ-а те студенты, которые сами все делали, имели за плечами далеко не одну тысячу написанных и отлаженных строк на разных языках программирования.

Были у нас разные преподаватели. И типичные представители академической науки, которые считали программирование занятием для обезьян. И прожженные практики, многие из которых имели многолетний опыт написания разнообразных программных систем (часть преподавателей была переманена из гомельского КБСП). Иногда их рассказы “за жизнь” были полезнее всяких теоритических лекций.

Ну и, наконец, было подобие желаемого Страуструпом “лицензирования” специалистов – защита диплома + гос.экзамен. Ведь корочка с подтверждением того, что ты дипломированный инженер-программист, не просто так выдавалась. Право на ее обладание еще подтвердить нужно было.

В общем то, о чем “плачется” Страуструп в своей статье, уже было построено в СССР в конце 80-х. А затем – благополучно просрано. Я так думаю.

PS. Я обещался написать еще свои мысли по поводу обучения программистов. Сделаю это обязательно в одной из следующих заметок.

четверг, 14 января 2010 г.

[comp.wow] LG GW990 – очередной PDA из категории “Хочу”

Разработан компанией LG в сотрудничестве с Intel. Имеет 4.8-дюймовый экран с разрешением 1020x480, 512Mb RAM и 16Gb Flash-диск, Moorestown процессор (тактовая частота не разглашается). Предназначен для работы в 3G сетях. Работает под управлением Moblin. Дополнительную информацию, фотографии и небольшое видео можно найти на engadget.com.

Вот видео этого устройства с CES 2010:

Когда-то давно, когда я был начинающим Palm-оводом с черно-белым m105-м (разрешение экрана 160x160), можно было пользоваться устройством хоть несколько лет прежде чем перейти на что-то новое (я перешел с m105 на Sony Clie SJ20 через год). Потом новые девайсы стали появляться настолько быстро и часто, что не успеваешь собрать нужную сумму на понравившуюся тебе машинку, как появляется еще более привлекательная модель. В результате я отказался от участия в этой гонке и сейчас просто с удовольствием наблюдаю за соревнованиями производителей со стороны ;)

[life.nature] Интересный зимний эффект

В прошлое воскресенье и в понедельник у нас в городе при минусовой температуре (порядка –4 градусов) шел дождь. Ну или что-то типа дождя – мелкие капельки незамерзшей воды, а не снег или град. А потом ударили морозы. И на снегу образовался наст толщиной в 6-7 миллиметров. Коты во дворе (не понятно с какой стати) бегают по снегу даже не проваливаясь в него.

Но самое интересное – это звук, который раздается, когда ты сам наступаешь на этот наст и он ломается под твоими ногами. Звук очень похож на звук падающего на бетонный пол и разбивающегося стекла, точь-в-точь. Вчера вечером выбрасывали на помойку старую тумбочку и пришлось обходить здоровенный сугроб по снегу. Поначалу я думал, что кто-то до нас выбросил куски стекла и оно сейчас лопается у меня под ногами. Но оказалось, что это наст так звенит :) Потом шли домой и я не мог удержаться от соблазна отламывать куски наста и бросать их на снег – такой художественный “БЛЯМ-С” раздавался, не передать. Классно! Жена, правда, моего восторга не разделяла: “Ты-то хоть перестань, мне хватает того, что дочка всю дорогу до школы этим же самым занимается!”

среда, 13 января 2010 г.

[comp.prog.flame] Развернутый ответ CrystaX в споре “программирование vs математика”

Начал писать нижеследующий текст как ответ на комментарий CrystaX в предыдущей заметке. Но, поскольку объем стал получаться слишком большим для комментария, решил вынести в отдельную заметку.

Итак, CrystaX пишет:

Столько споров - и все ни о чем... Просто математика (по определению Дейкстры) - это искусство и наука эффективных рассуждений. А "множества R", "для каждого i", "подмножество элементов m, таких, что..." - это частности. Отчего такая узость взглядов?

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

Давным-давно, учась в универе, часто приходилось слышать от преподавателей-математиков (особенно старой школы), что программирование – это простое нажимание кнопок, что этому даже обезъяну научить можно, а вот математика – это совсем другое дело. И что без знания математики нам, программистам, никуда. Поначалу это было обидно слышать, мы пытались спорить. Потом привыкли. Потом я вообще практически не встречался с такой точкой зрения. Мне казалось очевидным, что повседневное программирование – это дисциплина, с математикой почти не связанная.

И тем удивительнее было увидеть веру в то, что математика – это основа программирования. И что математики не могут не программировать. Поскольку, опять же, программирование – это часть математики.

Поэтому мне и захотелось громко сказать: “Эй, посмотрите на меня. Я нифига не математик, но нормально программирую!” Я думал, что такой пример будет достаточным для опровержения вышеупомянутых утверждений.

В споре о таких вещах я бы выделил две составляющие – отдельно вопрос о том, насколько программирование является разделом математики и отдельно вопрос о том, насколько математическое мышление (не)помогает в программировании.

Первый вопрос, о программировании как подразделе математики, выглядит очевидным (на первый взгляд). Поскольку даже “полнота по Тьюрингу” – это математическое понятие, то, вроде бы, все понятно. Мол да, математика находится в основе программирования и, соответственно, программирование – это часть математики.

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

  • соблюдение стандартов кодирования в исходном тексте;
  • понятность кода;
  • степень привязки к конкретной платформе и возможные последствия от этого;
  • степень зависимости от сторонних компонентов и перспективы развития этих сторонних компонентов;
  • предположительные затраты на доработку;
  • предположительная сложность найма и/или сложность передачи проекта на сопровождение новым разработчикам.

Я думаю, что во всех этих вещах математика используется, в лучшем случае, на уровне школьной арифметики. И гораздо большую роль играют приемы из других областей – от психологии до литературы.

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

А вот второй вопрос, на счет математического мышления, сложнее. Я не знаю, что такое “математическое мышление” в общепринятом смысле (сказывается дефицит банальной эрудиции). По мне это способность человека выполнять манипуляции над абстрактными символами в соответствии с абстрактными законами. Проще говоря – манипулировать цифрами на бумаге.

Тут, по-моему, очевидно, что программисту необходимо математическое мышление. Поскольку программа – это так же абстрактные символы, которыми нужно манипулировать по определенным законам. Но весь вопрос в глубине/широте/уровне этого мышления. С моей точки зрения, уровень математического мышления у программиста должен быть ниже, чем у математика. Именно так: должен быть ниже. И компенсироваться это должно другими видами мышления – образного, литературного и даже художественного (если такое вообще есть).

Это и служит для меня объяснением того факта, что далеко не все математики хорошо программируют – их математическое мышление, например, доминирует над чувством вкуса (неудобоваримые имена переменных и функций в коде) или способностями последовательно описывать свои мысли в виде текста (плохие комментарии в коде и плохая сопроводительная документация). С другой стороны, низкий уровень математического мышления не позволяет далеко продвинуться в математике, что и видно на моем примере. (Возможно, здесь сказывается соотношение между “левосторонним” и “правосторонним” мышлением, однако в этой области я совсем не копенгаген).

Такие дела.

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

вторник, 12 января 2010 г.

[comp.prog.flame] Можно программировать и не зная математики

Вчера, сначала в комментариях к заметке “Краткие впечатления от статьи “Элементы функциональных языков”” начали спорить beroal и Skynin о роли и месте математики в программировании. А затем в RSDN-овской разборке я прочел интересное заявление (автор этого заявления окончил БГУ (Минск), факультет прикладной математики, если я правильно расшифровал ФПМ):

Невозможно знать математику и не научиться программировать.
А то, что муж за нее писал и не знал математику тоже ложь, там же лабы
все с математическими алгоритмами.

Т.е. четко прослеживается мнение о том, что математики не могут не программировать, а не математики программировать не могут. Или, в более простой и категоричной форме – математик может программировать, не математик – не может.

Данный тезис легко опровергается примерами. Взять, например, меня. Имхо, я как раз очень яркий пример того, как не зная математики (практически вообще), можно нормально программировать.

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

Для того, чтобы учиться на программиста, мне пришлось поступать на математический(!) факультет. Хорошо еще, что на специальность “Программное обеспечение ВТ и АС”. Но все равно, математики было много, особенно на первых курсах. Тут уже был конкретный приплыздец, полное непонимание того, что мне читают (за исключением, разве что, дискретной математики). Выплывал я только за счет тупого зазубривания каких-то формул (вроде производных и интегралов основных функций). Ну и плюс нас натаскивали на решение однотипных задач, в которых нужно было только запомнить, в каком месте подставить подходящую формулу. Если же попадалась нестандартная задачка – все, суши весла.

Вероятно, здесь было всего поровну – и моей лени+разгильдяйства, и моей тупости, и отсутствия простых и понятных демонстраций смысла математических конструкций. Хотя я больше склоняюсь к другому объяснению – у меня не достаточный для занятия математикой уровень абстрактного мышления + особенности памяти, поскольку я быстро забываю все, чем не пользуюсь. А в математике такое не проходит – стоит забыть, скажем, что такое базис пространства в аналитической геометрии, и после этого уже не поймешь какую-нибудь очередную тему в матанализе.

Но как бы то ни было, если в математике я был ни в зуб ногой, то в программировании все шло совершенно по другому. На своем курсе я был в числе лучших программистов. Да и потом не потерялся, как мне кажется ;)

Так что, если у кого-то есть сомнения в том, что программировать можно и не зная математики, то просто посмотрите на меня :)

Другое дело, что я не знаю, программировал бы я настолько хорошо, если бы в школе и в универе меня не тренировали усиленно математическими дисциплинами. Все-таки битиё определяет сознание и такое количество математики, конечно же, привело к какому-то (пере)упорядочиванию моих мозгов. Но в любом случае – учить не означает знать.

Для меня же очевидно (да, это большое и жирное ИМХО), что математика и программирование требует различного склада ума. По большому счету математика – это наука. И ученый не обязан уметь класть кафель. Тогда как программирование (в подавляющем большинстве случаев) – это ремесло, временами на грани с искусством. И от программиста как раз требуется умение “класть кафель”, а вот разлагать функцию в ряд Тейлора – отнюдь. Поскольку программирование сейчас – это очень обширная область деятельности, в которой существуют отдельные направления, сильно завязанные на математике (та же верификация программ). Смею, однако, предположить, что такими задачами занимаются считанные проценты от общего числа программистов.

Тема явно флеймовая и еще много можно было бы сказать, но, как в анекдоте “нутром понимаю, что 0.5 и 0.5 будет литр, а математически выразить не могу” ;)

понедельник, 11 января 2010 г.

[comp.prog.book] The F# Survival Guide – бесплатная on-line книга по F#

Собственно, вот: The F# Survival Guide. Сразу предупреждаю – она на английском.

Только сегодня наткнулся на нее, еще не читал. Просмотр пары глав по диагонали оставляет положительное впечатление. Похоже на плавное погружение в язык для новичков.

Хотелось бы самому прочитать. Поскольку OCaml меня не впечатлил, а F#, хоть и потомок OCaml-а, но развивается по своему. Да и поддержка со стороны MS… В общем, думаю, скоро по популярности он OCaml переплюнет.

[comp.prog.humour] Матч “Витязь” - “Авангард”: вот и программируй в таких условиях ;)

Скандал в КХЛ – матч “Витязь” против “Авангарда” был сорван из-за массовой потасовки хоккеистов. В результате каждой команде было присуждено техническое поражение. А теперь представьте – вы пишете программу для ведения статистики чемпионата КХЛ. Сломается она, если результатом очередной встречи между двумя командами будет поражение обоих команд? ;)

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

[comp.prog.flame] Гугловский Go признан языком 2009 года по версии TIOBE

Есть такая забавная штука – индекс популярности языков программирования под названием TIOBE Programming Community Index. Его составители раз в месяц проводят определение популярности различных языков программирования и публикуют результаты. Популярность определяется очень простым способом: в нескольких поисковиках выполняется запрос вида

+"<language> programming"

где на место <language> подставляется название языка, например, Java или C++. Потом, грубо говоря, подсчитывается количество полученных от поисковика ссылок. Какой язык больше ссылок набрал – тот и популярнее (более подробно алгоритм описан в определении индекса TIOBE).

Этот TIOBE-вский индекс на моей памяти в маразме не обвинял только ленивый. Наверное, заслужено. Ведь популярность должна быть связана с использованием – чем больше используется язык, тем он популярнее. Но данный индекс не считает ни количество проектов, ни количество программистов, ни количество строк. Поэтому термин “популярность” в нем можно определить как “степень трындежа” вокруг языка. Т.е. чем больше трындят о языке в блогах, форумах и тому подобных ресурсах, тем язык популярнее.

В такой трактовке TIOBE-вский индекс оказывается вполне адекватным. Ничуть не хуже разных рейтингов “Самая сексуальная женщина” или “Самая влиятельная семейная пара” прошедшего года. Скажем, Бред Питт и Анджелина Джоли в прошлом году были признаны самой влиятельной парой. И весь 2009 год язык D был в двадцатке самых популярных языков. С точки зрения объективной реальности – и то, и другое – это полная херня. Но потрындеть об этом можно. Вероятно, в 2009-м об этом действительно много трындели.

Кстати об итогах года. На TIOBE принято объявлять “язык года” – т.е. называть язык, который совершил наиболее заметный скачок популярности в прошедшем году. Например, в 2003 это был C++, в 2004 – PHP, в 2005 – Java, в 2006 – Ruby, в 2007 – Python, в 2008 – C.

А вот в 2009-м языком года признан язык Go от Google.

Ну что тут сказать? Всего пару месяцев назад вышел сырой прототип этого языка, а он уже на 13-м месте в списке всех отслеживаемых TIOBE языков. На нем еще не написано ни одного проекта, а он уже в двадцатке самых популярных языков программирования…

В этом феномене есть две составляющих – природа самого индекса TIOBE (который меряет hype или 3.14здеж, говоря по-русски) и удивительная способность Google привлекать массовое внимание к своим творениям. Вышел Google Mail – всемирный WOW! Вышел Google Protocol Buffers – еще раз WOW! Вышел Google Chrome – два раза КУ WOW! Теперь вот Go от Google – да это же наше все, это же просто самый популярный язык 2009-го года! ;))) Такое впечатление, что если Google под своей маркой выпустит говно на палочке – то опять будет всемирный WOW – ну как же, это же говно на палочке от самого Google! ;)

PS. Однако, в одном последний выпуск индекса TIOBE меня порадовал – из двадцатки самых популярных языков вылетел D. Причем его рейтинг на протяжении последних месяцев стабильно падал. Нужно посмотреть, подозреваю, он скоро вылетит и из первой полусотни.

PPS. Вообще, TIOBE-вский индекс чем-то напоминает Нобелевскую премию – ее вручают спустя много лет после свершения. Например, C++ удостоился награды только в 2003-м, как минимум, лет на пять позже пика своей популярности. А Python-у награду вручили даже позже Ruby. Ну, а присуждение звания “язык года” гугловскому Go – это такой же казус, как Нобелевская премия Мира Бараку Обаме ;)

воскресенье, 10 января 2010 г.

[life.sad_thoughts] Блин, завтра уже на работу…

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

Для такого подвинутого программиста, как я, это просто таки выдающееся достижение – почти две недели без работы. Поскольку в отпуске за все время своей работы (а это с 1994) я был всего один раз – взял отпуск к моменту выписки жены и дочки из роддома. Сейчас мне самому дико это читать, хотя еще недавно такое “достижение” было основой для бравады – ну, ёптыть, настоящие же программисты не нуждаются во сне!

Понять бы, почему произошел такой сдвиг по фазе… Ведь в детстве и молодости я был не дурак съездить куда-нибудь, попутешествовать. Но где-то в начале 90-х мировозрение изменилось. Наверное, я слишком буквально воспринял афоризм “Человек тридцать лет работает на репутацию, а потом репутация работает на него” :( Очень много решений принималось на основе вопроса “Если не я, то кто?” – нужно браться вот за этот проект, поскольку это единственное, что есть на примете, а больше ничего нет; нужно сделать еще и вот это, поскольку без этого мы не влезем в доверие во к этому заказчику; нужно переписать вот этот кусок, поскольку наши глюки уже исчерпали терпение пользователей; нужно запустить через месяц этот сервис, а иначе мы потеряем клиента…

Все это воспринималось как борьба за выживание. Надеюсь, такой она и была. Пока выживаю. И результаты этой борьбы в последние годы сказываются. В общем, караван идет… Хотя и накатывает иногда. Когда не работаешь. Когда работаешь, сожалеть и переживать некогда. Именно этим напряженная работа и хороша – это как стержень, который держит и направляет тебя, не давая возможности хандрить, жалеть самого себя и вообще задумываться о смысле жизни. Ну, а отпуска и путешествия? Так ведь жизнь не заканчивается :) Может афоризм на счет репутации справедлив и все еще приложится? Лет через 15 нужно будет проверить ;)

А сами новогодние каникулы прошли ударно – рекордное количество съеденного и выпитого. Жалко только, что не хватило времени прочитать книгу “Новостная интернет-журналистика” – когда-то начал, очень понравилось. Даже стал заголовки своих заметок в блоге по другому писать. Думал, на этих выходных прочитаю полностью, но пока не вышло. Подождем-с следующих больших каникул ;)

[life.photo] Пейзажи Александра Камакаева

Продолжаю традицию публикации по воскресеньям фоторабот какого-то одного мастера. Сегодня это пейзажи Александра Камакаева.

(небольшое примечание: фотографии этого фотохудожника есть как на photosight.ru, так и на photoline.ru; здесь приведены снимки с photosight-а просто потому, что там удобная система вставки фотографий в блог)

Пастель II
«Пастель II»

Осеннее утро
«Осеннее утро»

Агрегатные состояния воды
«Агрегатные состояния воды»

Воспоминания об ушедшем лете
«Воспоминания об ушедшем лете»

Зимняя меланхолия
«Зимняя меланхолия»

Проекция
«Проекция»

Prospect #2
«Prospect #2»

Летний пейзаж №2
«Летний пейзаж №2»

Дикая Хакасия. Пейзаж №2
«Дикая Хакасия. Пейзаж №2»

Осенний пейзаж-2
«Осенний пейзаж-2»

Предчувствие
«Предчувствие»

Летним утром-2
«Летним утром-2»

Тихий и холодный
«Тихий и холодный»

Зимняя лирическая
«Зимняя лирическая»

Про апрель в Саянах
«Про апрель в Саянах»

Пейзаж с жарками
«Пейзаж с жарками»

На этом, пожалуй, следует остановиться. Поскольку, если я продолжу публиковать остальные понравившиеся мне фотографии, то заметка вырастет до немыслимых размеров. Если читателям понравиться, можно будет продолжить в следующий раз. Сейчас же я рекомендую посетить персональный сайт замечательного фотохудожника Александра Камакаева.