Информационные технологии
Операционные системы
Информационные технологии
Информационные технологии представляют собой широкий класс дисциплин и сфер деятельности, которые относятся к технологиям создания, хранения, управления, ... читать далее »
Статьи по ИТ
28.06.2009 20:27

История. Информационные технологии.

<meta content="text/html; charset=utf-8" http-equiv="CONTENT-TYPE"></meta>
<title></title>
<meta content="OpenOffice.org 3.1  (Win32)" name="GENERATOR"></meta> <dl><dt><font size="3" face="Times New Roman" color="#000000">Язык Lisp был разработан в Стэнфорде     под руководством Дж. Маккарти в начале     60-х годов. По первоначальным замыслам     он должен был включать наряду со всеми     возможностями Фортрана средства работы     с матрицами, указателями и структурами     из указателей и т. п. Но для такого     проекта не хватило средств. Окончательно     сформированные принципы, положенные     в основу языка Lisp: использование единого     спискового представления для программ     и данных; применение выражений для     определения функций; скобочный синтаксис     языка. </font></dt></dl>
<p align="left"><font size="3" face="Times New Roman" color="#000000">Аббревиатура LISP расшифровывается как LIST PROCCESSOR или по-русски: обработчик списков. Lisp является языком низкого уровня, его можно рассматривать как ассемблер, ориентированный на работу со списковыми структурами. Поэтому на протяжении всего существования языка было много попыток его усовершенствования за счет введения дополнительных базисных примитивов и управляющих структур. Но все эти изменения, как правило, не становились самостоятельными языками. В новых своих редакциях Lisp быстро усваивал все ценные изобретения своих конкурентов.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Из-за своего экспериментального акцента на символьной обработке, Lisp был сначала очень неэффективным для цифровых вычислений, по крайней мере, по сравнению с Fortran. Lisp преодолел свою старую репутацию как безнадежно неэффективный, Lisp теперь использован во многих приложениях, где эффективность не является центральным действием. Например, Lisp стал языком выбора для оболочек операционной системы и для расширения языков, для редактирования систем и автоматизированного проектирования. Lisp, - второй старший язык в широко распространенном использовании сегодня (только Fortran более стар), который непрерывно приспосабливается, чтобы охватывать наиболее современные идеи о программировании. </font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">После создания в начале 70-х годов мощных Lisp-систем были попытки создания языков ИИ, отличных от Lispа, но на той же основе. Дальнейшее развитие языка идет, с одной стороны, по пути его Standartизации (Standart-Lisp, France-Lisp, Common Lisp), а с другой - в направлении создания концептуально новых языков для представления и манипулирования знаниями в Lisp среде. В настоящее время Lisp реализован на всех классах ЭВМ, начиная с ПЭВМ и кончая высоко производительными вычислительными системами.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>Особенности диалектов языка Lisp.</b></font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>МакLisp.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Кроме символьной обработки МакLisp широко использовался в традиционных числовых вычислениях, применяемых, например, в обработке речи и изображений. Кроме исследователей ИИ и разработчиков алгебраической системы Максима на МакLisp оказали влияние и работы групп в МИТ по робототехнике, обработке речи и изображений. Исходя из требований, предъявляемых этими областями, в МакLisp были включены новые математические типы данных, такие как матричная и битовая обработка, а также широкий набор арифметических функций и средств. Быть может, важнейшая из них - возможность вычислений с неограниченной точностью, основывающаяся на созданных Кнутом (1969) алгоритмах.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">МакLisp был также первой Lisp-системой для которой создан хороший транслятор. Транслятор генерирует машинную программу в форме списков. Машинный код в виде списка легко обрабатывать и результирующий код для числовых задач получался эффективнее, чем у лучших фортрановских трансляторов. </font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Однако большую часть своих свойств МакLisp приобрел под влиянием стоящих перед исследователями ИИ проблем и накопленного опыта. Так в язык попали макросы чтения и таблицы чтения, позволяющие легко изменять и расширять структуру языка. Таким же образом из требований к программам и окружению возникли управляющие структуры, механизмы обработки прерываний и ошибок, а также использование управляющих символов, создан и интегрирован в систему экранный редактор, появились управление и взаимодействие параллельных процессов.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Основное внимание разработчики МакLispа сосредоточили на эффективности. Этому служат указания, уточняющие способы обработки аргументов функций, а также экранирование от вмешательства программиста внутренних механизмов системы. За счет этих мер скорость работы МакLispа в 1.5-2.5 раза выше, чем InterLisp.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Всего в МакLispе используется около 400 функций. Самым большим недостатком системы является то, что ее никогда не документировали должным образом. Документация по этой системе разбросана по различным отчетам и руководствам. МакLisp был исследовательской системой и не предназначался для обучения и промышленного использования.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>муLisp.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Interпретатор МуLisp-85, разработанный для ПЭВМ серии IBM PC - удачный вариант реализации диалекта языка, включающий сравнительно ограниченный набор базовых функций (около 260) и оказавшийся вследствие этого более простым для изучения.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">По сравнению с Common Lispом диалект муLisp не имеет такого широкого спектра доступных типов данных. В нем обеспечивается работа только с двумя типами числовой информации: целыми числами с любым основанием и рациональными. В диалекте отсутствуют средства работы со структурами, массивами, потоками и другими типами данных, указанная реализация языка Lisp имеет одно существенное преимущество - возможность пополнения базового набора функций путем подключения подпрограмм, написанных на языке ассемблера, что позволило повысить гибкость использования интерпретатора и эффективность прикладного программного обеспечения, создаваемого на его основе. Возможность такого пополнения отсутствует в большинстве других Lisp-систем, являющихся в этом смысле замкнутыми программными продуктами.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Среди других, вероятно, менее существенных, особенностей системы можно указать на реализацию специального механизма, позволяющего не заботиться о присваивании начальных значений литеральным атомам, получающих изначальное значение, равное «печатному» имени самого атома. Еще одной особенностью диалекта является возможность использования новой синтаксической конструкции «встроенный COND», существенно сокращающей тексты описаний функций пользователя и применяемой при записи тел функций и лямбда-выражений.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Набор базовых функций муLisp-интерпретатора включает ряд функций, обеспечивающих доступ практически ко всем функциям ОС ЭВМ через соответствующие прерывания. Наконец, указанная Lisp-система обеспечивается библиотеками Lisp-функций, дополняющими базовый набор функциями, имеющимися в диалектах Common Lisp и InterLisp, что облегчает решение проблемы переносимости исходных текстов программных модулей, а также библиотеками, позволяющими выполнять манипулирование окнами на экране дисплея и обрабатывать управляющие воздействия через устройство типа «мышь». В комплект дополнительного программного обеспечения к интерпретатору входят интерактивный редактор текстов и простая обучающая система, написанные на диалекте языка муLisp.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>InterLisp.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">InterLisp появился в 1972 году из ББН-Lispа. К 1978 году, когда вышло описание InterLisp-а, язык и система уже достаточно стабилизировались. InterLisp уже не был языком в том же смысле, что и МакLisp или другие Lisp - системы или обычные традиционные системы программирования. Он представлял собой интегрированную среду программирования, в которую вошло множество различных вспомогательных средств. InterLisp стал классическим примером хорошо развитых программных средств и средств в системах разделения времени.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Этот диалект наряду с Common Lisp-ом один из наиболее распространенных, имеет достаточно развитый аппарат представления и манипулирования различными структурами данных, включая массивы. Среди общих особенностей данного варианта языка следует отметить использование для обозначения встроенных функций нетрадиционных имен, что порой затрудняет перенос готовых программных продуктов на другие диалекты и другие ЭВМ.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">В 1974 году Xerox начала разработку для InterLispа персональной Lisp-овской рабочей станции под названием Alto. В реализации Lispа для Alto впервые применили спроектированную специально для языка Lisp микропрограммируемую систему команд и мини-ЭВМ, способную с более высокой производительностью, чем универсальные ЭВМ, интерпретировать Lisp-овские программы. Из этой машины Alto впоследствии развились Lisp-машины серии 1100 фирмы Xerox.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">На основе версии InterLispа, работавшей в системе разделения времени, была создана совместимая снизу вверх версия Lispа InterLisp-де, используемая на Lisp-машинах серии 1100. В ее пользовательский интерфейс входили многооконное взаимодействие, графика с высокой разрешающей способностью, средства выбора из меню и мышь, а также ориентированный на использование экрана инспектор структур данных. Идея разделения экрана на многие независимые окна родилась в XLG. Алан Кэй уже в конце 60-х годов предложил такую идею подхода к компьютерам будущего и интерфейсу между человеком и машиной. Работа XLG привела к созданию в 70-х годах к разработке языка программирования <span lang="en-US">Smalltalk</span> и объектного программирования.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">При создании InterLispа работа велась весьма тщательно. Система хорошо документирована и более новые версии совместимы с более ранними. Так преимуществом системы стало непрерывно пополняющееся большое количество переносимого программного обеспечения. С другой стороны, ограничение системы старым, зафиксированным уже в конце 70-х годов диалектом сделало систему отчасти устаревшей и трудно расширяемой. В InterLispе среди прочего отсутствуют иерархические типы данных, объекты и замыкания. К тому же он базируется на динамическом связывании, тогда как новые версии Lispа - статические. Однако из InterLispа берет начало новая версия - Common Lisp (1986). Для программирования на более высоком уровне в InterLisp разработаны такие средства, в которых уже присутствовали объекты.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">InterLisp - столь замкнутая система, что доступна только ее оттранслированная версия в машинных кодах. В некоторых других системах, таких как, например ZetaLisp, поддерживается версия <span lang="en-US">Lisp-а</span> на исходном языке, которая доступна пользователю и может модифицироваться им. Развитие закрытых систем, похожих на InterLisp, связано с ресурсами, имеющимся у создавших их лабораторий.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">InterLisp использует свыше 500 функций и большое количество системных имен и флажков, с помощью которых можно настроить и подогнать систему. InterLisp реализован в системе разделения времени на многих больших ЭВМ. </font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">В InterLispе основное внимание было уделено удобству системы для пользователя. Главный принцип разработчиков этого диалекта: все, что может иметь место в системе, должно естественно выражаться в терминах ее входного языка. Поэтому в InterLisp программисту доступно все. Он может переопределять любые, в том числе и встроенные, функции; задавать и переопределять реакции на ошибки; работать непосредственно с уровня входного языка с внутренними структурами интерпретатора и т. д. При этом система поддерживает свою целостность и работоспособность.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>Франс Lisp.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">МакLisp стал основой для многих новых диалектов языка Lisp, первым из которых был Франс Lisp. Эта версия Lispа названа в честь известного венгерского композитора. Главным мотивом разработки Франс Lisp было желание получить современную Lisp-систему для новых машин VAX, чтобы на них можно было использовать систему Максима и другое Lispовское программное обеспечение. Франс Lisp в довольно большой степени напоминает МакLisp, на котором первоначально была реализована Максима. Однако в диалекте отсутствуют некоторые устаревшие особенности МакLispа и содержатся более новые системные идеи, заимствованные в то время в MIT Lisp-машин для ZetaLispа.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Новый диалект был реализован в университете в Беркли на ЭВМ VAX 780/11 на языке Си под управлением системы UNIX. Франс Lisp довольно широко используется как под управлением UNIX, так и под управлением VAX/VMS и в настоящее время является наиболее часто используемой версией Lispа для систем разделения времени. Кроме того, он широко используется и на 32-битовых микро-ЭВМ и рабочих станциях, работающих под управлением UNIX.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Благодаря своей хорошей переносимости Франс Lisp получил распространение во многих университетах и исследовательских учреждениях. Сопровождение системы также разошлось в различных исправлениях системных ошибок, реализациях наиболее эффективных алгоритмов, а также в расширениях языка.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>ZetaLisp Lisp-машин.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">ZetaLisp также опирается на МакLisp. Он создан в 70-е годы в MIT в рамках проекта Lisp-машины, финансированного оборонным агентством. С самого начала его целью было изготовление коммерческого продукта. В 1979 году в связи с проектом родились два предприятия изготавливающие Lisp-машины: Symbolic Inc. и Lisp Machine Inc. (LMI). После этого в 80-е годы работа по развитию Zeta Lispа продолжалась в них независимо друг от друга на коммерческой основе. В какой-то мере системы отличаются друг от друга, но в части Zeta Lispа машины почти совместимы.[2]</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Zeta Lisp содержит следующие развитые механизмы и черты:</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- широкий выбор типов данных;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- возможность объектно-ориентированного программирования в системе Flavor ;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- современные управляющие структуры, динамические механизмы передачи управления сопрограммы и процессы;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- гибкий механизм ключевых слов в лямбда-списке и многозначные функции;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- ввод и вывод, основывающийся на потоках;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- пространства имен;</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">- уже готовые функции, в том числе для сортировки, работы с линейными управлениями и матричные вычисления.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Выбор используемых в среде ZetaLispа инструментов и языков программирования зависит от поставщика, причем предлагаемый набор средств все время расширяется. Среди других языков предлагаются Фортран, Паскаль, Ада и Пролог. Для этих языков в среде ZetaLispа существуют особенно развитые программные окружения, и разработанные в них программы можно выполнять вместе с программами на Lispе.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Готовые инструменты и прикладные разработки в большом количестве имеются для работы с ЭС, с естественным языком и речью, с реляционными базами данных, машинной графики и машинного проектирования.</font></p>

