Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » лекции (2008) (by Михайлишин Алексей_ Жбанков Денис_ Щербинин Виктор_ Чеботарев Павел)

лекции (2008) (by Михайлишин Алексей_ Жбанков Денис_ Щербинин Виктор_ Чеботарев Павел), страница 2

PDF-файл лекции (2008) (by Михайлишин Алексей_ Жбанков Денис_ Щербинин Виктор_ Чеботарев Павел), страница 2 Языки программирования (54007): Лекции - 7 семестрлекции (2008) (by Михайлишин Алексей_ Жбанков Денис_ Щербинин Виктор_ Чеботарев Павел): Языки программирования - PDF, страница 2 (54007) - СтудИзба2019-09-19СтудИзба

Описание файла

PDF-файл из архива "лекции (2008) (by Михайлишин Алексей_ Жбанков Денис_ Щербинин Виктор_ Чеботарев Павел)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 2 страницы из PDF

Даже самый лучшийкомпилятор Ады не был сертифицирован, т.к. Ада – очень объёмный язык. Больше попыток созданияуниверсального ЯП не было.Первый чистый ОО ЯП - SmallTalk••1972 – SmallTalk – XEROX PARC1980 – SmallTalk5Многие понятия ООП (например, метод) – из SmallTalk. Он использовался в научных проектах, в индустриираспространения не получил. SmallTalk использовал bytecode (как Java). В нем не было множественногонаследования. Некоторые считают SmallTalk образцом ОО ЯП, и что множественное наследование неприсуще истинному ООП.Самый важный ОО ЯП – С++С++ унаследовал много недостатков от С (раздельную трансляцию).Развитие С++:• 1986 – С++ 2.0, он стал распространяться по миру• 1990 – еще одна версия, появились шаблоны и исключительные ситуации.

Только в С++ естьполное множественное наследование, во всех остальных ОО ЯП оно либо обрезано, либо его нетвообще. 1989 году в каждой СП был компилятор С++. Но в стандарте еще не было шаблонов, и ихреализация и библиотеки были разными для каждого компилятора.• до 90 – появление первых компиляторов• 90-98 – самостоятельное развитие С++: появление пространств имен, RTTI• 1998 – единая библиотека шаблонов, новый стандартMS Visual Studio до сих пор не поддерживает всю реализацию STL => появления понятия платформы STL. Внастоящее время готовится новый стандарт С++ - TR1. Развитие идет в основном в STL.

Популярныебиблиотеки (напр. Blitz) становятся частью STL.Другие языки:•1988 – Оберон••••••••1993 – Оберон2В 80-е годы появился Eiffel, широко известный в узких кругах, но так и не занял свою нишуObjective C – С, в который добавлены конструкции Smalltalk.Object Pascal => Turbo Pascal => DelphiRAD – Rapid Application DevelopmentJ++ - реализация java на visual studio.1995, весна – Java1999 – C#Эти языки реализованы с нуля (не надстройки над С). Они используют принцип WORA (Write Once, RunAnywhere) и байт-код. Появилось понятие JVM (java virtual machine).JavaВ 60-70 годы были популярны машины, имеющие в качестве входного языка язык высокого уровня, от нихунаследована идея JVM. Впервые похожая идея реализована в UCSD Pascal.

Промежуточный язык тамназывался P-code. Т. о. был один компилятор из Pascal в P-code, и много интерпретаторов для различныхархитектур.Katana – микропроцессор, понимающий байт-код.Java – язык+JVM. Компилятор – javac, компилирует java-программы в байт-код. JRE – java runtimeenvironment, включает интерпретатор и другие вещи, нужные для интерпретации байт-кода.Типы платформ Java:• Micro Edition• Standard Edition• Enterprise EditionJavac: .java => .class (байт-код).

