Технологии обработки текстовой информации

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 22:52, курсовая работа

Описание работы

Целью курсовой работы является изучение классификации языков программирования и их развития.
Цели исследования:
1. Просмотреть общее сведения и уровни языков программирования.
2. Просмотреть историю развития языков программирования.
3. Сделать обзор современных языков программирования.

Содержание работы

ВВЕДЕНИЕ 3
1 ПРЕДСТАВЛЕНИЕ ТЕКСТОВОЙ ИНФОРМАЦИИ В ЭВМ 5
1.1 Непрерывная и дискретная информация 5
1.2 Кодирование информации 8
2 ПРОГРАММЫ СОЗДАНИЯ И ОФОРМЛЕНИЯ ТЕКСТОВЫХ ДОКУМЕНТОВ 10
2.1 Возможности текстовых редакторов 10
2.2 Пользовательские интерфейсы 14
ВЫВОДЫ И ПРЕДЛОЖЕНИЯ 20
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 21

Файлы: 1 файл

!!!!!!.doc

— 154.50 Кб (Скачать файл)

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++. [14]

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.

Разработка Java началась в 1990 году, первая официальная  версия — Java 1.0, — была выпущена только в 1996 году. К 1998 году была разработана обновлённая спецификация JDK 1.2, вышедшая под наименованием Java 2. Язык практически не изменился — было добавлено одно ключевое слово strictfp. Платформа получила следующие дополнения:

  • Библиотека Swing  для создания графического интерфейса пользователя. 
  • Коллекции (JSR 166).
  • Поддержка файлов Policy и цифровых сертификатов пользователя.
  • Библиотека Accessibility.
  • Java 2D.
  • Поддержка технологии drag-and-drop.
  • Полная поддержка Unicode., включая поддержку ввода на японском, китайском и корейском языках.
  • Поддержка воспроизведения аудиофайлов нескольких популярных форматов.
  • Полная поддержка технологии CORBA.
  • JIT-компилятор, улучшенная производительность.
  • Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ. 

Спецификация Java 5.0 была выпущена в сентябре 2004 года. C этой версии изменена официальная индексация, вместо Java 1.5 правильнее называть Java 5.0. Внутренняя же индексация Sun осталась прежней - 1.x. Минорные изменения теперь включаются без изменения индексации, для этого используется слово "Update" или литера "u", например Java Development Kit 5.0 Update 22. Предполагается, что в обновления могут входить как исправления ошибок так и небольшие добавления в API, JVM.

