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

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

Обзор

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

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

История
Язык программирования 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, модули, |
| |проверка типов во время компиляции, |
| |сборка мусора |
Эти особенности и указанные влияния общие для многих языков программирования.

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

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

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

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

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

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

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

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

Переведено на Нотабеноиде
http://notabenoid.org/book/2198/7354

Переводчики: rapidfx, wuffur, j1m

Настройки

Готово:

100.00% КП = 1.2