Меню

Что такое мощность языка программирования

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

date image2015-06-04
views image756

facebook icon vkontakte icon twitter icon odnoklasniki icon

Язык – это естественная или искусственная знаковая система для общения и передачи информации.

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

Рис. 1.7. Языки, участвующие в создании программы.

Основные характеристики языков программирования [2]:

1. Уровень языка. Характеризуется сложностью задач, решаемых с помощью этого языка. Программирование представляет собой отображение программных объектов, понятий и явлений предметной области задачи. Чем более адекватно можно выполнить это отображение, тем выше уровень языка программирования. А отображение будет выполнено тем лучше, чем богаче возможности типообразования языка программирования.

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

3. Концептуальная целостность. Характеризуется свойствами совокупности понятий, служащих для описания этого языка.

4. Надежность языка. Должна обеспечивать минимум ошибок при написании программ. Более того, язык должен быть таким, чтобы неправильные программы было трудно писать.

5. Удобочитаемость. Это легкость восприятия программ человеком. Особенно важна при коллективной работе.

6. Полнота. Характеризует способность описать класс задач в некоторой предметной области.

7. Гибкость. Характеризует легкость выражения необходимых действий.

8. Мобильность. Независимость от аппаратных средств, обеспечивающая переносимость программного обеспечения.

9. Эффективность реализации. Должна включать не только эффективную реализацию самого транслятора, но и генерацию им кода программ.

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

Уровень языка связан с историей и эволюцией языков программирования:

1. Поколение 0 (языки нулевого уровня). Это машинные языки. Они появились с появлением первых ЭВМ в середине 40-х годов ХХ века.

2. Первое поколение – ассемблеры. Фактически это те же машинные языки, но программа составляется не в виде двоичных наборов символов, а с помощью более наглядных мнемонических обозначений. Хотя в них одна ассемблерная команда порождает одну машинную (язык типа 1:1).

3. Второе поколение – макроассемблеры. Это языки типа 1:n. Используют дополнительные более сложные конструкции. Эти два поколения иногда объединяют. Появились в конце 50-х годов.

4. Третье поколение – процедурные языки. Это универсальные языки высокого уровня, с помощью которых можно решать задачи из любых областей. Появились в начале 60-х годов. Это Алгол, Кобол, Фортран, позже Паскаль, Си и другие.

5. Четвертое поколение – проблемные языки или языки поддержки сложных структур данных. Это специализированные языки описания задач типа «заполни бланк». Используя подобный язык, пользователь сообщает только, какую задачу надо решить и с какими данными. Например SQL.

6. Пятое поколение – языки искусственного интеллекта, такие, как Prolog, Lisp.

7. Шестое поколение – языки нейронных сетей или самообучающиеся языки.

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

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

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

Читайте также:  Как мультиметром измерить потребляемую мощность электроприбора мультиметром

Семейство первых универсальных языков (прародителей):

Источник

О взаимосвязи уровня и мощности языка Чем выше уровень языка, тем ниже его мощность и наоборот

Цели занятия: студент должен

ü классификацию языков программирования;

ü назначение и основные характеристики языков программирования;

ü подбирать необходимые языки программирования для решения конкретной задачи.

1. Язык программирования. Основные характеристики языков программирования.

2. Классификация языков программирования.

3. Выбор языка программирования.

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

· Язык обладает характеристиками.

· Язык содержит абстракции.

· Язык поддерживает методологию программирования.

· Язык принадлежит к семейству языков.

· Язык может быть специализированным для некоторой предметной области.

Введение в языки программирования

Основная задача языка программирования –

Помочь программисту в совершенствовании его искусства.

С точки зрения программирования нас интересуют все те языки, которые участвуют в создании программы. На рис. 4.1 схематически указаны такие языки.

Рассматривать язык программирования можно с нескольких позиций. Перечислим те из них, которые будут нам особенно полезны [Кауфман 1986].

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

