Компактное программирование

О проекте

Если о некоторых проблемах компьютерной отрасли предпочитают не говорить и не писать, это ещё не значит, что их нет и никогда не было; или что они исчезли либо потеряли актуальность; или что их в основном уже решили: возможно, это значит всего лишь то, что решили о них не говорить и не писать. Говорить о своих проблемах значит вредить своему бизнесу. Даже о проблемах потенциальных клиентов надо говорить осторожно, иначе испортишь им репутацию. В условиях рыночной экономики обсуждать собственные проблемы начинают только тогда, когда скрыть их уже невозможно. Поэтому на страницах интернета, интранетов и всяких компьютерных журналов -- лишь безмятежно улыбающиеся лица. Но ведь проблемы-то есть! И не лишь бы какие, а ФУНДАМЕНТАЛЬНОГО ХАРАКТЕРА. И они, по-видимому, усугубляются, потому что растёт и компьютерная отрасль, и средний размер программных продуктов. Рыночный характер функционирования компьютерной отрасли, отличаясь известными преимуществами, имеет также и значительные недостатки, в частности, порождает неуместное использование про- граммных средств, торопливость в их разработке, перегруженность их компонентами, рассчитанными на то, чтобы прозводить впечатле- ние на потребителя, и всё это в дальнейшем ставит перед необходи- мостью исправления большого количества ошибок и выполнения боль- шого количества доработок. На профессиональные программные продукты зачастую переносятся приёмы оформления, которые сначала стали привычными в непрофес- сиональных продуктах типа компьютерных игр. Между тем, излишества отражаются не только на стоимости и быстродействии программных продуктов, но также на удобстве использования их основных функций и на их надёжности. Компьютерные программы становятся такими же изящными, удобными и надёжными, как женские туфли на высоком каблуке. Компьютерная отрасль со времени своего появления в основном "успешно растёт", но хорошего в этом мало. Увеличение числа занятых в отрасли, повышение объёмов капиталовложений в неё и даваемой ею прибыли являются показателями благополучия этой отрасли только с точки зрения её самой, но не с точки зрения общества в целом. Для общества в целом было бы лучше, если бы отрасль выполняла свои функции с как можно меньшими затратами человеческого ресурса и пр. Неуместная размашистость, допускаемая при создании компьютерных программ, формирует у многих дурную привычку к абсурдности, а эта привычка потом проявляется и в разных других делах. Если чуть внимательнее присмотреться к тому, что общество полу- чает от компьютеров, то неизбежно возникнет предположение, что в настоящее время компьютерная отрасль занимается в основном ней- трализацией мозгов. Задействованные в ней люди решают по преиму- ществу внутренние проблемы отрасли, порождённые дефектами органи- зации, узостью мышления, эгоистичной позицией предприятий. Когда компьютеры ещё только "входили в нашу жизнь", на это можно было смотреть сквозь пальцы. Но сегодня, когда они уже "вошли в каждый дом", это превратилось в глобальную проблему такого же порядка, как дефицит энергоресурсов или загрязнение окружающей среды, а то и более актуальную. Компьютеры могли бы стать мощным дисциплини- рующим и развивающим фактором в различных областях деятельности, а стали по преимуществу фактором разлагающим и абсурдизирующим. Для преодоления этого требуются значительные усилия: организа- ционные, исследовательские, преподавательские и пропагандистские. Всякий программист, задумывающийся о сути своей работы, оказывается перед выбором: участвовать в коллективном жлобстве и абсурдизации общества или разойтись в мнениях с большинством коллег (что чревато разными неприятностями вплоть до невозмож- ности найти приемлемую работу по специальности). Выход может состоять в том, чтобы противостоять преобладающим тенденциям неявно и гибко. Но настойчиво. В качестве средства возвращения компьютерной отрасли в рамки целесообразности предлагается КОМПАКТНОЕ ПРОГРАММИРОВАНИЕ. Принципы компактного программирования: 1. Разрабатывать только такие компьютерные технологии, которые действительно дают полезный эффект, а не переносят усилия из одной области в другую. 2. Стремиться не к максимуму, а к оптимуму: обеспечивать наи- лучшее выполнение основных функций программного продукта, а не наибольшее разнообразие функций. 3. Обеспечивать программному продукту минимальное разнообразие компонентов, то есть как можно шире использовать немногие, но эффективные технические решения. 4. Минимизировать применение чисто декоративных экранных элементов. Требования к "интерфейсу с пользователем": понятность, удобство, защита от пользовательских ошибок. 5. По возможности применять хорошо отлаженные прототипы. Тратить больше усилий на совершенствование типовых решений. Необходимо уделять первоочередное внимание совершенствованию используемых прототипов, технологий разработки и сопровождения, соглашений по именованиям компонентов программного продукта, интерфейсу с пользователем, оформлению кода. Необходимо способствовать тому, чтобы представление заказчика о том, какой программный продукт ему нужен, преимущественно сводилось к таким требованиям, техническая реализация которых может быть сделана простой и надёжной. Конечно, задача обеспечения компактности и прозрачности про- граммных продуктов должна ставиться, в первую очередь, при раз- работке новых языков программирования и инструментальных систем. Но более или менее значительная рационализация программного кода возможна при использовании ЛЮБОГО уже существующего языка программирования. Уровни проблем программирования: 1. Разработка стратегии использования компьютеров: как распре- делять функции между человеком и компьютером, чтобы человек не деградировал и не попадал в чрезмерную зависимость от компьютерных технологий; как организовать развитие компью- терной отрасли, чтобы она не отнимала слишком много сил и не порождала изделий, от которых больше вреда, чем пользы. 2. Разработка принципов компьютерной архитектуры, принципов программирования, организации баз данных. 3. Разработка операционных систем, языков программирования, СУБД. 4. Разработка архитектуры прикладных систем, разработка технологий программирования, принципов компьютерного обучения. 5. Разработка прикладных систем. Разработка документации на системы. 6. Установка систем, сопряжение систем, сопровождение систем. В настоящее время 99% усилий специалистов приходится на уровни 4-6. Между тем, чем больше внимания уделяется решению проблем высших уровней, тем меньше возникает проблем низших уровней. Вообще говоря, положением дел в программировании недовольны только лентяи, "старички", менеджеры-неудачники и непризнанные пророки, тогда как трудоголики, творчески припыленные личности, поборники технического прогресса и любители компьютерных развлечений считают, что в компьютерном деле всё или почти всё хорошо, а кое-что даже прекрасно.

Компьютерный Армагеддон.

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

Возврат на главную страницу
Hosted by uCoz