63 года Бьёрну Страуструпу, «отцу» С++. 4 несозданных языка программирования

Сегодня мы поздравляем с днем рождения Бьёрна Страуструпа, разработчика языка программирования С++. 30 декабря в местечке Орхус в Дании родился тот, чье имя сегодня известно всему миру благодаря его детищу – языку программирования, завоевавшему огромую популярность. 

63 года Бьёрну Страуструпу, «отцу» С++.  4 несозданных языка программирования

Первое описание «Язык программирования С++» было опубликовано в 1985 году, через три года вышла расширенная версия 2.0, в 1998-м был опубликован первый стандарт языка «С++98», в 2003 году появилась его следующая редакция ISO/IEC 14882:2003. В настоящее время она (с дополнениями, которые выходят почти ежегодно) является тем, что называется «язык С++».

 

И это был не просто один из новых языков программирования, которых и в те годы было навалом. В свое время это был приход совершенно нового уровня абстракций и идей, принципиально расширивших возможности языка и программирования в целом.  

ProcterAward
Недаром «за создание языка С++» в 2004 году Бьерн Страуструп был избран в члены Национальной Академии Инженерии США, в 2005-м удостоен престижной награды и премии Уильяма Проктера Американского Научно-исследовательского общества, а Американский Институт Инженеров электротехники и электроники (IEEE) наградил Страуструпа «за начало разработки и коммерциализации объектно-ориентированной технологии создания программ и за большие изменения, внесенные в бизнес и индустрию». 

 

Вообще же, исследователи в области философии программирования и искусственных языков склоняются к мнению, что сам по себе феномен искусственного языка глубоко отражает наше знание процессов, протекающих в любой среде, не важно – естественной или искусственной. В этой связи весьма интересно проследить наше движение к созданию языков программирования там, где их пока нет – в качестве оценки того, насколько мы сильны (или не очень…) в этой области технологий. 

1. Кванты. Первый подход к снаряду. Мечта использовать отдельные квантовые частицы для обработки информации не нова. И первые более или мнеее успешные попытки использовать свойства микрочастиц связаны с технологиями оптических когерентных процессоров – вычислительных устройств, в которых используются кванты света – фотоны. 

оптическийкомпьютер

Почти сразу стало ясно, что, хотя каждый из фотонов (как и вообще – квантовый объект) способен одновременно находиться во многих состояниях (принцип суперпозиции) и хранить о них информацию, но обращаться с отдельными фотонами «индивидуально» не получится. Вот тогда и появился подход, заключающийся в использовании когерентного света – потока одинаковых, квантово-неразличимых фотонов, состояния которых в специально созданных условиях оптического процессора контролируемым образом меняется. Характер этих изменений и их порядок определяют операции над информацией, которая «закодирована» волновой функцией фотонов. Выяснилось, что оптические процессоры с потрясающей быстротой способны выпонять действия, на которые у их обычных, электронных собратьев уходит в миллионы раз (!) больше времени — операции распознавания образов, фильтрации сигналов, свертки и т.п.  
енлайт256Например, специализированный оптический процессор – пока что единственный на рынке — EnLight 256, созданный израильской фирмой Lenslet, обладает производительностью 8 трлн. операций в секунду, но аппаратно «запрограммирован» на выполнение лишь одной функции – перемножение 256-разрядного вектора и матрицы 256х256 бит. А вот оптических когерентных вычислителей, которые были бы в состоянии выполнять разные программы обработки данных, которых можно было бы легко перепрограммировать, на рынке пока нет, как нет и соотвествующих языков программирования.

 

Помимо фотонов – «настоящих» квантов, как выяснилось, существует много вполне макроскопических объектов, но, тем не менее, в определенных условиях проявляющих квантовые свойства. Это и ток сверхпроводимости, и сверхтекучая жидкость, и – вот! – туннельные, «джозефсоновские» контакты. Именно на базе их и появились первые коммерческие (следовательно, настоящие, «без дураков») квантовые компьютеры. В 2007 году канадская компания D-Wave продемонстрировала процессор, содержащий 16 квантовых ячеек – «кубитов», в 2011-м – 128 кубитов, последнее достижение – 512 кубитов. Обе последние модели приобрела Lockheed Martin, заплатив за покупку несколько десятков миллионов долларов (за первый компьютер — $10млн., сумма второй сделки не разглашается). В числе прикупивших такой компьютер и Google

Существующая сегодня система программирования компьютеров D-Wave включает 6 уровней:

tut-software-stack

Уровень1: аппаратура, осуществляющая квантовые операции;
Уровень 2: уровень «машинных кодов» — элементарных операций, осуществляемых процессором; программирование на этом уровне соответствует организации начальных состояний квантовых элементов;
Уровень 3: уровень компилятора. Позволяет программисту, ничего не зная о конкретных процессах квантового вычисления, задавать оптимизируемую функцию (основная задача компьютеров D-Wave – оптимизация функций в пространстве переменных);
Уровень 4: уровень клиентских библиотек – этот уровень позволяет программисту использовать языки высокого уровня для создания приложений;
Уровень 5: уровень функциональной оболочки. Здесь доступно создание алгоритмического «окружения» вокруг, собственно, оптимизационной задачи;
Уровень 6: слой приложений – уровень, где конечный пользователь задает условия задач и получает решения.
tut-hardware-cloud

2. Кванты. Все очень запутано. Специалисты различают два типа квантовых процессоров – с сосредоточенными параметрами (характерный пример – компьютер D-Wave) и построенные на основе квантово-запутанных состояний кубитов. Уже самые первые квантовые алгоритмы – алгоритм разложения числа на простые множители (факторизации) Питера Шора, предложенный еще в 1994 году или алгоритм Гровера (поиск элемента списка) разрабатывались именно для таких – «настоящих» квантовых компьютеров, хотя «в железе» их тогда не существовало. Надо сказать, технически создание компьютера на базе квантово-запутанного состояния даже нескольких кубитов представляет собой очень сложную задачу. Вдобавок, существующие конструкции этих процессоров здорово напоминают не цифровые устройства, а, скорее аналоговые ЭВМ, где программирование сводится к созданию каждый раз новой электрической схемы…

 

мартиниси его командаИ вот, недавно был совершен серьезный прорыв. Группа исследователей Калифорнийского университета, Санта-Барбара, под руководством Джона Мартиниса (на фото крайний справа) сумела создать первый в мире квантовый компьютер, построенный на базе классической архитектуры фон Неймана, т.е. обладающий ячейками памяти и процессором. Сегодня этот компьютер состоит всего из двух регистров и двух ячеек памяти, построенных на основе квантово-запутанных состояний кубитов. Что важно: структура взаимодействий кубитов (следовательно, функционал устройства) задается программным путем, а не за счет изменения физической структуры вычислителя. 


зелингерДля программирования квантовых компьютеров разработано несколько языков (QPL, QCL, QML), имеющих весьма ограниченные возможности и являющиеся, скорее, «демонстраторами принципов программирования». Первый квантовый язык программирования высокого уровня Quipper в прошлом году представила группа Петера Золингера из университета Дэлхоузи (Dalhousie University), Галифакс, Канада. Основой Quipper является классический языкпрограммирования Haskell, который доработан и дополнен библиотеками кода, включающими семь квантовых алгоритмов (из примерно 45 известных на сегодня).