· Семиотическая позиция, отражающая особенности языка как знаковой системы.

· Математическая позиция, представляющая математическую модель изучаемого языка.

· Реализаторская позиция, отражающая взгляд на язык реализаторов транслятора с этого языка и авторов документации.

· Авторская позиция, отражающая позицию автора языка. Для понимания этой позиции следует обращаться к работам авторов языков программирования. Например, точка зрения Никлауса Вирта отражена в статье [Вирт 1996].

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

Язык программирования (алгоритмический язык) — набор правил, определяющих, какие последовательности символов составляют программу (синтаксические правила) и какие вычисления описывает программа (семантические правила).

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

Выделим три основные характеристики языков программирования [Калинин, Мацкевич 1991].

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

О том, чем определяется уровень языка программирования Интуитивно любой программист отличит язык программирования высокого уровня от языка программирования низкого уровня. В чем же состоит различие? Чем определяется уровень? Программирование представляет собой отображение в программах объектов, понятий и явлений предметной области задачи. Чем более адекватно можно выполнить это отображение, тем выше уровень языка программирования. А отображение будет выполнено тем лучше, чем богаче возможности типообразования языка программирования.

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

О взаимосвязи уровня и мощности языка Чем выше уровень языка, тем ниже его мощность и наоборот.

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

Читайте также:  Сварочные аппараты различной мощности

o Экономия понятий — язык должен достигать своей Максимальной мощности минимальным количеством понятий.

o Ортогональность понятий — между понятиями не должно быть взаимного влияния. Если понятие используется в различных контекстах, то правило его использования должно быть одним и тем же.

О неортогональности понятий даже самых лучших языков К сожалению, даже такие языки, как Pascal, допускают неортогональные конструкции. Например, пользователь может определить процедуры только с фиксированным числом параметров, однако некоторые стандартные процедуры (например, writeln()) могут быть вызваны с переменным числом параметров.

o Единообразие понятий — требование согласованного единого подхода к описанию и использованию всех понятий.

Существует большое количество других характеристик.

· Надежность — язык должен обеспечивать минимум ошибок при написании программ. Более того, язык должен быть таким, чтобы неправильные программы было трудно писать.

· Удобочитаемость — легкость восприятия программ человеком. Это характеристика важна при коллективной работе, когда несколько человек работают с одними и теми же текстами программ.

· Полнота — характеризует способность описать класс задач в некоторой предметной области.

· Гибкость — характеризует легкость выражения необходимых действий.

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

· Мобильность — независимость от аппаратных средств, обеспечивающая переносимость программного обеспечения.

· Эффективность — обеспечение эффективной реализации, которая включает:

o эффективную реализацию компилятора;

o эффективную генерацию компилятором кода программ.

И это только некоторые из свойств и характеристик. В одном из докладов военно-морскому флоту [Фоке 1985] исследователи насчитали более 2570 различных возможностей или свойств, которые можно выделить в языках программирования.

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

Источник



Введение в понимание программирования 😉

В честь нового года решил сделать обзорную статью по программированию и языках программирования. Профессиональным программистам просьба не пинать т.к. пишется в стиле «не для специалистов».

Если будет непонятно – не расстраивайтесь. Очень многие профессиональные программисты так же ничего в этом не понимают (что не мешает им эффективно работать).

Итак, КО мог бы сказать, что язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Для того чтобы понять что такое язык программирования нужно понять, что такое… Инструкция.

Многие сталкивались в жизни с различными инструкциями и руководствами, так вот для понимания сути вопроса – программа, это инструкция или руководство для вычислительной машины (в частности компьютера).

Рассмотрим простую инструкцию – она написана на каком-либо языке, содержит разделы, приложения и имеет определенную структуру и стиль.

Структура и стиль инструкции в программировании называется парадигмой.
Разделы инструкции в программировании называют функциями.
Язык инструкции – язык программирования.

Основные парадигмы программирования:

