VIII.8. С р а в н и т е л ь н а я х а р а к т е р и с т и к а я з ы к о в п р о г р а м м и р о в а н и я Карл Пятый, римский император, говаривал, что ишпанским языком с богом, французским - с дру- зьями, немецким - с неприятельми, италиянским - с женским полом говорить прилично. Но если бы он российскому языку был искусен, то,конеч- но, к тому присовокупил бы, что им со всеми оными говорить пристойно. Ибо нашел бы в нем великолепие ишпанского, живость французского, крепость немецкого, нежность италиянского и, сверх того,богатство и сильную в изображениях краткость греческого и латинского языка... Сильное красноречие Цицероново, великолеп- ная Виргилиева важность, Овидиево приятное ви- тийство не теряют своего достоинства на рос- сийском языке... М.В. Ломоносов. Российская грамматика Идеальный язык програмирования имеет следующие свойства: 1) он легок для начинающих; 2) он легок для специалистов; 3) он позволяет легко читать программы; 4) он дисциплинирует пользователей и таким образом заставляет их сле- довать хорошему стилю программирования; 5) он подходит для написания коротких программ; 6) он подходит для написания программ среднего размера; 7) он подходит для написания больших программ, содержащих десятки или сотни тысяч строк; 8) он подходит для доказательства правильности программ; 9) он легок для реализации на любом компьютере; 10) он позволяет эффективно (т.е. быстро) выполнять программы. ┌─────────────────────────────────────────────────────────────┐ │ Невозможно разработать язык программирования, который │ │ удовлетворял бы всем этим критериям │ └─────────────────────────────────────────────────────────────┘ (тем не менее люди пытаются это делать, и новые языки программирования ро- ждаются ежедневно). На практике разработчики удачных языков сосредоточи- ваются на нескольких критериях. Разработчики языка ВАSIC выделяют в качестве наиболее важных критериев 1 и 5. Разработчики языка Pascal оценивают свойство 4 как наиболее важное, и считает важными также позиции 3 и 10. Разработчики языка Ада охватили свойство 7, и это заставило их пойти на компромиссы со многими другими желательными критериями. Разработчики языка С выделяют критерии 10, 6 и 2 как наиболее важ- ные, возможно, в этой последовательности. В таблице, составленной А.К.Поляковым и В.К.Раковым в пособии для сту- дентов МЭИ "Программное обеспечение микропроцессорных систем" оценивается в пятибалльной системе пригодность различных языков для программирования встроенных микропроцессорных систем. ┌──────────┬───────┬────────┬───────┬─────┬─────┬──────┐ │ Ассемблер│ PL/M │ Pascal │FORTRAN│BASIC│ Ада │ Си │ ┌────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Простота │ │ │ │ │ │ │ │ │ изучения │ 3 │ 3 │ 4 │ 4 │ 5 │ 1 │ 3 │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Наличие │ │ │ │ │ │ │ │ │ литературы │ 5 │ 3 │ 3 │ 4 │ 4 │ 2 │ 1 │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Поддержка фир- │ │ │ │ │ │ │ │ │ мами разработ- │ │ │ │ │ │ │ │ │чиками микропро-│ 5 │ 4 │ 4 │ 4 │ 4 │ 3 │ 4 │ │ цессорных │ │ │ │ │ │ │ │ │ систем │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Универсальность│ │ │ │ │ │ │ │ │ (широта диапа- │ 3 │ 3 │ 3 │ 3 │ 2 │ 5 │ 3 │ │ зона решаемых │ │ │ │ │ │ │ │ │ задач) │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Удобство для │ │ │ │ │ │ │ │ │ системного │ 5 │ 5 │ 4 │ 3 │ 1 │ 4 │ 5 │ │ программирова- │ │ │ │ │ │ │ │ │ ния │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Удобство для │ │ │ │ │ │ │ │ │ прикладного │ 2 │ 3 │ 4 │ 4 │ 2 │ 4 │ 5 │ │ программирова- │ │ │ │ │ │ │ │ │ ния │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Возможность │ │ │ │ │ │ │ │ │ компоновки │ │ │ │ │ │ │ │ │ программ │ │ │ │ │ │ │ │ │ из независимо │ 1 │ 4 │ 2 │ 4 │ 1 │ 5 │ 4 │ │ отлаженных │ │ │ │ │ │ │ │ │ модулей │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Структурность │ 0 │ 4 │ 5 │ 3 │ 2 │ 5 │ 3 │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Эффективность │ │ │ │ │ │ │ │ │ средств реаль- │ 3 │ 3 │ 0 │ 0 │ 0 │ 3 │ 0 │ │ ного времени │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Развитость │ │ │ │ │ │ │ │ │ встроенных │ 1 │ 2 │ 4 │ 4 │ 2 │ 5 │ 4 │ │ типов │ │ │ │ │ │ │ │ │ данных │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Возможность │ │ │ │ │ │ │ │ │ введения новых │ 1 │ 0 │ 4 │ 0 │ 0 │ 5 │ 0 │ │ типов данных │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Возможность │ │ │ │ │ │ │ │ │ параллельного │ 0 │ 0 │ 0 │ 0 │ 0 │ 4 │ 0 │ │ программирова- │ │ │ │ │ │ │ │ │ ния │ │ │ │ │ │ │ │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Простота │ │ │ │ │ │ │ │ │ транслятора │ 5 │ 3 │ 3 │ 3 │ 4 │ 1 │ 3 │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Эффективность │ │ │ │ │ │ │ │ │ программ │ 5 │ 4 │ 4 │ 3 │ 1 │ 3 │ 4 │ ├────────────────┼──────────┼───────┼────────┼───────┼─────┼─────┼──────┤ │ Эффективность │ │ │ │ │ │ │ │ │ средств │ 3 │ 3 │ 3 │ 3 │ 5 │ 3 │ 3 │ │ отладки │ │ │ │ │ │ │ │ └────────────────┴──────────┴───────┴────────┴───────┴─────┴─────┴──────┘ В заключение три цитаты: 1) "Практически невозможно научить хорошему программированию студентов, ориентированных первоначально на бейсик; как потенциальные программисты они умственно оболванены без надежды на исцеление" Э.В.Дейкстра, ASMSIGPLAN Notice, 1982, 7, P.13-15 2) "...коль уж становиться программистом, то программистом хорошим; та- кого программиста отличает постоянное желание стать еще лучшим программис- том, а единственно верный путь для этого - стремиться в совершенстве овла- деть несколькими языками, т.е. сделаться хорошим лингвистом в программиро- вании. Безусловно, можно доказать, что несомненный вред нанесли и наносят те, довольно хорошие программисты, которые, став слишком самодовольными или консервативными, полагают, что язык, которым они пользуются, во всех смыслах является последним словом" Б.Мик ┌───────────────────────────────────────────────────────────┐ 3) │ "Предмет, достойный целого курса лекций, вы превратили │ │ в собрание р а с с к а з и к о в . │ │ Конан Дойль. Медные буки │ └───────────────────────────────────────────────────────────┘