Inferno Programmer's Guide / Руководство программиста по ОС Inferno: Chapter 1 - Introduction

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Глава 1. ВВЕДЕНИЕ

Обзор

rapidfx 14.04.09 в 16:31

0

Эта глава выносит на рассмотрение язык программирования Limbo. Особенно то, как он взаимодействует с операционной системой Inferno.

rapidfx 14.04.09 в 16:33

0

Эта глава охватывает:
- Историю
- Цели
- Характерные черты
- Модель программирования

rapidfx 14.04.09 в 16:35

0

История
Язык программирования Limbo был разработан в тесной связи с операционной системой Inferno, участниками Компьютерного Научного Исследовательского Центра (CSRC) при Bell Laboratories, разработчиками и исследователями компании Lucent Technologies. Также CSRC несет ответственность за разработку операционной системы UNIX, языков программирования C и C++, и за многие инновации в области компьютерной науки.
Язык Limbo развивался год за годом опираясь на исследования, строясь на концептах из более ранних языков с намерением предоставить полный, ясный, безопасный и переносимый язык программирования для ОС Inferno.
Многие языки оказали влияние на дизайн и реализацию Limbo.
Таблица 1-1 перечисляет наиболее заметные из влияний.
[таблица 1-1]
|c |Синтаксис, структура,управляющие структуры|
|Pascal |Объявления |
|Alef |Каналы и Абстрактные типы данных (ADTs) |
|Newsqueak|Процессы |
|CSP |Процессы, Взаимодействие |
|ML |Abstract Data Types, модули, |
| |проверка типов во время компиляции, |
| |сборка мусора |
Эти особенности и указанные влияния общие для многих языков программирования.

rapidfx 14.04.09 в 16:51

0

Цели
Limbo разработан для построения сетевых приложений для ОС Inferno. С той поры Limbo проектируется для получения максимального выигрыша от уникальных особенностей Inferno, разрабатываемые цели, или принципы Limbo по сути такие же как и у Inferno:
- Переносимость; независимая от архитектуры ОС Inferno задумывалась для запуска на шароком спектре аппаратных платформ, как поверх установленной операционной системы, так и самостоятельно, так чтобы приложения могло запускаться на всех платформах. Это значит, что тот же самый код, без изменений работает и функционирует одинаково на всех платформах.
- Компактный, нетребовательный (?). Исполняемый код компактен и это является жизненно важным особенно для устройств с ограниченным размером памяти и ресурсами.
- Разработан специально для сети. Язык способствует построению приложений которые эффективно функционируют в сетевой среде - любой сети.
- Завершенный. Любая задача разрешима средствами Limbo. Он гибкий и мощный для обслуживания сложных приложений.

rapidfx 14.04.09 в 17:10

0

Цели
Limbo предназначен для создания приложений для сетевой операционной системы Inferno. В связи с тем, что Limbo спроектирован так, чтобы использовать приемущества Inferno, цели его создания были теми же, что и цели самой Inferno:
- Легко портируемая, независимая от аппартаной платформы ОС Inferno предназначена для работы на широком спектре платформ, как в родном, так и в гостевом режиме, так что ее приложения так же должны работать на тех же платформах. Это значит, что один и тот же код должен функционировать одинаково на всех этих платформах и не требовать модификаии.
- Компактность и низкий оверхед. Исполняемый код длжен быть компактным и эффективным чтобы исполняться на практически любом устройстве, в особенности в условиях ограниченного объема памяти и ресурсов.
- Сетецентричность. Язык должен способствовать созданию приложений, которые эффективно взаимодействуют посредством сети. Любой сети.
- Законченность. Любая задача программирования должна быть решаемой с использованием Limbo, гибкого, но достаточно мощного для создания комплексных приложений.

j1m 14.04.09 в 17:20

0

Характерные черты
У Limbo есть много особенностей, которые работают с тесной связи с Inferno для которой он и разработан с целью дополнить ее цели:
- Знакомый, легкий для обучения
- Переносимый
- Компактный
- Безопасный
- Интерпретируемый
- Встроенная поддержка сети
- Встроенная многопоочность и меж-процессная коммуникация
- Распределенный

rapidfx 14.04.09 в 17:25

0

- Знакомый, легкий для обучения
Limbo, хотя и совершенно новый язык, имеет схожий с Си синтаксис и объявления как в Паскале. Это помогает относительной легкости изучения языка Limbo. Любой, кто знаком с Си, Паскалем или схожим структурным языком, не будет испытывать больших трудностей изучая синтаксис и основные структуры языка Limbo. Limbo также включает характеристики, которые можно найти в таких популярных языках как C++, Java, Smalltalk и Lisp.
Limbo поддерживает стандартные типы данных, типичные для Си и Паскаля, также как и несколько высокоуровневых типов, таких как списки, кортежи, строки, динамические массивы и некоторые абстрактные типы данных.

