Когда-то был ANSI C 89 и Ада-83. И при сравнении их друг с другом Аду ругали за то, что она очень большая, раздутая, и что зря туда включено столько всего.
Но постепенно стала вырисовываться интересная тенденция.
Что было в Аде и не было в С?
- пакеты. В C++ теперь их функции разбиты между классами и
пространствами имён. Да и .h в #include исчезло не с проста.
- generics. Теперь в С++ есть шаблоны.
- исключения. Теперь они есть в С++.
- перегрузка функций. Теперь она есть в С++.
- access-типы. Теперь в C++ говорят о smart pointers.
- особый статус переменной цикла: for I in range ... - I существует
только внутри for. Теперь в С++ принято for (int i...
- диапазоны. В Аде было:
my_array: array (0 .. 4) of integer := (1, 2, 3, 4, 5);
for x in my_array'range loop
...
end loop;
В C++0x планируется:
int my_array[5] = {1, 2, 3, 4, 5};
for(int &x : my_array)
{
...
}
- поддержка многопоточности. Она уже назрела в C++0x.
- проверка выхода за границы массивов. Об этом наконец-то подумали в C#.
Теперь про большой размер Ады пишут как про старый миф: "Ада - слишком большой и сложный язык, для того чтобы использовать его в
небольшом проекте" -> "Объем и сложность всех современных индустриальных языков практически одинаковы, и чтобы убедиться в этом, достаточно просто сравнить объем их описаний. Этот миф восходит к началу 80-х годов, когда Аду сопоставляли с Паскалем, Фортраном 77 или Бейсиком." (Язык Ада - двадцать лет спустя. Сергей Рыбин, Василий Фофанов).
Помните, какой толщины K&R? А теперь сравните с толщиной книги Страуструпа по С++. K&R писали, что С сам по себе - небольшой язык, и программист может быть уверен, что знает его весь. А теперь? И оно всё растёт, растёт и растёт... Взгляните ради интереса на http://en.wikipedia.org/wiki/C%2B%2B0x. И все книжки по С++ в магазине пугают своей толщиной.
Короче, вывод: а не пора ли пообрезать С++ раза в 3? А то будет таким толстым, что в дверь не пролезет.
P.S. Примеры с небольшими изменениями взяты из Википедии.
P.P.S. Как всё-таки интересно наблюдать за развитием языков и взаимными передираниями. Не только С брал то, что уже было в Аде (я не утверждаю, что дралось именно с Ады, конечно). Ада тоже со слюнями зависти смотрела на развитие С. И сравнительно недавно передрала STL.
А сколько ещё C, имхо, предстоит перенять... Например, есть такие чудесные и ещё не содранные вещи, как "named parameter notation"; строгая типизация; массивы, начинающиеся не с нуля, красивый выход из глубоко вложенных циклов, в конце концов:
my_loop1: while not end_of_file(file_handle) loop
my_loop2: for i in buffer'range loop
...
exit my_loop1 when buffer(i) = PERCENT;
end loop my_loop2;
end loop my_loop1;
Похожие темы
- Форум Кто-то считает капчу слишком сложной? (2008)
- Форум АД... (2008)
- Форум Ада. (2005)
- Форум раздуло образы всех виртуалок (2013)
- Форум Потомки тузега (2006)
- Форум Уважаемые потомки :) (2000)
- Форум завершение потомков (2001)
- Форум Типовой ад в Аде. (2018)
- Галерея Ад замёрз (2020)
- Форум Язык Ада (2005)