3. Молекулярное программирование. Представления о молекуле ДНК как о носителе наследственной программы живой клетки автоматически предполагает желание начать попытки программировать клеточные процессы – это естественно. Недавние удачные опыты Крейга Вентера по созданию работоспособной искусственной ДНК бактерии подтвердили принципиальную возможность «перепрограммирования» внутриклеточных процессов. Однако, работа, проведенная сотрудниками группы Вертера, являлась не столько программированием, сколько ручным копированием, точным воспроизведением природной ДНК-последовательности. Любая попытка «написания» ДНК-программы потребует наличия аппаратной «среды программирования» с модулями синтеза ДНК-последовательности, ее редактирования, репликации и уничтожения, поскольку в данной случае запись информации осуществляется путем физического формирования последовательности соединенных молекул нуклеотидов. Такую «среду программирования» еще предстоит создать (причем, это будет аппаратная среда!), как и программы-трансляторы (для обычных компьютеров), переводящие запись о желаемых свойствах клетки в ДНК-последовательность, реализующую желаемую программу.

днк2

Интересное исследование в этом направлении недавно предприняла группа исследователей из Вашингтонского университета (отчет опубликован 29 сентября в журнале Nature Nanotechnology). Они предложили, по их собственному выражению, новый язык программирования химических процессов и «программируемый химический контроллер на базе ДНК». По существу, речь идет о программировании химических процессов при помощи синтетической ДНК. Несмотря на то, что исследования находятся еще в самой ранней стадии, один из авторов разработки Георг Силиг и его коллега Эрик Клавинс получили финансирование в размере $2 млн. от Национального научного фонда для развития исследований в области молекулярного программирования. Большие надежды возлагаются на эту «технологию программирования» в силу того, что она способна (пока теоретически) обеспечить управляемый синтез белков, в т.ч. не существующих в природе. А это, потенциально, сверхчувствительные сенсоры, молекулярные роботы, выработка электроэнергии от солнца, новые источники света, сверхэффективные катализаторы и многое другое.  

 

4. Запрограммированная жизнь. Говоря о нашем понимании роли ДНК как носителя наследственной программы живой клетки, мы должны, тем не менее, признать, что принципы программирования развития многоклеточного организма нам пока не известны. 
alan-turingПримечательно, что даже Алан Тьюринг, да-да, тот самый – автор «машины Тьюринга», «теста Тьюринга» и целого ряда идей в области обработки данных – уделил внимание этой загадке и в 1952 году опубликовал работу, которая называлась «Химические основы морфогенеза», где впервые попытался математически обосновать возможность самоорганизации материальных систем. То, что постэмбриональное развитие управляется некоторой программой – бесспорно, но где эта программы скрыта и какова природа «процессора», выполняющего её, пока никто сказать не в состоянии, хотя гипотез на этот счет существует предостаточно. Программирование морфогенеза – процессов создания форм живого – станет в будущем, вероятно, самым захватывающим занятием человека как программиста.


финал


Юрий Романов, Компьютерра





Интересные новости
Незавершенная версия Windows 7 работает лучше Vista
Программист открыл заблокированные возможности Windows 7
Quick Slide Show 2.32: создание flash-презентаций
Покупатели гоняются за старыми компьютерами ради Windows XP
Визуализатор V-Ray 1.5 Service Pack 2 с поддержкой 3ds Max 2009
Блок рекламы


Похожие новости

Steam отметила быстрый рост числа пользователей Windows 11 — уже до конца года их может стать больше, чем у Windows 10Steam отметила быстрый рост числа пользователей Windows 11 — уже до конца года их может стать больше, чем у Windows 10
Adobe ожидает роста выручки в третьем квартале 2021 года
Google профинансирует добавление поддержки языка Rust в ядро Linux
Microsoft прекратит поддержку Internet Explorer с июня 2022 года
Соучредитель Adobe Чарльз Гешке почил в возрасте 81 года
Взлом года: на зачистку заражённых через SolarWinds организацией у США уйдут месяцы
Microsoft завершила разработку Windows 10X и выпустит ОС весной 2021 года
RTM-версия Windows 10X выйдет в декабре этого года
Работавшую с 2016 года в Киеве бесплатную школу программирования UNIT Factory закрывают
Материнские платы Gigabyte и Windows 10 столкнулись с «проблемой 3000 года»
Последние новости

Подгружаем последние новости