Класс декларативного программирования – это класс парадигм которые вместо алгоритма описывают результат который требуется получить. Представители класса:

Чисто декларативное программирование, кстати, не всеми программистами считается программированием. Это такие языки как SQL, HTML. Кто видел код тот поймет почему программисты так считают. «Код» не обладает всеми возможностями языка программирования и является простым описанием требуемого результата.

Логическое программирование – программирование на основе фактов и моделей связи между фактами. Единственный вменяемый представитель: Prolog

Читайте также:  Как увеличить мощность тока не изменяя напряжения

Функциональное программирование – для использования программирования используется стиль математических операций. Если не знакомы с дискретной математикой, то ничего не понятно от слова совсем. Представители этой парадигмы: LISP, Erlang, Scala, Miranda, Haskell.
Пример программы (Hello World) на LISP:
(format t «Hello, world!

%»)
Пример чуть сложнее:
(defun fibonacci (n)
(loop repeat n
for a = 0 then b
and for b = 1 then (+ a b)
finally (return b)))

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

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

Пример программы (С++):

int main()
<
std::cout Стековое программирование – программирование на основе принципа стека. На русском звучит так: «Последний пришел-первый вышел», в результате родилась шутка:
Тайна речи магистра Йоды открыта:
Старым программистом на Форте он был…

Пример программы на Форте:

\ Напечатать знак числа
: .SIGN ( n — )
?DUP 0= IF
.» НОЛЬ»
ELSE
0> IF
.» ПОЛОЖИТЕЛЬНОЕ ЧИСЛО» ELSE
.» ОТРИЦАТЕЛЬНОЕ ЧИСЛО» THEN
THEN
;

Объектно-ориентированное программирование (ООП) – как следует из названия программирование на основе объектов которые являются экземплярами классов. Является важной опцией языков программирвоания.

В ООП производятся операции со свойствами экземпляров классов путем выполнения методов. Методы – набор инструкций по изменению классов.

Основной концепцией ООП является система ООП на классах:

Чтобы понятно перевести это на русский давайте посмотрим на домашних животных. Возьмем кота Ваську и собаку Жучку.
У всех животных есть общие черты, значит корневой класс будет «животные», кошка и собака относятся к млекопитающим, подкласс «млекопитающие», Васька – кот, а Жучка — собака, но они не являются «родственниками». Поэтому у нас будут 2 подкласса «Собаки» и «Коты». Итоговая структура классов:
Класс Животные
Свойство: живет
Метод: размножается
Метод: питается
Метод: умирает
Класс Млекопитающие, наследует класс Животные
Свойство: кормит молоком детенышей
Класс Собака, наследует класс Млекопитающие
Свойство: лает
Класс Кот, наследует класс Млекопитающие
Свойство: мурчит
И теперь пример
Васька – экземпляр класса Кот
Жучка – экземпляр класса Собака

Жучка и Васька могут иметь свойства: живет (от Животных), кормить молоком (от Млекопитающих), а так же могут: питаться, размножатся, умирать.
Но Жучка может лаять и не может мурчать, а Васька может мурчать, но не может лаять поскольку их «фирменные» классы не содержат соответствующих свойств.

Помимо классов есть программирование основанное на прототипах. В этом случае отсутствует описание класса, оно выводится в момент написания программы. Язык программирования для примера: JavaScript.

Является парадигмой программирования, но не является определяющим для языка программирования:

Структурное программирование – оформление программы так чтобы она легко читалась и понималась другими программистами. То есть это простой и понятный стиль написание программы. Язык, который частично заставляет это делать, Python.

«Чистых» языков программирования (которые бы использовали только одну парадигму) не существует, каждый язык отражает в себе одну или несколько парадигм.

Если тема будет интересна то напишу обзоры для Perl, Python, C++, JavaScript, Prolog, SQL, HTML+CSS.

Всех с наступающим праздником! Счастья, здоровья, удачи!

Источник