BugTraq.Ru
Русский BugTraq
https://bugtraq.ru/lj/archive/2006/1604.1821.html

википедическое
16.04.06 18:21 // оригинал
На Ежелисте бушует обсуждение Википедии. Повелся на предложение ткнуть носом в плюхи, побродил по программистским разделам.

http://ru.wikipedia.org/wiki/Абстрактный_тип_данных

Процитирую целиком, это песня:
"Абстрактный тип данных (АТД) - отвлечение от конкретного типа данных и работа с их структурой или структурой объекта, их содержащей. При этом не используются свойства данного типа. Однако не запрещается применять свойства объктов, как то: существование, порядок, существование способа сравнения и т.п."

Я примерно представляю, по какому пути шел автор, заблудившийся в трех строчках текста, но способен ли кто-то, не знакомый с понятием АТД, понять из этого текста, каким образом отвлечение от типа данных может привести к работе с их структурой (или, пуще того, "структурой объекта, их содержащей)?
В примерах тоже такой добрый тип данных "дека" приведен, ссылка на который ведет на музыкальную деку.

Дальше я вошел во вкус.

http://ru.wikipedia.org/wiki/Стек
Стек, оказывается, "даже поддерживается аппаратурой процессора". Аппаратура, архитектура, какая фиг разница...

http://ru.wikipedia.org/wiki/Язык_ассемблера
"Также в процессе линковки происходит связывание программы со статическими и динамическими библиотеками (тоже, по сути, объектными файлами)." Угу, библиотеки, по сути, являются книгами.

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

http://ru.wikipedia.org/wiki/Объектно-ориентированный_язык_программирования
Всплыла типизация как, видимо, одна из ключевых, по мнению автора, составляющих ООП (поставлена перед полиморфизмом).

http://ru.wikipedia.org/wiki/Си_плюс_плюс
"Описатель inline означает, что вызовы функций заменяются макро-расширениями." Кхм. Тепло, конечно, но...

"Прежде всего, основным способом организации информации в Си++ являются классы. В отличие от структуры, состоящей только из полей, класс (class) состоит из полей и функций-членов (member functions)." Да, мои третьекурсники тоже часто не могут правильно рассказать, в чем разница между структурой и классом в С++.

"Для создания классов с добавленной функциональностью вводят наследование. Класс-наследник имеет поля и функции-члены базового класса, но не имеет права обращаться к собственным функциям базового класса." Я сперва слегка обалдел, потом наткнулся на формулировку "Наследование бывает публичным, защищённым и собственным." Традиция перевода термина private не для нас, да.

"Класс Си++ представляет собой объект ООП." Ну, положим, лет десять назад и можно было встретить подобную путаницу в терминологии (особенно у жертв Турбо Паскаля), но с этим уже давно разобрались, и классы с объектами давно разведены по своим углам.

Ну и из серии придирок.
"Например, объект cout, используемый для вывода текста в консоль, имеет переопределённый оператор << для вывода информации." - формально говоря, этот оператор все-таки имеет не объект cout, а класс ostream.
"Защищённые и собственные поля нельзя менять по-дурацки: к ним могут обращаться только функции-члены (и ещё так называемыефункции-друзья)."
"Функции-члены (и только они) могут иметь описатель const... Такие функции не имеют права изменять поля класса. Если они пытаются это сделать, программа вылетает на стадии компиляции."
"Копи-конструктор (copy constructor) Array::Array(const Array&) вызывается при присваивании." Перевод "конструктор копирования" тоже не катит.

И вот еще абсолютно шикарный код:

class ArrayWithAdd : public Array {
ArrayWithAdd(int n) : Array(n);
ArrayWithAdd() : Array();
ArrayWithAdd(const Array& a) : Array(a);
void Add(Array a);
};

Вызов базового конструктора в описании и без остального тела, ага.


В общем, до сих пор я студентам в качестве источника, на который никогда нельзя полагаться при программировании, давал только книжки Шилдта, теперь список пополнился.

 
обсудить  |  все отзывы (0)  |  обсудить в LJ [778]
назад «  » вперед

последние записи
песчаное // 13.03.24 18:05
макоудаленное // 29.01.24 23:10
разнонедельное // 07.12.23 15:09
qtменюшное // 29.09.23 23:47
неестественноинтеллектуальное // 29.09.23 16:50
основательное // 18.09.23 00:15
отпускное // 06.08.23 00:26
вчерашнезавтрашнее // 02.07.23 15:25
позитивное // 27.06.23 13:05
тейлскейлное // 18.04.23 20:43





  Copyright © 2001-2024 Dmitry Leonov Design: Vadim Derkach