«Я написал огромное количество полезных программ. И совсем немного бесполезных»
У некоторых людей есть потребность создавать что-то новое. Когда эта потребность реализуется в полной мере, появляются произведения искусства, научные открытия, прорывные технологии. Таким человеком является Андерс Хейлсберг, создатель Turbo Pascal, Delphi и C#.
Для многих студентов ВУЗов Turbo Pascal до сих пор остается первым языком, с которого начинается знакомство с программированием. В свое время он был своеобразным прорывом в разработке программного обеспечения. Недаром «в народ» пошел не Pascal, а именно Turbo Pascal.
Однако Хейлсберг на этом не остановился. Благодаря его неугасающей потребности создавать новое появились Delphi и С#. Поэтому для многих Андерс является одним из «супергероев» ИТ-индустрии.
Первые шаги
Андерс Хейлсберг (Anders Hejlsberg) родился в декабре 1960 года в самом крупном городе Дании – Копенгагене, который по совместительству является ее столицей.
Хейлсберг хотел получить инженерное образование в Техническом университете Люнгбю, но так его и не сумел закончить.
Датский технический университет — технический университет и исследовательский институт, расположенный в коммуне Люнгбю-Торбек к северу от Копенгагена.
Юноша был увлечен программированием с самого детства. В университете Андерс писал программы для машин Nascom.
«В 1979 году я основал в Дании компьютерную компанию PolyData. Это было время, когда персональных компьютеров еще не существовало. Мы продавали компьютерные комплексы и писали для них программное обеспечение. Я написал ассемблер, дизассемблер, небольшую операционную систему и несколько расширений для Microsoft ROM-Basic5.
Моим самым первым большим проектом стал компилятор с языка Pascal и редактор, который мог заменить ROM-Basic», – вспоминает Хейлсберг.
Turbo Pascal
В 1980 году, когда Хейлсбергу было двадцать лет, его увлечение вылилось в собственноручно написанный компилятор языка Pascal. Первоначально это был Blue Label Software Pascal for the Nascom-2. Затем он портировал компилятор под CP/M и популярную операционную систему тех лет MS DOS. В результате компилятор получил название Compas Pascal, а позже – PolyPascal.
В 1983 году мы объединились с ребятами, которые только что основали компанию Borland; они лицензировали наш компилятор Pascal и добавили туда собственный редактор.
Borland выпустила IDE, известную в настоящее время как Turbo Pascal.
Я помню, как думал, что они сумасшедшие: эти парни продавали новый продукт по цене $49, 95, в то время как он стоил $500! Но достаточно быстро выяснилось, что я ошибался: Turbo Pascal стал очень популярным. Мы продали столько его экземпляров, сколько в начале было невозможно и представить.
Данную версию интегрированной среды разработки Borland поддерживала до 1995 года.
Чтобы решить финансовые проблемы, в 1987 году Андерс переехал в Калифорнию (США), где стал главным инженером фирмы Borland.
Delphi
В 1996 году Хейлсберг и его команда выпустили среду разработки под названием Delphi. В качестве базового языка программирования использовался Object Pascal, который также был разработан этой же командой.
Когда в компании Borland начали работу над Object Pascal, его прародитель (Pascal, созданный когда-то Виртом) находился в довольно запущенном состоянии. Было пересмотрено и переработано множество функций, многое было добавлено и написано с нуля. И в итоге изменения оказались столь колоссальными, что разработчики создали, можно сказать, новый язык программирования.
Своё имя новая IDE Delphi получила в честь древнегреческого города Дельфы. Название было выбрано неспроста: город Дельфы связан с именем бога мудрости и покровителем искусств Аполона. Согласно легенде главное святилище Аполлона находилось именно в этом городе. Его жрицы-сивиллы изрекали пророчества желающим узнать свою судьбу.
«Если вспомнить о предыдущих продуктах Borland, нужно отметить, что Turbo Pascal был весьма успешен — продукты с интегрированными средами разработки существенно повышали производительность труда программистов. Однако первая версия Turbo Pascal для Windows все же не решала самые существенные проблемы, с которыми сталкивались разработчики Windows-приложений, и нам довольно быстро стало ясно, что именно мы должны сделать для решения этих проблем. Создание Windows-приложений должно было начинаться с проектирования пользовательского интерфейса, и это явилось ключевой идеей нового продукта.
Когда мы выпустили Delphi, он стал первым средством быстрой разработки приложений, основанным на компилируемом языке программирования, тогда как существовавший в то время Visual Basic мог лишь создавать p-код и был, по существу, основан на интерпретаторе. Я могу сказать, что именно создание Delphi стимулировало появление компилятора в машинный код в последующих версиях Visual Basic», – рассказывает Хейлсберг.
Новая среда разработки охотно запускалась и достаточно быстро работала на машинах под управлением операционной системы Windows. В корпорации Microsoft не могли обойти вниманием этот факт и талантливого инженера Хейлсберга.
Каждый год появлялась новая версия Delphi, но после пятой периодичность нарушилась. Оказалось, что параллельно с разработкой новой версии Delphi, велась разработка нового, Delphi-подобного языка программирования для Linux. Новый продукт получил название Kylix.
Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Этого следовало ожидать, потому что Андерса Хейлсберга все-таки переманили в Microsoft.
Microsoft и C#
В 1996 году Андерс перешел работать в Microsoft: вместо $200 тысяч, которые он получал на старом месте, Билл Гейтс предложил $2,5 миллиона. Там он сначала работал с такими проектами, как J++ и Foundation Classes. Но потом он возглавил команду разработки языка С#. Под его руководством трудились такие программисты, как Скотт Вилтамут и Питер Гольде.
Я был главным архитектором языка. Команда состояла из четырех человек. Мы встречались на два-три часа три раза в неделю.
Microsoft решила отметить новое тысячелетие выпуском новых программных продуктов. К 2000 году компания подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). В поддержку этих новшеств Microsoft выпустила инструментарий для разработки приложений – платформу .NET. Она также объединяла «под одной крышей» несколько языков программирования, что было в новинку для того времени.
Еще одним новшеством платформы .NET была технология активных серверных страниц ASP.NET (Active Server Page). С её помощью можно было относительно быстро разработать веб-приложения, взаимодействующие с базами данных.
Язык программирования C# был создан специально для ASP.NET. На C# полностью была написана и сама ASP.NET.
«По моему мнению, основное отличие между C# и другими языками программирования, особенно Java, заключается в том, что мы постарались остаться как можно ближе к С++», – объяснял Андерс Хейлсберг.
Когда мы создавали язык C#, у нас было несколько целей. Прежде всего — создать первый компонентно-ориентированный язык из семейства C/С++. Если вспомнить, как производилась разработка приложений пять и даже десять лет назад, мы увидим, что многие разработчики уже тогда создавали специальное окружение для того, чтобы организовать запуск приложения по требованию, выполнение им определенной задачи и его остановку.
С появлением феномена Web и архитектуры «клиент-сервер» природа приложений изменилась. Сейчас нередко создается набор компонентов, выполняющихся под управлением того или иного процесса, — бизнес-объектов для приложений среднего звена, хранимых процедур в серверах баз данных, и именно совокупность таких компонентов сейчас называется приложением.
Кроме того, мы имели в виду и то, каким образом разработчики сейчас проектируют и создают программное обеспечение. Современный подход к проектированию приложений (в том числе и HTML-страниц, и бизнес-объектов) обычно подразумевает использование концепции свойств, событий и методов компонентов или объектов, а также инспектора свойств для их изменения.
Отсюда следует, что для компонентно-ориентированного программирования и для всей индустрии в целом чрезвычайно важно встроить в языки программирования поддержку концепции компонента. Это и была одна из ключевых целей создания С#.
Нашей целью было также создание более продуктивной версии С++. Известно, что разработчики любят этот язык за его мощь и практически неограниченные возможности, но проблема применения С++ заключается в том, что его мощь используется в течение 1% времени, а 99% времени уходит на то, чтобы понять, какую конструкцию языка применить для решения той или иной задачи. Мы решили создать упрощенную версию С++, чтобы повысить производительность труда разработчиков.
Эпистолярный жанр
Одна из немногих книг, которую написал Андерс Хейлсберг, – «Язык программирования C#». Эта книга была написана совместно с другими специалистами, входившими в группу разработчиков C# компании Microsoft. Эта книга — своего рода «библия» разработчика, которая с легкостью может заменить как MSDN, так и остальные книги по C#, полагают преданные ценители творчества Хейлсберга.
Книга переиздавалась четыре раза. Начиная с 4-го издания (2012 год) в книгу включили обширные комментарии, написанные известными «гуру» программирования – такими как Джон Скит, Джозеф Альбахари, Билл Вагнер, Кристиан Нейгел, Эрик Липперт и другими.
Награды
В 2000 году, журнал Dr. Dobb’s Journal (ежемесячный компьютерный журнал, который издается в США) удостоил Андерса Хейлсберга наградой за создание Turbo Pascal, Delphi и С#.
В 2007 году он вместе со своей командой получил награду («Выдающиеся техническое достижение») за создание языка C#.
Шон Кэтсэнбергер, Питэр Холлам, Скотт Уилтамат, Андерс Хейлсберг, Тодд Проэбстинг, Питэр Соллих, Эрик Мейер
Что дальше
В 2012 году Хейлсберг объявил о новом проекте TypeScript, который развивается под эгидой Microsoft.
TypeScript является обратно совместимым с JavaScript и компилируется в последний. Фактически, после компиляции программу на TypeScript можно выполнять в любом современном браузере или использовать совместно с серверной платформой Node.js.
С тех пор, как я занимаюсь компьютерами, мы только и делали, что поднимали уровень абстракции все выше и выше. Уже пройден путь от машинного кода до ассемблера, далее к С, потом С++ и теперь до среды, управляющей исполнением кода, такой как .NET или Java. Пока я не вижу никаких признаков того, что этот список нельзя продолжить. На мой взгляд, интересно, сможем ли мы поднять уровень абстракции выше, чем императивное программирование.
В интервью RSDN Андерс рассказал о том, кем больше ощущает себя.
Андерс, кем вы себя считаете: программистом, проектировщиком, архитектором, теоретиком?
– Думаю, всем понемногу. Хотя мне приходится заниматься высокоуровневым проектированием, я все равно время от времени пишу код, чтобы поддерживать себя в форме.
Автор: semen_grinshtein