лекции (2015), страница 4

PDF-файл лекции (2015), страница 4 Языки программирования (53868): Лекции - 7 семестрлекции (2015): Языки программирования - PDF, страница 4 (53868) - СтудИзба2019-09-19СтудИзба

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

PDF-файл из архива "лекции (2015)", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

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

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

Поэтому нерасширяемостьне так уж проблематична.В Java перечисления появились не сразу. В первой версии языка в 1995 году их не было. Появилисьони лишь в 2005 году, но сделали их классовым ссылочным типом данных. enum States { A, B, C } поумолчанию наследуется от Object. A, B, C - самоопределённые константные имена без типов поумолчанию static, public, const члены. Кароч небольшое расширение синтаксиса. Но это класс,можно писать методы, конструкторы, его можно наследовать.Диапазоны массивов из Pascal не выжили нигде, хотя были в Ada: range L..KВезде прижился C-подход к индексции массива, при котором массив длины N, имеет индексы 0..N-1,а сами индексы имеют тип int.Символы и кодировкиСимвольный тип данных char был ещё в Pascal. Но сейчас перешли с 8бит на Unicode.101991 год - появился стандарт Unicode.

Он состоит из двух основных разделов: универсальный наборсимволов (англ. UCS, universal character set, бывает UCS-2 и UCS-4) и семейство кодировок (англ. UTF,Unicode transformation format). Универсальный набор символов задаёт однозначное соответствиесимволов кодам — элементам кодового пространства, представляющим неотрицательные целые числа.Семейство кодировок определяет машинное представление последовательности кодов UCS.Проще говоря, UCS сосоставляет иероглифу � код 26218, а UTF-8 (например) сопоставляет коду26218 представление на компьютере в виде последовательности бит F0 A6 88 98.i18n = internationalization (18 - количество букв между ‘i’ и ‘n’) = когда пишем программы сразу срасчётом на несколько языков и возможностью локализации проложения.globalization - меню выводится на Английском языке, но вводить можно на любом языке.0..127 <разбивка символов как в ASCII и совпадает во всех кодировках>128..255 <ISO-latin1> - первое расширениеKOI-8R - особая кодировка для русских букв, которая позволяет прочитать русские буквы даже собнулённым правым битом.В UTF-8 символ может занимать от 1 до 6 байт.

Количество байт и кодирование числа определяетсяв соответствии и минимально необходимым количеством бит для представления данного кода вдвоичном виде. В приведённой таблице количество ‘x’-ов в строчке соответствует количествузначащах бит - на место этих ‘x’-ов и подставляется стандартная двоичная форма данного кода.Количество байтЗначащихбитШаблон полностью170xxxxxxx211110xxxxx 10xxxxxx3161110xxxx 10xxxxxx 10xxxxxx42111110xxx 10xxxxxx 10xxxxxx 10xxxxxx526111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx6311111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxxВ UTF-8 все коды от 0 до 127 кодируются также как в ASCII.

Поэтому если текст закодирован вASCII, а просматриваем мы его как UTF-8-текст, то текст на Английском языке будет оторажатьсяправильно, а тексты на дургих языках будут отображаться неправильно.Конец строки:UTF-8: 0x00wchar_t: 0x0000 - чистый UnicodeВ UTF-16 коды из UCS-2 кодируются 2-х байтовым числом. Коды, которые не влезают в UCS-2кодируются парой двухзначных чисел.Но появляется проблема порядка:FF.FE - big endian - порядок, в котором числа записывает человекFE.FF - little endian - порядок, в котором младшие байты идут вначале (т.е.

логичный)11Процессор использует little endian, а сеть - big endian, поэтому для определения того, какой порядокиспользуется, строка в Unicode должна начинаться с BOM - Byte Order Mark, специальных двух байт= 0xFFFE, по которым определяется используемый порядок байт.Комментарий! Вообще, на мой взгляд проблема высосана из пальца. Сеть должна передавать потокбайтов в точности как ей говорят. Причин для изменения порядка байтов не видно.

Проблемы невозникает в UTF-8, где кодирование идёт побайтово. При реализации UTF-16, по всей видимостииспользуются, функции работающие с блоками по два байта и на разных архитектурах сохранениеэтих байт идёт в разном порядке.В языках программирования, появившихся после стандарта Unicode, строковым или символьнымтипом является Unicode, и он неявно не преобразуется к числу. К таким языкам относится C#, Java,JavaScript. В C# и Java есть Char, обычно в UTF-16.Проблемы появились, у языков, появившихся до 90-х. В C и C++ всё решили простым расширением.В C++ появились новые типы: wchar_t, wstring, соответствующие функции добавили определенияUnicode символов и строк:L’c’ => Unicode символL”stss bla bla bla” => Unicode строкаБольше проблем возникло в Python. В версиях 2.* были как Unicode, так и не-Unicode строки: ‘ ‘, “ “,w“ ” (Unicode строка), а в версии 3.* оставили только Unicode строки обозначаемые теперь просто ‘ ‘.Таким образом поменялась семантика программ.Итого структура простых типов данных:- Арифметические- Перечислимые в компилируемых языках- char -> string- boolУказатели и ссылкиК указателям в разных языках разные подходы:- C/C++:Указатель - абстракция адреса, в самом общем виде - void*- Pascal/Ada:Указатель используется для моделирования динамических структур только для обращения квыделенным объектам в динамической памятиКлючевое отличие от C/C++ - нет адресной арифметикиAda 83type R is recordA: T1B: T2end record;type PR is access R; // УказательX:PR;X = new R;X.A ; X.B ;X.all - ссылаемся на весь объект (зачем?\)Y:R;Y.A, Y.B; // Т.е.

