serg70p: (Default)
[personal profile] serg70p
Оригинал взят у [livejournal.com profile] sofya1444 в Программистско - деревенское

Не могу сказать, что открытие нобелевских лауреатов по химии меня обрадовало. Как бывшего программиста, скорее огорчило, потому что сразу заговорили о невероятном повышении быстродействия компьютеров, которые смогут работать на этих вновь открытых частицах. Что это означает? А означает это продление агонии Биллгейтсовской системы, и, как следствие этого, задержку перехода программных систем на новый технологический (точнее, идеологический) уровень.
Высокое быстродействие элементной базы является большим соблазном, оно даёт ощущение, что можно всё, точно так же, как большое количество денег даёт ровно такое же ощущение. Но! Как большие деньги не способствуют правильному развитию человека, зачастую превращая людей в законченных придурков или мерзавцев и при этом не спасают их от болезней и смерти, (но, как правило, ускоряют их наступление), так и быстродействующая элементная база отнюдь не способствует созданию совершенных программно-аппаратных комплексов, но, скорее, склоняет программистов к мотовству и небрежности при исполнении программ. Впрочем, по-человечески их можно понять: им приходится работать с системами и программами, которые являются для них чёрными ящиками, эдакой вещью в себе. Они не могут контролировать процесс исполнения своей программы в полном объёме и, тем более, на него воздействовать, и это отнюдь не прибавляет энтузиазма, но скорее, портят настроение и создаёт у программиста чувство обречённости.
Ещё одна крайне настораживающая вещь заключается в том, что происходит определённая подмена понятий. Современным программистом считается человек, в первую очередь освоивший Биллгейтсовский интерфейс, на познание которого уходят значительные, а может быть, и все его силы. Требования простоты и лаконичности его программ заказчиком не рассматриваются вовсе, а о надёжности можно говорить только в части, которая зависит от разработчика, а что уж там могут выкинуть чужие программы, которыми он пользуется, это неизвестно никому.
Думаю, что человек, в какой-то степени освоивший среду, в которой придётся работать его программам, может называть себя программистом ровно в той же степени, в какой человек, освоивший худо-бедно русский язык, может называть себя русским писателем. В результате мы получаем программы типа МТСкого модема, которые зависают по любому поводу, да ещё умудряются при этом портить Операционную систему!
Озвучу далеко не новую мысль, что человек в любой своей деятельности, в конечном счёте, отображает самого себя. Более того, не может человек, имеющий в мозгах две с половиной связи, создать систему с десятью связями, к примеру. Ещё Норберт Винер утверждал: «система не может создать другую систему, более сложную, чем она сама». Это утверждение в полной мере относится и к нашим программистам. Настоящий программист, способный создавать новое качество - это редкий штучный товар, имеющий в первую очередь хорошо развитый мыслительный аппарат и множество наработанных в процессе профессиональной деятельности ассоциативных связей, при этом знание интерфейса изделий Билла Гейтса и иже с ним – это второй вопрос (надеюсь, в скором времени он вообще станет несущественным!)
Существующие на данном этапе развития человеческой цивилизации программные комплексы далеки от совершенства. Они необозримы и во многом не контролируемы. По мере развития этих систем уровень энтропии в них катастрофически растёт, и никакое повышение быстродействия компьютеров ситуацию не спасает, но, скорее, её усугубляет.
Требуются другие подходы, и надежду на то, что правильные решения будут найдены, дают прорывные работы генетиков, которые уже сейчас приоткрывают перед нами идеологию и методы, её реализующие, которыми руководствовался Создатель при конструировании живого мира. Кстати, в созданных им живых организмах отсутствует избыточность и не так уж велико быстродействие. Зато какое совершенство!
Учитывая сказанное, есть большие основания ожидать, что также, как это случилось с программистами первой волны, которые, при появлении быстродействующей элементной базы и соответствующего программного обеспечения, не смогли быстро перестроиться и конкурировать с молодыми и продвинутыми программистами, с пелёнок знающими, как организована, к примеру,База данных, и были, по сути, выкинуты из профессии, так вот, с переходом на следующий технологический уровень, современные программисты с отформатированными под Биллгейтсевские системы мозгами тоже останутся не у дел задолго до достижения ими пенсионного возраста.
Единственное, что могу сказать в этой ситуации: Друзья! Не отчаивайтесь! Мы этот путь прошли, пройдёте и вы. Уезжайте в деревню, и вы проживёте ещё одну замечательную жизнь! Правда, вы быстро станете дядьками и тётками, ваши руки уже не будут своими тонкими пальчиками напоминать ручки тринадцатилетних нимфеток, но превратятся в широкие мозолистые грабли, ваша походка изменится, и вы начнёте слегка подгребать левой ногой, и одеты вы будете немножко как чучела огородные хотя бы просто потому, что это станет для вас неважным.
Но радости, которые Вы испытаете в этой новой жизни, намного перевесят горести от потери гламурной жизни и гламурного облика. Вы начнёте получать жгучее удовольствие от простых вещей: от живого огня топящейся печки, от пронзительной свежести на рассвете, от невероятного удовлетворения, которое испытываешь после хорошо сделанного дела, от сознания того, что твоя семья и твоя скотина находятся в тепле, и у тебя есть чем обогреть и накормить их сегодня, завтра и все долгие зимние месяцы. Вы начнёте дышать полной грудью, не бояться любой непогоды, вы научитесь преодолевать любые препятствия, ибо у вас просто не будет выбора - на кону ваше выживание и выживание ваших близких! Наконец, вы увидите, как прекрасен мир, не рассматривая его снаружи из окна туристического автобуса, но находясь внутри него, став частью его, среди полей и лесов, рядом с братьями нашими меньшими, которые, поверьте, намного умнее, добрее, благороднее и интереснее людей! Наконец, вы сможете впервые в жизни отобразить свою сущность в реальных делах, не ограничивая себя никакими протоколами, и слепить свою среду обитания именно такой, какой Вы и только Вы её себе представляете!
Если Вы умны и талантливы, Вы не пропадёте нигде, и не бойтесь, что Ваши достоинства останутся невостребованными. Поверьте, реальная жизнь гораздо интереснее виртуальной, просто её, эту реальную жизнь, не нужно бояться, нужно вступить в неё, начать много и активно работать, в том числе и физически, и тогда рано или поздно наступит день, когда Вы сможете сказать себе: Я всё умею, я всё могу, я выживу в любой ситуации, я - герой!
PS Не зря уважаемый tessey, человек с хорошей головой и чутким сердцем, бегает с колотушкой по ипподрому.
http://tessey.livejournal.com/399044.html
Похоже, предчувствует, что скоро заниматься своей любимой социологией ему придётся в свободное от основной работы время. Зато какую глубину и жгучую сочность приобретут его тексты после того, как он, к примеру, полдня побегает по полям, собирая разбежавшийся табун лошадей!

