У Николауса Кранча есть мечта. Представьте себе, что вы можете рисовать программы - так же, как вы рисуете блок-схему. Кранч воплощает эту мечту в жизнь уже несколько десятилетий, и теперь он предлагает свое собственное, не требующее кода решение, которое позволяет программировать с помощью визуальных диаграмм. Помимо прочих преимуществ, оно может наконец-то раскрыть весь потенциал программирования для многоядерных процессоров.
Как написал Кранч в недавней записи в своем блоге, "может быть, пришло время пересмотреть способ создания программного обеспечения?".
По словам Кранча, в интервью, полученном на этой неделе по электронной почте, это не просто видение. Он уже создал собственную среду разработки для написания текстов на своем языке KonneX, который выводит неспецифический для аппаратного обеспечения код, "похожий на машинный код или байт-код Java". Кроме того, он создал новое ядро для микроконтроллеров, которое выполняет планирование и синхронизацию задач (а также все необходимые блокировки объектов и обработку ошибок).
Но не менее примечательно и то, как долго он шел к этой мечте. "Примерно с начала 1990-х годов я начал задумываться о том, чтобы рисовать программы, а не писать их", - добавил Кранч.
В настоящее время "мы используем графики и диаграммы практически для любой сложной разработки, - пояснил Кранч в своем блоге, - кроме программирования...".
Визуальное многоядерное программирование
Кранч видит альтернативу, при которой аргументы функции становятся линиями в ячейках, а утверждения "возврата" функции - линиями, ведущими наружу. Ошибки также могут быть визуально отображены (как и функции, выбрасывающие исключение). Это типизированный язык - но с типами данных, легко представляемыми с помощью цветов.
И к этому он относится очень серьезно.
"В течение многих лет я вынашивал различные идеи, пытаясь понять, как это можно сделать", - вспоминает Кранч в своем электронном письме.
Более четырех лет Кранч разрабатывал эту идею и в конце концов создал рабочий прототип. Однажды он даже представил систему сэру Клайву Синклеру, легендарному пионеру в области производства персональных компьютеров и карманных калькуляторов. К сожалению, вспоминает Кранч, идея "не вызвала у него интереса".
Недавно Крэнч подробно изложил свое видение в серии записей в блоге с заголовками типа "Картинка рисует тысячу слов". Но есть и другие существенные преимущества. Кранч утверждает, что компьютерный код в целом "был разработан для одного процессора, чтобы выполнять список инструкций", что теперь ограничивает его возможности по описанию многопоточных приложений. "Многоядерное программирование для программистов - это, прямо скажем, абсолютная боль..." пишет Кранч в своем письме.
"Обычно, когда программист пишет программу, она выполняется только на одном ядре, поэтому неважно, на каком компьютере она выполняется - с 2 или 64 ядрами, производительность будет одинаковой".
Поэтому, играя с 8-ядерным процессором Parallax P2, Кранч испытал вдохновение. "Одна из замечательных вещей в KonneX - это присущая ему способность распределять задачи по нескольким ядрам процессора без необходимости знать об этом программисту... Я увидел возможность возродить KonneX. P2 достаточно мощный для работы KonneX и достаточно простой для того, чтобы один человек мог написать достаточно кода, чтобы сделать его жизнеспособным для пользователей".
Калифорнийская компания Parallax уже несколько десятилетий производит учебные принадлежности (в том числе наборы для робототехники). К счастью, по словам Кранча, это оказалась "небольшая и очень доступная компания". Я продемонстрировал свое старое программное обеспечение и был очень рад, когда основатель компании Чип и [генеральный директор] Кен Грейси сказали, что несколько лет назад они уже пытались создать нечто подобное".
Как же обстоят дела с его предложением KonneX сейчас? "Единственная проблема заключалась в том, что мое программное обеспечение было старым, выглядело устаревшим и практически не работало под Windows 7. Чип предложил мне уйти, обновить программное обеспечение и вернуться с лучшим продуктом. Вот этим я сейчас и занимаюсь. Сейчас я переписываю свое программное обеспечение на Java (чтобы оно работало под Windows, Mac и Linux, а не только под Windows, как в старой версии)".
Кроме того, Кранч занимается оптимизацией IDE, чтобы сделать ее более интуитивной.
Захват производительности
KonneX имеет и другие преимущества. Он также работает на различных архитектурах процессоров. А проблемы интернационализации в нем отсутствуют, поскольку, будучи визуальным языком, он может быть легко принят в 195 странах мира. (Кранч сетует на то, что в настоящее время "если переводчик для какого-либо языка экономически нецелесообразен, он не создается").
Однако видение Кранча - это отчасти и комментарий к сегодняшнему состоянию отрасли. "Каскад обновлений идет по цепочке разработки, разрушая все на своем пути", - жалуется Кранч в своем блоге.
А за последние 30 лет "Интернет сделал все еще хуже". Тот факт, что производители программного обеспечения могут поставлять непроверенный, некачественный код, зная, что они могут просто поставить онлайн-обновление, практически поощряет некачественное программное обеспечение... Разработчики теперь могут отказаться от контроля качества и переложить бета-тестирование непосредственно на платящих клиентов, прекрасно зная, что в случае появления новых ошибок отправка исправления не будет стоить им ничего".
"На заре разработки программного обеспечения программы публиковались на физических носителях - кассетах, дискетах, CD и DVD. Программное обеспечение должно было работать. Огромные усилия были направлены на контроль качества программного обеспечения и бета-тестирование. Невозможность обнаружить ошибку могла стать причиной смерти компании. Выпуск исправлений и обновлений был дорогостоящим процессом, поэтому было крайне важно, чтобы при поставке программа была исправна".
Короче говоря, как пишет Кранч, "все это стало очень грязным... Интересно, сколько производительности теряется из-за обновлений...".
На собственном сайте Крэнч описывает себя как компьютерного эрудита, работающего с компьютерами с 1980-х годов, "когда не было библиотек, чтобы делать сложные вещи. Время, когда все приходилось делать самому".
Сегодня Кранч - разработчик, системный администратор UNIX/Linux и инженер, живущий недалеко от Брайтона, Англия, и работающий в качестве консультанта по технологиям. После многих лет работы Кранч считает, что ему удалось найти способ улучшить процесс создания кода. "Я считаю, что KonneX может стать следующей вещью в программировании", - говорит Кранч (добавляя при этом: "Я свободно допускаю, что в этом есть некоторая предвзятость").
Кранч также считает, что его система KonneX может помочь в освоении программирования детьми. "Дети понимают, что это такое", - говорит Кренч (при этом он задается вопросом, не потому ли, что у них "нет предубеждений относительно того, что такое программирование"). Другой возможный рынок, который он видит, - это развивающийся рынок домашней автоматизации. "Каждый дом уникален, как и требования каждого домовладельца", - говорит Кранч. "И производители не могут удовлетворить их все".
Кранч также является активным любителем техники, среди его проектов в стиле стимпанк - устройство, которое механически опускает лупу для увеличения зрения на левый глаз (после использования ультразвуковых звуковых волн для расчета расстояния и выбора подходящей линзы - плюс светочувствительный резистор для регулировки апертуры встроенной диафрагмы).
Может быть, вполне уместно, что этот давний поклонник стимпанка стал тем, кто, в конечном счете, занимается самим процессом компьютерного программирования.