| Limbo гэта мова праграмавання прыкладанняў для Inferno. Сінтаксічна падобны на C, яна мае некалькі асаблівасцяў, якія робяць гэта прасцей, бяспечней і яшчэ больш магутным і лепш падыходзіць для развіцця адначасова, размеркаваныя сістэмы. Кампілятар Limbo спараджае незалежныя ад архітэктуры аб'ектны код, які затым інтэрпрэтуецца Inferno віртуальнай машыны або складзеныя толькі да серады, каб павысіць прадукцыйнасць. Гэта гарантуе, што прыкладанні Limbo цалкам партатыўны на ўсіх платформах Inferno. Жыццё складаецца лягчэй праграміст з такімі функцыямі, як аўтаматычны збор смецця, кампіляцыю і выканання праверкі тыпу і простае стварэнне некалькіх працэсаў (патокаў) і сувязі паміж імі. Inferno таксама пастаўляецца з графічны адладчык, які дазваляе карыстальніку, каб увайсці ў праграму ў любым пункце і праглядаць цяперашні стан. Limbo прапануе пашыраныя магчымасці выдзялення з прымітыўных тыпаў дадзеных:
Наступныя праграмы ўзору ілюстрацыі простая праграма, якая бярэ лік параметраў каманднага радка і адлюстроўвае кожны з новай радкі з 1 секунда разрыву паміж імі. Другая праграма прыкладзе выкарыстоўваецца простая шматструменная падыход да ілюстрацыі асноўных выкарыстанне каналаў. (Нумары радкоў былі ўстаўлены для выгоды) Праграма 1
Лінія 1 вызначае імя модуля (праграмы) з лініямі 05/07 вызначэнні інтэрфейсу яна ўяўляе для знешняга свету. Ініцыялізацыі функцыі патрабуецца інтэрфейс для модуля для запуску з абалонкі Inferno як звычайную праграму. Гэтая функцыя вызначана, то ў радках 8-18. Лініі 2 і 4 ўключаюць файлы, якія вызначаюць інтэрфейсы для іншых модуляў, што патрабуе таймера. Лінія 3 камплекты модуль Sys ручкі сістэмы для глабальнай зменнай. У радку 10 загружае модуль Sys (які змяшчае сон і функцыі друку выкарыстоўваліся на лініях 14 і 15) і пачынае спасылку на яго ў глабальнай сістэме пераменнага Абалонкі Inferno праходзіць каманднага радка параметраў модуля праз спіс зменных ARGV радок у функцыі ініцыялізацыі, якая з'яўляецца часткай модуля інтэрфейсу. Радок 11 набораў N, каб колькасць элементаў у спісе, ARGV. Радок 13 паказвае сістэме п раз цыкл па лініі ад 14 да 16, які першым чакае ў працягу адной секунды (сістэмы-> сон функцыя прымае аргумент затрымкі ў мілісекундах), а затым друкаваць наступны параметр ў спісе. Праграма перабор ARGV спіс з дапамогай HD (кіраўнік) і TL (хвост) аператараў. Праграма 2
Першыя 10 радкоў выконваюць тую ж функцыю, што і ў першай праграме, вызначыць і загрузіць неабходныя модулі. Радок 11 вызначае канал, сінхранізацыі, які будзе выкарыстоўвацца для сувязі паміж рознымі плынямі (працэсамі), якія вызначаюць тып канала дадзеных, якія могуць быць перададзены яе, напрыклад, Чэн з Int можа быць выкарыстаны для перадачы лікаў. У радку 13 пачынаецца паток таймера з дапамогай каманды ікру. З гэтага пункту гледжання, функцыі ініцыялізацыі і функцыю таймера будуць праводзіцца адначасова ў розных плынях. Праграма ў цяперашні час уваходзіць у цыкл, гэтак жа, як і папярэднія праграмы. Аднак, замест выкарыстання сістэмы-> сон чакаць на працягу адной секунды, ён чакае значэнне, якое будзе адпраўлена па сінхранізацыі канала. Значэнні могуць быць аднесены да зменнай з дапамогай VariableName: = <сінхранізацыі;а як значэнне не выкарыстоўваецца, прызначэнне можа быць апушчаны. У таймер нітку, завесы заява першага паўзы ў працягу адной секунды (радок 24), а затым адпраўляе значэнне '1 'ўніз сінхранізацыі канала (радок 25). Калі паток выконваецца п раз пятлю, яна будзе выхаду. Пашыраны Каналы |
|