Программистское. В развитие темы.

Когда я наблюдаю, как долго грузится на моём компьютере Операционная система или как в очередной раз зависает МТСский модем, я понимаю, что далеко не всё благополучно в программистском королевстве. 
Много лет я не занимаюсь программированием и о качестве современных программных продуктов могу судить только по косвенным признакам, тем не менее, рискну высказать своё видение проблемы, и не судите меня строго! 
О чём говорит, к примеру, зависание программы? А свидетельствует оно о том, что программист, возможно, в силу объективных причин, не отследил некорректности, имеющие место в его программе и в тех программах, которые он использует в своей работе. 
МТСовский модем относится к программам управления и связи, и создавалась эта программа, скорее всего, выстраиванием древовидной системы последовательных проверок входных параметров. Как правило, в процессе работы подобных программ производится анализ некоторого количества ситуаций, представляющих интерес для заказчика. К сожалению, эти ситуации не охватывают всего множества возможных комбинаций входных параметров. В результате, при возникновении нештатной ситуации, при которой на входе появляется непредусмотренная комбинация входных параметров, программа улетает неизвестно куда, портит неизвестно что и - зависает! В процессе отладки программист рано или поздно отлавливает и устраняет некорректную ситуацию, при этом плодит серию новых ошибок, которые необходимо найти, и этот процесс может длиться до бесконечности, ничуть не улучшая устойчивости программы. Что мы, собственно, и наблюдаем! 
Помните, как руководитель проекта объяснил гибель Фобоса? Из его комментариев было совершенно ясно, что изменения вносились в программы до последнего момента! 
Из этой ситуации можно сделать вывод, что проблема корректного решения задач управления и связи до сих пор не решена, и нужно что-то срочно делать, чтобы дать в руки простым пацанам, которые объявляют себя программистами, простой и предельно формализованный механизм, который позволил бы любому из них в два движения создать хотя бы программу под названием «модем», которая хотя бы не зависала! 
Как же отделить мух от котлет, то есть как, в общем-то техническую проблему создания управляющей программы, отделить от разработки логики работы изделия, которым эта программа управляет? Как вообще корректно отобразить эту логику во всей сложности этой проблемы, не зашивая её в те чудовищные деревья, которые, насколько я понимаю, до сих пор рисуют несчастные разработчики управляющих программ?
===
Сделаем отступление и поинтересуемся, какие подходы использовал Создатель при конструировании живых организмов. Рассмотрим частный случай – процессы, происходящие в клетке. (Не будучи ни разу биологом, заранее прошу прощения за упрощенное изложение этих процессов, поскольку они интересуют меня всего лишь с точки зрения программиста).
В клетке, во внутриклеточной жидкости, плавают: 
- белковые молекулы, которые представляют собой цепочки аминокислот, и которые необходимо дублировать; 
- аминокислоты, которые являются строительным материалом для вновь создаваемых белковых молекул; 
- рибосомы, которые, собственно, это дублирование и осуществляют. 
Для справки: белковая молекула состоит из аминокислот, полученных в процессе переваривания пищи и проникающих в клетку из кровяного русла. Всего существует 21 разновидность аминокислот, из которых и формируется белковая молекула, для каждого органа – своя. Различаются эти молекулы длиной и последовательностью аминокислот в них. Естественно, структура белковой молекулы содержит полную информацию о работе того органа, к которому она принадлежит. Срок жизни белковой молекулы ограничен, поэтому процесс создания «свежих» дублей является непременным условием существования живого организма.
Рибосома представляет собой двухвходовой механизм, к первому входу которого рано или поздно прицепляется молекула, подлежащая дублированию, при этом второй вход открывается на ловлю определённой аминокислоты, ровно такой же, которая в данный момент висит на первом входе. После того, как соответствующая аминокислота ткнулась во второй вход, она захватывается рибосомой и подцепляется к предыдущей, при этом вся система продвигается на одну позицию, после чего второй вход рибосомы открывается на ловлю очередной, аналогичной висящей на первом входе аминокислоты. 
Рибосома является универсальным механизмом дублирования и ей по барабану, дублирует ли она белковую молекулу печени, кожи, мозга и проч. – что подцепилось к первому входу, с тем и работает! 
Что в этом процессе представляет интерес для программиста? Здесь много полезных вещей, но главное – общий подход: размещение всей информационной составляющей в белковой молекуле - матрице, с которой работает простейший универсальный механизм – рибосома (впрочем, простейшим он является только с точки зрения программиста, а с точки зрения биолога – это один из самых сложных элементов живого организма.)
===
Прекрасно помню, как, наткнувшись в середине 80-х в русской версии журнала Сайнтифик Америкен на статью, вольный пересказ которой приведён выше, я обрадовалась, потому что увидела в описании внутриклеточных процессов косвенное подтверждение правильности подходов, которые были использованы нами начале 70-х при разработке программ управления спутником. 
В те достославные времена мы работали на тихоходных машинах и писали программы в машинных кодах, поскольку управление спутником осуществлялось в «реальном времени», и обработку телеметрии, её анализ и выработку управляющих сигналов необходимо было уместить в определённый временной интервал, то есть успеть управиться до получения следующей партии входных данных. Нам приходилось экономить на каждой команде и просчитывать длительность всех циклов, чтобы не вывалиться из графика.
Были мы тогда абсолютно свободны, как охотники на мамонтов, никакие операционные системы над нами не довлели, и создавали мы свои виртуальные царства-государства как бог нам на душу положит, прекрасно сознавая, что всё зависит только от нас самих, от нашего ума, знаний, упорства и тщательности в работе. Поэтому программы, созданные в то время, были предельно лаконичны, функционально насыщены, легко обозримы и относительно просты в отладке. Именно тогда нам пришла идея всю логику работы космического аппарата описать в виде матрицы, которую по определённому правилу сворачивает матричный дешифратор, использующий всего две команды: логического сложения и логического умножения – простейшая программа в два десятка команд! 
Матрица представляла собой прямоугольную таблицу, каждая строка которой «принадлежала» одному из входных параметров, а каждый столбец – одному из выходных параметров. Входные и выходные параметры для работы с матрицей подлежали формализации, в процессе которой представлялись в двоичном виде, то есть, могли принимать значения либо нуля, либо единицы и образовывали, соответственно, входное и выходное слово. Матрицу формировал не программист, но разработчик системы, отмечая в каждом столбце единицей перекрестья с теми строками, которые соответствовали входным параметрам, от которых зависел выходной сигнал, и нулями - перекрестья с теми строками, которые соответствовали входным параметрам, от которых не зависел данный выходной сигнал.
Процесс обработки телеметрии предусматривал: а) формализацию входных данных и формирование входного слова в двоичном виде; б) сворачивание управляющей матрицы, в процессе которого строчки, соответствующие нулевым значениям входных параметров, складывались по правилу логического умножения, а строчки, соответствующие единичным значениям входных параметров, складывались по правилу логического сложения (или наоборот? Не помню!), в результате чего формировалось выходное слово; в) представление выходных сигналов в виде, готовом для передачи на спутник. (Вполне допускаю, что с алгоритмом сворачивания матрицы я могла напутать – прошло сорок лет, и с тех пор я не стала моложе и умнее, да и память не та, но сейчас я говорю об общем подходе к проблеме, который смог бы явиться альтернативой древовидным алгоритмам.)
Описанный подход характерен, скорее, для аппаратного исполнения логических задач, но программное исполнение имеет несомненные преимущества. Прежде всего, это возможность моментального изменения управляющей матрицы в процессе разработки и отладки, а также возможность создания простейшей отладочной программы, которая позволяла разработчику просмотреть абсолютно все 2 в n-й степени комбинации, которые могут принимать n входных параметров, после чего, наконец-то, можно было утверждать, что программа отлажена абсолютно. 
В процессе разработки системы мы перешли к многоуровневым матрицам и всерьёз обсуждали вопрос о введении в компьютер дополнительных команд, позволяющих работать с матрицами произвольной ширины. 
=== 
Всё закончилось с появлением быстродействующей элементной базы. Отпала потребность в ювелирно точном исполнении каждой программы, теперь можно было позволить себе не заморачивать голову такими пустяками, как экономия времени исполнения программ. Никого не напрягало, что вычисление 2*2 выливалось в исполнение сотен и тысяч команд – быстродействие позволяло так роскошествовать! Правда, цена подобного подхода велика, поскольку и ежу ясно, что рано или поздно наступит день, когда предел быстродействия элементной базы будет достигнут и система придёт в насыщение. Но ещё до наступления этого знакового события уровень энтропии внутри системы с каждой новой её модификацией будет возрастать и вполне вероятно, что в какой-то момент количество перейдёт в качество и с ней случится тот самый "Чёрный лебедь", о котором совершенно блестяще пишет Талеб, в результате чего система попросту превратиться в кучу хлама. 
Что же делать? Каким путём нам идти? Ответ прост: учиться у природы! Приведённый выше пример работы рибосомы подсказывает нам, что мы должны искать такие средства и методы решения задач, которые позволят создавать простые, лаконичные и достаточно унифицированные программы. Категорически отказаться от избыточности, создавать лёгкие, изящные и элегантные изделия. Разрабатывать принципиально иную, отличную от билгейцовской, идеологию организации виртуального пространства. 
А что же с программистами, чьи мозги отформатированы для работы с системами Билла Гейца и иже с ним? Это вчерашний день. Они - не интересны. Они – не исправимы. Пусть едут с Цукербергом в Америку, пусть едят вместе с Артёмием Лебедевым чёрную икру, и вообще делают всё, что хотят – не велика потеря. Как-то выживут! В крайнем случае, если не захотят ехать в деревню, пойдут на рынки торговать китайским шмотьём, станут курьерами, гардеробщиками или дворниками - городу требуется много обслуги! Ничего не поделаешь! Такова жизнь программистов. При переходе на следующий технологический уровень они оказываются не у дел, поскольку не могут конкурировать с молодёжью, заточенной под этот новый технологический уровень! 
Мы же должны находить головастых ребятишек из глубинки с открытыми и свободными мозгами, селить их на «необитаемом острове», давать им правильное образование, в том числе по биологии, ставить перед ними правильные задачи и оставлять их один на один с голеньким компьютером безо всяких там инородных операционных систем. А будет правильнее, если и компьютеры они сами разработают.
И тогда в обозримом будущем мы и в этой области будем впереди планеты всей!



November 2012

S M T W T F S
     123
45678910
11121314151617
18192021222324
252627282930 

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 24th, 2026 02:57 am
Powered by Dreamwidth Studios