Вот здесь Гай Стил (если я правильно понял авторство) забавно высказался:
As for C++–well, it reminds me of the Soviet-era labor joke: "They pretend to pay us, and we pretend to work." C++ pretends to provide an object-oriented data model, C++ programmers pretend to respect it, and everyone pretends that the code will work. The actual data model of C++ is exactly that of C, a single two-dimensional array of bits, eight by four billion, and all the syntactic sugar of C++ fundamentally cannot mask the gaping holes in its object model left by the cast operator and unconstrained address arithmetic.
Или в моем вольном переводе:
По отношению к C++ это мне напоминает шутку советских служащих: “Они делают вид, что платят нам, а мы делаем вид, что работаем.” С++ делает вид, что предоставляет объектно-ориентированную модель данных, С++ программисты делают вид, что признают это, и каждый делает вид, что код будет работать. Но настоящая модель данных С++ точно такая же, как в C – единственный двумерный массив бит, восемь на четыре миллиарда, и весь синтаксический сахар C++ совершенно не может скрыть зияющих дыр в его объектной модели, которые были проделаны операторами приведения и неконтролируемой адресной арифметикой.
Гай Стил – один из авторов языка Scheme. Принимал участие в комитетах по стандартизации нескольких языков (C, ECMAScript, Fortran, Common Lisp). А с 2005 в Sun-е он руководил разработкой языка Fortress. В общем, авторитетный в области computer science дядька.
Особенно мне понравился пассаж про “каждый делает вид, что код будет работать”. Веселуха, мля. Вокруг полно кода, который, как бы то не нравилось ученым-теоретикам, работает. И, что совсем удивительно, впечатляющий объем этого кода написан как раз на C++. Т.е. к жизни эта замечательная по своей ироничности и остроумности фраза имеет очень далекое отношение. Зато иронично и остроумно. И Гай Стил, да.
"Copyright 2002" н-да... занимаешься археологией? :)
ОтветитьУдалитьТипа того :)
ОтветитьУдалитьНа RSDN-е проскочила ссылка на какое-то обсуждение "провала ООП", копнул туда и набрел вот на этот документик.
К тому же для C++а 2002 -- это еще ничего. С тех пор все равно нового стандарта не принято. Так что фундаментальных изменений нет.
Да и лисповоды с тех пор менее оголтелыми не стали. Скорее даже наоборот. После того как Yahoo их главного флагмана -- какую-то торговую площадку написанную Полом Грэхемом -- стал переписывать на C++ :)
Замыкания появились... В GCC и MSVC уже работают.
ОтветитьУдалить@san: в компиляторах появились, в стандарте еще нет :)
ОтветитьУдалитьPS. Сдается мне, что они не совсем замыкания. Для настоящих замыканий GC нужен.
> and all the syntactic sugar of C++ fundamentally cannot mask the gaping holes in its object model left by the cast operator and unconstrained address arithmetic.
ОтветитьУдалитьБугага! Как будто в CLOS по-другому. (Кстати, а че там в схеме с объектной системой?)
Вот легким движением руки достаем приватные слоты:
http://www.linux.org.ru/jump-message.jsp?msgid=5377010&cid=5381992
Во всех спорах вокруг ООП меня удивляет то, насколько редко упоминается труд Бертрана Мейера "Объектно-ориентированное конструированние программ". Он же там, помнится, очень толково и убедительно обосновывал ООП, отталкиваясь (чтобы не соврать) от идей абстрактных типов данных.
ОтветитьУдалитьВо всех спорах вокруг ООП меня удивляет то, насколько редко упоминается труд Бертрана Мейера "Объектно-ориентированное конструирование программ"
ОтветитьУдалитьДа просто наверное мало кто читал эту книгу, а некоторые, возможно, и не знают о ее существовании. А вот наезды на ООП идут постоянно. Вот один из последних:
http://www.linux.org.ru/forum/development/5377010
p.s. конструирование пишется с одной буквой "н".
@Quaker: как раз эту ссылку и на RSDN-не пропиарили. Я пытался просмотреть материалы, на которые там были ссылки. Долго плевался. Если найду время, напишу об этом подробнее.
ОтветитьУдалить