Костин Г. В., г. Пермь

Языки программирования: эволюция и анализ

Представлен анализ 56 ЯП. Рассмотрен ЯП как интерфейс разработчика с ПК, а процесс разработки как процесс перевода задачи из языка мировоззрения заказчика в язык “мировоззрения” компьютера. Рассмотрены темы: создание языков, их популярность, влияние ЯП на характеристики разрабатываемого ПО, связь ЯП с CASE средствами, языки сценариев и  специализированные ЯП, человеческий фактор в ЯП, методы анализа и сравнения ЯП, эволюция ЯП, место ЯП в разработке ПО.

Язык – это интерфейс между двумя субъектами.

Примеры:

1. Человеческий язык, в частности слова, жесты, интонации...

2. Интерфейсы (Com порта, пользователя, API)

Требование к языку коммуникации: совпадение его у субъектов коммуникации, для эффективной коммуникации близость к способу мышления субъектов.

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

Из близости к человеку будут следовать переносимость разрабатываемого ПО и его безопасность, низкий уровень детализации и, естественно, более высокий уровень ЯП.

Аспекты размера ЯП: широта средств языка по уровням абстракции и широта по областям применения - универсальность/ специализированность ЯП.

Размер ЯП – есть два крайних варианта:

1. В ЯП следует включать только то, без чего невозможно обойтись(Oberon).

2. В ЯП следует включать все, что когда-либо может понадобиться(C++, Ada)

Предпочитаемый выбор ЯП определяется психотипом.