В байт-коде хранятся не только команды, но и метаданные.Рефлексия – доступ к коду программы из самой программы – также появилась в Java.Java позиционировалась как интернет-язык. Java не стал главным языком, т.к. Майкрософт стал интернеткомпанией. Не очень хорошая эффективность. Близорукая политика фирмы Sun – она долго «не отпускала»java от себя. Java – чистый ОО ЯП, он проще, чем С++. Основное развитие шло по пути развитиябиблиотек, но в 2005 появилась Java5, сильно отличающаяся от предыдущих версий.С#Майкрософт не стала пытаться создать универсальный язык, а стандартизовала библиотеки.••••••••CLI - Common Language Infrastructure – набор спецификацийCTS – Common Type SystemIL – Intermediate Language – промежуточный язык, что-то вроде байт-кодаPE – формат исполняемого файла, не зависящего от архитектуры.Библиотека времени выполнения.VES (Virtual Execution System) – виртуальная исполнительная система, основанная на CLICLR (Common Language Runtime) - реализация VES в .NET.Mono – реализация CLI в Linux.В .NET есть:•••••••VB.NETJscript.NET – аналог JavaScriptFoxPro.NETC++/CLI – управляемый С++ – С++, в который добавлены особые понятия (ключевые слова),специфичные для .NETC# - «родной» язык .NET.

Многие понятия Java близки C#.J# - Java для .NET, с .NET – библиотеками.ECMA – European Computer Manufacturers Association – также стандартизует ЯП. Она стандартизовалаCLI и C#.Не вся спецификация C# 2.0 стандартизована ECMA. 2008 год – C# 3.0.На самом деле, программы на C# - чисто компилируемые (JIT(Just In Time)-компиляция) – IL компилируетсяв исполняемый файл во время работы программы.Скриптовые языкиПример: JavaScript, Python, Perl, PHPНанихлегчепрограммировать,ноонименееэффективны.Онихорошоподходятдлявеб-программирования из-за особенностей работы в Интернете.[lect5] Глава 3.

Основные понятия ЯП.I) Основные позиции при рассмотрении ЯП:1) Технологическая. Технологическая потребность - базовое понятие. Самая критичная потребность- раздельная трансляция модулей, модульность. Для нас ТП будет одной из самых важных.2) Реализаторская (как реализуется та или иная конструкция). Открытый стандарт - описываетмножество программ, результат которых гарантирован стандартом. Закрытый стандарт - результатнекоторых программ не определен. [пример: DO 5 I=1,N; при N<1 результат не определен, т.к. на разныхкомпиляторах результат разный]Современные ЯП вполне можно описать и без реализации, поэтому мы будем уделять ей не такмного внимания.

(Например, концепцию динамического связывания методов можно объяснить безвсякой реализации). При рассмотрении реализации становится ясно, почему многие ЯП неиспользуют множественное наследование. (Из рассматриваемых нами ЯП мн. наследованиеполностью реализовано только в С++).3) Авторская позиция. Наиболее удачные языки - авторские, т.е.

те, которые были написаны 1-2людьми для реализации конкретной цели. Когда в написание языка начинают вмешиватьсякомитеты, компании, и т.д., он "разбухает" и становится громоздким. Одна из самых интересныхкниг с точки зрения авторской позиции - "Дизайн и эволюция C++" Страуструпа.4) Семиотика (наука о знаковых системах). Семантика - часть семиотики. Например, один из вопросов- проблема "недоразумений". Семиотика с разных позиций трактует ошибки в сообщениях междусубъектами языка (синтаксическая, семантическая, прагматическая неоднозначность).

Передающийи принимающий субъекты могут интерпретировать сообщение по разному.Пример из языка: "Джон проектирует колледжи в Лондоне" - неоднозначность трактовки. Но частомы понимаем неоднозначность, потому что у нас есть система приоритетов. В ЯП неоднозначностипрактически отключены. [пример: if b1 then if b2 then s1 else s2; Здесь чисто синтаксическая проблема]Как правило после выхода ЯП к нему добавляются исправления таких неоднозначностей.Семантическая неоднозначность - многие компиляторы не полностью реализуют стандарт C++(например VS). Прагматическиетехнологической позиции.проблемыкакправилосамыетяжелыеиотносятсяк5) Социальная. Некоторые феномены необъяснимы ни с одной из предыдущих позиций.

Примероммогут служить технологические ниши (фортран). Для человека важно понятие мобильности знаний,умений, навыков. Владение ЯП - такой навык, т.е. постоянно переходить на новые ЯП очень тяжело,поэтому фортран так популярен до сих пор.Пример - Delphi лучше других по всем пунктам. Но из-за того что она основана на паскале, усоциума сложилось убеждение что Delphi пригоден только для обучения.II) Основные понятия ЯП.Три основных понятия - данные, операции, связывание.

