Лекция 16 (1160814), страница 4
Текст из файла (страница 4)
В 1994г. Страуструп опубликовал свою знаменитую книгу, посвященную дизайну языка С++, в которой, в частности, проанализировал свои ошибки. С его точки зрения через 15 лет после рождения языка, у него ошибок было мало, но основная ошибка, которая была допущена в процессе проектирования языка С++, была допущена где-то в 86-м г., когда срочно нужно было выпускать хоть какую-то новую версию, которую хоть как-то можно было продавать. В этот момент у него ресурсы были ограничены и перед ним стояли 2 проблемы: включать или не включать в эту версию шаблоны, т.е. какой-то механизм статической параметризации, и механизм эффективной реализации множественного наследования. Он считает, что основная ошибка с точки зрения дизайна была в том, что он выбрал для реализации механизм множественного наследования (после чего мы все знаем, что С++ - язык с множественным наследованием, в отличие от других), но не стал реализовывать шаблоны. Шаблоны реально появились в спецификации языка только к 90-му г., а в компиляторах шаблоны были реализованы значительно позже. Если бы механизм шаблонов появился в С++ уже в 86-м г., то к 90-му г. уже была бы готова более или менее нормальная стандартная библиотека, и уже начиная с 90-ых г.г. мы бы программировали в рамках единой стандартной библиотеки, основанной на шаблонах. Получилось, что только к концу 90-ых г.г. библиотека STL (библиотека, основанная на шаблонах) более или менее завоевала признание. Это плохо. Всем известно, что самый лучший язык для научно-технического программирования – это ФОРТРАН. До сих пор большинство ученых программирует на ФОРТРАНЕ. С++ обеспечивает те же самые возможности, что и ФОРТРАН, и даже значительно больше. Основная проблема, из-за чего ученые не программируют на С++, была в том, что эффективность компиляторов С++ по сравнению с компиляторами ФОРТРАН на специфических задачах до 10 раз. И ситуация изменилась совсем недавно, когда появилась библиотека Blits – это библиотека шаблонов, которая позволяет реализовывать различного рода математические структуры данных. Эффективность библиотеки Blits практически равна эффективности программ, которые порождают компиляторы с языка ФОРТРАН. Но эта библиотека появилась совсем недавно. Blits примерно одинакова по эффективности с ФОРТРАНОМ исключительно за счет грамотного использования шаблонов, поскольку именно статическая параметризация позволяет избежать накладных расходов.