Программирование – это процесс переноса мыслей разработчика на компьютер (см. рис. 2). Фактически- процесс  перевода задачи из языка мировоззрения заказчика в язык способа мышления компьютера. От автоматизации этого перевода в значительной степени зависит производительность разработки. Значительная часть разработок в области программирования направлена на “подтягивания” компьютера к клиенту(к примеру специализированные  средства (1C) и ЯП(PHP) либо на автоматизацию перевода(средства генерации кода по спецификациям(IDL),  Case средства). Их применение может дать рост скорости разработки в 5-10 раз (серебреная пуля существует!).

Некоторые тезисы:

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

2. Человеческий фактор постоянно увеличивает своё влияние на сферу ЯП. Если изначально ЯП и способ мышления подстраивался к “железу”, то теперь  “железо” подстраивается к способу мышления.

3. Тема ЯП чрезвычайно эмоционально важна для разработчиков так как ЯП формирует наш способ мышления.

4. Невозможность безошибочной работы, что обуславливает, к примеру, существование типизации.

6. Консерватизм в выборе ЯП. Имеют большое значение исторические и психологические факторы.

7. Не редко разработчики занижают  уровень языка.

8. Анализ ЯП: Умозрительные критерии неубедительны и ограничены, основной критерий ЯП- это практика массового использования.

9. Требования к ЯП и критерии оценки сильно зависят от его использования.

10. Представления разработчика ЯП о том, как должны писаться программы, очень глубоко отражаются в создаваемом языке. Они определяют его. Это нужно учитывать при анализе и изучении ЯП.

11. Эволюция средств разработки идет по пути повышения уровня абстракции  (от аппаратного обеспечения) средств что ведет к повышению их “юзабельности”  и их специализации для решения конкретного круга—от вопроса “как?” к вопросу “что?”. В результате специализации появились спец. языки, применение которых позволило увеличить производительность разработчика на порядок.

12. Эволюция “объекта внимания” языков: компьютер–прикладные задачи–человек

13. Сценарные языки за несколько лет на порядок стали более популярны. Их предназначение- управление компонентами сложных программных систем(сборка из готовых компонентов и их настройка).

Сейчас до 95% функциональности новой программы обеспечивается за счет готовых модулей. Нужно лишь их  настроить и связать. А для этого сценарные ЯП подошли прекрасно. Основные черты: простота, нетипизированность, интерпретируемость и возможность динамической кодогенерации. Визуальные среды (к примеру, Delphi) и сценарные языки – это два подхода (графический и текстовый) к решению одной и той же проблемы сборки приложения из готовых компонент.

Литература

1.    Бентли Д. Жемчужины творчества программистов. – М.: Радио и связь, 1990.

2.    Брукс Ф. Мифический человеко-месяц. – СПб.: Символ, 2001.

3.    Бен-Ари М.. Языки программирования. – М.: Мир, 2001.

4.    Страуструп Б. Язык программирования C++ . –М.: Бином, 2001

5.    Страуструп Б. Дизайн и эволюция C++ . – М.: ДМК, 2000.

6.    Мейер Б. Методы программирования. –  М.:  Мир,1982

7.    Дейкстра.  Наука программирования. – М., 1982.

8.    Мёссенбёк Х., Вирт Н. Язык программирования Оберон-2 / Институт компьютерных систем, ETH. –  Цюрих, 1996

9.    Вирт Н. От модулы к Оберону. – ИнфоАрт ,1998.

10.   Фьюэpа А. Языки программирования Ада, Си, Паскаль: Сравнение и оценка. – М.: Радио и связь, 1989.

11.    Баpдинова Т.Ю.    От Паскаля к Аде: Финансы и Статистика. –  1990.

12.    Пеpминов. О.H. Введение в язык программирования Ада. – М.:  Радио и связь, 1991.

13.    Янг. С. Алгоритмические языки реального времени: Конструирование и разработка. – М.: Мир, 1985.

14.    Hоден П., Китте К. Алгебраическая алгоpитмика. С упражнениями    и решениями. – М.: Миp, 1999.

15.    Кнут Д. Искусство программирования для ЭВМ. – Т. 2, 3. – 1999.

16.   Сван T.  Секреты 32-разрядного программирования в Delphi

17.    Керниган Б., Ричи Д. Язык C. –Финансы и статистика, 1992.

18.    Арнольд К., Гослинг Дж. Язык программирования Java

19.    Шварц Р., Кристиансен Т. Изучаем Perl. –  Изд-во BHV, 1999.

20.    Буч Г. Объектно-ориентированное проектирование с примерами применений. –  СПб.: Невский диалект, 1998.

21.    Дейкстра Э. Дисциплина программирования.

22.    Вирт Н. Алгоритмы и структуры данных. –М., 2001.

23.    Рудаков П. И., Финогенов К. Г. Программируем на языке ассемблер IBM PC. – Обнинск, 1999.

24.    Армстронг Дж. Секреты UNIX. –  М.: Диалектика,1999.

25.    Дейт К. Д. Введение в системы баз данных. –  М.: Диалектика, 2002

26.    Пратт. Языки программирования. – М., 1979

27.    Себеста. Основные принципы  языков программирования. –  М., 2002.

28.    Таксиль Л. Забавная библия (Б-ка атеистической литературы). – М., 1976.

29.    Программирование на языке Basic для компьютера ZX Spectrum 48K. – Спб.,1993.

30.    Кинг Д. Создание эффективного ПО. –  М.: Мир, 1991.

31.    Бек Л. Введение в системное программирование. – М.: Мир, 1988.

32.    Данкан Р. Профессиональная работа в MS DOS. – М.: Мир, 1993.

33.    Алдер Г. Технология НЛП. СПб., 2001.

34.   CASE-технологии, Современные методы и средства проектирования информационных систем, А.М.Вендров, Методологии и технологии проектирования ИС, 1997, www.citforum.ru

35.    Барышнев А.С.JPI Modula-2. – Минск, 1990.

36.    Грисc.  Наука программирования. –  М.: Мир, 1984.

37.    Programmer's Stone  (c) Alan Carter and Colston Sanger, 1997 www.euro.ru /~programmersstone

38.    Advanced Programming Language Design. Raphael Finkel Addison-Wesley.1996

39.    Лисков. Использование абстракций и спецификаций для разработки программ. –  М.: Мир, 1989.

40.    Фунти К. Языки программирования и схемотехника СБИС. – М.: Мир, 1988.

41.     Джоунз. Программирование на языке Оккам. –  М.: Мир, 1989.

42.   Брой М. Информатика. Основополагающее введение. Структуры систем и системное программирование. – Ч. III // М.: Диалог-МИФИ, 1996

43.    Наумов Н. А. О некоторых подходах к расширению языков программирования. - Проблемы информационных систем. – Вып.4 / Международный центр научной и технической информации. – М., 1988.

44.    Философский словарь / Под ред. Алексеева. – М.: Проспект, 1998.

45.    Кауфман В.Ш. Языки программированияю. – М.: МГУ, 1986,

46.    Храмцов П. Б Администрирование сети и сервисов internet: Учебное  пособие.

47.    Козлов Н.. Как относиться к себе и к людям, или практическая психология на каждый день . – М.: Новая школа, 1994.

48.    Берн Э.. Сексуальные игры.

49.    Макиавелли Н. Государь. – М.: Планета, 1990

50.    Соловьев А.Е. Конспект лекций по дискретной математике.