The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск языка программирования Dart 1.23"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "Выпуск языка программирования Dart 1.23" +/
Сообщение от Аноним задавший встречный вопрос (?), 25-Апр-17, 23:02 
> лень после напечатания комента проверять его на орфографию или там грамматические ошибки, ну и спелчекер не идеален

Я свой предыдущий проверил два раза, и всё равно в нём нашли ошибки :) Опечатки - это одно, а незнание, как писать правильно, - это другое. Нет ничего страшного в том, чтобы изредка допустить опечатку, так как суть сообщения всё равно остаётся понятной. Но бывает, что в сообщении из двух предложений содержится пять ошибок, - это начинает восприниматься как неуважение к собеседнику.

> Вы затронули понятие "сообщений (messages)" - единственный язык с которым я знаком и который вовсю оперирует этим понятием - Erlang (поправьте меня если не прав)

Я с Erlang не знаком, к сожалению, но просмотр статьи на википедии показал, что, скорее всего, это не то, что имел ввиду Алан Кей.

Рассмотрим для примера фрагмент кода на C++-подобном языке.

class Human_with_car {
    Car car;
    void get_to_work () {
        // ...
        car.turn(Car.RIGHT);
        // ...
    }
}

Human_with_car john;
// ...
john.get_to_work();

Строка "car.turn(Car.RIGHT)", в терминологии Кея, - это посылка объектом john (типа Human_with_car) объекту car (типа Car) сообщения turn() с одним аргументом направления (Car.RIGHT). А выполнение кода начинается с последней строки примера, в которой "текущий объект" передаёт объекту john сообщение get_to_work() без аргументов.

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

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

> А можно спросить откуда (где Страуструп прочел) это "понятие" про столпы ООП и где наследование есть одним из них, кого он имел ввиду ? Алана Кэй-я? (Страуструпа читал давно и не помню).

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

Специально поискал этот фрагмент, просто процитирую. Книга "Язык программирования C++, 3-е издание", глава "24. Проектирование и программирование", пункт "24.2.2. Отказ от наследования".

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

Второй абзац: "Взгляд на наследование просто как на деталь реализации не учитывает, что иерархия классов может непосредственно моделировать ключевые взаимоотношения между понятиями в данной прикладной области. Такие взаимоотношения должны быть выражены в проекте явно".

> > > хотя и не самое лучшее.

На мой взгляд, не самое лучшее - значит содержит недостатки :) В данном случае недостаток в том, что пользователь класса смотрит интерфейс класса в .h-файле, но кроме интерфейса видит и приватные поля/методы, которые являются деталью реализации и, согласно принципу инкапсуляции, должны быть скрыты от всех, кроме разработчиков этого класса.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск языка программирования Dart 1.23, opennews, 24-Апр-17, 11:01  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру