Архитекторы компьютерного мира
Шрифт:
Второе условие Дейкстра тоже считал выполненным. А в пользу третьего условия, т. е. что оно возможно, он даже привел шесть доводов. Дейкстра предлагал ограничиться пока разработкой и реализацией удобочитаемых программ с предсказуемым поведением.
Первый довод состоял в том, что если программисту приходится рассматривать только программы с предсказуемым поведением, то альтернативы, из которых он выбирает, намного легче оценивать и сравнивать.
Второй довод заключается в том, что поскольку решили ограничиться предсказуемыми программами, то раз и навсегда добились резкого сокращения рассматриваемого пространства решений.
Третий довод основан на конструктивном подходе к проблеме правильности программы. Единственный эффективный способ значительно повысить доверие к программе — это дать убедительное
Четвертый довод относится к способу, при котором количество интеллектуальных усилий, необходимых для составления программы, зависит от длины программы. Высказывалось предположение, что существует некий закон природы, гласящий, что количество необходимых интеллектуальных усилий пропорционально квадрату длины программы. Но никто не смог его доказать, и выяснилось, что он не обязательно справедлив. Дейкстра склонялся к предположению, что при надлежащем применении способностей к абстракции интеллектуальное усилие, требующееся для написания программы, пропорционально длине самой программы.
В следующем доводе Дейкстра предвидел большое будущее у систематических и очень скромных языков программирования.
И последним доводом в пользу технической реализуемости революции он привел широкую применимость хорошо разложимых на компоненты решений.
Вот какой совет дает Эдсгер Дейкстра своим коллегам: "Мы будем лучше справляться с нашей работой программистов, если только мы будем подходить к этой работе с полным сознанием ее ужасающей сложности, если только мы будем верны скромным и элегантным языкам программирования, если мы будем учитывать природную ограниченность человеческого ума и приниматься за эту работу как Очень Смиренные Программисты".
Проф. М. Гуда и проф. Э. Дейкстра в Техническом университете Эйндховена
Многим программистам Дейкстра известен как создатель алгоритма "кратчайшего пути", предложенного им еще в 1952 году, который появился в результате его работы над задачей по оценке производительности компьютера ARCMAC, установленного в Математическом Центре. Этот алгоритм позволяет находить наилучший путь для перемещения между двумя точками. Ученый также использовал этот алгоритм для решения задачи "О нахождении оптимального пути передачи электрического тока всем существенным элементам цепи, минимизируя при этом расход меди", с которой столкнулись инженеры, разрабатывавшие ARCMAC. Он назвал этот способ "алгоритмом дерева с кратчайшими ветвями". В начале 60-х годов Дейкстра применил идею взаимного исключения к технологии связи между компьютером и его клавиатурой. Он использовал символы Р и V для представления двух операций, производимых в задаче взаимного исключения. Эта идея стала частью практически всех современных процессоров и модулей памяти, начиная с 1964 года, когда IBM впервые использовала ее в своей архитектуре IBM/360. Он помог программной индустрии стать намного более дисциплинированной, выдвинув тезис, что оператор "go to является вредным". Это означало, что чем больше в программе операторов go to, тем труднее разобраться в исходном коде программы. Эдсгер Дейкстра стоял у истоков структурного программирования. В 1972 году он вместе с Оле Далом и Тони Хоаром опубликовал основополагающую монографию "Структурное программирование".
Дейкстра продолжал работу в Математическом Центре до тех пор, пока в начале 70-х годов не перешел на работу исследователем в корпорацию Burroughs в США. В 1972 году ACM наградила Дейкстра премией Тьюринга (ACM Turing Award). В 1974 году AFIPS удостоила его памятной наградой Гарри Гуда (AFIPS Налу Goode Memorial Award). В начале 1980-х годов Дейкстра переехал в Остин, штат Техас. В 1984 году он был назначен деканом факультета компьютерных наук в Техасском университете.
Эдсгер Вайб Дейкстра является Почетным Иностранным членом Американской Академии гуманитарных, естественных и технических наук. Он также является членом Голландской королевской Академии наук, действительным членом Британского Компьютерного Общества
и, наконец, доктором наук Королевского университета в Белфасте.В настоящее время он до сих пор работает в Техасском университете и занимается вопросами вывода и представления программ, а также оптимизации математических рассуждений.
Мы научились оценивать хорошие программы так же, как мы оцениваем хорошую литературу. И в центре этого движения находится Эдсгер Дейкстра, который создает образцы, столь же прекрасные, как и полезные, и размышляет над ними.
Бьорн Страуструп
Создатель языка C++
Всякий язык программирования общего назначения обязан поддерживать сразу множество парадигм, и каждая парадигма должна быть реализована хорошо, обеспечивая близкое к оптимальному время выполнения и распределения памяти.
Бьорн Страуструп
Как пишет Том Даффи (Computerworld): "Множество открытий обязаны своим происхождением случаю. Но есть и немало других, которые стали возможны благодаря кропотливой работе и предвидению. Язык программирования C++, впервые предложенный лабораторией Bell Labs университетам в 1985 году, безусловно относится ко второй категории". Создателем языка C++, одного из наиболее популярных языков, основанных на концепции объектно-ориентированного программирования, является Бьорн Страуструп.
Он родился в 1950 году, в Ааргусе, втором по величине (250 тыс. жителей) городе Дании, расположенном на восточном побережье Ютландии. В 1975 году он окончил Университет Ааргуса по отделению компьютерных технологий и получил степень магистра. После получения магистерского диплома Бьорн Страуструп продолжил свое образование в Кембриджском университете Англии. В Кембридже, в Вычислительной лаборатории, он занимался проектированием распределенных систем, и в 1979 году ему была присуждена степень доктора философии.
В этом же году Страуструп вместе с семьей переехал в Нью-Джерси (США), где стал работать в Центре компьютерных исследований фирмы Bell Labs.
Когда он занимался исследованиями в фирме, Бьорну Страуструпу потребовалось написать несколько имитационных программ. SIMULA-67 — первый объектно-ориентированный язык для моделирования мог бы быть идеальным для подобных задач, если бы не его сравнительно низкая скорость выполнения программ.
Язык BCPL (Basic Combined Programming Language) не обладал средствами абстрагирования, которые казались необходимыми программисту. Те же ограничения имел и язык С, производный от BCPL.
Поэтому доктор Страуструп решил написать свою версию языка С, которую он назвал "Си с классами" (С with classes). В 1983 году язык подвергся значительным изменениям и получил название C++. Название придумал Рик Мэсчитти. Термин C++ — это оператор инкремента в С, который как бы намекает на то, что язык C++, нечто больше, чем просто С.
По словам коллеги Страуструпа Энди Кенига, тот не сомневался в шумном успехе нового языка. (Впоследствии Кениг совместно с Барбарой Му напишет книгу "Рассуждения о C++"). Страуструп разработал свой язык таким образом, чтобы он препроцессировался в С, а не компилировался в машинный язык, что открывало к нему доступ сотням тысяч пользователей С, имевших соответствующий компилятор.
"Препроцессирование в С обусловило повсеместное применение нового языка", — подчеркнул Кениг.
В 1984 году фирма Bell Labs была реорганизована и получила название АТ & Т Bell Labs. Первыми, кому фирма предложила C++, причем практически безо всякой оплаты, стали университеты. Это произошло в 1985 году. Для того чтобы смягчить положение, Страуструп одновременно опубликовал книгу "Язык программирования C++", которая выдержала четыре издания.
Язык быстро нашел свою аудиторию. В 1987 году на конференции по C++ собралось 200 человек. На следующий год, по словам Кенига, число участников возросло до 600, а в начале 90-х годов число пользователей, по его же оценкам, приближалось к полумиллиону. Это сделало данный язык мировым лидером по скорости распространения.