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

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

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

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

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

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

Описание синтаксиса объявления в Аде. В Аденет неявного приведения типов.x: positive;i: interger;n: natural;x := positive(i);i := integer(x);Особенности копирования объектов в Java, в C#Использование оператора присваивания не создает нового объекта, а лишь копирует ссылку наобъект (т.н. поверхностное копирование). Таким образом, две ссылки указывают на одну и ту жеобласть памяти, на один и тот же объект.Для создания нового объекта с таким же состоянием используется клонирование объекта:● Клонирование объекта можно реализовать, имплементировав интерфейс Cloneable иреализовав копирование состояний полей и агрегированных объектов. Такая реализацияклонирования требует большого внимания и может стать источником ошибок.● Более безопасным способом является использование конструктора копирования, котороепозволяет избежать многих проблем.● Другим безопасным вариантом является фабричный метод (Factory method), которыйпредставляет собой статический метод, возвращающий экземпляр своего класса.

Фабричныйметод имеет следующие преимущества перед конструктором копирования:- Имеет имя (чаще всего getInstance или valueOf), что делает код более понятным.- Необязательно создавать новый объект в результате вызова: Объекты могут бытькэшированы и реиспользованы.- Могут возвращать подтип своего возвращаемого типа. В частности, могутвозвращать объект, у которого неизвестен класс реализации.В C# по умолчанию тоже используется поверхностное копирование.

Для глубокого копированияможно использовать несколько подходов:● Глубокое копирования посредством сериализации (самый удачный подход). Сиспользованием класса BinaryFormatter и методов Serialize, Deserialize. Класс должен бытьпомечен как “[Serializable]”.Сборка мусораАвтоматическая сборка мусора. Если на объект больше нет ссылок, то память выделенная подобъект освобождается сборщиком мусора.Висячие ссылки – это адреса уже уничтоженных объектов.Мусор – это неуничтоженные объекты из динамической памяти, на которые отсутствуют ссылки.RAD (Rapid Application Development)Концепция создания средств разработки программных продуктов, уделяющая особое вниманиебыстроте и удобству программирования, созданию технологического процесса, позволяющегопрограммисту максимально быстро создавать компьютерные программы.RAD предполагает, что разработка ПО осуществляется небольшой командой разработчиков за срокпорядка трёх-четырёх месяцев путём использования инкрементного прототипирования сприменением инструментальных средств визуального моделирования и разработки.

