Файл: Языки гипертекстовой разметки (Базовая иерархия языков).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.06.2023

Просмотров: 65

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

Учитывая современный напор и количество нефильтрованной информации, поступающей пользователям ежедневно, появляется ряд требований, которые необходимо выполнить сегодняшнему специалисту. Но основным из всех является умение свободного поиска, обработки, распределения использования информации. Естественно, что среди таких требований также находится необходимость хотя бы первоначального знакомства с языками программирования.

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

Объектом исследования послужила классификация языков программирования и критерии выбора среды и языка разработки.

Исходя из вышесказанного, определяется цель исследования: изучение классификации языков программирования, анализ критериев выбора среды и языка программирования.

Для достижения данной цели необходимо выполнить следующие задачи:

  1. рассмотреть классификацию языков программирования;
  2. изучить критерии выбора среды разработки;
  3. проанализировать критерии выбора языка разработки.

Глава 1 Классификация языков

Базовая иерархия языков

Программирование – это искусство создавать программные продукты, которые написаны на языке программирования[1]. Язык программирования – это формальная знаковая система, которая предназначена для написания программ, понятной для исполнителя (в нашем рассмотрении – это компьютер).

Язык программирования (англ. Programming language) – система обозначений для описания алгоритмов и структур данных, определенная искусственная формальная система, средствами которой можно выражать алгоритмы. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполняет исполнитель (компьютер) под ее управлением[2].


Со времени создания первых программируемых машин было создано более двух с половиной тысяч языков программирования. Ежегодно их число пополняется новыми. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты обычно применяют в своей работе несколько языков программирования.

Языки программирования низкого уровня

Первым компьютерам приходилось программировать двоичными машинными кодами. Однако программировать таким образом – достаточно трудоемкая и сложная задача. Для упрощения этой задачи стали появляться языки программирования низкого уровня, которые позволяли задавать машинные команды в более понятном для человека виде. Для преобразования их в двоичный код были созданы специальные программы - трансляторы.

Пример машинного кода и представления его на ассемблере

Трансляторы делятся на:

  • компиляторы – превращают текст программы в машинный код, который можно сохранить и затем использовать уже без компилятора (примером являются исполняемые файлы с расширением *. exe).
  • интерпретаторы – превращают часть программы в машинный код, выполняют и после этого переходят к следующей части. При этом каждый раз при выполнении программы используется интерпретатор[3].

Примером языка низкого уровня является ассемблер. Языки низкого уровня ориентированы на конкретный тип процессора и учитывают его особенности, поэтому для переноса программы на ассемблере на другую аппаратную платформу ее нужно почти полностью переписать. Определенные различия имеются и в синтаксисе программ под разные компиляторы. Правда, центральные процессоры для компьютеров фирм AMD и Intel практически совместимы и отличаются лишь некоторыми специфическими командами. А вот специализированные процессоры для других устройств, например, видеокарт, телефонов содержат существенные различия[4].

Преимущества

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

Недостатки

  • Программист, работающий с языками низкого уровня, должен быть высокой квалификации, хорошо понимать устройство микропроцессорной системы, для которой создается программа. Так, если программа создается для компьютера, нужно знать устройство компьютера и, особенно, устройство и особенности работы его процессора.
  • результирующая программа не может быть перенесена на компьютер или устройство с другим типом процессора.
  • значительное время разработки больших и сложных программ.

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

Ассемблер – язык низкого уровня, что широко применяется до сих пор[5].

Языки программирования высокого уровня

Можно сказать более понятными человеку, чем компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому созданные программы легко переносятся с компьютера на компьютер. В основном достаточно просто перекомпилировать программу под определенную компьютерную архитектурную и операционную систему. Разрабатывать программы на таких языках гораздо проще и ошибок допускается меньше. Значительно сокращается время разработки программы, что особенно важно при работе над большими программными проектами[6].

К языкам программирования высокого уровня относятся:

  • Фортран
  • Кобол
  • Алгол
  • Pascal
  • Java
  • C
  • C++
  • C#
  • Objective C
  • Smalltalk
  • Delphi

Недостатком языков высокого уровня является больший размер программ по сравнению с программами на языке низкого уровня. Поэтому в основном языки высокого уровня используются для разработок программного обеспечения компьютеров и устройств, которые имеют большой объем памяти. А разные подвиды ассемблера применяются для программирования других устройств, где критичным является размер программы[7].

За 60 с лишним лет развития ЭВМ были разработаны сотни языков программирования, многие из которых используются и сейчас (например Бейсик и Фортран были впервые применены уже в конце 1950-х годов), ежегодно появляется несколько новых языков промышленного применения (не считая десятков экспериментальных).