<p align="center"><font size="3" face="Times New Roman" color="#000000"><b>Common Lisp.</b></font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Этот диалект отличается наиболее широким представлением различных структур данных и включает около 800 встроенных функций. В этом диалекте обеспечиваются средства обработки основных классов числовой информации: целых, вещественных и комплексных. Символьные данные (литеры, литеральные атомы, строки) в Common Lispе соответствуют основным возможностям других Lisp-систем. Дополнительно имеются средства обработки непечатных литер в символьных именах.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Одним из существенных преимуществ диалекта Common Lisp является наличие средств обработки массивов и структур, по своим возможностям не уступающих соответствующим средствам традиционных языков программирования (Фортран, Паскаль). Массивы в Common Lispе могут иметь любое неотрицательное число измерений и индексируются последовательностью целых чисел. Тип компонентов массива может быть произвольным. Выделяется подкласс векторов - одномерных массивов, среди которых отдельно рассматриваются строки и битовые массивы.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Структуры Common Lispа являются типом многокомпонентных записей, определяемых пользователем и имеющих именованные компоненты. Встроенное макроопределение DEFSTRUCT используется для определения структур новых типов. Для создания данных нового типа в виде структуры предусмотрены средства автоматической генерации набора функций, обеспечивающих средства манипулирования объектами этого класса.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Удобным средством контроля доступа к различным переменным и функциям Lisp-программ в Common-Lispе являются пакеты. Пакет - множество имен объектов, определенных и доступных в нем. Внутри пакета имена объектов подразделяются на внутренние и внешние. Первые предназначены для использования только внутри данного пакета, а вторые - для обеспечения связи с другими пакетами. Lisp-Interпретатор представляет широкий спектр средств манипулирования с пакетами. Как правило, Lisp-система имеет в своем составе четыре Standartных пакета: lisp (содержащий примитивы системы), user (умалчиваемый пакет прикладных программ и данных пользователя), keyword (содержащий ключевые слова всех встроенных функций и функций, определяемых пользователем), system (зарезервированный для системных целей).</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Значительной переработке и расширению в Common Lispе подверглись средства ввода-вывода и передачи информации. Для эффективной организации различных обменов с внешней средой введена концепция потоков, позволяющих осуществлять одно- и (или) двухстороннюю передачу информации. Для потоков предусмотрен набор базовых функций. В диалекте различают символьные и двоичные потоки. В первом случае передача осуществляется по байтам, а во втором - целыми числами. Кроме Standartных потоков пользователь имеет возможность создавать и использовать собственные потоки.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">В дополнение к указанным типам данных Common Lisp имеет ряд специфических классов объектов: хэш-таблицы, обеспечивающие эффективный способ доступа к данным по ключу; READ-таблицы, обеспечивающие управление обработкой информации поступающей из входного потока Lisp-системы, и некоторые другие. Такое множество имеющихся в диалекте различных типов данных, с одной стороны, развеивает существующее ошибочное представление о языке Lisp как о средстве обработки только символьной информации, а с другой - наличие мощных средств манипулирования типами данных существенно усложняет его.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Этот диалект оставлен открыт: принципиальным является то, что осталась возможность в будущем, когда подойдет время и будет достигнуто согласие, добавить новые средства и методы. Эта идея как раз соответствует духу Lispа.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Common Lisp не является готовой программной системой в том же смысле, что и InterLisp, поскольку вопросы среды в основном оставлены открытыми. В Standartе не определено, каким должен быть редактор или другие вспомогательные средства. Сказано лишь в самом общем виде, каким образом они вызываются. Для того чтобы обеспечить быстрое развитие, среда и инструментальные средства еще не затронуты Standartизацией, и поэтому есть возможность создавать различные среды для различных целей. Common Lisp не определяет также и интерфейс пользователя.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">В Common Lisp на современном этапе не включены даже средства объектного программирования, хотя и определены необходимые для этого базовые механизмы (замыкание и др.). Таким образом, объекты можно реализовать на Lispе. Но уже ведется работа по Standartизации средств и форм объектного программирования.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">В Common Lispе много внимания уделено практическим требованиям, и, вероятно, поэтому не все его черты эстетичны и чисты. Несомненно, что и другие Lisp-системы будут использоваться в дальнейшем, и их также необходимо развивать.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Common Lisp предназначен не только для работы со списками или для символьной обработки, он является универсальным языком программирования, включающим в себя особенно хорошие средства для численных вычислений, управления данными и связи. На Common Lispе можно с одинаковым успехом писать программы в традиционных операторном, процедурном, фразовом стиле, а также и в свойственных Lispу стилях. В языке содержатся предпосылки для использования различных способов и стилей программирования, таких как операторное, функциональное, макропрограммирование, программирование, управляемое данными, и продукционное программирование, а также средства, необходимые для логического и объектного программирования и реализации других средств более высокого уровня.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Можно смело сказать, что Common Lisp содержит почти все, что на сегодняшний день могут дать другие известные языки программирования, и, кроме того, он предусматривает средства для расширения языка.</font></p>

