Цифровой журнал «Компьютерра» № 17 (170)
Шрифт:
Один из самых интересных компонентов STEPS — это объектно-ориентированный язык OMeta (pdf). Он предназначен для описания синтаксиса других языков. К примеру, на OMeta можно в несколько строк описать синтаксис калькулятора, а потом при помощи наследования расширить его и сделать научный калькулятор. Синтаксис OMeta при этом описан на самом OMeta.
Второй важный язык — это Nile (названный в честь реки Нил). Авторы STEPS называют его «языком исполняемой математики». Nile позволяет компактно описывать математические выражения и сделан таким образом, чтобы максимально облегчить параллельные вычисления. На нём написана графическая подсистема Frank, называемая Gezira. Gezira умещается
Самый низкий уровень во всей этой сложной системе — язык Nothing (переводится с английского как «Ничто»), «высокоуровневый язык с низкоуровневой семантикой». Nothing — это промежуточное звено между всеми языками в STEPS и машинными кодами. На Nothing не предполагается писать вручную, и нужен он лишь для возможности смотреть, что получается на выходе. Nothing, по словам исследователей, вдохновлён BCPL, использовавшимся в шестидесятые годы и вдохновившим авторов Си. На данный момент код на Nothing можно транслировать в Си для дальнейшего перевода в машинные коды или в JavaScript — чтобы система исполнялась в браузере. Предполагается, что в будущем из Nothing можно будет получать машинные коды напрямую.
В качестве промежуточного слоя, на котором написан пользовательский интерфейс, одно время использовался NotSqueak — упрощённый диалект Squeak. Но в последнем отчёте упоминаний о NotSqueak уже нет, зато появился новый объектно-ориентированный язык — Maru. Как и OMeta, он написан сам на себе и может использоваться как для описания высокоуровневого представления, так и для связи с низкоуровневыми функциями. На Maru может быть реализован парсер грамматики, и в 2011 году команда Кея была занята переносом Nile на Maru.
К сожалению, отчёты Кея и его команды (pdf) — это не пособие для программистов-суперменов и не справочник. Оно и понятно — STEPS пока что не готов, и каждый год во Viewpoints ставят разнообразные эксперименты, цель которых — не столько в создании законченной системы, сколько в том, чтобы отточить методы. «Франкенштейн» как цельная система здесь нужен лишь в качестве подопытного тела.
Если посмотреть отчёты Viewpoints за разные годы, то заметно, что здесь снова и снова изобретают языки программирования, делают их всё более самодостаточными (пока что кое-где ещё остаётся код на Си, но от него постепенно избавляются) и ставят смелые эксперименты.
Время от времени команда Кея пробует пробрасывать мостики в реальный мир, создавая, к примеру, виртуальную машину Squeak для Google Native Client или делая метаязык Tamacola на основе Tamarin VM, входящей во Flash. Эти методы могут позволить всей системе не просто работать в браузере, но исполняться быстрее, чем при трансляции в JavaScript.
Скорость, впрочем, не является целью Кея: по его оценке, в нынешнем виде Frank работает примерно на 30 процентов медленнее, чем если бы был написан традиционными методами. Оптимизацией исследователи занимаются лишь тогда, когда это не вредит компактности кода.
Понятно, что Frank не станет конкурентом современных ОС и вряд ли вообще будет доделан до необходимого для этого уровня. Тем не менее те методы, которые разрабатывает Алан Кей, могут повлиять на подход к программированию не меньше, чем в своё время повлиял Smalltalk.
Еnergy harvesting: энергия из ничего
Олег Нечай
Опубликовано 24 апреля 2013
Мы все с интересом обсуждаем одежду со встроенными датчиками и пультами управления, кроссовки с шагомером, GPS и прочую носимую электронику. Однако стоит задаться вопросом: а от чего, собственно, должны питаться все эти полезные гаджеты? От сменных батареек? Тогда вся эта вшитая электроника становится ничем не лучше обычных «умных» коробочек, которые можно просто сунуть в карман. Это как если бы мы вместе с мобильным телефоном носили большой тяжёлый чемодан с аккумуляторами или заправляли автомобиль вязанкой дров.
Нужно более изящное решение, отвечающее реалиям XXI, а не XX века. В идеале такой источник питания должен быть лёгким и миниатюрным, способным принимать любую форму и вид, умеющим заряжаться от любых типов энергии в окружающем пространстве и не требующим регулярной замены.
Идеал пока недостижим, но первые шаги в этом направлении уже сделаны. Поскольку для датчиков и простых микрокомпьютеров не требуются источники большой мощности, с ними можно использовать устройства, способные генерировать энергию буквально из ничего, собирая её по крупицам практически из воздуха — как, например, ветряные генераторы или солнечные батареи.
Эта идея положена в основу концепции Еnergy harvesting — её название пока не имеет общепринятого русского перевода, а по смыслу оно примерно означает «сбор энергетического урожая». Концепция заключается в сборе разнообразной энергии из окружающей среды и преобразовании её в электрическую для питания автономных миниатюрных устройств. Источником энергии могут быть любые естественные природные и физические процессы и явления — от солнечного света до любых механических колебаний.
Создаваемые в рамках концепции Еnergy harvesting устройства должны быть способны как генерировать, так и сохранять электрическую энергию — они смогут заменить тяжёлые и громоздкие аккумуляторные батареи там, где не требуются большая мощность и высокое напряжение. В результате мы получим вшитые микрогаджеты, датчики в одежде и обуви с практически вечным питанием, способные работать автономно до своего физического износа. На международной конференции Printed Electronics Europe 2013, проходившей с 17 по 18 апреля в столице Германии Берлине, в рамках шоу Energy Harvesting & Storage Europe был представлен целый ряд чрезвычайно интересных разработок в области Еnergy harvesting.
Самый простой для преобразования в электричество вид внешних воздействий — это механические колебания и вибрации. Чаще всего для конвертации таких колебаний в электроэнергию применяются пьезоэлектрические материалы. Такие материалы используются, в частности, в называемых микроэлектромеханических системах (MЭМС или MEMS), представляющих собой гибридные устройства на кремниевой подложке, в которых объединены микромеханические и микроэлектронные компоненты. МЭМС-чипы легко распаиваются на печатной плате и без проблем интегрируются в любую электронную схему.