wuffur 15.04.09 в 07:19

0

- Переносимый
Limbo скомпилирован как аппаратно независимый бинарный образ для выполнения на виртуальной машине Inferno’s Dis Virtual Machine. Один и тот же двоичный файл может быть выполнен на любой платформе, на которой работает Inferno и Dis VM.
Интерфейс пользователя у Limbo, который называется Inferno Reference API, предоставляет набор стандартный системных вызовов, который полностью абстрагируется от конкретной архитектуры на уровне прикладного программирования.
Нет никаких специфичных для конкретной архитектуры реализаций языка Limbo. Например, Limbo явно определяет размер примитивных типов данных для всех платформ.
Есть для Inferno встроенный протокол сообщений, Styx, который изолирует программиста прикладных программ от физической реализации сети, как виртуальная машина делает это для аппаратной архитектуры.

- Компактный
Полезные приложения на Limbo могут легко работать даже при минимально доступном объеме памяти. Через использование динамических модулей приложения могут выборочно загружать и выгружать порции приложения в зависимости от среды и доступных к использованию ресурсов.

- Безопасный
Limbo полностью проверяет типы данных во время компиляции и запуска. Например, использование указателей гораздо больше ограничено, чем в Си, а согласованность типов динамически подгружаемого модуля проверяет, когда он загружен.
Эти специальный особенности по безапасности доступно для Limbo программ и могут безопасно запускаться на машине с защищенным режимом работы памяти.
В добавок ко всему, все данные и программные объекты в Limbo управляются сборщиком мусора, который встроен внутрь системы поддержки исполнения программ языка Limbo. Виртуальная машина полностью управляет временем жизни выделенных ресурсов с помощью связанных окон, сетевых соединений, и файловых дескрипторов, что обрабатывается сборщиком мусора.Например, если приложение делает графическое окно, память выделяется для этого окна и освобождает как только на нее больше никто не ссылается.
Inferno Reference API предоставляет утилиты ,демоны и набор модулей из библиотек безопасности. Алгоритмы и протоколы доступные в приложении на Limbo предоставляет высокий уровень безопасности, и могут легко быть доступны из других программ, работать по сети, и легко изменяться и заменяться, соответсвуя требованиям.

- Интерпретируемый
Limbo язык интерпретатор, как Java. Компилятор Limbo генерирует машинно независимый бинарный образ, который выполняется на виртуальной машине Inferno.
Приложения на Limbo могут интерпретироваться во время исполнения на виртуальной машине, или они могут компилироваться с помощью JIT-компилятора (производит оптимизацию байт-кода программы во время выполнения) в родной для данной машины код. С тех пор как проявились различный преимущества и недостатки для каждого метода программист может выбрать, какой метод используется.
В Limbo нет компоновщика. Совместимость типов проверяется во время компиляции. Исполняемый код динамически подгружается и компонуется во время исполнения.

- Встроенная поддержка сети
Встроенный в Inferno протокол взаимодейтсвия Styx, изолирует прикладного программиста от физической реализации сети.Это означает, что программы на Limbo не содержат специфичный для конкретной реализации сети код.Программист приложений на Limbo использует набор функций для доступа к файлу в независимости от того, где находится файл, локально ли или доступ к нему происходит через сеть. Поддержка для существующих, только появляющихся или будущих сетевых протоколов может быть добавлена в ОС Inferno и нет необходимости переписывать или перекомпилировать приложения на Limbo.

- Встроенные многопоточность и межпоточное взаимодействие.
Поддержка многозадачности и многопоточности встроена в язык Limbo. Программа может породить новый независимо спланированный поток вывода через любую функцию. Этот новый потом может контролировать доступ с родительского потока, такого как пространство имен файла, открытых дескрипторов файлов, и текущей рабочей директории.
Межпотоковое взаимодействие также встроено в язык. Limbo использует интерфейс передачи сообщений, который называется каналы (channel), для координации сообщения между потоками. Используя тип данных канал, потоки могут отправлять и принимать типизированные данные. Канал передает типизированные данные машиннонезависимым способом, поэтому сложные структуры данных(такие как сами каналы) могут пройти между задачами Limbo и быть присоединенными к файлам в пространстве имен для сообщения между машинами на уровне языка. Каналы предоставляют эффективный механизм для создания контроля согласованности действия программы для синхронизации процессов. Канал может быть использован для обмена данными для сигналов, чтобы контролировать выполнение определенных задач. Встраивая каналы в язык и его виртуальную машины, Inferno поощряет стиль взаимодействия который легок и прост в использовании.