<p align="left"><font size="3" face="Times New Roman" color="#000000">Современные диалекты языка Lisp можно рассматривать как мощные Interактивные системы программирования. Это объясняется двумя причинами. Во-первых, сам язык Lisp претерпевает серьезные изменения - развиваются средства языка, предназначенные для обработки нетрадиционных для Lispа типов данных: массивов, векторов, матриц; появляются некоторые средства управления памятью (пакеты), отсутствующие в Lispе. Серьезные изменения претерпевают и управляющие структуры. Появились несвойственные природе языка Lisp функции, заимствованные из Фортрана, Алгола, Паскаля, Си: Do, Loop, Goto , Case и прочие, позволяющие пользователю, незнакомому с принципами функциональных языков, легко переходить на Lisp. Качество программ снижается, зато возрастает популярность языка. Во-вторых, если на первом этапе развития Lisp-системам была присуща небольшая скорость обработки данных и серьезные ограничения на емкость используемой оперативной памяти, то современные Lisp-системы уже могут соперничать по этим параметрам с такими языками, как Си, Паскаль и др. Использование Lisp-машин вообще практически снимает ограничения памяти и быстродействия.</font></p>

<a href=http://revolution.allbest.ru/programming/00036123_0.html>Источник</a>

© WIKI.RU, 2008–2017 г. Все права защищены.