Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Просто интересно, как это - без ООП? 
:(
    Опции темы
CompWorm
Дата 9.12.2013, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /




Цитата(ТарасАтавин @  6.12.2013,  06:35 Найти цитируемый пост)
или к сиквелу? 

select DB.table ...
SQL  не ООП? 


--------------------
PM MAIL   Вверх
k0rvin
Дата 10.12.2013, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(Bulat @  9.12.2013,  13:07 Найти цитируемый пост)
Мне довелось маленько пописать на эрланге, а не только смотреть. =) А полиморфизм был и "до ООП". Можно взять любой процедурный ЯП и своими силами реализовать.

Цитата
Erlang has got all these things. It's got isolation, it's got polymorphism and it's got pure messaging. From that point of view, we might say it's the only object oriented language and perhaps I was a bit premature in saying that object oriented languages are about. You can try it and see it for yourself.

Я выделил главное.

Цитата(Bulat @  9.12.2013,  13:07 Найти цитируемый пост)
И как же пример, типа межпроцессового взаимодействия, раскрывает ООП??

Этот пример не о межпроцессном взаимодействии, а об изменении внутреннего состояния процесса: переменная N меняет свое значение после обработки каждого поступившего сообщения. Поскольку обмен сообщениями считается ключевым в ООП по Кею, а в Эрланге этот обмен присутствует в избытке, получаем, что Эрланг вполне себе объектно-ориентирован "искаробки".


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Bulat
Дата 10.12.2013, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск




Цитата(k0rvin @  10.12.2013,  13:12 Найти цитируемый пост)
Я выделил главное.

Ты просто выдернул из контекста наиболее подходящие строки и манипулируешь ими так, как тебе удобно  smile 

Ключевые черты ООП:
1. Инкапсуляция
2. Наследование
3. Полиморфизм

Вот попробуй реализовать наследование в ерланге.  smile 

Цитата(k0rvin @  10.12.2013,  13:12 Найти цитируемый пост)
Поскольку обмен сообщениями считается ключевым в ООП по Кею

Опять же выдернул из контекста, а как насчет того, что потому же Кею - Все является объектом??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
k0rvin
Дата 11.12.2013, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(Bulat @  10.12.2013,  14:05 Найти цитируемый пост)
Ключевые черты ООП:

Это не ключевые черты, а механизмы, присутствующие в некоторых реализациях. Ну да ладно.

Цитата(Bulat @  10.12.2013,  14:05 Найти цитируемый пост)
1. Инкапсуляция

Модули. В приведенном примере "клиент" не может получить доступа к N.

Цитата(Bulat @  10.12.2013,  14:05 Найти цитируемый пост)
2. Наследование

Делегирование. Да и вообще сомнительной полезности вещь.

Цитата(Bulat @  10.12.2013,  14:05 Найти цитируемый пост)
3. Полиморфизм

Что мне мешает посылать одинаковые сообщения разным (по реализации) процессам и получать разное поведение? Ничего.
Скрытый текст

Код

%% Server that echos all msgs to console.
-module(add).
-export([start/0, print/1, stop/0]).

%% API
...

loop1() ->
    loop(0).

%% Impl
loop(N) ->
    receive
        {print, Msg} ->
            io:format("~w ~p~n", [N, Msg]),
            loop(N+1);
        stop ->
            ok
    end.


Код

%% Server that echos all msgs to console.
-module(mul).
-export([start/0, print/1, stop/0]).

%% API
...

loop1() ->
    loop(1).

%% Impl
loop(N) ->
    receive
        {print, Msg} ->
            io:format("~w ~p~n", [N, Msg]),
            loop(N*2);
        stop ->
            ok
    end.



Код

> c(add).
  {ok,add}
> c(mul).
  {ok,mul}
> add:start().
  ok
> mul:start().
  ok
> add ! {print, "Hello"}.
  1 "Hello"
  {print,"Hello"}
> add ! {print, "Hello"}.
  2 "Hello"
  {print,"Hello"}
> mul ! {print, "Hello"}.
  1 "Hello"
  {print,"Hello"}
> mul ! {print, "Hello"}.
  2 "Hello"
  {print,"Hello"}
> mul ! {print, "Hello"}.
  4 "Hello"
  {print,"Hello"}
> add ! {print, "Hello"}.
  3 "Hello"
  {print,"Hello"}
> M = {print, "Hello"}.
  {print,"Hello"}
> add ! M.
  4 "Hello"
  {print,"Hello"}
> add ! M.
  5 "Hello"
  {print,"Hello"}
> mul ! M.
  8 "Hello"
  {print,"Hello"}
> mul ! M.
  16 "Hello"
  {print,"Hello"}



Цитата(Bulat @  10.12.2013,  14:05 Найти цитируемый пост)
а как насчет того, что потому же Кею - Все является объектом?

Это идеалистическое утверждение, нет такого языка, где все является объектом. Из практических соображений.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Bulat
Дата 11.12.2013, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск




Цитата(k0rvin @  11.12.2013,  08:22 Найти цитируемый пост)
нет такого языка, где все является объектом