Эти понятия мы будем считать атомарными.Любые программы обрабатывают данные с помощью операций. Связывание - менее очевидное понятие, нооно играет очень большую роль. Связывание - способ передачи параметров. Нас будет интересовать немеханизм связывания, а время связывания (на каком этапе происходит связывание).Пример.I = 1;В какой момент происходит связывание единицы и объекта I? Это зависит от контекста.• Если const int I = 1;, то на этапе компиляции.• const X a; - в момент выполнения конструктора.Мы будем выделять 2 основных этапа - статическое связывание и динамическое связывание (binding).Имеет место дуализм операций и данных.Пример - строка символов S. length(s) - взятие длины строки. Что такое длина строки? Это операция илиданные? Например в СИ strlen - это операция (она вычисляется). В TurboPascal длина строки хранится впервом байте строки, поэтому это данные, т.е.

длину строки можно узнать, обращаясь к первому байтустроки.Некоторые операции нам проще изображать как данные (и наоборот). Пример: property в классах(getters/setters). Например, в визуальной системе окно имеет точку привязки (x, y). При ее изменениипроисходит не просто замещение данных, но еще и другие сложные операции (перерисовка и т.д.).Атрибуты данных:1)2)3)4)5)тип данных;имя;значение;время жизни;область действия (видимости).Как правило данные принадлежат к некоторому классу эквивалентностей. Вирт говорил, что тип данных- это множество значений. Но это определение не было принято.Тип данных - множество значений, которое определяется структурой данных + операции над ними.Принцип инкапсуляции - тип данных скрывает свою структуру и выдает общий набор операций.Существуют «безтиповые языки» (ошибочный термин, есть в многих книгах). В них переменные несвязаны с конкретным типом (но тем не менее типы там есть).

Безтиповые языки - языки, в которых типданных может меняться динамически.Есть прототипные ЯП - в них тип данных может отсутствовать, понятие типа данных явно не существует.В C# есть понятие var - переменная.• a = 5; переменная получает значение целочисленного объекта• var a = new List<int>(); переменная с выводимым типом (тип выводится, исходя из правой части)В ЯП есть понятие Объект данных. У него есть слоты В объекте данных количество слотов варьируется. Вслоты можно поместить другие объекты.

Есть также понятие клонирования объектов (примеры такихязыков: self, IO). Такие ЯП (прототипные) очень гибки.Квазистатический контроль - контроль данных во время выполнения, исходя из статическиххарактеристик типа. Иногда, имя объекта - важная характеристика, но есть объекты без имен. Примербезымянного объекта в паскале - числовая константа, динамические объекты в памяти (доступ только поуказателю).Пример из C#••const int i=5; // время связывания - на этапе трансляции.readonly X a; // время связывания - при выполнении.Имя жизни очень часто связывается с понятием класс памяти.Память бывает:• статическая - создается в самом начале, очищается в самом конце работы программы• квазистатическая - в отличие от статической, память определяется явным образом, есть понятиеблока• динамическая - период создания объекта контролируется программистом явноЕсть еще один вид памяти - persistent (сохраняемая), но он не используется в ЯП, т.к.

нет универсальногомеханизма сохранения данных.[lect6] Основные понятия ЯП. Продолжение.1)2)3)4)5)Тип данныхИмяЗначениеВремя жизниОбласть действия (видимости)1. Статические области действия (видимы только в своем блоке или вложенных)2. Динамические области действия (в современных языках почти нет)6) АдресПример.var I;proc P;var I;proc P1{{}P1();I = 1;P1();}P();В Си++ есть и динамические области действия (try…catch ищутся по стеку вызовов). Языки с динамическойобластью действия переменных менее эффективны (так как надо просматривать стек).III) Концептуальная схема рассмотрения ЯП.Наиболее важная проблема современных ЯП – сложность. Сложность определяется семантическимразрывом (базисные понятия компьютеров примитивны, а моделировать нужно очень сложные реальныепроцессы).

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5288
Авторов
на СтудИзбе
417
Средний доход
с одного платного файла
Обучение Подробнее