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

Изменение соотношения затрат на выполнение различных видов работ должно было сильно повлиять на применяемые языки программирования. Однако это еще не произошло. Как в СССР, так и за рубежом по-прежнему активно используются языки ПЛ/1, КОБОЛ, ФОРТРАН (в последнее время — ФОРТРАН-77). Значительно отстают от этой группы, хотя и вышли на уровень промышленного использования, языки Си, ПАСКАЛЬ и МОДУЛА 2. Медленно расширяется применение языка АДА. Практически не имеют последователей экспериментальные языки АТД, такие, как КЛУ и АЛЬФАРД. Поскольку с появления первых работ по программной инженерии прошло 20 лет, такая задержка требует объяснения.

К основным современным проблемам разработки ПО следует отнести:

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

Значительная часть проектов создания ПО в действительности предполагает переработку и модификацию существующих систем ПО.

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

Для решения перечисленных проблем современная теория языков программирования предлагает расширение статического и динамического контроля правильности программ, реализацию концепций модульности и АТД, повышение уровня абстрактности ПО развитием средств параметризации программных единиц. Однако для разработки языка и качественной системы программирования требуется несколько лет (для больших языков — более 10 лет). При этом первые пользователи попадают в крайне невыгодное положение из-за недостаточной развитости инструментальных средств, ограничений на применение и модификацию их ПО другими пользователями. К тому же современные методы программирования дают выигрыш на макроуровне, а для малых программ новые языки не имеют особых преимуществ перед старыми, напротив появляются дополнительные затраты, особенно заметные индивидуальным разработчикам. Если язык не обладает уникальными свойствами языка ПАСКАЛЬ (простота изучения и реализации, наличие теоретических обоснований, естественной области применения для обучения программированию), то его распространение определяется рыночными закономерностями. Например, признание языка Си неотделимо от рыночного успеха системы UNIX. Язык АДА также «обречен на успех» наличием могущественного заказчика, несмотря на беспрецедентную сложность разработки систем программирования и погрешности концептуального характера.