Таким образом мы получаем, что и эрланг не язык ООП. Так об чем тогда речь?? smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
ksnk
Дата 11.12.2013, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб




k0rvin, А С++ есть обмен сообщениями? Прям из коробки? Без всяких осовских API.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
k0rvin
Дата 11.12.2013, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(ksnk @  11.12.2013,  10:33 Найти цитируемый пост)
А С++ есть обмен сообщениями? Прям из коробки?

Да, пожалуйста, реализовывай в своих классах только метод void dispatch(Message *m); и будет тебе обмен сообщениями.

Цитата(ksnk @  11.12.2013,  10:33 Найти цитируемый пост)
Без всяких осовских API.

При чем тут API ОС?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
ksnk
Дата 11.12.2013, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб




А Message это что (в каком файле инклюдится?) А dispatch это откуда? Просто моя коробка немного другая, наверное smile

Цитата(k0rvin @  11.12.2013,  10:45 Найти цитируемый пост)
При чем тут API ОС? 

Мне всегда казалось, что без транспортного уровня смысла в сообщениях немного. А транспорт (средство доставки сообщений) и идентификацию адресатов-отправителей определяет нам ос.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
k0rvin
Дата 11.12.2013, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(ksnk @  11.12.2013,  11:44 Найти цитируемый пост)
А Message это что

Тип "Сообщение". Например в самом простом виде это *void.

Цитата(ksnk @  11.12.2013,  11:44 Найти цитируемый пост)
(в каком файле инклюдится?)

В любом.

Цитата(ksnk @  11.12.2013,  11:44 Найти цитируемый пост)
А dispatch это откуда?

В каком смысле откуда? Откуда методы у классов берутся?

Цитата(ksnk @  11.12.2013,  11:44 Найти цитируемый пост)
Мне всегда казалось, что без транспортного уровня смысла в сообщениях немного. А транспорт (средство доставки сообщений) и идентификацию адресатов-отправителей определяет нам ос. 

При чем тут это все, если мы говорим о языке.

Грубо:
Код

typedef int Message;
const Message Print = 0;
const Message Println = 1;

struct Object
{
    virtual void dispatch(Message) = 0;
};

struct HelloPrinter1 : Object
{
    virtual void dispatch(Message m)
    {
        switch (m) {
        case Print:
            std::cout << "Hello";
            break;
        default:
            throw UnsupportedMessage;
        }
    }
};

struct HelloPrinter2 : Object
{
    virtual void dispatch(Message m)
    {
        switch (m) {
        case Print:
            std::cout << "Hello";
            break;
        case Println:
            std::cout << "Hello" << std::endl;
            break;
        default:
            throw UnsupportedMessage;
        }
    }
};

int main()
{
    Object *helloPrinter1 = new HelloPrinter1();
    Object *helloPrinter2 = new HelloPrinter2();
    helloPrinter1->dispatch(Print);
    helloPrinter1->dispatch(Println);
    helloPrinter2->dispatch(Print);
    helloPrinter2->dispatch(Println);
}



--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
ksnk
Дата 11.12.2013, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб




"Из коробки" и "Давайте я тут прямо вот все напишу" - разные вещи. Не?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
k0rvin
Дата 11.12.2013, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(ksnk @  11.12.2013,  14:30 Найти цитируемый пост)
"Из коробки" и "Давайте я тут прямо вот все напишу" - разные вещи. Не?

А что в таком случае должно значить "из коробки"? Специальные ключевые слова? Но зачем? Их и так довольно много.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
ksnk
Дата 11.12.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб




Это я про то, что 
Цитата

Поскольку обмен сообщениями считается ключевым в ООП по Кею
, а вот у С++, формально, нет обмена сообщениями.

Если вспоминать про "а я тут и сам все напишу", то можно вспомнить про язык Форт. Его никто даже и не подозревает в ООП'ности с инкапсуляцией и наследованием, однако на самом форте можно написать вполне себе ООП, со всеми необходимыми половыми признаками.

Это я про то, что определения - они такие определения.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
k0rvin
Дата 11.12.2013, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010




Цитата(ksnk @  11.12.2013,  15:01 Найти цитируемый пост)
, а вот у С++, формально, нет обмена сообщениями.

Потому что ООП не имеет единственно верного или хотя бы четкого определения и кроме SmallTalk есть еще Simula, от которой C++-ное ООП и идет.

Спорить, какое ООП самое правильное, нет никакого желания, так что да,
Цитата(ksnk @  11.12.2013,  15:01 Найти цитируемый пост)
определения - они такие определения




--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Bulat
Дата 11.12.2013, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск




Цитата(ksnk @  11.12.2013,  15:01 Найти цитируемый пост)
то можно вспомнить про язык Форт. Его никто даже и не подозревает в ООП'ности с инкапсуляцией и наследованием, однако на самом форте можно написать вполне себе ООП, со всеми необходимыми половыми признаками.

 smile половая дискриминация!!!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

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


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.1097 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.