Текст книги "Архитекторы компьютерного мира"
Автор книги: Аркадий Частиков
сообщить о нарушении
Текущая страница: 25 (всего у книги 30 страниц)
Джеймс Гослинг
Создатель языка JAVA
Одной из общих черт эволюционного развития языков программирования является усложнение языка до такой степени, что никто не может его понять… Для меня одним из наиболее важных критериев качества реализации проекта является руководство пользователя. В одних случаях руководство ни на что не годно, в других оно является кратким и выразительным.
Джеймс Гослинг
Джеймс Гослинг
В 90-х годах XX столетия Джеймс Гослинг, один из ведущих инженеров компании Sun Microsystems, возглавил группу разработчиков оригинального языка программирования и виртуальной машины. В группу входили такие специалисты, как Билл Джой, Джонатан Пейн, Ричард Кох и др. В 1995 году язык получил название – JAVA и завоевал всеобщее признание у программистов.
Билл Джой
Джеймс Гослинг родился 19 мая 1956 года в Канаде. Окончил университет Альберты, а затем продолжил обучение в университете Карнеги-Меллона, где в 1973 году получил степень доктора философии по компьютерным наукам. В начале 90-х годов в составе группы сотрудников фирмы Sun, известной под названием Green Team, Джеймс Гослинг начинает работу над проблемами согласованности работы различных «интеллектуальных» бытовых электромашин и приборов. К тому времени он уже разработал редактор cMacs и NeWS – оконный интерфейс для UNIX. Гослинг сначала намеревался работать с C++, чтобы сделать его переносимым на разные платформы. Однако он решил проблему переносимости, поместив разработанный им язык в «виртуальную машину». Новый язык ОАК предназначался для *7 – удаленного устройства для контроля за работой всех «интеллектуальных» бытовых приборов, применяемых в домашнем хозяйстве. Затем группа была переименована в First Person («Персона номер один») и начала заниматься вопросами интерактивного телевидения.
В марте 1995 года с развитием WWW как транспортной среды для работы сетевых приложений Sun Microsystems принимает решение открыть спецификации новой технологии и свободно распространять ее в Internet. В этом же году язык ОАК был переработан и переименован в JAVA (название популярного сорта кофе США).
Для продвижения языка JAVA Sun Microsystems в апреле 1995 года выпускает Web-браузер, целиком написанный на JAVA. Но стремительное распространение JAVA начинается, когда фирма Netscape Communications лицензирует JAVA-интерпретатор для включения его в свой продукт Navigator 2.0.
JAVA – это объектно-ориентированный язык, схожий с C++. Фирма Sun описывает его как "простой, объектно-ориентированный, распределенный, интерпретируемый, надежный, защищенный, не зависящий от архитектуры, переносимый, высокопроизводительный, многопоточный и динамичный".
При разработке языка была поставлена цель – создать простой язык, не требующий специального изучения. Поскольку большинство программистов используют языки С и C++, язык JAVA был разработан так, чтобы быть максимально похожим на C++. Однако в нем нет таких возможностей C++, как перегрузка операторов (есть только перегрузка методов) и множественное наследование. По мнению создателей JAVA, эти возможности C++ используются редко и затрудняют разработку приложений. В язык добавлена автоматическая "сборка мусора", что существенно сокращает число ошибок, связанных, например, с выделением и освобождением памяти. Кроме того, базовый интерпретатор языка и поддержка библиотеки классов занимают всего 40 Кбайт, а вместе с поддержкой стандартных библиотек и потоков – чуть более 200 Кбайт.
Как уже отмечалось, JAVA повторяет язык C++ и обладает возможностью динамического "разрешения" ссылок на методы, заимствованные у OBJECTIVE С. JAVA позволяет сосредоточиться на функциональности самой программы, а не на выборе языковых средств для ее создания.
Особенность языка JAVA и его отличие от всех остальных языков программирования заключаются в использовании виртуальной машины JAVA, что делает этот язык машинно независимым. При компиляции программы JAVA создает не исполняемый модуль для процессора, а байтовый код JAVA, который представляет собой набор команд для некоторой виртуальной машины JAVA. Поэтому для выполнения программы необходим интерпретатор байтового кода, который при загрузке программы через WWW должен быть встроен в программу просмотра (например, Internet Explorer или Netscape Navigator).
Использование виртуальной машины дает ряд преимуществ. Во-первых, как уже говорилось, – машиннонезависимость. Во-вторых, программы для виртуальной машины JAVA имеют намного меньший размер, чем обычные программы. Это позволило передавать эти программы по сети Internet.
В-третьих, т. к. программы не обращаются напрямую к процессору, это делает программы на JAVA безопасными. Программы выполняются внутри виртуальной машины, которая постоянно следит за тем, чтобы программа не сделала чего-нибудь небезопасного.
В обеспечении безопасности также играет большую роль и то, что JAVA – строго типизированный язык, позволяющий выявлять ошибки на стадии компиляции. Одним из отличий JAVA от C++ является то, что в нем невозможно "затереть" память или испортить данные.
В большинстве случаев JAVA – более динамичный язык, чем С или C++, за счет того, что объектно-ориентированная парадигма используется в нем "напрямую". Возможно добавление новых методов в библиотеки, что никак не влияет на уже готовые программы. Напротив, это делает программы более гибкими, способными к изменениям, и позволяет создавать более динамичные приложения.
Язык JAVA представляет собой мощное средство для разработки приложений. Основанный на объектно-ориентированном программировании, позволяющий создавать независимые от архитектуры приложения, данный язык является практически идеальным средством создания приложений для Internet.
С тех пор, как основополагающая концепция JAVA получила дальнейшее развитие, в частности она пополнилась компонентной моделью JAVABEANS, обеспечивающей взаимодействие апплетов JAVA между собой, а также новыми процедурами, которые призваны сделать этот язык, как и планировалось изначально, действительно независимым от платформы. Технология JAVA возникла как альтернатива стандартной модели "клиент– сервер", реализованной в WINDOWS, и одновременно как язык программирования, виртуальная машина и среда для разработки приложений. JAVA занимает центральное место почти в каждой дискуссии, посвященной проблемам компьютерных информационных технологий.
В последнее время совместно с компаниями Netscape Communications, Sun Microsystems и IBM была разработана новая библиотека классов JAVA Foundation Classes (JFC). Эта библиотека содержит несколько новых программных интерфейсов. JFC содержит Internet Foundation Classes (IFC) от компании Netscape, Abstract Windowing Toolkit (AWT) от компании JAVASOFT и средство разработки Java-программ от компании IBM. Фактически специалисты IBM, Netscape и Sun намерены совместно работать над JFC в составе компании JAVASOFT. Признаком зрелости JAVA может служить появление нескольких новых особенностей, таких как совместимость, AWT, усовершенствование пользовательского интерфейса, поддержка международных кодировок, разработка апплетов, шифрование данных, интерфейс к базам данных – Java DataBase Connectivity (JDBC) и JAVA BEANS. Все это, в конечном счете, интегрировано в JDK 1.1.
Компания Sun также ведет разработки PersonalJava и EmbeddedJava, наборы программных интерфейсов, с помощью которых можно будет разрабатывать программы для бытовой электроники и таких устройств, как копиры, смарт– карты и PDA. PersonalJava дополняет стандарт JAVA функциями, предназначенными для устройств со встроенными микропроцессорами и ограниченной памятью, таких как пейджеры и сотовые телефоны.
Sun также намеревается производить набор библиотек JAVA Platform for Enterprise. С помощью последней компания попытается сделать акцент на клиентской, а не на серверной части программ, а также упростить реализацию распределенных корпоративных бизнес-приложений.
По мнения Джеймса Гослинга, новые трудности возникают при размещении приложения в сети. Положительной чертой JAVA является возможность однородного представления действительности, которая на самом деле однородностью не отличается. Одним из наиболее "горячих" направлений в последнее время стал бизнес, связанный с сотовыми телефонами. Сейчас в мире ежедневно продаются десятки тысяч сотовых телефонов с поддержкой JAVA. Эти цифры поражают воображение. Еще большие темпы роста демонстрируют решения, связанные со смарт-картами. Многие сегодня разрабатывают приложения, обеспечивающие связь между периферийными и центральными узлами сети. Отдельные части приложения независимо от особенностей конкретного устройства, подключаемого к сети – будь то настольный компьютер, сотовый телефон или PDA, – должны одновременно являться компонентами инфраструктуры, элементами основной бизнес-логики и баз данных. Конечно, проектирование этой сложной архитектуры можно поручить одному человеку, но справится ли он с такой задачей?
Гослинг подчеркивает, что они пока не имеют действительно бесспорных решений. Имеются лишь инструменты, позволяющие взглянуть на то, что делает какая-то одна система, и перенести это на всю сквозную архитектуру. Некоторые используют отладчики. Но как проанализировать отладчиком код, находящийся внутри базы данных Oracle? Как обобщить всю имеющуюся информацию? Это серьезный и интересный вопрос. Программные системы с каждым днем становятся все более и более сложными.
Пару лет назад Гослинг много времени потратил на создание инструментов, помогающих в разработке систем реального времени. Основная посылка состояла в том, что программист больше не должен вручную писать несколько тысяч строк ассемблерного кода. Системы действительно становились огромными. А технология JAVA к тому времени уже успела проявить себя с самой лучшей стороны в проектах создания больших и надежных систем. Вот что говорит сам Гослинг: "Некоторые из подобных изолированных приложений, находящихся на одной машине, включают в себя миллионы строк кода. Как можно иметь с ними дело? Большинство людей не имеют понятия об этом. Сегодня нам доступны все виды инструментов, начиная с организационных, получаемых на основе объектно-ориентированной методологии, и заканчивая средствами, построенными на их базе, например моделями UML. Но чем больше средств мы создаем, чтобы справиться с имеющимися трудностями, тем более сложные вещи появляются вновь. Мы всегда ограничены в понимании конструируемых объектов – будь то программное обеспечение или небоскребы".
В настоящее время Джеймс Гослинг является вице-президентом компании Sun Microsystems.
Дональд Кнут
Автор Библии программистов
…программирование – это искусство, поскольку оно является приложением накопленных знаний для практических целей, поскольку оно требует умения и мастерства, и в особенности потому, что продукты программирования могут представлять эстетическую ценность.
Дональд Кнут
Дональд Кнут
В 1974 году, когда Дональд Кнут как раз закончил третий том своего семитомника «The art of computer programming» (в русском переводе – «Искусство программирования для ЭВМ»), ему была присуждена премия Тьюринга. В постановлении комитета по премиям Тьюринга сказано, что она «присуждается профессору Стэнфордского университета Дональду Е. Кнуту за ряд выдающихся работ в области анализа алгоритмов и разработки языков программирования и в особенности за его вклад в развитие „искусства программирования“, осуществленный серией известных книг с этим общим названием. Методы программирования, алгоритмы, теоретические построения, изложенные в указанных книгах, послужили основой преподавания информатики и организующим началом в развитии этой дисциплины».
В 80-х годах его личный опыт написания книг и неудовлетворенность тем, в каком виде были представлены гранки, возбудили в нем интерес к компьютерному набору. Этот интерес привел к созданию издательской системы ТеХ и программы проектирования шрифтов METAFONT.
Ко всему прочему, Кнут является одаренным писателем и композитором, а также обладает имиджем нешаблонного человека. Достаточно сказать, что самым нелепым фактом является то, что его один из первых опусов был опубликован в журнале "Сумасшедший".
Дональд Кнут родился 10 января 1938 года в Милуоки (штат Висконсин). Его отец преподавал бухгалтерский учет в университете и занимался также дома, в подвале, печатным делом. Ребенком Кнут с удовольствием играл с калькулятором отца, который мог перемножать десятизначные числа, но у него уходило от десяти до двадцати секунд, чтобы напечатать ответ. Кнут вспоминает, как он пытался извлечь квадратный корень из десяти, пытался и ошибся. Открыв, что ответ находится между 3,16 и 3,17, он сделал заключение, что число должно иметь истинное значение л, а не 3,14, как говорилось в его учебнике. Вскоре он понял, что его заключение было ошибочным.
Любовь Кнута к математике усилилась на первом году учебы в университете. Он был захвачен графикой алгебраических функций – областью нескончаемых возможностей.
Физика также ему нравилась, и он разрывается между ней и музыкой – он серьезно обучался игре на пианино, сам написал несколько произведений. Кнут признает, что у него комплекс неполноценности. Это объясняет, говорит он, то, что он всегда много работал. В старших классах Милуокской лютеранской высшей школы он беспокоился, что низкие оценки по математике могут помешать его поступлению в колледж, но это была непонятная озабоченность, поскольку он закончил школу с самым высоким коэффициентом за все времена – 97,5 %.
В 1956 году он поступил в Кейский Технологический институт в Кливленде. На первом году обучения он занялся высшей математикой. Снова из-за страха, что не справится, Кнут в дополнительное время с рвением изучал дифференциальное и интегральное исчисление и аналитическую геометрию.
Во время каникул после первого курса Кнут впервые занялся работой с компьютером. У него было задание на лето – построить графики для статистиков Кейса. В соседней комнате находилась новая машина IBM 650. Кнут так загорелся ею, что посвятил "Искусство программирования" компьютеру IBM 650, установленному в Кэйском технологическом институте, в память о многих приятных вечерах. Некоторые из его преподавателей советовали ему держаться в стороне от компьютеров, утверждая, что это ни к чему хорошему не приведет. Но любопытство взяло верх, он проводил ночи напролет с компьютером.
Кнут с легкостью оставил физику. Его лабораторные работы, казалось, не приносили удовлетворения, он ронял детали на пол и часто оказывался последним. Сварка оказалась катастрофой: при росте 6 футов и 4 дюйма он был слишком высоким для сварочных столов, и ему невозможно было наблюдать за работой, кроме того, очки ему не подходили.
Кнут добился успехов, используя компьютер для оценки игры баскетбольной команды, менеджером которой он являлся. Он выработал сложную формулу для ранжирования игроков, рассчитывая вклад каждого в игру, не только по количеству очков, которые он принес команде. Кнут обычно сидел за компьютером IBM 650 и подводил статистику игры, в то время, когда тренер стоял рядом. Используя программу Д. Кнута, тренер мог определить истинный вклад каждого в игру и в соответствии с этим использовать игроков. Оказалось также, что данная программа стимулировала игроков работать с большей отдачей. В 1960 году Кэйский институт выиграл чемпионат лиги, а магическая формула Кнута неожиданно была опубликована в "Walter Cronkite’s Sunday" и в "Newsweek".
В 1960 году Кнут получил звание бакалавра по математике, причем студенты даже проголосовали за присуждение ему степени доктора. Летом этого года в Пассадене Кнут занялся работой по системному программированию, результатом которой было создание компилятора для ALGOL. За эту работу он получил 5,5 тысячи долларов. Осенью того же года он поступает в Калифорнийский технологический институт для получения степени доктора философии по математике.
В январе 1962 года издательство "Addison-Wesley" предложило Кнуту написать книгу по компиляторам. Он принял это предложение.
В июне 1963 года в Калифорнийском технологическом институте Кнуту присуждается степень доктора философии по математике и он становится ассистентом профессора. Вскоре он начинает работу над главами своей книги.
Находясь в зачаточном состоянии, компьютерная наука того времени страдала от недостатка специальной литературы, которая была к тому же неоднородной. Кнут обнаружил, что многие из опубликованных статей были неправильны. Тысячи программистов писали новые алгоритмы для мэйнфреймов. Но когда приходила хорошая мысль, она терялась в журнале или техническом докладе. Многие программы просто не читались. Результатом было то, что люди вновь открывали методы, которые уже были известны. Кнуту пришла в голову мысль, что будет полезным иметь общую картину всей этой ценной литературы. Он узнал, что те, кто раньше пытались суммировать технику программирования, были необъективны на основании их собственных теорий. Не развив ни одну из новых идей, но уже уверенный, что является хорошим писателем, Кнут почувствовал, что именно он подходит для этой работы.
Цель Кнута в этой монументальной работе состояла в том, чтобы обобщить технику программирования и найти ей соответствующее применение. Его основным вкладом было обобщение материала и анализ методов. Он пытался развить наиболее используемые теории для разных методов и заполнить пробелы в этих теориях, он был первым, кто находил эти пробелы и собирал все эти разбросанные теории. Вначале Кнут думал, что напишет только одну книгу о компиляторах. Набросав несколько глав, тем не менее, он почувствовал, что книга должна быть гораздо большей и основополагающей. Получив зеленый свет от издателя, он писал, писал и писал. К июню 1965 года он завершил первый проект из двенадцати глав, который размещался на трех тысячах страницах рукописного текста. В октябре он отослал первую главу издателю. Издательство "Addison-Wesley" предложило, что двенадцать частей будут опубликованы как семь отдельных томов, каждый из которых будет содержать один или два раздела. Кнута устраивало такое предложение.
Проведя напряженные дни и ночи над реализацией семитомного проекта, Кнут испытал несколько приступов язвы летом 1967 года. Как вспоминает он, это случилось на середине "алгоритма Евклида", на 333 странице второго тома.
Данные издания, как оказалось, имели наибольший спрос из всех книг, продаваемых "Addison-Wesley". В середине 80-х годов две тысячи экземпляров каждого из трех томов расходились в течение месяца, и эта цифра не менялась с середины 70-х годов. Работа была переведена на китайский, румынский, японский, испанский и русский, планировалось издание на португальском и венгерском. Кнут становится все более знаменитым: в 1979 г. в возрасте 41 года он получает из рук президента Дж. Картера Национальную медаль в области науки за свою работу по алгоритмам.
Несмотря на свою импозантность, Кнут говорит быстро, его руки находятся в постоянном движении. Музыка представляет для него большой интерес. Он стал дизайнером органа в стиле барокко, состоящего из 1000 труб, для лютеранской церкви в парке Менло в Калифорнии и построил уменьшенную версию для своего дома. С 1968 года он член Совета факультета Стэнфордского университета как профессор в области компьютерной науки.
Может показаться неправдоподобным, но Д. Кнут также пишет фантастические вещи. Его новелла "Сюрреалистические числа: как два бывших студента занялись чистой математикой и нашли полное счастье" была опубликована в издательстве "Addison-Wesley" в 1974 году. В книге рассказывается об исследовании новой системы чисел, открытой в Кэмбриджском университете Дж. Конвэем. Кнут узнал о данной системе от самого Конвэя в 1972 году. Один журналист отметил, что впервые значимое открытие в математике описывается сначала в научной фантастике. Кнут написал данную книгу не для того, чтобы проповедовать теорию Конвэя, а чтобы объяснить, как человек может создать такую теорию.
Весной 1977 года Дональд Кнут резко изменил род своих занятий. Просматривая гранки проверенного издания второго тома, он неожиданно почувствовал, что полиграфия нуждается в кардинальном изменении. Он хотел уничтожить эти гранки, поскольку они выглядели ужасно. Пространственное расположение знаков было плохим, и особенно острой проблемой в издании был стандартный шрифт и вид математических уравнений. Кнут хотел понять, почему печатная работа, в которой использовался фоторепродукционный шрифт, была такой непривлекательной. Он решил посвятить несколько месяцев тому, чтобы попытаться совместить математику и компьютерную науку с задачей улучшения внешнего вида книг. Проект длился девять лет!
Кнут изобрел ТеХ, первую издательскую систему, а также METAFONT, систему, которая использует классическую математику для придания внешнего вида шрифтам. ТеХ был назван одним из наиболее важных изобретений в истории печатания книг. Некоторые сравнивали его по значению с Библией Иоганна Гуттенберга, что смутило Кнута.
ТеХ позволяет наборной машине размещать буквы и знаки на странице со значительной гибкостью и эстетичным качеством.
METAFONT позволяет дизайнеру создавать шрифт или комплект шрифта, полный с буквами, числами и пунктуацией в специфичном стиле. Комплект шрифта может быть изображен на мониторе и может быть изменен любым способом.
Кнут ввел обе программы в открытое пользование: ни он, ни Стэнфордский университет не заработали на них ни гроша. Он написал программы, как он говорит, из любви к книгам и для достижения необходимой эстетики.
Когда Кнут сверстал второй том "Искусства программирования", используя METAFONT и ТеХ, результат был лучше, но не идеальным. Плохо получались числа. Так он потратил еще пять лет, работая с лучшими дизайнерами по графике, для того, чтобы создать новые системы и наиболее полно использовать их потенциал. Летом 1986 года разработки Кнута по типографии были завершены, и вышел пятитомник "Компьютеры и набор знаков". Первый том посвящен ТеХ; второй содержит полный источник кодов ТеХ; третий и четвертый, соответственно, посвящены METAFONT и полному источнику кодов для него; пятый том содержит 500 с лишним примеров программирования по METAFONT.
В 1986 году на приеме в издательстве "Addison-Wesley", устроенном в его честь, ему задали вопрос: "Будет ли завершен его семитомник, будут ли дописаны четыре недостающих тома?" Он ответил, что их написание заняло бы еще двадцать лет.
Прошло тринадцать лет. В 1999 году профессор Кнут заявил, что к существующим трем л омам он намерен добавить еще два тома. Кроме того, он решил заменить виртуальную модель компьютера MIX 1009 (модель, похожую на реальные компьютеры конца 60-х – начала 70-х годов), на языке которого написаны большинство алгоритмов первых трех томов, на новую модель – 64-разрядный процессор MMIX 2009 с RISC-архитектурой. В следующих изданиях "Искусство программирования" примеры будут приводиться на языке ассемблера ММIX.
Дональд Кнут полагает, что изучение машинного языка по-прежнему необходимо программисту, ведь надо знать, во что будут переведены конструкции языков высокого уровня и что представляет собой аппаратное обеспечение. В противном случае, по словам профессора Кнута, программы будут получаться весьма странными.
Номер 2009 является средним арифметическим номеров четырнадцати процессоров. В их числе – CRAY I, IBM 701, Alpha 21264, MIPS 4000, StrongArm 110, Sparc 64 и др. Логическая модель MMIX довольно подробно описывает поведение настоящего процессора. Например, для каждой команды указано число тактов, требующихся для выполнения, определено поведение процессора в таких ситуациях, как неверное предсказание ветвления или промах кэша. В модели имеется набор изменяемых параметров, поэтому на самом деле MMIX – это целое семейство совместимых процессоров. Профессор Кнут намерен реализовать метасимулятор для всего семейства, чтобы можно было менять параметры модели и исследовать поведение программ.
Дональд Кнут уже разработал архитектуру процессора, простой симулятор и ассемблер. Первая редакция описания набора команд была опубликована в феврале, а четвертая редакция введения в MMIX вышла в конце июня. Теперь предстоит перенос всего накопленного программного фонда старого MIX на новый RISC-процессор MMIX. Дональд Кнут приглашает к сотрудничеству добровольцев со всего мира, прежде всего студентов.
Как заметил Питер Гордон, издававший книги Кнута в издательстве "Addison-Wesley": "Если его сравнить с Евклидом за его работу "Искусство программирования" и с Гуттенбергом за работу по ТеХ, мы можем только догадываться, каким будет следующее сравнение".