Тим Брэй: «Разработчики приложений не умеют программировать потоки, не понимают, как это делать, и никогда не поймут»Функциональное программирование предоставляет разработчикам более удачный подход к созданию программ для многоядерных процессоров, чем потоки команд, развивающие традиционную парадигму процедурного программирования, убежден соавтор языка разметки XML Тим Брэй.

Программирование для многоядерных процессоров подразумевает параллельное исполнение, с которым сопряжены принципиальные сложности, напомнил Брэй, выступая в июле на конференции O'Reilly Open Source Convention (OSCON 2010).

«Параллелизм - это трудно. С ним связано множество проблем, сложных для понимания, — заявил Брэй. — Игнорирование особенностей параллельного исполнения приводит к ошибкам и появлению узких мест производительности».

Однако функциональное программирование, реализуемое языками наподобие Erlang и Clojure, предосталяет способы справиться с параллелизмом, утверждает он.

«Идея функционального программирования строится на том, что данные незыблемы. Их нельзя использовать совместно, — указал Брэй. — А когда данными нельзя пользоваться совместно, разработчикам не надо заботиться о возможности одновременного изменения данных двумя разными процессами. Принцип незыблемости дает возможность пользоваться указателями вместо реальных данных».

Erlang, по утверждению Брэя, является «пуленепробиваемым» и довольно высокопроизводительным. Изначально он был создан для программирования крупных телефонных коммутаторов с сотнями тысяч процессоров. В Erlang нет классов, объектов и переменных, и обработка файлов реализована на примитивном уровне, но у него все же есть масса преимуществ.

Clojure, как объяснил Брэй, представляет собой диалект Lisp, который работает на виртуальных машинах Java и компилируется в байткод Java, что делает язык чрезвычайно быстрым.

«Это на редкость высокопроизводительный язык», — утверждает Брэй.

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

Брэй подчеркнул, что его презентация относится к деятельности, которой он занимался до перехода в Google, где сейчас он работает над мобильной платформой Android. В Google Брэй устроился в этом году, а до того работал в Sun Microsystems в должности директора по технологиям Web. 

Поделитесь материалом с коллегами и друзьями