Писать программы человек самостийно научился как только начал планировать свое поведение и передавать свой опыт в этом деле не только по наследству, чего до сих пор не понимает, как это происходит, но и посредством обучения себе подобных. Однако, только во времена, когда появились первые перфокарты и слово перфоратор имело совсем другой смысл чем нынче, только тогда классическое программирование обрело реальные контуры. Появилась особенная когорта людей, гордо именовавших себя программистами. Остальные люди не понимали и особенно не стремились к пониманию того, чем занимались их соплеменники до тех пор пока программисты не написали кучу полезных программ, вследствие применения которых улетели первые космические корабли, по-быстрому стали делаться чертежи машин, кораблей и прочих изделий технического прогресса.
Классическое программирование в первозданном виде просуществовало не очень долго, поскольку общество всерьез заинтересовалось применением программ, что вынудило программистов обернуться к пользователям лицом и поступиться принципами, то есть поделиться знаниями. В конечном итоге именно этот аспект изменил приоритеты: объектно-ориентированное программирование оказалось более перспективным и мобильным чем классическое. Появилась возможность совместить несовместимое потребителя и исполнителя в том смысле, что объект с точки зрения потребителя имеет свои свойства и содержание, а с точки зрения программиста свой синтаксис и реализацию. При классическом программировании речь всегда шла о программе как о чем-то неделимом, хотя и часто написанном по частям или коллективами программистов.
Однако тропа прогресса не всегда пряма и безукоризненна. Продекларировав лояльность к потребителю, программисты приняли объектно-ориентированное программирование, но в большей своей массе остались при своих классических убеждениях. Монстры информационного дела подлили масла в огонь и классика под девизом «аз есмь объект» ринулась вперед, но не разобравшись в сути залетела в облачные технологии от чего по сей день пребывает впотьмах, хотя и декларирует иное.
По большому счету, забыть про программу как единое целое и начать программировать в объектно-ориентированном стиле – сильное решение. Программа разлетается на множество единых, полнофункциональных, самостоятельных объектов. Каждый объект имеет свою сущность: структуру и содержание. Каждый объект допускает, определенный его сущностью, диалог с другими объектами. Это прекрасное решение. Как отладка объектно-ориентированной программы, так и ее дальнейшее развитие идет на уровне объектов и систем объектов. Это просто, удобно и эффективно.
И все было бы у нас сегодня прекрасно, если бы не увесистое классическое наследие и большая инерция сильных мира сего в области информационных технологий. Впрочем, сильные мира сего уже давно начали сориться между собой и чинить друг другу препятствия, так что это наименьшее зло с которым сталкивается прогресс в программировании. Больший вред классика наносит тем, что часто становится вынужденной альтернативой: мыслить на уровне объектов и систем объектов – очень не простое занятие, это очень даже высокая квалификация исполнителя, особенно когда под объектом понимается что-то реальное, а не то что понимает современная концепция объектно-ориентированного программирования, какой бы язык программирования мы не взяли.
Во времена ажиотажа (1988-1992 гг.), когда объектно-ориентированное программирование (ООП) вновь вошло в синтаксис языков программирования еще сильны были начальные идеи: объект – это реальный объект, а не кнопка, крестик, окошко, принтер, мышка, экран, файл, … Конечно, то к чему информационные технологии пришли сегодня это просто, удобно и эффективно. Но, по сей день программы переписывают как только появляется новый компилятор, новая среда программирования, новые обстоятельства. И все было бы ничего, хотя с этим мириться вовсе не следует, но в настоящее время пропало самое ценное что было у классического жанра – совместимость. Если уж не сверху вниз, то уж написанная вчера программа, всегда могла быть перекомпилирована или исполнена в следующей версии своего языка! Более того, с давних пор было естественно делить программы на собственно код и комментарии. Это ясно как божий день – есть программа, есть ее описание. Программа работает, а ее описание описывает ее работу. Комментарий на то и комментарий, что бы что то комментировать. Но сегодня в комментариях можно не только обнаружить код, без которого программа часто просто работать не будет, но даже если какой-либо специальный символ случайно залетит в комментарий, не гарантия что современный компилятор или интерпретатор примет правильное решение.
Таким образом, как бы передний край информационных технологий не декларировал свои достижения, по сей день остается прав товарищ Крылов. Его басня про лебедя, рака и щуку не только не потеряла своей актуальности, но и может реально пригодиться тем кто всерьез намерен восстановить былую силу объектно-ориентированной идеи. Иначе говоря, размышляя о достоинствах классического и объектно-ориентированного жанров письма, можно легко заметить весьма объективные обстоятельства: есть опыт и там и там, есть понимание что нужно сделать. Осталось малое – сделать.