Технология6RAD предусматривает активное привлечение заказчика уже на ранних стадиях — обследованиеорганизации, выработка требований к системе. (из Википедии)JIT, MSILЯзыки бывают компилируемыми и интерпретируемыми (некомпилируемыми).JIT-компиляция (Just in Time) - технология увеличения производительности программных систем,использующих байт-код, путём компиляции байт-кода в машинный код или в другой форматнепосредственно во время работы программы. Таким образом достигается высокая скоростьвыполнения по сравнению с интерпретируемым байт-кодом (сравнимая с компилируемымиязыками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затратвремени на компиляцию (from Википедия)MSIL (Microsoft Intermediate Language) - промежуточный язык, разработанный фирмой «Microsoft»для платформы .NET Framework.

JIT-компилятор MSIL является частью CLR (англ. common languageruntime) — общей среды выполнения программ, написанных на языках .NET. В настоящий момент онпереименован в CIL (Common Intermediate Language).Java = ядро Java + JVM + окружение.Окружения Java:● Java SE (Standart Environment)● Java ME (Mobile Environment)● Jave EE (Enterprise Edition)Вся стандартная библиотека Java представлена в виде совокупности пакетов.java.<имя пакета>В C# и в Java есть некоторые части, которые выглядят как классы, но на самом деле вшиты вкомпилятор:● String в Java● System в C#Игорь ([857-871], завершено)Скалярные базовые типы данных.

Арифметические типы данных-Целочисленные типыВещественные- С плавающей точкой. Определён стандартом IEEE-754. Принят и реализованпроизводителями процессоров, а следовательно и вошёл в языки программирования.- Фиксированные - мало прижились в индустриальных языкахЦелочисленные типыВ Modula 2 Вирт ввёл integer - знаковый тип и cardinal - беззнаковый тип, при этом неявныхпреобразований между ними быть не может.Страуструп при создании C++ решил, что квалифицированные программисты понимаютособенности неявных преобразований типов (знаковые <-> беззнаковые) и сами могут решить, чтонужно написать, поэтому не нужно запрещать такие преобразования.7Вычисления с char и short производятся только через int, поэтому для производительности важно,чтобы int был родным. В таком случае потерь производительности почти нет.В C# есть uint-беззнаковые условия и можно заставить, например, дополнительно проверять выходрезультата за границы допустимых значений:uint i;cheched {for (i = 0; i >= 0; i--) { }}checked будет дополнительно проверять выход из беззнакового типа.C# использует CTS (Common Type System)1sbytebyte2shortushort4intuint8longulongРазмеры типов строго зафиксированны, а неявные преобразования возможны только в случае, еслигарантированно не происходит потери значений, т.е.

если тип, в который происходитпреобразование может хранить любое значение исходного типа.Возможные неявные преобразования:byte -> short -> int -> longushort -> int -> longuint -> longbyte -> ushort -> uint -> ulong(возможно любое преобразование в пределах строчки слева-направо, например, byte -> long)При появлении новой архитектуры factum64 встала проблема переноса программ с 32-битнойархитектуры на 64-битную. Это оказалось очень сложно и дорого. Ничего не получалось допоявления архитектуры x86-64, оказавшейся крайне энергонеэффективной, но полностьюсовместимой с x86 по командам и с 64-битным размером виртуального адресного пространства.Размер int остался равным 32 битам.Реальной, чистой 64-битности нет.Битовый сдвиг может быть как влево, так и вправо, как арифметический, так и логический, нореально есть только три кода операций, так как арифметический и логический сдвиг влевоэквивалентны:sal ⇔ shlsar - арифметический сдвиг вправо.

Старшие биты результата заполняются старшим битомаргументаshr - логический сдвиг вправо. Старшие биты результата заполняются нулёмВ C, C++, C# какой сдвиг выполняется зависит от типа целого числа. Если целое число знаковое, товыполняется арифметический сдвиг, если беззнаковое - логический. В Java беззнаковых чиселнет (за исключением 1-байтового типа ‘byte’). Поэтому чтобы отличить арифметический сдвигвправо от логического в Java пришлось ввести два разных оператора:i >> N - арифметический сдвиг8i >>> N - логическийВещественные типыПо стандарту любое вычисление с float происходит через расширение до double.

В printf всегдададут double, хотя выдаст он точность float.IEEE-754 унифицировал представления и арифметику чисел с плавающей точкой для 32 и 64 бит. Вцелом произошло упрощение, вещественных чисел за счёт принятия IEEE-754 и целых чисел засчёт унификации арифметических оперций в x86, x86-64 и нескольких RISC архитектур вроде ARM.Пример определения вещественных чисел с фиксированной точкой в Ada:type Def is delta H range L..RгдеH - шаг, по сути - точностьL, R - можно предположить, минимальное и максимальное числоКомпилятор может сам выбрать удобное ему представление. Например, если L и R не слишкомвелики, то для представления данного типа, он может выбрать целое число.

Всего требуетсяхранить (L - R)/H возможных чисел. Это определяет минимально необходимую разрядностьрегистра. Стараемся выбрать поменьше, чтобы экономить память.Впервые вещественные числа с фиксированной точкой появились в Cobol, затем - в IBM-PC x86.Кроме того, в IBM-PC x86 есть двоично десятичные числа. Каждое число кодируется своимидесятичными цифрами, каждая из которых в свою очередь кодируется 4 битами. Например 947будет закодировано как 1001.0011.0111. Не эффективно по памяти, но обеспечивает быстрыйввод/вывод.Также есть десятичный тип данных.

Decimal в SQL и decimal в C#.В Python есть только плавающий и целый (базисный\) тип. Длинных вещественных чисел нет, адлинные целые - есть. Число, если не умещается в 32 бита, становится 64-битным, а если невлезает и туда, то уже будет моделироваться несколькими числами, хотя и медленнее.Javascript, LuaВообще только один тип - Number - 64 битное вещественное число, но там нет точной точности.Почти любой язык программирования поддерживает логический тип данных как отдельный, несовместимый ни с каким другим, тип данных. Но не стоит забывать про C++ в котором ‘bool’ неявноконвертируется в ‘int’.Перечислимые типыВирт, как создал его в Pascal, так и убил его в Oberon, по двум причинам:1) При импорте из другого модуля перечислимого типа неявно импортируются и все именаконстантtype col = ( red, green, blue ); в одном модулеtype Col = ( red, green, … ); в другом модулевозникнет конфликт92) Перечислимый тип - не расширяемый, а в Oberon была концепция расширения типа, а такой(перечислимый\) тип просто противоречит ООП.Однако перечислимый тип очень подходит для визуально компонентного программирования:- Сборочное программирование - не надо ничего расширять- Например, визуальное проектирование интерфейсов.

Можем выбирать свойства объектов изсписка перечисления. Становятся доступными подсказки к коду.Заметим, что 1-ая “проблема” легко обходится разграничением пространства имён как в C++:enum Color { red, green, blue }; // глобальные константы, обращение прямое: redenum class Colour { red, green, blue }; // обращение: Colour::redВ некоторых случаях для флагов используются целочисленные значения, которые можнокомбинировать с помощью битовых операций &, |, таким образом избегается необходимостьиспользовать массив флагов. Например,int Maximized = 1 << 0;int Minimized = 1 << 1;int Centered = 1 << 2;int TopMost = 1 << 3;int BorderLess = 1 << 4;// Для создания вируса можно скомбинировать флаги Maximized, TopMost иBorderLessCreateWindow(“Virus”, Maximized | TopMost | BorderLess);Повторим проблемы перечислимого типа:- Неявный экспорт констант- НерасширяемостьНо он все равно вошёл в компилируемые языки, хотя и с изменениями.В C#: enum States { U, A, … }+ Можно выбрать базовый тип перечисления из встроенных числовых типов (byte, short, int),таким образом сэкономив память для перечислений с небольшим количеством констант (т.е.для большинства)+ выделяется в отдельное пространство имёнНо в целом дано разработать иерархию для наследования очень сильно.

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