Для того чтобы разобраться в них, языки классифицируют по важнейшим признакам:

  • эволюционным – поколения языков;
  • функциональным – по назначению, исполняемым функциям (описательные, логические, математические);
  • уровню языка – то есть уровню обобщения в словах-операторах языка (низкого, среднего, высокого);
  • области применения – то есть где применяется язык (системные, сетевые, встроенные и пр[8].

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


Базовая иерархия языков программирования является системно-параллельной иерархией, то есть пакета тесно связанных иерархий: этапов программирования, поколений языков программирования и самих языков – протоколов преобразования структурной и алгоритмической информации: структурно-дескриптивного описания данных и алгоритма их обработки. Поэтому все языки делятся на два полярных типа: дескриптивные (декларативные) и алгоритмические (командные). Однако, так как в любом алгоритме существует необходимость описания данных и структур, а в любой конструкции — порядок её сборки, то реальные языки являются частично декларативными, а частично алгоритмическими, что отражается в наличии описательной и командной (рецептурной) частей любой компьютерной программы[9].

Рассмотрение пакета параллельных иерархий языков программирования целесообразно начинать с иерархии этапов программирования.

Этап 1.

Постановка задачи программирования - включает формализацию цели программирования, часто количественно-математическую, но всегда — формально-логическую, позволяющую осуществить все последующие этапы и достичь поставленной цели программирования после выполнения его этапов.

Этап 2.

Алгоритмизация – включает построение блок-схемы алгоритма, то есть последовательных шагов обработки данных и структуры самих данных для работы программы.

Этап 3.

«Кодирование» - (от ам. Традиционного слэнга «coding») - написание текста программы на базовом текстовом языке программирования, который может быть понятен транслятору — программе, преобразующей текст в бинарный код.

Этап 4.

Трансляция – перевод программы в бинарный «объектный» код, производимая транслятором без участия человека, не считая процесса отладки.

Этап 5.

Сборка исполняемого модуля программы – представляет собой автоматическую стыковку всех объектных модулей, необходимых для получения работающей программы — последовательности команд процессора компьютера, на котором выполняется задуманный алгоритм в виде двоичного кода, понятного процессору[10].

Первый этап программирования — это наиболее общий, высший иерархический уровень процесса программирования, а пятый — выполняемый автоматически компьютером — низший. Здесь к мету заметить, что отношение программистов к этим этапам сразу определяет и иерархическое положение программиста. Самоучки, любители, фрилансеры часто пропускают 2 первых этапа программирования, что часто превращает их труд в «мартышкин» - программа либо не работает, либо выполняет не то, что хотел программист. Грамотные техники-программисты (уровень колледжа) обычно начинают со второго этапа, так как первый — постановку задачи им дает руководитель проекта.


Перечисленные этапы программирования в точности соответствуют поколениям языков (generation of languages, GL) — иерархии компьютерных языков, только в обратном порядке[11].

Поколения языков программирования

Поколение 1GL.

Машинные языки, языки низкого уровня – двоичные языки процессоров, представляющие собой набор (алфавит) команд, записанных в двоичном коде (0,1), которые данный процессор может выполнить непосредственно, если эти команды ввести в его память в виде последовательности или сразу подать в арифметическо-логическое устройство процессора. Примеры: язык процессора IBM-PC, язык ARM-процессора.

Поколение 2GL.

Ассемблеры, автокоды, системные языки, языки среднего уровня – текстовые языки, понятные человеку и однозначно переводимые (транслируемые) в языки низкого уровня, то есть машинный двоичный код. Программирование на 2GL на порядок производительнее, чем на 1GL, так как более удобны для человеческого восприятия[12]. Примеры: Макроссемблер, С, PL/1.

Поколение 3GL.

Языки высокого уровня – текстовые языки, приближенные по словарю и синтаксису к человеческому языку (обычно утрированному английскому, пиндосу), позволяющие записывать программные конструкции в форме, удобной для человеческого мышления и подобные обычному тексту — конспекту, стенограмме. Программирование на 3GL на порядок производительнее, чем на 2GL, так как более удобны для человеческого восприятия и на порядок короче ассемблерных. Примеры: бейсик, фортран, PHP и практически все сетевые языки.

Поколение 4GL.

Языки визуального программирования – языки блок-схем, позволяющие отображать алгоритмы в программных проектах, что облегчает создание и анализ алгоритмов. Программирование на 4GL на порядок производительнее, чем на 3GL. Примеры: RAD-системы, CAD-пакеты, OLAP-системы[13].

Поколение 5GL.

Интеллектуальные языки программирования - позволяют передать функцию создания алгоритмов компьютеру, а за человеком оставить лишь постановку задачи. Программирование на 5GL на порядок производительнее, чем на 4GL. Примеры: система MatCAD, экспертные системы.

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