Реферат: Языки программирования, их классификация и развитие - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Языки программирования, их классификация и развитие

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 480 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

17 Реферат на тему : Языки программирования , их классификация и разви тие СОДЕРЖАНИЕ. 1.Введен ие 1.1. Интерпретаторы 1.2. Компиляторы 2. Классификация языков программирования 2.1. Машинно – ориентированные языки 2.1.1. Машинные языки 2.1.2. Языки символического кодирования 2.1.3. А втокоды 2.1.4. Макрос 2.2. Машинно – независимые языки 2.2.1. Машинно – независимые языки 2.2.2. Универсальные языки 2.2.3. Диалоговые языки 2.2.4. Непроцедурные языки 3. Развитие языков программировани я 3.1. Ассемблер 3.2. Лисп 3.4. Бейсик 3.5. Рефал 3.6. Пролог и Пролог ++ 3.7. Лекс 3.8. Си 3.8.1. Особенности языка Си 3.8.2. Недостатки языка Си 3.9. Си ++ 3.9.1. Замечание по проекту языка Си ++ 4. Заключение 5. Библиография 1. ВВЕДЕНИЕ Язык формиру ет наш способ мышления и определяет то, о чем мы можем мыслить. Б.Л Ворф Прогресс компьютерных технологий определил процесс появления новых разнообразных знаковых систем для записи алгоритмов – языков программирования . Смысл появления такого я зыка – ос нащенный набор вычислительных формул дополнитель ной информации , превращает данный набор в алгоритм. Язык программирован ия служит двум связанным между собой целя м : он дает программисту аппарат для задани я действий , которые должны быть выполнены , и формирует концепции , которыми пользуется программист , размышляя о том , что делать . Первой цели идеально отвечает язык , кото рый настолько "близок к машине ", что всеми основными машинными аспектами можно легко и просто оперировать достаточно очевидным для п р ограммиста образом . Второй ц ели идеально отвечает язык , который настолько "близок к решаемой задаче ", чтобы концепци и ее решения можно было выражать прямо и коротко. Связь между языком , на котором мы думаем /программируем , и задачами и решениями , которые мы можем представлять в своем воображении , очень близка . По этой причине ограничива ть свойства языка только целями исключения ошибок программиста в лучшем случае опасно . Как и в случае с естественными языка ми , есть огромная польза быть , по крайней мере , дву я зычным . Язык предоставл яет программисту набор концептуальных инструмент ов , если они не отвечают задаче , то их просто игнорируют . Например , серьезные ограни чения концепции указателя заставляют программист а применять вектора и целую арифметику , чт обы реализ о вать структуры , указатели и т.п . Хорошее проектирование и отсутстви е ошибок не может гарантироваться чисто з а счет языковых средств. Может показаться удивительным , но конкрет ный компьютер способен работать с программами , написанными на его родном машинном языке . Существует почти столько же раз ных машинных языков , сколько и компьютеров , но все они суть разновидности одной ид ей простые операции производятся со скоростью молнии на двоичных числах . Персональные компьютеры IBM используют машинный язык м икропроц ессоров семейства 8086, т.к . их аппарат ная часть основывается именно на данных м икропроцессорах . Можно писать программы непосредственно на машинном языке , хотя это и сложно . На заре компьютеризации (в начале 1950-х г.г .), машинный язык был единственным язы ком , большего человек к тому времени не при думал . Для спасения программистов от сурового машинного языка программирования , были созда ны языки высокого уровня (т.е . немашинные языки ), которые стали своеобразным связующим мостом между человеком и машинным яз ыком компьютера . Языки высокого уровня работают через тра нсляционные программы , которые вводят "исходный код " (гибрид английских слов и математически х выражений , который считывает машина ), и в конечном итоге заставляет компьютер выполнят ь соответствующие к оманды , которые д аются на машинном языке . Существует два ос новных вида трансляторов : интерпретаторы , которые сканируют и проверяют исходный код в один шаг , и компиляторы , которые сканируют исходный код для производства текста про граммы на машинном языке , к оторая затем выполняется отдельно . 1.1. Ин терпретаторы Одно , часто упоминаемое преимущество инте рпретаторной реализации состоит в том , что она допускает "непосредственный режим ". Непосред ственный режим позволяет вам задавать компьют еру задачу вроде PRIN T 3.14159*3/2.1 и возвращает ва м ответ , как только вы нажмете клавишу ENTER (это позволяет использовать компьютер стоимос тью 3000 долларов в качестве калькулятора стоимо стью 10 долларов ). Кроме того , интерпретаторы име ют специальные атрибуты , которые упро щ ают отладку . Можно , например , прервать обработку интерпретаторной программы , отобразить содержимое определенных переменных , бегло просмот реть программу , а затем продолжить исполнение . Больше всего программистам нравится в интерпретаторах возможность получ ения быст рого ответа . Здесь нет необходимости в ком пилировании , так как интерпретатор всегда гот ов для вмешательства в вашу программу . Вве дите RUN и результат вашего самого последнего изменения оказывается на экране . Однако интерпретаторные языки имеют не достатки . Необходимо , например , иметь копию интерпретатора в памяти все время , тогда как многие возможности интерпретатора , а следовательно и его возможности могут не быть необходимыми для исполнения конкретной п рограммы . Слабо различимым недостатком инте рпре таторов является то , что они имеют тенденц ию отбивать охоту к хорошему стилю програ ммирования . Поскольку комментарии и другие фо рмализуемые детали занимают значительное место программной памяти , люди стремятся ими не пользоваться . Дьявол менее яростен, чем программист , работающий на интерпретаторном Бей сике , пытающийся получить программу в 120К в памяти емкостью 60К . но хуже всего то , что интерпретаторы тихоходны . Ими затрачивае тся слишком много времени на разгадывание того , что делать , вместо того что б ы заниматься действительно делом . При исполнении программных операторов , ин терпретатор должен сначала сканировать каждый оператор с целью прочтения его содержимого (что этот человек просит меня сделать ?), а затем выполнить запрошенную операцию . Оп ераторы в циклах сканируются излишне мн ого . Рассмотрим программу : на интерпретаторном Бэйсике 10 FOR N=1 TO 1000 20 PRINT N,SQR(N) 30 NEXT N при первом переходе по этой прогр амме Бейсик-Интерпретатор должен разгадать что означает строка 20: 1.преобразовать числ овую переменную N в строку 2.послать строку на экран 3.переместить в следующую зону печати 4.вычислить квадратный корень из N 5.преобразовать результат в строку 6.послать строку на экран При втором проходе цикла все это разгадывание повторяется снова, так как абсолютно забыты все результаты изучения этой строки какую-то миллисекунду тому назад . И так во всех следующих 998 проходах . Соверше нно очевидно , что если вам удалось каким-т о образом отделить фазу сканирования /понимани я от фазы исполнения вы име л и бы более быструю программу . И это как раз то , для чего существуют компиляторы . 1.2. Компиляторы Компиля тор-это транслятор текста на машинный язык , который считывает исходный текст . Он оценив ает его в соответствии с синтаксической к онструкцией языка и переводит на машинн ый язык . Другими словами , компилятор не ис полняет программы , он их строит . Интерпретатор ы невозможно отделить от программ , которые ими прогоняются , компиляторы делают свое де ло и уходят со сцены . При работе с компилирующим языком , таким как Турб о-Бейсик , вы придете к необходимости мыслить о ваших программах в признаках двух гл авных фаз их жизни : периода компилирования и периода прогона . Большинство программ буд ут прогоняться в четыре - десять раз быстр ее их интерпретаторных эквивалентов. Е сли вы поработаете над улучшением , то смож ете достичь 100-кратного повышения быстродействия . Оборотная сторона монеты состоит в том , что программы , расходующие большую часть вр емени на возню с файлами на дисках ил и ожидание ввода , не смогут продемонстрир о вать какое-то впечатляющее увеличени е скорости . 2. КЛАС СИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ 2.1. Машинно – ориентированные языки Машинно – ориентированные языки – это языки , наборы опер аторов и изобразительные средства которых сущ ественно зависят от особ енностей ЭВМ ( внутреннего языка , структуры памяти и т.д .). Машинно – ориентированные языки позволяют исполь зовать все возможности и особенности Машинно – зависимых языков : - высокое качество создаваемых программ (компактность и скорост ь выполнения ); - во зможност ь использования конкретных аппаратных ресурсов ; - предсказуемость объектного кода и заказов памяти ; - для составлени я эффективных программ необходимо знать систе му команд и особенности функционирования данн ой ЭВМ ; - трудоемкость п роцесса составл ения программ ( особенно на машинных языках и ЯСК ), плохо защищенного от появления ошибок ; - низкая скорость программирования ; - невозможность непосредственного использования программ , составленны х на этих языках , на ЭВМ других типов. Ма шинно-ориентирова нные языки по степени ав томатического программирования подразделяются на классы. 2.1.1. Машинный язык Как я уже упоминал , в в ведении , отдельный компьютер имеет свой опред еленный Машинный язык (далее МЯ ), ему предписывают выполнение указываемых операций над определяемыми ими операндам и , поэтому МЯ является командным . Однако , некоторые семейства ЭВМ (например , ЕС ЭВМ , IBM /370/ и др .) имеют единый МЯ для ЭВМ разной мощности . В команде любого из них сообщается информация о местонахождении о перандов и типе выполняемой операции. В новых моднлях ЭВМ намечается тенденция к повышению внутренних языков машинно – апп аратным путем реализовывать более сложные ком анды , приближающиеся по своим функциональным действиям к операторам алгоритмических языков программирован ия. 2.1.2. Языки Си мволического Кодирования Продолжим рассказ о командных языках , Языки Символического Кодирования (далее ЯСК ), так же , как и МЯ , являются командными . Однако коды операций и адреса в маши нных командах , представляющие собой последователь н ость двоичных (во внутреннем коде ) ил и восьмеричных (часто используемых при написа нии программ ) цифр , в ЯСК заменены на символы (идентификат оры ), форма написания которых помогает програм мисту легче запоминать смысловое содержание о перации . Это обеспечивае т существенное ум еньшение числа ошибок при составлении програм м. Использование симво лических адресов – первый шаг к созданию ЯСК . Команды ЭВМ вместо истинных (физических ) адресов содержат символические адреса . По результатам составл енной программы определя ется требуемое ко личество ячеек для хранения исходных промежут очных и результирующих значений . Назначение а дресов , выполняемое отдельно от составления п рограммы в символических адресах , может прово диться менее квалифицированным программистом или специальн о й программой , что в значительной степени облегчает труд программис та. 2.1.3. Автокоды Есть также языки , включающие в себя все возможности ЯСК , посредством расширенного введения макрокоманд - они называются Авто коды . В различных про граммах встречаются не которые достаточно часто использующиеся командные последовательности , которые соответствуют определенным процедурам преобразования информации . Эффективная реализация таких процедур обеспечивается оформлением их в виде специальных макрокоманд и включение м последних в язык программирования , доступный программисту . Макрокоманды переводятся в машинные команды двумя путями – расстановкой и генерированием . В постаново чной системе содержатся «остовы» - серии коман д , реализующих требуемую функцию , обозначенную м акрокомандой . Макрокоманды обеспечивают пе редачу фактических параметров , которые в проц ессе трансляции вставляются в «остов» програм мы , превращая её в реальную машинную прогр амму. В системе с генерацией имеются специа льные программы , анализирующие макроком анду , которые определяют , какую функцию необходимо выполнить и формируют необходимую последовател ьность команд , реализующих данную функцию . Обе указанных системы используют транслят оры с ЯСК и н абор макрокоманд , которые также являются опер аторами автокода. Развитые автокоды получили название Ассемблер ы . Сервисные программы и пр ., как правило , составлены на языках типа Ассемблер . Более полная информация об языке Ассемблер а см . ниже. 2.1.4. Макрос Язык , являющийся средством для замены последовательности с имволов описывающих выпо лнение требуемых действий ЭВМ на более сж атую форму - называется Макрос (средство замены ). В о сновном , Макрос предн азначен для того , чтобы сократить запись исходной программы . Компонент программного обеспе чения , обеспечивающий функ ционирование макрос ов , называется макропроцессором . На макропроцессор поступает макрооп ределяющий и исходный текст . Реакция макропро цессора на вызов-выдача выходного текста . Макрос одинаково может работать , как с программами , так и с данными. 2.2. Машинн о – независимые языки Машинно – независимые языки – это средство описания алгоритмов решения зада ч и информации , подлежащей обработке . Они удобны в использовании для широкого круга пользователей и не требуют от них знан ия особенностей организации функцио нирования ЭВМ и ВС . Подобные языки получили название высокоуровневых язык ов программирования . Программы , составляемые на таких языках , представляют собой последовательн ости операторов , структурированные согласно прави лам рассматривания языка (задачи , сегме нты , блоки и т.д .). Операторы языка описывают действия , которые должна выполнять система после трансляции программы на МЯ . Т.о ., командные последовательности (процедуры , подпрограммы ), часто используемые в машинных программах , представлены в высокоуровнев ых языках отдельными операторами . Программист п олучил возможность не расписывать в деталях вычислительный процесс на уровне машинных команд , а сосредоточиться на основных особе нностях алгоритма. 2.2.1. Про блемно – ориентированные языки С расширением обл астей применения вычислительной техники возникла необходимость формализовать представле ние постановки и решение новых классов за дач . Необходимо было создать такие языки п рограммирования , которые , используя в данной о бласти обозначения и терминологию , позв о лили бы описывать требуемые алгоритмы решения для поставленных задач , ими стали проблемно – ориентированные языки . Эти языки , языки ориент ированные на решение определенных проблем , до лжны обеспечить программиста средствами , позволяю щими коротко и четко фор мулировать за дачу и получать результаты в требуемой фо рме. Проблемных языко в очень много , например : Фортран , Алгол – языки , созданные для решения математических задач ; Simula , Слэн г - для моделирования ; Лисп , Снобол – для работы со списочными структурами. Об эт их языках я расскажу дальше. 2.2.2. Универсальн ые языки Универс альные языки были созданы дл я широкого круга задач : коммерческих , научных , моделирования и т.д . Первый универсальный язык был разработан фирмой IBM , ставший в последовательности языков Пл /1 . Второй по мощности универсальны й язык называется Алгол -68 . Он позволяет работать с сим волами , разрядами , числами с фиксированной и плавающей запятой . Пл /1 имеет развитую систему операторов для управления форматами , для работы с полями переменной длин ы , с данными орг анизованными в сложные структуры , и для эф фективного использования каналов связи . Язык учитывает включенные во многие машины возможн ости прерывания и имеет соответствующие опера торы . Предусмотрена возможность параллельного вып олнение участ к ов программ. Программы в Пл /1 ко мпилируются с помощью автоматических процедур . Язык использует многие свойства Фортрана , Алгола , Кобола . О днако он допускает не только динамическое , но и управляемое и статистическое распреде ления памяти. 2.2.3. Диа логовые языки Появление новых технических возможностей поставило задачу перед системными программистами – создать программные средства , обеспечиваю щие оперативное взаимодействие человека с ЭВМ их назвали диалоговыми язы ками . Эти работы велись в двух направлениях . Создавались специальные управляющие языки для обеспечения оперативного воздействия на прохождение задач , которые составлялись на любых раннее неразработанных (не диалоговых ) языках . Разрабатывались также языки , которые кроме целей управления обеспечивал и бы описание алгоритмов решения задач. Необходимость обеспечения оперативного взаим одействия с пользователем потребовала сохранения в памяти ЭВМ копии исходной программы даже после получения объектной программы в машинных кодах . При внесении изменений в пр ограмму с использованием диалогового языка система программирования с помощью специальных таблиц устанавливает взаимосвязь с труктур исходной и объектной программ . Это позволяет осуществить требуемые редакционные и зменения в объектной программе. Одним из п римеров диалоговых я зыков является Бэйсик . Бэйсик использует обозначения подобные обычным математическим выражениям . Многие оп ераторы являются упрощенными вариантами оператор ов языка Фортран . Поэтому этот язык позволяет решать достаточно широкий круг зада ч. 2.2.4. Непроцедурные языки Непроце дурные языки составляют группу языков , описывающих организацию данных , обрабат ываемых по фиксированным алгоритмам (табличные языки и генераторы отчетов ), и языков св язи с операционными системами. Позволяя четко описыв ать как задачу , так и необходимые для её решения действия , табл ицы решений дают возможность в наглядной форме определить , какие условия должны быть выполнены прежде чем переходить к какому-ли бо действию . Одна таблица решений , описывающая некоторую ситуаци ю , содержит все возможные блок-схемы реализаций алгоритмов реше ния. Табличные методы легко осваиваются специа листами любых профессий. Программы , составленные на табличном язык е , удобно описывают сложные ситуации , возникаю щие при системном анализе. 3. РАЗВ ИТИЕ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ 3.1 Ассемблер Язык Ассемблер а – это символическое представление машинного языка . Он облегчает процесс программирования по сравнению с программированием в машинных кодах. Программисту не обязательно употреблять н астоящие адрес а ячеек памяти с размещ енными в них данными , участвующими в опера ции , и вычисляемые результаты , а также адр еса тех команд , к которым программа не обращается. Некоторые задачи , например , обмен с нестандартными устройствами обработки данных сложных структур нево зможно решить с помощью языков программирован ия высокого уровня . Это под силу ассемблер у. В принципе , язык Ассемблер является машинным языком . И программист реализующий какую-либо задачу на языках выс окого уровня , с помощью Ас семблер а может определить осмыслено ли решение данной задачи , с точки зрения использования ЭВМ. Умея разобраться в распечатке языка а ссемблера , дает возможность облегчить поиск о шибок в программах , т.к . некоторые языки яв ляются компиляторами (см . п . 1.2.). 3.2. Лисп Один из сам ых старых языков программирования Фортран был создан в 50-х гг . нашего века . Фортран и подобн ые ему языки программирования (Алгол , ПЛ /1) предназначали сь для решения вычислительных задач , возникаю щих в математике , физике , инженерных расчетах , экономике и т. п . Эти языки в о сновном работают с числами. Второй старейший язык программирования Лисп ( L ist I nformation S ymbol P rocessing ), Дж . Маккарти в 1962 г . скорее для работы со строками символов , нежели для работы с числами . Это особое предназначен ие Лисп а отк рыл о для программистов новую область деятельности , известную ныне , как «искусственный интеллект» . В настоящее время Лисп успешно применяется в экспертных системах , системах аналитических вычислений и т.п. Обширность области возможных приложений Лисп а вызвала появление множества различных диалектов Лисп а . Это легко объяснимо : применение Лисп а для понимания естественного языка требует определенного набора базисных функций , отличных , например , от используемого в задачах медицинской диагностики. Существование множ ества различных диа лектов Лисп а привело к созданию в начале 80-х гг . Common LISP Комитета , кот орый должен был выбрать наиболее подходящий диалект Лисп а и предложить его в качестве осн овного . Этот диалект , выбранный Комитетом в 1985г ., получил название Comm on LISP . В дальнейшем он был прин ят в университетах США , а также многими разработчиками систем искусственного интеллекта , в качестве основного диалекта языка Лисп . Язык программирования Лисп существенно отличается от др угих языков программирования , таких, как Паскаль , Си и т.п . Работа с символами и работа с числами как с основными элементами требует разных способов мышления. Первоначально Лисп был задуман как теоретическое сре дство для рекурсивных построений , а сегодня он превратился в мощное средство , обе спечивающее программиста разнообразной подде ржкой , позволяющей ему быстро строить прототи пы весьма и весьма серьезных систем. Профессор Массачусетского технологического и нститута Дж . Самман заметил , что математическа я ясность и предельная четкость Лисп а – это еще не все . Главное – Лисп позволяет сформулироват ь и запомнить «идиомы» , столь характерные для проектов по искусственному интеллекту. 3.3. Фо ртран Одним из первых и наиболее удачных компиляторов стал язык Фортран , разработанный фирмой IBM . Професс ор Дж . Букс и группа американских специалистов в области программирования в 1954 г оду опубликовало первое сообщение о языке . Дословно , название языка FOR mulae TRA N slation – преобразование формул . Среди причин долголетия Фортрана (а он один из самых распрос траненных языков в ми ре ), можно отметить простую структуру , как самого Фортрана , так и предназначенных для него трансляторов . Программа на Фортране за писывается в последовательности предложений или операторов (описание некоего преобразования информации ), и оформляется по определ енным стандартам . Эти стандарты накладывают о граничения , в частности , на форму записи и расположения частей оператора в строке б ланка для записи операторов . Программа , записа нная на Фортране , представляет собой один или несколько с е гментов (подпрограмм ) из операторов . Сегмент , управляющий работой всей программы в целом , называется основной программой. Фортра н был задуман для использов ания в сфере научных и инженерно-технических вычислений . Однако на этом языке легко описываются задач и с разветвленной лог икой (моделирование производственных процессов , ре шение игровых ситуаций и т.д .), некоторые эк ономические задачи и особенно задачи редактир ования (составление таблиц , сводок , ведомостей и т.д .). Модифик ация языка Фортран , появившиеся в 1958 году , получила название Фортран II и содержал а понятие подпрограммы и общих переменных для обеспечения связи между сегментами. К 1962 году относится появление языка , из вестного под именем Фортран IV и ставшего наиболее употребительным в настоящее вре мя . К этому же времени относит ся и начало деятельности комиссии при Аме риканской Ассоциации Стандартов ( ASA ) , которая выработала к 1966 году два стандарта – языки Фортран и базисный (основной ) Фортран ( Basic FORTRAN ). Эти языки приблизительно соответств уют модификациям IV и II , однако базисный Фортран яв ляется подмножеством Фортрана , в то время , как Фортран II таковым дл я Фортрана IV не являетс я . Язык Фортран до сих пор продолжает развиваться и совершенствоваться , оказывая влияние на соз дание и развитие дру гих языков . Наприм ер , Фортран заложен в основу Basic – диалогового языка , очень популярного для решения небольших задач , пр евосходного языка для обучения навыкам исполь зования алгоритмических языков в практике про граммирования . Разработан этот язык – Begin ner ’ s All – purpose Symbolic Instruction Code – группой сотрудников Вычислительного центра Дармутского колледжа , штат Нью-Хемпшир созданный в 19… . . Но это уже следующий язык. 3.4. Бе йсик Как знаменитые гамбургеры , бейсбол и баскетбол , Бейсик - это проду кт Новой Англии . Как я говорил , созданный в 1964г ., как язык обучения пр ограммированию . Бейсик является общепринятым акронимом от " B eginner's A ll-purpose S ymbolic I n sruction C ode" (BASIC) - М ногоцелевой С имволический О бучающий К од для Н ачинающих ". Вскоре к ак обучаемые , так и ав торы программ обнаружили , что Бейсик может делать пра ктически все то , что делает скучный неуклю жий Фортран . А так как Бейсик у было легко обучиться и легко с ним работать , программы на нем писа лись обычно быстрее , чем на Фортран е . Бейс ик был также доступен на персональных компьютерах , обычно он встроен в ПЗУ . Так Бейсик завоевал популярнос ть . Интересно , что спустя 20 лет после изобре тения Бейсик а , он и сегодня самый простой для освое ния из десятков языков общецелевого программи рования , имеющихся в распоряжении любителей программирования . Более того , он прекрасно справляется с работой . Несмотря на высказывания снобов - сторонни ков языков Си и Паскаля , Бейсик считается деловым языком , снабженным мощн ыми средствами решения специфических за да ч , которые обычно большинство пользователей р ешают при помощи небольших компьютеров , а именно : работая с файлами и выводя текстов ое и графическое изображение на экране ди сплея . Несмотря на отдельные недостатки Бейсик а , никто не будет отрицать , что Кемен и и Курт с достигли основной цели : сделать программиро вание доступнее для большего числа людей. Исторически Бейсик обычно реализовался как интерпретатор (знакомым изомером являетс я сам интерпретаторный Бейсик ). Причинами перехода от любительског о уровня к п рофессиональному являются многочисленные расширения классической версии языка : возможность отключения нумерации строк , многостроковые структурированные программные констру кции , структуры типа "запись ", поименованные под программы с параметрами и локальные п еременные. Более того , с появлением транслятора QuickBasic фирмы Microsoft разработчики получили возможно сть строить на Бейсике приложения из раздельно откомпил ированных модулей , некоторые из которых могут быть написаны на других языках . Теперь , как и в сл учае других ведущих языков программирования , разработчик имеет выбор из нескольких промышленных библиотек подпрог рамм , которые содержат готовые решения для распространенных задач программирования. 3.5. Рефал Несомненн о надо рассказать и о некоторых язы ках программирования созданных у нас на родине . Один из таких языков является Рефал , разрабо танный у нас в России (СССР ), в 1966г . ИПМ АН СССР . Этот язык прост и удобен для описания манипуляций над произвольными текстовыми объектами. Рефал широко применяет ся при разработке трансляторов с алгоритмических языков как универсальных и проблемно – ориенти рованных , так и автокодов . Кроме использования в задачах трансляции , Рефал имеет такие важные сферы применения , как машинное выполнение громоздких аналитических выкладок в теоретической физике и прикладной математике ; проектирование «умных» информационных систем , осуществляющих нетривиальную логическую обработку информации ; машинное доказательство теорем ; моделирование цел енаправленного поведения ; разработка диал о говых обучающих систем ; исследования в области искусственного интеллекта и т.п. Программи рование на Рефал е имеет специфику , связанную , прежде в сего , с тем , что Рефал является языком функционального т ипа в отличие от обычных операторных язык ов типа Алгол , Ф ортран и т.д .. Если программа на операторных языках – ни что иное , как совокупность приказов-операторов , то программа на Рефал е представляет собой по существу описание связей и отнош ений между определенными понятиями. Вследствие того , что в Рефале программ ист с ам определяет структуру обрабатываемой информаци и , эффективность программы существенно зависит от удачного или неудачного выбора этой структуры . Для задания структур в Рефал е используются скобки , а специфика всех реализаций языка такова , что использов ание скобок резко повышает эффективность выполнения программы . Эт о достигается с помощью адресного соединения скобок. Определенной спецификой обладают и переме нные типа «выражения» – имеется в виду их способность удлиняться при отождествлении . Правильное и спользование переменных этого типа также позволяет значительно повысить эффективность Рефал – программы. 3.6. Пролог и Пролог ++ Пролог - это язык , предназначенный для поиска решений . Это декларативный язык , то есть формальная постановка задачи мож ет быт ь использована для ее решения . Пролог определ яет логические отношения в задаче , как отл ичные от пошагового решения этой задачи. Централ ьной частью Пролога являются средства логического вывода , которые решают запросы , используя заданное множество фактов и п равил , к которым обращаются как к утверждениям . Пролог также не и меет деления переменных на типы и может динамически добавлять правила и факты к средствам вывода . Таким образом , это гибкий язык , и он более пригоден для объектн о-ориентированного расширения, чем язык со строго заданными типами , например , Паскаль . Пролог ++ представляет собой дополнение к стандартному Пролог у. Все свойства языка по-прежнему доступны программистам . Следовательно , П ролог ++ можно отнести к группе гибридных языков , представителя ми которой считаютс я Object Pascal и C++ . Расширение Пролог ++ поддержива ет все свойства , присущие обычно объектно-орие нтированным языкам : концепции объектов и клас сов , единичное и многократное наследование , ра збиение на подклассы и передачу сообщений . Под держиваются также некоторые усовершенст вованные свойства , существующие в таких языка х , как C++ и Smalltalk , включая общие и частные методы. Интересным свойством является поддержка в языке программирования с управлением данными . Эта техника , которая может б ыть е ще названа программированием , "управляемым события ми ", используется в большинстве языков объектн о-ориентированного программирования , особенно в те х , которые разработаны для машин с интерфе йсом , управляемым "мышью ". Объектно-ориентированная программа реагир ует на события , которые определяют поток у правления . В Пролог е ++ пр ограммирование с управлением данными достигается при помощи концепции демо нов . Демон представляет собой объект , методы которого вызываются в случае определенных событий и могут быть таким образом использованы для поддержки прог раммирования с управлением данными. Сам язык основан на концепции пере дачи сообщений . Программа на Пролог е ++ строится вокруг множес тва объектов Пролог а ++ , ко торые обмениваются сообщениями . В этом смысле Проло г ++ ближе к чистому объектно-ориентированному языку , такому , как Smalltalk , чем C++ или Object Pascal . Определения о бъектов строятся исходя из вызовов Open_Object [имя _объекта ] и Close_Object [имя _объ екта ] , а методы определяются практически так же , как в других о бъектно-ориентированных языках . Для задания наслед ования можно явным образом указать , какой метод какого объекта должен наследоваться , чт о является необходимым для многократного насл едования. 3.7. Лекс Лекс – генератор программ лекси ческого ана лиза . Лексический анализ – это распознавание лексем во входном потоке символов . Предположим , что задано некоторое конечное множество слов (лексем ) в некотором языке и некоторое входное слово . Необходи мо установить , какой элемент множества (если он существ у ет ) совпадает с данн ым входным словом . Обычно лексический анализ выполняется так называемым лексическим анали затором . Лексический анализатор – это програ мма . Лексический анализ применяется во многих случаях , например , для построения пакетного редактора ил и в качестве распозна вателя директив в диалоговой программе и т.д . Однако , наиболее важное применение лексиче ского анализатора – это использование его в компиляторе . Здесь лексический анализатор выполняет функцию программы ввода данных. Лексиче ский анализат ор выполняет первую стадию компиляции – читает строки компилируемой программы , выделяет лексемы и передает их на дальнейшие стадии компиляции (грамматический разбор , кодогенерацию и т.д .). Лексический анализатор распознает тип каж дой лексемы и соответствую щим образом помечает ее . Например , при компиляции Си-про граммы могут быть выделены следующие типы лексем : число , идентификатор , оператор , ограничит ель и т.д. Лексический анализатор должен не только выделить лексему , но и выполнить некоторы е преобразования . Например , если лексема – число , то его необходимо перевести во внутреннюю (двоичную ) форму записи как чи сло с плавающей или фиксированной запятой . А если лексема – идентификатор , то его необходимо разместить в таблице , чтобы в дальнейшем обращаться к не м у не по имени , а по адресу в таблице. Хотя лексический анализ по своей идее прост , тем не менее , эта фаза работы компилятора часто занимает больше времени , чем любая другая . Частично это происходит из-за необходимости просматривать и анализир овать исходный текст символ за символом . Иногда даже бывает необходимо вернуть пр очитанный символ во входной поток с тем , чтобы повторить просмотр и анализ. 3.8. C и Си – это язык программирования общего назначения , хорошо известный своей эффективност ью , экономичностью , и переносимостью . Указанн ые преимущества Си обеспечивают хорошее качество разработки почти любого вида программного продукта . Ис пользование Си в качестве инструментального языка позволяет получать быстрые и компактные программы . Во многих случаях програм мы , написанные на Си , сравним ы по скорости с программами , написанными н а языке ассемблера . При этом они имеют лучшую наглядность и их более просто с опровождать . Си сочетает эффективность и мощность в относи тельно малом по размеру языке. Си – это замечатель ный язык , и хотя некоторым он не нравится , но все же большинство программистов его любят . Н а Си вы можете создавать программы , которые делают вс е , что вы пожелаете . Нет другого такого языка , который бы так же стимулировал к программированию . Создается впеч атление , что остальные языки программирования воздвигают искусственные препятствия для творчества , а Си – нет . Использование этого языка позволяет сокр атить затраты времени на создание работающих программ . Си позволяет программировать быстро , эффективн о и предсказуемо . Еще одно преимущество Си заключа ется в том , что он позволяет использовать все возможности вашей ЭВМ . Этот язык создан программистом для использования другими программистами , чего о других языках програ ммирования сказать нельзя. 3.8.1. Особен ности языка Си Язык Си имеет свои существенные особенности , давайте перечислим некоторые из них : Си обеспечивает полный набор операторов структурн ого программирования . Си предлагает необычно большой набор опер аций . Многие операции Си соответствуют машинны м командам , и поэтому допускают прямую трансляцию в машинный код . Разнообразие операций позволяет выбирать их различные наборы для минимиз ации результирующего кода. Си поддерживает указатели на переменные и фун кции . Указатель на объект программы соответст вует машинному адресу этого объекта . П осредством разумного использования указателей мо жно создавать эффективно-выполняемые программы , та к как указатели позволяют ссылаться на об ъекты тем же самым путем , как это дела ет машина . Си под держивает арифметику ука зателей , и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти. В своем составе Си содержит пре процессор , который обрабатывает текстовые файлы перед компиляцией . Среди его наиболее полез ных приложений при написании про грамм на Си являются : определение программных констант , замена вызов ов функций аналогичными , но более быстрыми макросами , условная компиляция . Препроцессор не ограничен процессированием только исходных т екстовых файлов Си , он может быть использован для люб о го текстового файла. Си -гибкий язык , позволяющий принимать в конкретн ых ситуациях самые разные решения . Тем не менее , Си налага ет незначительные ограничения в таких , наприм ер , действиях , как преобразование типов . Во многих случаях это является достоинств ом , однако программисты должны хорошо знать язык , чтобы понимать , как будут выполняться их программы. 3.8.2. Недостатки языка Си : Также , как и особенностей , в языке Си присутствует ку ча недостатков . Ведь от них не защищен не один проект , в том числе прое кт разработки и выполнения программ , н а языке Си : Язык Си предъявляет достаточно высокие требования к квалификации использующего его программиста . При изучении Си желательно иметь представление о структуре и работе компьютера . Большую п омощь и более глубо кое понимание идей Си , как языка системного программирования , обеспечат хотя бы минимальное знание языка ассемблер . Уровень старшинства некоторых операторов не является общепринятым , некоторые синтаксические конструкц ии могли бы быть лучше . Тем не менее , к ак оказалось Си – чрезвычайно эффективный и выраз ительный язык , пригодный для широкого класса задач. 3.9. Си ++ Безусло вно , Си ++ вос ходит , главным образом , к Cи . Cи сохранен как подмножество , поэтом у сделанного в Cи акцента на средствах низкого ур овня д остаточно , чтобы справляться с с амыми насущными задачами системного программиров ания . Cи , в свою очередь , многим обязан своему предше ственнику BCPL. Название Си ++ - изобретение лета 1983-его . Более ра нние версии языка использовались начиная с 1980-ого и бы ли известны как " Cи с Классами ". Первоначально язык был придуман потому , что автор хотел написать событийно управляемые модели для чего был бы идеален Simula67 , если не п ринимать во внимание эффективность . " Cи с Классами " использовался для крупных проектов моделир ования , в которых строго тестировались возмож ности написания программ , требующих (только ) ми нимального пространства памяти и времени на выполнение . В " Cи с К лассами " не хватало перегрузки операций , ссылок , виртуальных функций и м ногих деталей . Си ++ был впервые введен за пределами исследовательской группы автора в июле 1983- го . Однако тогда многие особенности Си ++ были еще не придуманы. Название Си ++ выдумал Рик Масситти . Название ука зывает на эволюционную природу перехода к нему от Cи . " ++ " - эт о оп ерация приращения в Cи . Чуть более коротко е имя Cи + является синтаксической ошибкой , кроме того , оно уже было использовано как имя совсем другого языка . Знатоки семантики Cи находят , что Си ++ хуже , чем Cи ++. Названия D язык не получил , поскольку он являе т ся расширением Cи и в нем не делается попы ток исцелиться от проблем путем выбрасывания различных особенностей. Си ++ - это универсальный язык про граммирования , задуманный так , чтобы сделать п рограммирование более приятным для серьезного программиста . За ис ключением второстепенных деталей Си ++ является надмножеством языка программировани я Cи . Поми мо возможностей , которые дает Cи , Си ++ предоставляет гибкие и эф фективные средства определения новых типов . И спользуя определения новых типов , точно отвеч ающих конц епциям приложения , программист может разделять разрабатываемую программу на легко поддающиеся контролю части . Такой метод построения программ часто называют абстракци ей данных . Информация о типах содержится в некоторых объектах типов , определенных польз ов а телем . Такие объекты просты и надежны в использовании в тех ситуациях , когда их тип нельзя установить на ст адии компиляции . Программирование с применением таких объектов часто называют объектно-ориентир ованным . При правильном использовании этот ме тод дает более короткие , проще пон имаемые и легче контролируемые программы. Изначал ьно Си ++ был разработан , чтобы автору и его друзьям не приходилось программировать на ассемблере , Cи или других современных языках высокого уровня . Ос новным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста . Плана разработки Си ++ на бумаге никогда не было . Проект , документация и реализация двигались одновременно . Разумеется , внешний интерфейс Си ++ был написан на Си ++. Нико гда не существовало "Проекта Си ++" и "Комитета по разработке Си ++". Поэтому Си ++ развивался и продолжает развиваться во всех направлениях , чтобы справляться со сложностями , с которыми сталкиваются пользов атели , а также в процессе дискуссий автора с его дру зьями и коллегами. В качестве базового языка для Си ++ был выбран Cи , потому что он : · многоцелевой , лаконичный и относительно низкого уровня : · отвечает бол ьшинству задач системного программирования : · идет везде и на всем : · пригоден в среде программ ирования UNIX. В Cи есть сво и сложности , но в наспех спроектированном языке тоже были бы свои , а сложности Cи нам изве стны . Самое главное , работа с Cи позволила " Cи с Классами " быть полезным (правда , неудобным ) инструментом в ходе первых месяцев раздумий о до бавлении к Cи Simula -под обных классов. Си ++ с тал использоваться шире , и по мере того , как возможности , предоставляемые им помимо возможностей Cи , становились все более существенными , вн овь и вновь поднимался вопрос о том , с охранять ли совместимость с Cи . Ясно , что отказавши сь от определенной части наследия Cи можно было бы избежать ряда проблем . Это не было сделано , потому что : · есть миллион ы строк на Cи , которые могли бы принести польз у в Си ++ при условии , что их не нужно было бы полностью перепис ывать с Cи на Си ++; · есть сотни тысяч строк библиотечных функций и сервисн ых программ , написанных на Cи которые можно было бы использовать из или на Си ++ при условии , что Си ++ пол ностью совместим с Cи по загрузке и синтаксически очень похож на Cи ; · ест ь десятки тысяч программистов , которые знают Cи , и которы м , поэтому , нужно только научиться использоват ь новые особенности Си ++, а не заново изучать его основы ; · поскольку Си ++ и Cи будут испол ьзоваться на одних и тех же системах одними и теми же людьми , отличия дол жны быть либо очень большими , либо очень маленькими , чтобы свести к минимуму ошибк и и недоразумения. Позднее была проведена проверка определен ия Си ++, чтоб ы удостовериться в том , что любая конструк ция , допустимая и в Cи, и в Си ++ , действитель но означает в обоих языках одно и то же. Си ++ б ыл развит из языка программирования Cи и за очень немногими исключениями сохраняет Cи как подмножест во . Базовый язык , Cи подмножество Си ++, спроектирован так , что имее тся очень близкое соответствие между его типами , операциями и операторами и ком пьютерными объектами , с которыми непосредственно приходится иметь дело : числами , символами и адресами . За исключением операций свободной памяти new и delete, отдельные выражения и операт оры Си ++ обыч но не нуждаются в с крытой поддержке во время выполнения или подпрограммах. Одним из первоначальных предназначений Cи было при менение его вместо программирования на ассемб лере в самых насущных задачах системного программирования . Когда проектировался Си ++, были приняты меры , чтобы не ставить под угрозу успехи в этой области . Различие между Cи и Си ++ состоит в первую очередь в степени внимания , уделяемо го типам и структурам . Cи выразителен и снисходителен . Си ++ еще б олее выразителен , но чтобы достичь этой вы разительности , прогр аммист должен уделить больше внимания типам объектов . Когда известн ы типы объектов , компилятор может правильно обрабатывать выражения , тогда как в противн ом случае программисту пришлось бы задавать действия с мучительными подробностями . Знани е типов объек т ов также позволяет компилятору обнаруживать ошибки , которые в противном случае остались бы до тестирован ия . Заметьте , что использование системы типов для того , чтобы получить проверку парамет ров функций , защитить данные от случайного искажения , задать нов ы е операции и т.д ., само по себе не увеличивает р асходов по времени выполнения и памяти. Особое внимание , уделенное при разработке Си ++ структу ре , отразилось на возрастании масштаба програ мм , написанных со времени разработки Cи . Маленькую прог рамму (меньше 1000 строк ) вы можете застав ить работать с помощью грубой силы , даже нарушая все правила хорошего стиля . Для программ больших размеров это не совсем так . Если программа в 10 000 строк имеет п лохую структуру , то вы обнаружите , что нов ые ошибки появляются т а к же б ыстро , как удаляются старые . Си ++ был разработан так , чтобы дать возможность разумным образом структурировать большие программы таким образом , чтобы для одного человека не было не померным справляться с программами в 25 000 строк . Существуют программы гораздо больших р азмеров , однако те , которые работают , в цел ом , как оказывается , состоят из большого ч исла почти независимых частей , размер каждой из которых намного ниже указанных предел ов. Естественно , сложность написания и поддер жки программы зависит о т сложности ра зработки , а не просто от числа строк т екста программы , так что точные цифры , с помощью которых были выражены предыдущие с оображения , не следует воспринимать слишком с ерьезно. 3.9.1. З амечание по проекту языка Си ++ Существенным критерием п ри разработке языка была простота . Там , где возникал выбор между упрощением руководства по язык у и другой документации и упрощением комп илятора , выбиралось первое . Огромное значение также предавалось совместимости с Cи , это помешало удалить синтаксис Cи . В Си ++ нет типов данных выс окого уровня и нет первичных операций выс окого уровня . В нем нет , например , матрично го типа с операцией обращения или типа строка с операцией конкатенации . Если польз ователю понадобятся подобные типы , их можно определить в самом я зыке . По сути дела , основное , чем занимается программирование на Си ++ - это определение универсальных и специально-прикладных типов . Хорошо разработанный тип , определяемый пользователем , отличается от встроенного тип а только способом определения , но не спо собом использования. Исключались те черты , которые могли бы повлечь дополните льные расходы памяти или времени выполнения . Например , мысли о том , чтобы сделать необходимым хранение в каждом объекте ”хозяйс твенной” информации , были отвергнуты . Если пол ьзоват ель описывает структуру , состоящую из двух 16-битовых величин , то структура пом естится в 32-битовый регистр. Си ++ проектир овался для использования в довольно традицион ной среде компиляции и выполнения , среде п рограммирования на Cи в системе UNIX . Средства обработки особых ситуаций и параллельного программирования , треб ующие нетривиальной загрузки и поддержки в процессе выполнения , не были включены в Си ++. Вследстви е этого реализация Си ++ очень легко переносима . Однако есть полные основания использовать Си + + в среде , где имеется гораздо более существенная п оддержка . Такие средства , как динамическая заг рузка , пошаговая трансляция и база данных определений типов могут с пользой применяться без воздействия на язык. 4. ЗАКЛЮЧЕНИЕ. Изобретение язы ка программиро вания высшего уровня позвол ило нам общаться с машиной , понимать её (если конечно Вам знаком используемый язык ), как понимает американец немного знакомый с русским языком древнюю азбуку Кириллицы . Проще говоря , мы в нашем развитии нау ки программирования по к а что с ЭВМ на ВЫ . Поверьте мне это не сарк азм вы только посмотрите как развилась на ука программирования с того времени , как п оявились языки программирования , а ведь язык программирования высшего уровня , судя по всему ещё младенец . Но если мы обратим вн и мание на темпы роста и р азвития новейших технологий в области програм мирования , то можно предположить , что в бл ижайшем будущем , человеческие познания в этой сфере , помогут произвести на свет языки , умеющие принимать , обрабатывать и передавать информации в виде мысли , слова , звука или жеста . Так и хочется назвать это детище компьютеризированного будущего : « языки программирования "высочайшего " уровня» . Возмо жно , концепция решения этого вопроса проста , а ближайшее будущее этого проекта уже не за горами , и в э т от мом ент , где нибудь в Запорожье , Амстердаме , То кио или Иерусалиме , перед стареньким 133 MHz горбится мол одой , никем не признанный специалист и раз рабатывает новейшую систему искусственного интел лекта , которая наконец-то позволит человеку , с помощью своих машинных языков , вести диалог с машиной на ТЫ. Размышляя над этим , хочется верить в прогресс науки и техники , в высоко - к омпьютеризированное будущее человечества , как еди нственного существа на планете , пусть и не использующего один , определенный разговор ный язык , но способного так быстро прогрессировать и развивать свой интеллект , что и перехода от многоязыковой системы к всеобщему пониманию долго ждать не п ридется . Завершить свой труд хорошо бы на такой оптимистичной ноте , но нет , напоследок хочется про цитировать человека , фрагменты работы которого , в виде информации о языке Си , вам уже попадались на страницах этого текста : Единственный спос об изучать новый язык программирования – писать на нём программы. Брайэн Керни ган 5. БИБЛИОГРАФИЯ 1) “ LEX - генератор программ лексического ан ализа” Давидов Михаил Изгияевич ; Антонов Вади м Геннадьевич МОСКВА – 1985; 2) "BASIC Face-off", Justin J.Crom, PC Tech Journal, September 1987, p.136 Перевод : Лопухов В.Н . (Интегратор Promt 98); 3) “Язык программирования Си.” Б.В . Керниган , Д . Ритчи , А . Фьюэр . Русский перевод : Москва : Финансы и Статистика . 1985 г .; 4) “Основы автоматизации” ч .1, Золотарев В. В ., 1978 г .; 5) “Языки программирования” кн .5, Ваулин А. С ., 1993 г .; 6) “Языки программирования : разработка и реализация” , П . Терренс , 1979 г .; 7) “Введение в программирование на языке Ассемблер” ч .1, Касвандс Э.Г .; 8) “Языки программирования высокого уровня” , Хротко Г ., 1982 г .; 9) “Язы ки программирования” , Малютин Э.А ., Малютина Л.В ., 1982 г .; 10) “Новые языки программирования и тенде нции их развития” , Ушкова В ., 1982 г .; 11) “Мир Лиспа” т .1, Хьювенен Э ., Сеппене н Й ., 1990 г .; 12) “Ал горитмические языки реального времени” , Янг С ., 1985 г..
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Когда бабушка весь день смотрит идиотский российский сериал-мелодраму по "России", у меня три стадии: отрицание, насмешки над тупостью сериала и, наконец, я смотрю сериал вместе с ней.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Языки программирования, их классификация и развитие", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru