Dmitry Leonov (leonov) wrote,
Dmitry Leonov
leonov

википедическое

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

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);
};

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


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

  • аимешное

    Счастливым пользователям AiMesh последние недели выкатывали новые прошивки роутеров c AiMesh 2.0. Неплохо прокачали, теперь эта штука перестала быть…

  • клавиатурнопотерянное

    На одном из семейных айфонов после установки iOS 14 поломалась клавиатура — в отдельных окнах пряталась при переключении языка, в отдельных (типа…

  • яблочноучебное

    Уже несколько лет с большим удовольствием использую трёхэкранное рабочее место преподавателя: первый монитор задублирован с проектором, можно…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 21 comments

  • аимешное

    Счастливым пользователям AiMesh последние недели выкатывали новые прошивки роутеров c AiMesh 2.0. Неплохо прокачали, теперь эта штука перестала быть…

  • клавиатурнопотерянное

    На одном из семейных айфонов после установки iOS 14 поломалась клавиатура — в отдельных окнах пряталась при переключении языка, в отдельных (типа…

  • яблочноучебное

    Уже несколько лет с большим удовольствием использую трёхэкранное рабочее место преподавателя: первый монитор задублирован с проектором, можно…