что получается, синтаксис для доступа к полям через указатель и объектодинаковы? \12Благодаря тому, что указатель указывает только на динамическую память должно быть прощесоздать сборщик мусора. Но в первом стандарте Ada 83 сборщика мусора не было, так как язык былразработан для задач реального времени. Главная проблема сборщика мусора заключается в том,что свободная память должна быть в едином пуле.Создатели Ada исходили из трёх критериев:1) Надёжность (так как разрабатывался для задач обороны)2) Эффективность (для задач реального времени)3) Читаемость (для сопровождения)но добавили модуль unchecked_deallocation - часть стандартной библиотеки, но отдали на откупкомпилятору. Компилятор может сам сделать сборку мусора и проигнорироватьunchecked_deallocation.Ada 95Ввели другой тип указателя, так как вся API было из окружения и написано на C, то надо быловызывать API на другом языке, а там (на C) главное - указатель, а значит нужно ввести указатель и усебя:type PI is access all integer;x:PI;i:integer;x := new integer;x := i’access;При этом нововведённому указателю можно присваивать старый, но не наоборот.

Такой указательстал указателем по типу языка C. Он может указывать на любой объект. Но в самом языке это былоне нужно. Добавили только для взаимодействия с внешним миром.Заметим, что для C и C++ нельзя создать сборщик мусора, так как указатель может указывать налюбое место, в том числе и в статической памяти.CLR - особая реализация, в которой ввели сборщик мусора. Для этого появился особый типуказателя, который может указывать только на динамическую память, и к которому не применимаадресная арифметика. Только к таким указателям и применима сборка.Все типы в C#-Типы значения (скалярные типы данных)- char- bool- int, float, decimal, …- struct (в C# не тоже самое что class!)Где объявлены, так и выделяется под них место-Референциальные типы- массивы- интерфейсы- класс- делегаты: функциональный тип данных, по сути частный случай ссылкиint[] a; // Объявляется только ссылка на массив, память под сам массив не выделяетсяa = new int[50]; // Выделяется память на сам массив в динамической памятиЛюбой сборщик мусора может перенести адрес.

После выделения большого количества объектов иосвобождения части из них, может получиться так, что свободной памяти имеется много, но13большого последовательного куска памяти нет. Возникает необходимость произвестипереразмещение объектов с целью уплотнения данных в памяти. Сборщик мусора делает этоавтоматически. Это одна из причин возможных подвисаний программ с автоматической сборкоймусора. Также объекты могут изменить свои адреса и традиционные указатели на данные объектыстали бы недействительными, но ссылки являются более высокоуровневым типом данных, ониавтоматически обновляются и продолжат работать правильно.C# -> .Net работает в VES (Virtual Execution System) над определённой ОС. При необходимостииспользовать родные для данной ОС API, нужно использовать систему Platform/Invoke.\Java -> JNI (Java Native Interface).

Особый интерфейс для обращения в родным для данной ОСсервисам. При использовании приводит к абсолютной непереносимости, но зато эффективно.Блок fixed в C#В C# ввели блок fixed, который фиксирует адреса всех объектов, используемых внутри блока, неприменяя к ним стандартный сборщик мусора. Адреса фиксированы, а значит можно их получить:byte[] b = new byte[1024];fixed { byte* pbffer = b; … }Просходит преобразование ссылки в традиционный C-шный указатель без всякого контроля.

Внутриfixed можно использовать любые функции из библиотеки языка C. Но требуется указать атрибутunsafe, таким образом мы “подписываемся” под тем, что вся ответственность лежит на нас. И сборкутоже обязаны делать с атрибутом unsafe. При этом на unsafe проекты накладывается ограничение,их нельзя запускать без ЭЦП (гарантия неизменности bin-файла).Ссылочный тип в C++В C++ ссылка всего лишь “альтернативное имя” объектаT& a;T& a = *new T();delete(&a); // автоматического освобождения не произойдётЕдинственная операция со ссылкой - инициализация объектом, всё остальное применяется кобъекту.T x;T& a(x);T& a = x;Если ссылка является частью класса, то инициализировать её можно только в конструкторе в спискеинициализации:class T {public:T(): <вот здесь> { }}Время жизни ссылки не может быть больше времени жизни объекта.Похоже на другие языки программирвания то, что сам выделенный объект не может изменить своюдлину.В плане скалярного базиса типов данных языки программирования различаются не слишком сильно14а) Большой набор типов под архитектуру машины (Java, C#)б) Немного типов, не эффективно (Python, Ruby)Структурный базисСовершенный хеш - это хеш без коллизий и с абсолютно плотным отображением.

Его можнопостроить для любого конечного множества.Паскаль:- Массивы- Записи (то, что в C называется структурой)- СтрокиЭти три есть по сути в любых языках программирования, а также:- Множества- ФайлыСтруктурный базис объектно ориентированных языков программированияВ любом статичном (компилируемом) языке (C, C++, C#, Java), последовательности:- массивы- строки- записи/структуры => классИз базиса ушли файлы, множества и перешли в стандартную библиотеку.МассивыОстановимся на понятии массива. Тут есть три операции:● A := Bпоэлементное копирование элементов из B в A● A[i]индексирование, возвращает элемент с номером ‘i’ массива A. Срабатываетпри обращении к элементу в массиве (printf(“%d”, A[i]))● A[i] -> ref Tвозвращает ссылку на элемент массива ‘A’ с номером ‘i’.

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