Сам по себе компьютер не обладает знаниями ни в одной области своего применения. Все эти знания сосредоточены в программах, выполняемых на компьютере. Компьютер без программ бесполезен. Включив такой компьютер, мы услышим лишь шум вентилятора и увидим черный экран монитора. Можно сказать, что в компьютере программа сидит на программе и программой погоняет.
Компьютер может быть телевизором, телефоном, почтой, магнитофоном, проигрывателем, управляющим центром, учителем, счетной либо аналитической машиной, игровым автоматом наконец, — но только при наличии в нем соответствующих программ.
Чтобы оживить, «разбудить» компьютер, надо загрузить в него некую программу, которая позволит вести диалог с пользователем, которая предоставит пользователю средства для управления, которая «разберется» с оперативной памятью, местом на дисках, произведет тысячи элементарных операций очень низкого уровня, без которых не начнут работать прикладные программы. Эта первая загружаемая программа, наэываемая операционной системой, контролирует размещение файлов (файл – кусок информации, имеющий имя, по которому его и можно разыскать на жестком диске), поиск информации на диске, выделение места для файлов на дискетах и на дисках (сам диск при этом может быть разделен на логические участки — логические диски — диск А, диск В, диск С и т.д.). Операционная система скрывает от пользователя эти сложные и ненужные подробности и предоставляет ему удобный способ общения с компьютером, выполняет различные вспомогательные действия (копирование и печать файлов и другие), загружает другие программы, передает им управление в начале работы, выполняет различные действия по запросу выполняемых программ и освобождает занимаемую ими оперативную память при их эавершении.
Можно сказать, что операционная система готовит компьютер к встрече с человеком, будит его, умывает, причесывает, а в процессе общения поддерживает его в подобающем виде, всячески помогая человеку и компьютеру понимать друг друга, общаться легко и непринужденно. Таким образом, первый важнейший класс программ для компьютеров – операционные системы. Для примера назовем, разумеется, MS DOS, WINDOWS (WINDOWS переводится как «окна»), созданы в Microsoft для компьютеров IBM PC и совместимых с ним), UNIX (создана в Bell Labs фирмы АТТ в 1969 году, впоследствии разветвилась на многочисленные клоны (копии), подчас не «понимающие» друг друга), LINUX (написана финским студентом Линусом Торвальдсом в середине 90-х годов), начинающая соперничать с WINDOWS. LINUX — открытая система, любой желающий может заняться ее разработкой и совершенствованием, что обеспечивает наиболее быстрый рост системы, наименьшие ограничения и максимальную интеграцию с другими системами. Например, WINDOWS не воспринимает файловую систему, отличную от FAT, а LINUX поддерживает таких систем больше 20.
Из других операционных систем отметим OS/2 («полуось») фирмы IBM, сетевая операционная система NetWare («нетварь») фирмы Novell. WINDOWS («винды») фирмы Microsoft начались разработкой с начала 80-х годов и прошли через версии WIN 3.1(начало 90-х годов), WIN95 (с 1995 года), WIN98 (конец 1998), сетевая WIN NT и до ( в перспективе ) WIN 2000.
Важным классом системных программ (системные программы выполняют, как мы уже поняли, различные вспомогательные функции, в отличие от прикладных программ, выполняющих собственно работу на компьютере) являются драйверы. Они расширяют возможности ОС по управлению устройствами ввода-вывода компьютера (клавиатура, жесткий диск, мышь и т. д.). С помощью драйверов возможно подключение к компьютеру новых устройств или нестандартное использование имеющихся.
Оболочки — весьма популярный класс системных программ, обеспечивают более удобный и наглядный способ общения с компьютером, чем с помощью командной строки DOS. Можно так сказать, что командная строка – это не отягощенная лишними удобствами дорога, без кафе и рекламы по сторонам, а оболочка — это оазис, где можно передохнуть и осмотреться. Наиболее популярными оболочками являются Norton Commander (NC), PC Shell из комплекта PC Tools.
Новые операционные системы в отличие от обычных оболочек предоставляют дополнительно к услугам первых еще и новые — графический интерфейс (то есть информация выводится на экран в виде изображений, окон, построения меню; в отличие от командной строки, апеллирующей исключительно к голове, интерфейс новых операционных систем обращается к чувствам и привычкам пользователей), многозадачность (возможность выполнения нескольких программ одновременно), расширение средств для обмена информацией между программами.
Эти операционные системы упрощают создание графических программ и расширяют возможности компьютера, но за эти удобства приходится платить ресурсами компьютера. Командная строка неприхотлива и малотребовательна к ресурсам, а красота и удобства операционных оболочек требуют денег.
Утилиты (вспомогательные программы) также относятся к системным и нередко объединяются в комплексы (Norton Utilities, PC Tools Deluxe). К утилитам относятся: упаковщики (сжимают информацию на дисках, объединяют копии нескольких файлов в один архивный файл — так называемые архиваторы, — ZIP, ARJ); антивирусы (ликвидация последствий заражения компьютерным вирусом и предотвращения такого заражения). Из российских антивирусов наиболее известны антивирусы ДиалогНаука — ADINF, Dr Web Данилова, Aidstest Лозинского, AVP Инспектор “Лаборатории Касперского», Norton Antivirus (полная защита от вирусов) и другие;[2] коммуникационные программы предназначены для обмена информацией между компьютерами (пересылка файлов с одного компьтера на другой при соединении кабелем их портов, либо связь по телефонной сети при наличии модема — WinFax Pro, BitFax, Fax-It; программы диагностики компьютера позволяют проверить конфигурацию (количество памяти, ее использования, типы дисков и т.д), — Check-It, System Information. Для проверки работоспособности дисков полезны программы ScanDisk, Norton Disk Doctor из комплекса Norton Utilities — они позволяют выявить «намечающиеся» дефекты дисков (из-за износа магнитной поверхности) и предотвратить потерю данных:; оптимизация дисков позволяет улучшить размещение данных на диске и как следствие убыстрить доступ к информации на нем, — SpeedDisk, динамическое сжатие дисков для увеличения количества хранимой на дисках информации — Drive Space.
Прикладные программы — это то, ради чего и были изобретены компьютеры, на них, на прикладные программы работают все системные программы, ради них изобретаются языки программирования и разрабатываются целые инструментальные системы (системы программирования). Прикладных программ десятки тысяч, а еще лучше, чтобы их было сотни тысяч и даже миллионы. Наиболее применяемые — это редакторы текстов, издательские системы, табличные процессоры, системы управления базами данных, системы автоматизированного проектирования (САПР), всевозможные бухгалтерские и расчетные программы, а также различные учебные и игровые программы.
Компьютер прежде всего победил пишущую машинку, и победил ее на ее же поле, так сказать. Компьютер сам стал пишущей машинкой, но — думающей, интеллектуальной пишущей машинкой. Он взял все функции старой пишущей машинки и добавил к ним еще одну — он научился прощать людям их ошибки при работе с текстом. А традиционная пишущая машинка им таких ошибок не прощала.
Вначале вообще появились однофункциональные электронные машины — текстовые процессоры. Это были компьютеры, умеющие именно только работать с текстом, они умели выполнять только одну операцию — обрабатывать текст.
Однако затем появились универсальные персональные компьютеры, способные выполнять и множество других приложений, обеспечивающие совместимость множества программ, в ряду которых были и собственно текстовые процессоры, то есть программы, позволяющие использовать компьютер для манипуляций с текстом, в том числе и с формулами — печатать текст, переворачивать его как угодно, переставлять слова, предложения, абзацы, вставлять и удалять любые куски текста и знаки препинания и в конце концов распечатывать текст на бумаге посредством принтера. Самый известный текстовый процессор (то есть самая известная программа для обработки текста и формул) — MS WORD. Есть и другие, например Works, Лексикон.
А компьютер шел дальше. От обработки текста он перешел к обработке таблиц. Появилась программа MS EXCEL (переводится как “непревзойденный”, "превосходный”), появилась программа LOTUS 1-2-3.
Компьютер продолжал свое победное шествие. От обработки таблиц он перешел к обработке картинок, чертежей, звука и изображения и вообще научился писать и выпускать книги и рисовать целые картины, делать фильмы и обрабатывать музыку. Можно записать свой голос с какими-либо словами, а затем пустить его наоборот, или сделать с эхом, как будто вы находитесь в горах или в пещере, возможны вообще любые манипуляции. Компьютер стал инструментом дизайнера, художника и артиста. Появились программы PageMaker (создание макетов книг и печать), Adobe Photoshop (цветоделение и обработка изображений), QuarkXPress (верстка периодики), CorelDRAW (графический редактор), PowerPoint (разработка сценария и стиля презентаций, слайд-фильмы), FaxLine (факсовая связь), Machaon (факсимильная и почтовая связь и безбумажный документообмен), AutoCad (черчение и конструирование), Adobe Illustrator (дизайнерство), Corel ArtShow (библиотека иллюстраций, созданных художниками всего мира), всемирно известные браузеры[3] Internet Explorer и Netscape Navigator. Кстати, первая версия Netscape Navigator была cоздана студентами, устроившимися в бесплатный проект для получения первого опыта.[4] Пришли за опытом — а ушли каждый с новым автомобилем “Порше”.
Компьютер научился работать с большими массивами данных (базами данных) посредством таких программ, как, например, MS Access (переводится как “доступ”), Oracle и других СУБД (систем управления базами данных). Он дал возможность конструкторам вообще видеть свои творения почти что наяву — на экране монитора. Не построенный еще дом можно было увидеть «живьем» да еще покрутить его во все стороны, чтобы получше рассмотреть, подняться над ним на любую высоту, войти внутрь и посмотреть на вид из окна (системы ArchiCAD, AutoCAD, MicroStation). Не подстриженного еще человека можно было увидеть как бы в будущем (своего рода машина времени) — с новой прической.
Робот-манипулятор, управляемый американской компьютеризированной хирургической системой ZEUS в Бакулевском институте в Москве произвел без непосредственного участия человека две сложнейшие операции — минимально-инвазивную с использованием искуственного кровообращения и коронарного шунтирования на работающем сердце. Человек (хирург), ведущий операцию, сидит за компьютером и на расстоянии управляет действиями чудо-машины. Причем, механический монстр управляется голосом (действует программа распознавания голоса). Зрелище, вообще говоря, фантастическое: лежит усыпленный человек, и над вскрытой грудной клеткой, тихо попискивая, шевелятся черные членистые щупальца, запакованные в пластиковые рукава, при этом на экранах с трехмерным изображением можно в мельчайших подробностях наблюдать ход операции. Робот отвечает человеку также приятным женским человеческим голосом, пока правда только по-английски. Получается, что скоро станет возможным делать сложнейшие операции в глухих уголках любых стран на расстоянии. Людей будут исцелять машины! И все это благодаря компьютеру.
Но все это касается профессиональной деятельности людей. А человеку, помимо прочего, нужны и развлечения. И компьютер научился его развлекать. Алексей Пажитнов придумал всемирно известный «тетрис», появились хиты DOOM, DUKE NUKEM, QUAKE, UNREAL (несколько серий стрельбовой игры в лабиринтах с монстрами и врагами), ЦИВИЛИЗАЦИЯ (стратегическая игра с целью построения собственной цивилизации), RED ALERT (“Красная опасность”, стратегия по мотивам попыток советских коммунистов, начиная со Сталина, завоевать мировое господство), WARCRAFT (сказочные баталии, сражения), MORTAL KOMBAT (смертельная битва с силами зла и ада), Need for Speed (гонки на автомобилях), SimCity (градостроительная стратегия по созданию справедливого, безопасного и комфортного устройства городской жизни – с точки зрения мэра, властей, горожан), масса авиа- и автосимуляторов, карточные и шахматные программы. Дошло до того, что компьютер Deep Blue ( «глубокая синева», фирма IBM, США, 1997), вооруженный сильной шахматной программой, обыграл в серии из нескольких партий чемпиона мира Гарри Каспарова.
А, например, игра Tomb Raider (которую советские пираты, не долго думая, перевели как «Тамбовский рейдер») выдвинула новый феномен — девушку по имени Лара Крофт, первую виртуальную красавицу, которая стала реальной супермоделью и секс-символом. Ее имя входит в рейтинг «100 самых красивых женщин планеты», ее фотографии украшают обложки более 40 лучших модных журналов, она рекламировала нижнее белье фирмы Gucci в журнале The Face, была почетным гостем на мировом турне группы U-2, записала поп-альбом, а сейчас по мотивам игры снимается сериал, готовится фильм с мисс Крофт в главной роли, и за право быть реальной ипостасью виртуальной звезды сражаются лучшие актрисы Голливуда. Несуществующая Лара Крофт породила реальные судебные тяжбы между журналом Playboy и компанией Core Design, придумавшей игру. Согласно виртуальной биографии Лары, ей сейчас около 30 лет, она британка голубых кровей. Вместо того, чтобы благополучно закончить колледж и выйти замуж за принца, она стала исследовательницей древних миров. Самолет, на котором она возвращалась домой с каникул, потерпел крушение в Гималаях, и она оказалась единственной уцелевшей. С этого момента начинается действие Tomb Raider. Смелая Лара в мини-юбке и с автоматом в руках стала лучшим женским компьютерным персонажем.
Как создаются программы? У того, что мы видим на экране монитора, есть обратная сторона. У всех этих графиков, рисунков и бегающих человечков есть невидимые пружины. Если заглянуть за изображение на экране, то мы увидим значки какого-либо языка программирования, либо — на еще более низком уровне — машинные коды в двоичных и шестнадцатиричных числах, понятные лишь профессионалам. Значки состоят из английских (или русских) слов, букв, знаков препинания, точек, запятых, скобок и прочего. Это и есть тот язык, на котором написана эта программа. Машина (компьютер) понимает лишь машинные коды (да—нет, 0—1), а программист пишет на очеловеченном языке, который переводится в машинные коды специальными программами (трансляторами). Обо всем этом речь уже шла.
Профессия программиста определенно творческая. Написание программы напоминает написание стихов. Сотни тысяч людей пишут программы, но все-таки не сотни миллионов. Программистов не очень много. Много кодировщиков. А программист ведь не только должен перевести задачу из реальной в цифровую форму, он ведь должен ее фактически уже для себя решить. Решить в идее. А уже потом закодировать значками — это кодировочная часть работы. А впрочем весь процесс идет в комплексе, вперемешку. Мышление программиста приобретает черты используемого языка програмирования, он частично думает на этом языке программирования, стирая и вставляя алгоритмические «фразы», стирая и снова вставляя. Написанная программа требует отладки, в ней полно ошибок, и нужно их найти и исправить. Программа написана, синтаксических ошибок не обнаружено, компилятор тебя понял и перевел твое творчество в машинные коды. То есть ошибок в правилах написания данного языка программирования нет. Но программа упорно не делает того, что от нее требуется. Значит, совершена логическая ошибка, или даже неверна идея решения задачи. И опять нужно думать, думать и думать.
Путь к окончательной работающей программе долог и тернист. При программировании следует пройти несколько обязательных этапов, каждый из которых определяет успех или неуспех дальнейшей работы. Сначала возникает проблема[МС1] , или потребность в программе. Чаще всего проблема формулируется нечетко и расплывчато. До того как начинать работать следует рассмотреть дело более тщательно, выделить ключевые моменты, отбросить несущественные детали, оценить ситуацию. Где-то здесь зарождается идея разрешения проблемы.
Только после этого можно приступать к четкой формулировке проблемы, т.е. постановке задачи. На этом этапе обычно составляется техническое задание на программу, формулируются требования и спецификации. На этом этапе у профессионалов уже формируется в голове общий план решения.
Общий план обрастает деталями и тщательно прорабатывается. Схема решения определяет будущую структуру программы: из чего она будет состоять, что в нее войдет, а что останется «за бортом». Схема решения — это логика программы. Ошибка в схеме решения зачастую влечет за собой переработку всей программы.
После составления схемы решения самая творческая часть программирования завершается и далее требуется лишь безошибочно продвигаться дальше по уже намеченному пути. Более подробно рассматриваются отдельные блоки, конкретизируются требования, выдвигаются новые предложения. Часто возвращаются опять к схеме и корректируют ее. Каждый блок последовательно прорабатывается и реализуется на каком-либо языке программирования. В уже написанной программе компилятор выловит все синтаксические ошибки. Строгая дисциплина программирования, четкое мышление избавляют от логических ошибок на уровне алгоритма.
Таким образом, пройдя все этапы, мы получим готовую программу. Но она еще не работает! Чтобы она заработала, ее надо внедрить и сопровождать. Эти два этапа составляют 50% стоимости программы. Часто внедрение программы натыкается на сопротивление и необученность персонала, порой просто на саботаж вперемешку с ленью. Сопровождение же программы требует специалиста, который в ней разбирается.
Жизненный цикл программы можно представить так:
В несколько другой плоскости все это выглядит так:
А в исходной точке, в истоке всех рассуждений, по нашему мнению, лежит соблюдение (или несоблюдение) «закона неверной предпосылки». [5] Игнорирование требований этого закона может пустить насмарку всю проделанную затем огромную работу.
Вот характерная фраза из встроенного языка программирования системы 1С:Предприятие 7.5:
месяц =месяц+1
Видно, что это не математика (число само по себе, без дополнительных манипуляций, не может быть равно другому числу, а может быть равно только самому себе), и не житейский здравый смысл (месяц никак не может объединиться с числом, слово и число – разные, вообще говоря, вещи), но тем не менее данная алгоритмическая фраза имеет ясный смысл, – вот только в области программирования. Она означает увеличение значения переменной «месяц» на единицу, т.е. «взять следующий месяц». Эта алгоритмическая фраза имеет аналогом в житейских понятиях слово «счетчик», а знак «=» означает вовсе не равенство (тождество), а оператор (команду) присваивания.
Или такая алгоритмическая фраза:
Конец цикла для цикла для
Казалось бы, полная тарабарщина, но — только для непрограммистов. Надо только правильно все это прочитать.
Таким образом, программирование заняло место между математикой и житейским опытом, не относясь непосредственно ни к тому и ни к другому, и не подчинясь напрямую законам ни математики, ни житейского опыта. Потому и говорят, что для программиста все едино – что котлеты, что ракеты.
Процесс написания программ — долгий и изнурительный труд, большие проекты пишутся сотнями и тысячами людей.
Для написания программ нужны тишина и спокойствие.
Если взглянуть на дело философски, так сказать, то программируют не только собственно программисты, программируют (в широком, общем смысле слова), бывает, даже те, кто не имеет к компьютеру никакого отношения. Программирование как выстраивание в голове схемы решения какой-либо задачи присуще многим способным в каких-то областях людям. Использование при этом специальных терминов, систем обозначений, вообще всего профессионального антуража придает солидности, но не более того. Средневековая алгебра, развиваемая арабскими математиками, была словесной и обходилась без цифро-буквенно-формульных обозначений. Математические мысли выражались словами, «голым» текстом. Математика того времени, сделавшая великие открытия, обходилась без формул и математических значков ( в их буквальном виде), к которым привыкли мы. Суть математики – не внешнее «математическое» оформление, не значки и «четырехэтажные» формулы. Суть математики, как и всего прочего — не в антураже. Формулы выводятся не из формул, а из неких рассуждений, в самом исходном виде изложенных словами. Или, например, стихи. Кто сказал, что для написания стихов обязательно нужна бумага? Многие люди "пишут" свои стихи у себя в голове, записывая их затем в свою память. Гомер «написал» свою «Илиаду» в своей памяти, а это не отдельное стихотворение, а целая книга, и лишь позже, много позже, даже, кажется, после его смерти, это произведение было занесено на бумажные носители – получилась приличная по толщине книга.
Возвращаясь к программированию для компьютеров, говорим: программирование – это не значки какого-либо языка программирования, и это не язык программирования, и не машинные коды, и даже не компьютер как таковой. Все перечисленное – это лишь средства достижения некоторой цели, поставленной в повестку дня жизнью. Говорим так: программирование – это создание идеальной умственной модели решения задачи с созданием блоков группировки промежуточных задач и иерархией ходов для достижения промежуточных результатов, а также распределением ресурсов наличных знаний (имеющихся в данной голове) на главных и второстепенных направлениях поиска ( главных и второстепенных – с точки зрения ищущего решение человека), и сведением затем отдельных результатов в стройную целостную схему действий по достижению главного, конечного результата. То есть, изначально должна быть идея решения задачи, общая схема (в голове исследователя). Проводится анализ ситуации и разделение на подблоки (подсхемы), которые включают разные группы подзадач. Далее проводится анализ имеющихся ресурсов (времени, финансов, инструментов). При необходимости план корректируется в процессе решения. Так мыслят профессиональные автослесари перед отказывающейся заводиться машиной и профессиональные программисты перед какой-либо требующей решения задачей.
Просто автослесарю удобно думать на своем сленге (жаргоне), а программисту – на своем. Первый говорит – «подтянуть тормоза», второй – «оператор присваивания», первый говорит – «пробуксовка сцепления», второй – «значение по умолчанию». У первого – гаечные ключи, у второго – языки программирования. Впрочем, компьютер сейчас "прописался" и в автосервисах.
Таким образом, для программного метода мышления характерны выделение ключевых, главных, несущих звеньев, разбиение задачи на блоки подзадач, своеобразный «цинизм» в классификации явлений (неважно, что классифицировать, главное — как, люди ли, "железки" ли есть всего лишь материал для счета), прагматизм (свобода от эмоций), соединение в общей картине рассуждений стройности от математики, логики от философии, силы от здравого смысла, изворотливости от житейской мудрости.
Все-таки термин «программист» прижился именно в компьютерной сфере. Программистом называют человека, создающего (пишущего и организующего написание) программы для компьютеров. И, добавим, сопровождающего свои программы при реальном их применении.
Программист-профессионал всегда обладает большими знаниями и умениями. Его «слушаются» компьютеры. Взгляд на экран, пара нажатий на клавиши — и вот уже нестыковка устранена, программа «пошла», проблема, над которой другие бились целых два дня и которая поставила в безнадежный тупик пользователя, решена. Корни этих способностей растут из отточенного логического мышления, из свойства ума быстро представить себе блок-схему решения задачи. Среди нагромождения фактов безошибочно выбираются ключевые пункты (те самые блоки подзадач), от которых зависит дальнейший ход рассуждений. Острое как бритва и быстрое как молния мышление программиста резко контрастирует с тугодумием тех, кто программистом на самом деле не является.
Программист входит в комнату, смотрит на экран монитора и говорит, что вы делали, какие программы запускали, какие кнопки нажимали.
Есть кодировщики программ — они пишут свой кусок кода, по принципу разделения труда, а есть программисты — они управляют проектом, генерируют идеи и распределяют задания. Настоящий программист всегда учится (иначе отстанешь!). Учится сам, учит других и учится от них. Одно связано с другим, а другое — с третьим.
Но надо четко представлять себе, что один программист ничего не сделает. Он стоит «на плечах» многих людей, профессиональных в других областях трудовой деятельности — и без их содействия не сможет «продвинуть» свою программу, заставить ее реально работать. Ошибка программиста коснется очень большого числа людей, она дорого стоит.
В качестве примера приведем последовательность рассуждений при решении конкретной задачи.
Пусть поставлена задача: требуется представить в налоговую инспекцию сведения о доходах физических лиц за год в виде справки о доходах по утвержденной форме (на магнитных носителях – дискетах). Проблема есть, она разбивается на подзадачи. Для заполнения этой справки нужны соответствующие сведения о сотрудниках. Логическим и математическим отображением этой задачи является создание средствами какой-либо СУБД (например 1С) совокупности таблиц, содержащих эти сведения: кадровые данные, данные о годовом и помесячном доходе, виды и суммы доходов и вычетов, итоги (общие скидки, общие вычеты, валовый доход, подоходный налог).
Далее, на базе какого–либо языка программирования (например, встроенного языка 1С из пакета 1С:Предприятие 7.5) составляются алгоритмы справочников, объектов, запросов, кнопочек. Результатом работы программы являются бумажная справка о доходах, распечатанная на принтере, и файл на дискете для ГНИ. Полученный файл проверяется другой тестовой программой (тест – проверка, проверочная программа), взятой в ГНИ или написанной самим программистом.
Программирование, хотя и довольно условно, можно разделить на три ветви или направления: системное, прикладное и теоретическое. О первых двух мы уже сказали, а о третьем скажем, что здесь имеется в виду разработка языков программирования и, вообще, разработка стратегических теоретических вопросов направления развития программного обеспечения, да и всего компьютерного бизнеса.
Системное программирование заключается в написании системных программ — операционных систем, утилит и т.д. Системные программы не видны пользователям, они про них и не догадываются.
Прикладное программирование состоит в написании на базе системных программ других — прикладных — программ, которые производят всевозможные полезные действия, — учат, развлекают, информируют, управляют, рисуют, пишут и воспроизводят музыку, переводят тексты на другие языки, проверяют правописание и многое другое. Вот эти программы уже, так сказать, «видны» непосредственным пользователям по их явному внешнему эффекту. Прикладной программист использует все программы, которые написаны системными программистами, он работает в среде, созданной ими для него, он вообще стоит на вершине гигантской пирамиды и использует плоды труда массы людей. Для массовых же пользователей предлагаются программные продукты, которые вобрали в себя труд и системщиков, и прикладников, и теоретиков.
«Теоретическое» же программирование — фундаментальное, устремленное вперед, в неизведанные и неоткрытые дали, — не всякому по силам. Не часто рождаются люди, способные указать путь другим. Теория программирования и теория решения возникающих задач заключаются в создании новых языков и принципов программирования и целых инструментальных систем (систем программирования).
Впрочем, границы между видами программирования весьма условны.
Разумеется, не все так гладко, как хотелось бы. Упомянем хотя бы проблему Y2K – второго килогода, проблема 2000 года (Year – год, 2К – два кило, т.е две тысячи). Проблема компьютерного «жука», как ее обозвали, Проблема Y2K потребует определенных расходов, и это отрицательная сторона компьютеризации.
Суть дела заключается коротко в том, что в компьютере есть специальная постоянно работающая от батарейки микросхема, которая отсчитывает время. На заре компьютерной эпохи волевым решением было принято обозначать дату (год) сокращенно двумя последними цифрами (например, вместо 1977 в компьютере хранилась дата 77, а первые две цифры подразумевались сами собой и были «зашиты» в программы). Потом это стало стандартом, и двузначное обозначение года стало использоваться в микросхемах, вошло в «железо».
Казалось бы, чего проще — представляй год четырьмя знаками и дело с концом, никакой проблемы «жука» не было бы. Однако такое решение несколько десятков лет назад было неочевидным из-за национальных стандартов в западных странах на формат представления даты. Год в большинстве стран представлялся двумя последними цифрами. Далее играли роль соображения экономии дисковой памяти: на каждую дату экономился один-два байта, умножаем на миллионы записей…Опять же экономия процессорного времени при арифметике с датами.
Для бизнес-приложений, использующих различные арифметические операции с датами, игнорирование проблемы 2000 года приведет к ужасающим последствиям. «Полетят» начисления процентов, расчеты заработных плат, выплаты по срочным вкладам. Вместе с компьютерными программами и самими компьютерами «полетит» и вся инфраструктура — принтеры, банкоматы, банки, офисы. Придется все это делать вручную, нанимать людей и т.д. А сколько обид, жалоб и судебных исков!
Что произойдет в 2000 году? Компьютер выдаст цифры 00. И что прикажете думать? То ли это 2000 год, то ли 1900.Для компьютера наступил 1900 год, поскольку первые две цифры – 19 – проставятся автоматически. Это может привести к различным сбоям в работе программ, и, например, если в компьютере, управляющем запуском межконтинентальной баллистической ракеты с ядерной боеголовкой, в программу вставлена защита от несанкционированного доступа, то подобный ход дела может быть истолкован компьютером как попытка взлома и будет дана команда на пуск ракеты. Или банковский компьютер может в 2000 году не насчитать вам проценты по вкладу, поскольку для него не будет ясен срок, который ваш вклад пролежал в этом банке. Доход может стать отрицательным (вы должны банку) либо нулевым. Варианты сбоев могут быть различными и непредсказуемыми.
Примерно в 80-х годах представление даты стало четырехзначным, поэтому многие последующие компьютеры проблеме 2000 года не подвержены. Но вообще проблема есть и решать ее придется. Например, оставаясь в рамках двузначности, введением рабочего столетия ( в 1С и в Виндусе 98) – берется, например, отрезок 1937 по 2036 годы. Цифры года 15 явно относятся к 2015 году, а 88 – к 1988 году. Эти границы вводятся в установки, в параметры программ, пользователь их может изменить. Таким образом компьютер однозначно интерпретирует год, не мучаясь сомнениями. Однако это годится только для компьютеров с четырехзначным представлением даты, и придумано только для удобства пользователя.
По уровню освоения программного обеспечения компьютера всех людей условно можно разделить на следующие категории (это мнение может не совпадать с вашим собственным):
1. Геймеры (игроки, от «game» — «игра») — используют компьютер исключительно как игровой автомат;
2. Ламеры (чайники, от «lame» — «хромой»,»увечный»,»неудачный», «неудовлетворительный», «неубедительный», «неправильный», «неполный») — только-только отошли от игр и пока не умеют пользоваться толком ни одной программой;
3. Одно- , двух-программные и кусковые пользователи — умеют пользоваться одной, двумя или , может быть, тремя программами, или некоторыми функциями из разных программ;
У этих трех категорий знания не систематизированы.[6]
4. Юзеры (от «use» — «использовать»), — хорошо знают несколько программ, знания у них начинают систематизироваться;
5. Продвинутые юзеры — очень хорошо знают много программ, немного программируют;
6. Профессионалы — умеют быстро разобраться в любой программе, знают все известные прикладные и системные программы, умеют программировать на нескольких языках, огромный опыт;
7. Теоретизирующие профессионалы — поднялись над текущим программированием, видят пути его развития, пишут книги[7].
Особняком стоят хакеры и «вирусники», но они не являются созидателями, хотя может быть и нужны как санитары компьютерных программ — они ищут и находят дырки в защите. Они — разрушители. Но средства разрушения всегда на шаг отстают от средств созидания, иначе не было бы прогресса. Хакеры и вирусники идут по уже построенной профессионалами дороге и испытывают ее на прочность.
Хакеры (hack — рана, разрез, ссадина от удара, зарубка, зазубрина, мотыга. Hack — ломать, разрубать, кромсать, зазубривать, обтесывать) — безусловно, профессионалы. И очень даже неплохие профессионалы. Вполне можно допустить, что с развитием глобализации, усилением взаимозависимостей (через финансовые рынки, работающие по компьютерным сетям) ситуация с хакерством окажется вне контроля со стороны правительств и международных институтов. Хакер забирается к вам в компьютер или банк через какую-либо компьютерную сеть, к которой он имеет доступ.
Великие хакеры могут влиять на международные инвестиции капиталов. Соответственно поразительным возможностям коммуникаций, сделки могут осуществляться из любой точки земного шара. Кто тогда будет управлять мировым хозяйством? Кто тогда обуздает хакинг?
Хакеры лезут в машинные коды и исправляют их в своих интересах. Хакеры — эти «черные» профессионалы — дорастут, возможно, до уровня, с которого будут постоянно испытывать на прочность страны и их валюты. Они в состоянии дестабилизировать отдельные предприятия, отрасли и целые страны. Наказание для государства (в виде оттока капиталов в течение нескольких дней и часов) с развитием сетей станет дамокловым мечом, постоянно висящим над головой правительств.
Хакер — это сетевой вампир. Он пьет кровь сетей — информацию. Он ищет и находит ошибки, которые, как правило, всегда присутствуют в программах профессионалов. Он взламывает защиту, используя при этом в том числе и вирусы. Но, пусть это и профессионализм, однако не высшая его фаза. Интеллект оттачивается не на разрушении, а на созидании. Враждебная деятельность «черных» профессионалов всегда будет наталкиваться на противодействие профессионалов «белых».[8]
В качестве примера расскажем об одном великом хакере – Кевине Митнике, «супер-хакере», уже более четырех лет без суда и официального предъявления обвинения находящегося в тюрьме в США. Власти США до сих пор не решаются выпустить его на свободу. Кевин Митник родился в 1964 году. В 16 лет совершил первый взлом — проник в административную систему школы, в которой учился. В 17 лет Кевин играючи взламывает компьютерную систему Североамериканской противовоздушной обороны. Его ловит полиция, а суд приговаривает к году условно. Кроме того, он получает три месяца перевоспитания в специальном Лос-Анджелесском центре для малолетних. Там Митник проникает в военную сеть ARPANet, за что получает 6 месяцев тюрьмы. В тюрьме он совершенствует свои знания о телефонных и компьютерных сетях, и, выйдя на свободу, уже может делать с ними все, что хочет (создавать бесплатные номера, звонить с чужого номера, прослушивать любые линии). В 1987 году Митника арестовывают по обвинению в похищении у ведущей компьютерной фирмы специального ПО и дают три года условно. В 1988 году — новый арест по аналогичному обвинению. На свободу Митник выходит лишь в 1990 году. В 1992 году он, судя по косвенным данным, взломал военную сеть, и кроме того проник в святая святых — в банк данных ФБР, включая раздел персональных досье. Митник был объявлен в федеральный розыск. В феврале 1994 года его арестовали.
Сейчас проходит всемирная акция “FREE KEVIN”(СВОБОДУ КЕВИНУ). Впервые компьютерный андеграунд (подполье) пытается заявить о себе сразу в десятках стран как о некоей общественной силе и находит поддержку у самых различных организаций. Они — хакеры мира — провели крупнейшую по массовости и эффективности атаку на правительственные сайты США. Эпицентром акции затем станет Лос-Анджелес, где арендованный сторонниками Митника «пишущий» самолет должен вывести на небе гигантскими буквами заветное “FREE KEVIN”.
Что касается создания программ-вирусов, то здесь ситуация более-менее под контролем «белых» профессионалов. Хотя время от времени отдельные выдающиеся авторы вирусов прорывают их фронт — «белые» профессионалы терпят локальное поражение. Десять лет назад программа-вирус, написанная Робертом Моррисом, двадцатитрехлетним студентом последнего курса Корнелльского университета, парализовала на два часа всю мировую сеть Интернет. Моррис создал чисто экспериментальный вирус — «червь», который заполнял всю оперативную память компьютера и передавался по сетям от компьютера к компьютеру. Происходило полное торможение, работа становилась невозможной. Червяком, а не вирусом эту вредоносную программу назвали потому, что она не инфицировала другие программы. Она пользовалась незамеченной «щелкой» в системном ПО и получала прямой доступ к памяти атакуемого компьютера. Там «червь» прятался и подсовывал неверные данные. К Моррису применили Computer Fraud and Abuse Act (Закон о компьютерном мошенничестве и намеренном нанесении вреда) от 1986 года и приговорили к трем годам условного заключения, штрафу в 10 000 долларов и 400 часам общественных работ.
Или, например, вирусы типа «троянский конь» (BackDoor-G ), которые маскируются под программу сохранения экрана, обновление компьютерной игрушки или другие полезные пользовательские приложения (порой распространяемые по электронной почте). После установки этот вирус обеспечивал автору вируса полный доступ к клиентскому компьютеру; при этом вирус посылает команду ping, чтобы уведомить автора вируса об успехе своей миссии. Другими аналогичными вирусами являются Armageddon, BackOrifice и NetBus, и характерны тем, что представляют собой смесь вирусов и средств взлома защиты компьютерных программ, то есть в данном случае атакующий клиентский компьютер человек является одновременно и хакером и вирусником. И чтобы защититься от заражения такого рода вирусами, следует модернизировать как антивирусное программное обеспечение, так и системы, выявляющие попытки нарушения защиты программ.
По данным International Computer Security Association — организации, занимающейся изучением вопросов национальной безопасности — количество случаев заражения компьютерными инфекциями ежегодно удваивается, причем сейчас первенство перешло от зараженных дискет к сообщениям электронной почты.
«Почтовый вирус» Melissa стал причиной (в марте этого года) массовой эпидемии перебоев в работе почтовых служб во многих странах. Этот вирус маскируется под сообщение электронной почты и при открытии пользователем посылает аналогичные сообщения по первым 50 адресам его адресной книги. В данном случае самовоспроизводящийся вирус относится к классу червей, он не разрушает компьютер, но вызывает перегрузки (из-за лавинообразного роста потока сообщений), парализующие работу системы электронной почты.
Первым в истории вирусом, разрушающим «компьютерное железо» является CIH или «Чернобыль», срабатывающий 26 апреля (в годовщину чернобыльской катастрофы). Другая версия вируса проявляет свои разрушительные свойства по 26 числам каждого месяца. Написанный программистом с Тайваня «Чернобыль» портит данные на жестком диске и разрушает базовую системы ввода/вывода (BIOS), что делает невозможным загрузку компьютера, а в итоге нужно менять BIOS, или даже материнскую плату, а некоторые ноутбуки, подвергшиеся атаке этого вируса, дешевле выкинуть, чем починить. Переносчиком вируса является CD-ROM с пиратским ПО.
В июне этого года появился созданный в Израиле вирус Worm.ExploreZip, сочетающий плодовитость «червя» Melissa с разрушительной силой «Чернобыля». Этот вирус также распространяется по электронной почте, но приходит в ответ на реальные сообщения, поэтому не вызывает у пользователя особых подозрений. Вирусное послание содержит файлы, упакованные программой-архиватором ZIP. При попытке разархивирования вирус выдает сообщение об ошибке и заражает компьютер, после чего стирает с жесткого диска все данные.
Все-таки вирусы пишут, как правило, неопытные молодые люди. Вирусописаки — почти сплошное пацанье. С приходом знаний и опыта «вирусная» болезнь у человека, как правило, проходит. Однако детские игры небезопасны. Паралич компьютерных сетей, вызванный вирусной атакой, вполне возможен.
Суммарный оборот индустрии персональных компьютеров (легальные деньги) достиг 150 млрд. долларов. Кроме того в мире отмывается в год еще 100 млрд. долларов от пиратского копирования программ, от воровства их, проще говоря (кстати, нелегальный оборот пиратского программного обеспечения по стоимости уступает только наркоденьгам. От нелегального оборота программ далеко отстал даже нелегальный оборот оружия).
Персональные компьютеры и их оборудование, деловые приложения, оперативные службы, Интернет, электронная почта, мультимедийные продукты, авторские инструментальные средства, игры — все это послужит фундаментом для новой революции, для нового рывка из эпохи персональных компьютеров в эпоху информационной магистрали. Информация, переведенная в цифровую форму, посредством компьютеров и информационной магистрали станет доступна абсолютному большинству населения Земли.
Развитие человечества будет идти путем создания новых и развитием нынешних информационных технологий. Информационные технологии — это многократное ускорение любого процесса. Это гигантская экономия средств и времени, и, следовательно, гигантское же повышение эффективности любой деятельности. Да хотя бы за возможность получать нужную информацию незамедлительно, любой человек, любая страна отдаст любые деньги. И с этой точки зрения, небольшая компьютерная программа может стоить десятки тысяч американских автомобилей, сотен тысяч видео, миллионов китайских курток.
Можно пытаться сбивать одни ракеты другими. А можно — если обладаешь технологией контроля за компьютерными сетями — не допустить запуска этих самых ракет. Возможность развития новых информационных технологий практически неисчерпаема...
Главными, решающими последствиями развития новых технологий в XXI веке станет то, что развитые страны уйдут в окончательный, непреодолимый отрыв от остальных. Пока последние будут проедать свои природные ресурсы, первые спокойно и, главное, абсолютно бескровно получат над ними контроль. Кто сейчас может предсказать, какое новое супероружие будет изобретено на основе компьютерных технологий? А такое оружие уже сейчас изобретается, и против него будут бессильны танки и корабли. Однажды по телеканалу НТВ промелькнул сюжет о создании в Австралии (!) пулемета, представляющего из себя некую решетку (размером примерно метр на метр), начиненную пулями, к которой тянутся провода от компьютера. Изобретатель на клавиатуре набрал команду и решетка полыхнула молнией – со скорострельностью миллион в минуту пули улетели на поражение. Против такого шквала не устоит ни одна дивизия. Было сказано, что пока эта система будет применяться для разминировния с вертолета минных полей...
Любой человек, способный работать с новыми технологиями, но рожденный в стране, где его способности не будут востребованы временем, будет вынужден уехать и осесть в развитых странах. И как следствие этой утечки мозгов в "мертвых" странах начнется замедление их технического прогресса, социальная и финансовая деградация.
Уже сейчас компьютер прочно вошел в жизнь людей. Банки и метро, светофоры и продажа билетов на все виды транспорта, управление полетом ракет и космос, коммунальные платежи и учет угнанных машин, разработка новых лекарств и проектирование зданий, лазерная коррекция зрения, моделирование ядерного взрыва и изучение его последствий, спецэффекты в фильмах и управление музыкой на современных радиостанциях, бухгалтерский учет на предприятиях и общенациональные выборы, базы данных для противодействия организованной преступности, программы для разбора спортивных игр и действий игроков (делается видеозапись игры, затем компьютер отбирает из нее одного игрока и монтирует минифильм о мельчайших деталях действий только этого одного игрока на протяжении всей игры или в определенные моменты игры, а также нескольких игроков или всей команды в разных или в однотипных игровых эпизодах, либо при получении соответствующего задания компьютер подбирает наиболее характерные фрагменты игры из имеющихся разных видеосюжетов), наконец, всемирная связь от телефонной до спутниковой, по проводам и без, – уже сейчас без компьютеров это немыслимо: человек не способен сделать такой гигантский объем вычислений и уследить за таким количеством передающих и принимающих устройств. Даже, если верить газетам, компьютер применяется для такой экзотики, как обучение обезьян человеческому языку (обезьяна может сообщать свои мысли при помощи специального компьютера, который синтезирует речь, когда обезьяна нажимает на клавиши.)
Компьютер востребован временем и изо дня в день доказывает свои преимущества над бескомпьютерным образом ведения хозяйства и жизни. С компьютером удобнее и легче работать, выгоднее торговать, интереснее жить. В отличие от телевизора, который просто «вдалбливает» тебе в голову свои истины, не интересуясь твоим мнением, компьютер приглашает тебя на разговор, он тебя уважает и ты сам себя начинаешь уважать – повышается самооценка личности. Компьютер высвобождает самый ценный ресурс для человека — свободное время, которое можно потратить на придумывание новых технологий. В этом Карл Маркс, видимо, был прав, когда писал, что ценность новых приемов труда и новых орудий производства определяется суммой свободного времени, которое они высвобождают из непосредственного производства и которое человек затем может потратить на себя. Компьютер высвобождает свободное время – вот в чем фокус! А уж куда его, свободное время, потратить – мы найдем!
Только посмотрите —современные жесткие диски персональных компьютеров имеют объем до 12-18 Гбайт, в среднем наиболее доступные по 4-6 Гбайт, а 1 Гбайт составляет около 400 миллионов страниц текста среднего формата, при этом доступ к этой бездне информации происходит за сотые доли секунды! А во многих отраслях (банковское дело, системы резервирования и реализации авиа- и железнодорожных билетов, служба метеопрогнозирования) требуется обрабатывать еще большие объемы информации с еще большей скоростью.
На наших глазах формируется так называемая информационная магистраль (information highway), наиболее заметным элементом которой является сеть Интернет (net - “сеть”). Пока это хаотичный набор взаимосвязанных коммерческих и некоммерческих компьютерных сетей, включая оперативные информслужбы, услуги которых доступны по подписке. Серверы разбросаны по всему миру и подключены к Интернет множеством линий, как скоростных, так и не очень. Большинство пользователей присоединяется к этой системе с помощью персонального компьютера через телефонную сеть посредством модема, который, преобразуя нули и единицы в разные тона, позволяет компьютерам общаться по телефонным линиям.
Одно из самых популярных приложений Интернета — «всемирная паутина» — сеть World Wide Web (W W W), это группа серверов, подключенных к Интернет и предлагающих страницы информации в графическом виде. Присоединившись к одному из таких серверов, можно увидеть на экране своего компьютера страницу с несколькими гиперсвязями. Активизируя гиперсвязь щелчком мыши, можно перейти на другую страницу с дополнительной информацией и другими гиперсвязями.
Основная страница, принадлежащая какой-либо компании или частному лицу, называется «домашней» (home page), создавая ее, регистрируют электронный адрес, по которому вас могут найти пользователи Интернет. Адрес этой страницы входит теперь в реквизиты многих фирм. Программное обеспечение для настройки Web-сервера стоит недорого и подходит практически для любых компьютеров. Ну а программы для просмотра «паутины» (браузеры) обычно предлагаются бесплатно (по крайней мере на Западе). В ближайшей перспективе средства просмотра Internet будут интегрированы в операционные системы. При этом стоимость услуг сервера, удаленного на тысячи километров ничуть не выше оплаты услуг того, что находится в километре от вас.
Развитие техники, видимо, будет идти путем ее «окомпьючивания», то есть в любом приборе (и промышленном и бытовом, вплоть до утюга) будет задействован микропроцессор и материнская плата, и прибор можно будет программировать на выполнение всяческих задач либо непосредственно с его собственной клавиатуры, либо — через спецразъем связав его с компьютером, используя при этом какой-либо язык программирования. Прообразом таких приборов уже сегодня являются телефоны с АОНом. Клавиатурой являются клавиши цифр и дополнительные клавиши, информация выводится на экран дисплея. Вот только программируются пока эти телефоны грубовато, непонятно для большинства людей и не на языке программирования, а в неких кодах, хотя число используемых функций уже сейчас довольно большое (определение номера, часы, календари, будильники, автоответчик, дистанционное управление,переадресация, черный и белый списки, архивы входящих и исходящих звонков, использование пейджера, мини-АТС, записная книжка, разные виды звонков, режимы дня и ночи, коррекция, спикерфон, автодозвон и др.). В еще более отдаленной перспективе появятся приборы все более и более универсальные по функциям — карманные помощники и разведчики человека, подсказывающие человеку решения, предостерегающие от опасностей, освещающие дорогу, согревающие и развлекающие его дома и в пути. Уже есть сотовые телефоны и наручные часы с выходом в Интернет. То есть будет идти, скажем так, универсализация вещей на основе процессоризации их. Фантасты современности же вообще говорят о создании в будущем микроскопических компьютеров, которые будут вводиться внутрь человека в виде инъекций, соответственно человек станет видеть, слышать и считать неизмеримо лучше и быстрее и будет легче справляться с разными внештатными ситуациями (ранения, болезни и т.д.). Хотите верьте — хотите нет.
Или Россия овладеет информационными технологиями, или отстанет уже навсегда.
Надежда умирает последней.
[1] soft – «мягкий», в отлиие от hard – «жесткий». Таким образом, софт символизирует программное обеспечение компьютеров, а хард – аппаратную часть, «железо».
[2] Вирус — это вредоносная программа, которая мешает нормальной работе компьютера. Вирусы способны «размножаться» (приписывая себя к полезным программам и тем самым при выполнении полезных программ распространяются от программы к программе, от компьютера к компьютеру — по сетям или через диски и дискеты с зараженными программами.). Сейчас известно около 30 000 вирусов.
[3] Браузером называется программа для просмотра страничек Интернета.
[4] Программы выпускаются с номерами версий (1.0; 3.1; 3.11 и т.п.), увеличение первой цифры обозначает крупное, значительное изменение в программе, а изменение второй или третьей цифры обозначает небольшое и малое изменение программы.
[5] Закон неверной предпосылки мы формулируем так: если ты все делаешь правильно, все твои шаги правильные, верные, логичные, оправданные, но в результате многоходовой, абсолютно верной комбинации, в результате всех этих выверенных логичных шагов ты пришел к разбитому корыту, к абсолютно не вписывающемуся в реальность результату, то это означает, что ты сделал один неверный шаг — первый, то есть ты не с того начал, и следовательно, не туда пришел. То есть неверной оказалась исходная предпосылка рассуждений.
[6] Систематизация знаний достигается, по нашему мнению, только теоретической учебой и затем применением полученных знаний на практике. Из одного чистого опыта систематизация не вырастет, а если и вырастет, то будет убогой, отсутствие теоретических знаний сделает такую систематизацию неполной и поверхностной, а значит не вполне достоверной.
[7] А когда говорят — профессиональные пользователи — то имеют в виду профессионалов в некомпьютерных отраслях, использующих для решения своих задач компьютер. Профессиональные пользователи — это в большинстве третья категория пользователей.
[8] Пусть не создастся впечатление (особенно у неустойчивых юнцов), что «белые» профессионалы не способны на такое, на что способны профессионалы «черные». Как раз наоборот: «белые» запросто могут стать «черными» — либо по злому умыслу, либо по недоразумению, либо в силу необходимости. А вот «черным», чтобы стать продуктивными «белыми», нужно еще подучиться.
<< Предыдущая глава | Содержание раздела