понедельник, 4 июля 2011 г.

Нужен ли программисту успех

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

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

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

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

Так Сергиевский Игорь уже 15 лет пишет систему управления предприятием для свинцового завода. Такого виртуозного обращения с FoxPro я ещё не видел. Пока он писал на досовском 2й версии, в котором лишь 24 рабочих места, у него возникла задача на 120 таблиц. И он написал менеджер кеша таблиц. Причём это работает до сих пор на 9й версии.

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

Что интересно - его успех вообще не задевает. Несмотря на невероятные успехи на программистском поприще, он остаётся с незамутнённым сознанием и не обращает внимание на свои успехи, а просто идёт вперед и что-то пишет ещё.

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

Вот и возникает вопрос: может не нужен программисту успех? Может ему просто нужно любить своё дело, тогда и будет радость в его работе?

четверг, 30 июня 2011 г.

Отладка поточных интерфейсов

Их отладка очень напоминает медитативный процесс созерцания движения алгоритма по дереву разбора. Глубже по ветке внутрь, выше к стволу и опять обратно.
Когда всё работает даже не задумываешься как оно устроено, но вот когда глючит - вот тут набегаешься. И потеря фокуса внимания - лишь малая проблема.
Приходится рисовать или помнить всё дерево объектов, что созданы поточными интерфейсами и хорошо бы ещё некоторую дополнительную информацию. Решив писать проект для скорости на Delphi 7 я пришёл к тому, что через два года уже не так просто отойти от этой системы в сторону Net.
А в самой среде отладка даже с "Окном просмотра" не так комфортна как в Visual Studio. Там хоть дерево можно было посмотреть. Тут же приходиться медитировать над тем, что же работает и что может быть причиной отказа.
В общем сложилось впечатление, что поточные интерфейсы очень капризный инструмент. Мощь его велика, но когда она оборачивается против тебя, чувствуешь, что многое ещё предстоит изучить.
Как я понял - поточные интерфейсы не для слабых духом.

Поточные интерфейсы (Fluent Interfaces)

Работаю над внутренним языком и увидел, что поточные интерфейсы обеспечивают более читабельный код. Но как при любой уборке - в месте реализации этих интерфейсов вечно творится хаос.
Ведь для поддержания их работоспособности нужно учитывать зависимости. Любимая ООП парадигма отходит на второй план: тут уже не до сокрытия информации - нужно знать кто и когда тебя вызвал, чтобы можно было вернуться на уровень назад.
В общем впечатления двоякие: код пишется легче, его уровень выше и ближе к предметной области; поддержка поточных интерфейсов приводит к увеличению связей. Хорошо ещё можно всё это спрятать в один модуль. Но это напоминает уборку с заметанием мусора под шкаф или ковёр. Вроде всё чисто, но есть "тайные места", где увеличено количество мусора.

Надо будет попробовать рефакторить этот спагетти код поддержки. Может поточные интерфейсы можно реализовать соблюдая чистое ООП?

среда, 29 июня 2011 г.

DSL и с чем его едят

Последнее время увлёкся созданием DSL как внутренних, так и внешних. Это очень увлекательно и меняет подход к программированию.

Как на другом понятийном уровне пишешь. Да, не спорю - поточные интерфейсы замучаешься отлаживать, но при этом получается красивый и читабельный код, что немаловажно. Мы ведь читаем код в 10 раз больше, чем пишем.

Одна проблема с внешними DSL в том, что приходится создавать компилятор или интерпретатор. А эта задачка "не по зубам" молодым и средним программистам.

Но результат того стоит. Помню, на свинцовом заводе Сергиевский Игорь создал свой интерпретатор формул для бухгалтерии. Мотивировал тем, что: "Запарили они меня с этими изменениями..." Так в результате бухгалтера на этом языке, близком к русскому, натворили такие формулы, что диву даешься.

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

Развиваешь код, получаешь красивую систему. И к тому же в придачу к инвестициям - расширяемость и гибкость системы увеличивается на порядок.

Ученики и иже с ними

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

Хочу поблагодарить их.

* Андрей Вытнов - генератор идей и интересный собеседник, удачи тебе в новых начинаниях и на новом месте

* Ирина Кувшинова - умница, глубоко вникает в проблему и показывает пути решения, которые видит своим светлым разумом. Да и просто красивая женщина. Мне приятно было работать с тобой. Счастья в новой семейной жизни.


Что интересно - так это то, что программирование вдоём действительно интересно. Это и общение, и общие интересы и радость достижения.