В данной версии разработчики внесли в язык целый  ряд принципиальных дополнений:

  • Перечислимые типы. Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
  • Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
  • Перечисление может реализовывать интерфейсы.
  • Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
  • Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.
  • Средства обобщенного программирования  — механизм, аналогичный Eiffel. (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
  • Методы с неопределённым числом параметров.
  • Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-врапперами (например, между int — Integer). Наличие такой возможности сокращает код, поскольку исключает необходимость выполнения явных преобразований типов в очевидных случаях.
  • Разрешён импорт статических полей и методов.
  • В язык введён цикл по коллекции объектов.
  • Было введено использование Javadoc-комментариев, которые используются для автоматического оформления документации по комментариям в исходном коде.[6]

Релиз версии Java 6 состоялся 11 декабря 2006 года. Изменена официальная индексация - вместо ожидаемой 6.0 версия значится как 6. Минорные изменения как и в Java 5.0 вносятся в обычные обновления версии, например Java SE Development Kit 6 Update 27.

Релиз версии Java 7 состоялся 28 июля 2011 года. В финальную версию Java SE 7 не были включены все ранее запланированные изменения. Согласно плану развития (план «Б»), включение нововведений будет разбито на две части: Java SE 7 и Java SE 8, намеченный на конец 2012 года.

В новой версии, получившей название Java SE 7 (Java Platform, Standard Edition 7), помимо исправления большого количества ошибок были представлено несколько новшеств. Так, например, в качестве эталонной реализации Java SE 7 использован не проприетарный пакет JDK, а его открытая реализация OpenJDK, а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP (Java Community Process) и сообществом OpenJDK. Все поставляемые Oracle бинарные файлы эталонной реализации Java SE 7 собраны на основе кодовой базы OpenJDK, сама эталонная реализация полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких как Rudy, Python b JavaScript, поддержка загрузки классов по URL, обновленный XML-стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие. [8]

 

Список нововведений:

  • Поддержка динамически-типизированных языков (InvokeDynamic) — расширение JVM (семантики байт-кода), языка Java для поддержки динамически-типизированных языков.
  • Строгая проверка class-файлов — class-файлы версии 51 (SE 7) или более поздней версии должны быть проверены typechecking верификатором; JVM не должна переключаться на старый верификатор.
  • Изменение синтаксиса языка Java (Project Coin) — частичные изменения в языке Java, предназначенные для упрощения общих задач программирования:
    • Использование класса String в блоке switch.
    • Закрытие используемых ресурсов в блоке try (try-with-resources) — работает при использовании интерфейса AutoCloseable.
    • Объединённая обработка исключений в блоке catch (multi-catch exceptions) — перечисление обрабатываемых исключений в catch (… | … | …).
    • Повторное выбрасывание исключений (rethrowing exceptions) — передача возникшего исключения «вверх» по стеку вызовов.
    • Подчёркивания в числовых литералах для лучшего восприятия больших чисел.
    • Изменение вывода типа в Java generic при создании объекта.
    • Использование двоичных чисел (binary literals) — префикс «0b» укажет, что используется двоичное число.
    • Упрощение вызова методов varargs — уменьшение предупреждений при вызове метода с переменным числом входящих переменных.
  • Модификация загрузчика классов (class-loader) — избежание тупиковых ситуаций в неиерархической топологии загрузки классов.
  • Закрытие ресурсов, открытых URLClassLoader.
  • Обновление коллекций (JSR 166y).
  • Поддержка Unicode 6.0.
  • Отделение языка пользователя и языка пользовательского интерфейса — обновление обработки языков для отделения локали от языка пользовательского интерфейса.
  • Новые интерфейсы I/O для платформы Java (nio.2).
  • Использование JDBC 4.1 и Rowset 1.1. [11]

Программы, написанные на Java, имеют репутацию более медленных  и занимающих больше оперативной памяти, чем написанные на языке Си. Тем не менее, скорость выполнения программ, написанных на языке Java, была существенно улучшена с выпуском в 1997—1998 годах так называемого JIT-компилятора в версии 1.1 в дополнение к другим особенностям языка для поддержки лучшего анализа кода (такие как внутренние классы, класс StringBuffer, упрощенные логические вычисления и т. д.). Кроме того была произведена оптимизация виртуальной машины Java — с 2000 года для этого используется виртуальная машина HotSport. В настоящее время, код Java 2.0 приблизительно лишь в 2 раза медленнее кода, написанного на языке Cи.

Некоторые платформы предлагают аппаратную поддержку выполнения для Java. К примеру, микроконтроллеры выполняющие код Java на аппаратном обеспечении вместо программной JVM, а также основанные на ARM процессоры, которые поддерживают выполнение байткода Java через опцию Jazelle.

Основные возможности

  • Автоматическое управление памятью;
  • расширенные возможности обработки исключительных ситуаций;
  • богатый набор средств фильтрации ввода/вывода;
  • набор стандартных коллекций, таких как массив, список, стек и т. п.;
  • наличие простых средств создания сетевых приложений (в том числе с    использованием протокола RMI);
  • наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать   ответы;
  • встроенные в язык средства создания многопоточных приложений;
  • унифицированный доступ к базам данных:
  • на уровне отдельных SQL-запросов — на основе JDBC, SQLJ;
  • на уровне концепции объектов, обладающих способностью к хранению в базе данных — на основе Java Data Objects (англ.) и Java Persistence API (англ.);
  • поддержка шаблонов (начиная с версии 1.5);
  • параллельное выполнение программ.[12]
    1. C++

Безусловно, С++ восходит, главным образом, к C. C сохранен как подмножество, поэтому сделанного в C акцента на средствах низкого уровня достаточно, чтобы справляться с самыми насущными задачами системного программирования. C, в свою очередь, многим обязан своему предшественнику BCPL.

Название С++ - изобретение лета 1983-его. Более ранние версии языка использовались начиная с 1980-ого и были известны как "C с Классами". Первоначально язык был придуман потому, что автор хотел написать событийно управляемые модели для чего был бы идеален Simula67, если не принимать во внимание эффективность. "C с Классами" использовался для крупных проектов моделирования, в которых строго тестировались возможности написания программ, требующих (только) минимального пространства памяти и времени на выполнение. В "C с Классами" не хватало перегрузки операций, ссылок, виртуальных функций и многих деталей. С++ был впервые введен за пределами исследовательской группы автора в июле 1983-го. Однако тогда многие особенности С++ были еще не придуманы.

Название С++ выдумал Рик Масситти. Название указывает на эволюционную природу перехода к нему от C. "++" - это операция приращения в C. Чуть более короткое имя C++ является синтаксической ошибкой, кроме того, оно уже было использовано как имя совсем другого языка. Знатоки семантики Cи находят, что С++ хуже, чем C ++. Названия D язык не получил, поскольку он является расширением C и в нем не делается попыток исцелиться от проблем путем выбрасывания различных особенностей. [5]

С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Изначально С++ был разработан, чтобы автору и его друзьям не приходилось программировать на ассемблере, C или других современных языках высокого уровня. Основным его предназначением было сделать написание хороших программ более простым и приятным для отдельного программиста. Плана разработки С++ на бумаге никогда не было. Проект, документация и реализация двигались одновременно. Разумеется, внешний интерфейс С++ был написан на С++. Никогда не существовало "Проекта С++" и "Комитета по разработке С++". Поэтому С++ развивался и продолжает развиваться во всех направлениях, чтобы справляться со сложностями, с которыми сталкиваются пользователи, а также в процессе дискуссий автора с его друзьями и коллегами.

Информация о работе Технологии обработки текстовой информации