- Распределенный
Через широкое использование модулей и приспособлений для взаимодействия системы поддержки исполнения программ, приложения на Limbo могут быть динамически распределены между клиентом(-ами) и сервером(-ами).

wuffur 15.04.09 в 14:44

0

- Встроенная поддержка сети
Встроенный в Inferno протокол взаимодейтсвия Styx, изолирует прикладного программиста от физической реализации сети.Это означает, что программы на Limbo не содержат специфичный для конкретной реализации сети код.Программист приложений на Liimbo использует набор функций для доступа к файлу в независимости от того, где находится файл, локально ли или доступ к нему происходит через сеть. Поддержка для существующих, только появляющихся или будущих сетевых протоколов может быть добавлена в ОС Inferno и нет необходимости переписывать или перекомпилировать приложения на Limbo.

- Встроенные многопоточность и межпоточное взаимодействие.
Поддержка многозадачности и многопоточности встроена в язык Limbo. Программа может породить новый независимо спланированный поток вывода через любую функцию. Этот новый потом может контролировать доступ с родительского потока, такого как пространство имен файла, открытых дескрипторов файлов, и текущей рабочей директории.
Межпотоковое взаимодействие также встроено в язык. Limbo использует интерфейс передачи сообщений, который называется каналы (channel), для координации сообщения между потоками. Используя тип данных канал, потоки могут отправлять и принимать типизированные данные. Канал передает типизированные данные машиннонезависимым способом, поэтому сложные структуры данных(такие как сами каналы) могут пройти между задачами Limbo и быть присоединенными к файлам в пространстве имен для сообщения между машинами на уровне языка. Каналы предоставляют эффективный механизм для создания контроля согласованности действия программы для синхронизации процессов. Канал может быть использован для обмена данными для сигналов, чтобы контролировать выполнение определенных задач. Встраивая каналы в язык и его виртуальную машины, Inferno поощряет стиль взаимодействия который легок и прост в использовании.

- Распределенный
Через широкое использование модулей и приспособлений для взаимодействия системы поддержки исполнения программ, приложения на Limbo могут быть динамически распределены между клиентом(-ами) и сервером(-ами).

wuffur 15.04.09 в 14:47

0
+2

Программная модель
Модули Limbo самодостаточные единицы с хорошо определенным интерфейсом содержащим функции и структуры данныхопределяемые модулем для доступности из другого модуля. Благодаря гибкости модульной структуры размер типичных модулей приложений Limbo мал, и они отлично адаптируемы.
Модульное программирование
Модуль Limbo:
- имеет хорошо определенный интерфейс который предоставляет доступ к модулю
- имеет типа определенный через этот интерфейс
- отделяет интерфейс от реализации
- логически группирует функции и данные
Типичное приложение Limbo является набором взаимодействующих модулей содержащих данные и функции. Inferno Reference API это набор Limbo модулей который иллюстрирует хороший стиль программирования в Limbo. Inferno API играет важную роль в программировании для Limbo, поскольку предоставляет доступ к возможностям операционной системы.
Модули Limbo включают некоторые характеристики и особенности классов объектно-ориентированных языков програмирования таких как C++ и Java. В них есть похожие достоинтва - разделяемые динамические библиотеки. И еще, оба они несомненно различаются от библиотек до классов.
В отличии от библиотек, каждая Limbo-программа является модулем и динамически взаимодействуетс другими зависимыми и независимыми модулями. В отличии от классов, Limbo-модули не имеют подклассов, наследования или полиморфизма.

rapidfx 14.04.09 в 17:27

0

Разделяемые, Динамические Модули
В Inferno Reference API есть набор модулей и приведен пример совместно используемых динамических модулей на Limbo. Добавочные модули для специфических приложений или для обычного программирования, если они нужны, могут быть легко созданы и распределены.
На Limbo модули могут загружаться вызывающей программой во время исполнения, а не во время компиляции. Они не часть скомпилированного выполняемого файла, а являются отдельными объектами. Преимущество в том, что модули могут быть вызваны и использованы неограниченным числом программ (другими модулями) без дублирования кода модуля ( каждый загруженный модуль содержит свой сегмент данных). Модули также могут быть улучшены без перекомпилированния вызывающих их приложений.
Модули не нужно оставлять на одной машине с вызывающей их программой. Программа может загрузить модули для каждой машины через сеть. Это неотъемлемое свойство пространства имен Inferno, и, поэтому не нужно дополнительного специфичного для данной архитектуры программирования когда модули созданы, загружены или используются.

wuffur 15.04.09 в 15:52

0
Минутку...