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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> классы 
:(
    Опции темы
kemiisto
  Дата 14.4.2010, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



Цитата(mes @  14.4.2010,  22:42 Найти цитируемый пост)
Очень важно понять саму концепцию ООП_с_точки_зрения_C++

Тут много мыслей будет. smile 

Во-первых, все беды С++ вот от этого. Строгая_с_точки_зрения_C++ типизация, обобщённое_с_точки_зрения_C++ программирование, уже упомянутое ООП_с_точки_зрения_C++ и многое-многое другое. Это доставляет, ей богу.

Во-вторых, концепция, она на то и концепция (парадигма такая парадигма, если хотите) чтоб быть "language agnostic".

Суть вот в чём. Существует достаточно распространённая точка зрения, что чем больше языков изучил программист, тем лучше. Изучил, скажем только С++, многие концепции остались незатронутыми совсем, а затронутые могут быть совершенно неверно истолкованы. Поэтому неплохо изучить Java/C#, сверху "прикрыть" Питоном. Ну и там целая плеяда Ruby, Objective-C,  D, ... - по вкусу.

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

Но, "мы пойдём другим путём". Надо смотреть языки концептуально чистые, простые, основанные на небольшом таком списочке идей-концепций. Ухватить суть, поставить технику. И тогда уже при взгляде на представителя кучи, будет не хорошо, но "как стекло протёрли" (с)

Вот я примеры таких языков привёл. "Наводку" дал. Дальше - дело добровольное. 

P.S. Выдыхаю. smile 

Это сообщение отредактировал(а) kemiisto - 14.4.2010, 22:11


--------------------
PM MAIL WWW GTalk Jabber   Вверх
kemiisto
Дата 14.4.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



Цитата(kemiisto @  14.4.2010,  23:08 Найти цитируемый пост)
P.S. Выдыхаю.

Рано. Не довёл до конца. Так вот. Эти простые языки хороши именно тем, что за деревьями синтаксиса виден лес концепций. smile Крыши хлопают в ладоши... Синтаксис не мешает изучать концепции (хоть тоже ООП). Инструменты (компилятор, среда, ...) помогают в изучении, а не мешают. Но дальше уже частности пойдут. Главное - виден лес!


--------------------
PM MAIL WWW GTalk Jabber   Вверх
qweqwe
Дата 14.4.2010, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 0



не удержался и переделал парочку примеров с плюсов на F# (на OCaml будет примерно также)

Цитата(azesmcar @  14.4.2010,  20:07 Найти цитируемый пост)
struct Point
{
   int x;
   int y;
};


Код

type Point = {x:int; y:int}


Цитата(azesmcar @  14.4.2010,  20:07 Найти цитируемый пост)
struct Line {
private:
   Point start;
   Point end;
public:
    Line(int xf, int yf, int xt, yt) // конструктор {
      start.x = xf;
      start.y = yf;
      end.x = xt;
      end.y = yt;
   }
   unsigned int length() {
      return подсчет_длины;
   }
};
Line l(10, 10, 30, 20);
int length = l.length(l);


Код

type Line (xf, yf, xt, yt) = 
  let start = {x = xf; y = yf}
  let end   = {x = xt; y = yt}
  
  member this.Length = sqrt <| (xf - xt)^2 + (yf - yt)^2

  new (p1 : Point, p2 : Point) = 
    new Line(p1.x, p1.y, p2.x, p2.y)

здесь даже на один конструктор больше, мечта любого плюсовода - вызвать один конструктор из другого smile 

Это сообщение отредактировал(а) qweqwe - 14.4.2010, 22:43
PM MAIL   Вверх
ИванМ
Дата 14.4.2010, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



kemiisto, а теперь, если не сложно, тоже самое только с ориентиром на практику. Как ваши идеи помогут лучше питаться и больше позволять излишеств?

Добавлено через 2 минуты и 41 секунду
kemiisto, о, у вас уже последователи появились smile 
PM MAIL   Вверх
qweqwe
Дата 14.4.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 0



Цитата(ИванМ @  14.4.2010,  22:32 Найти цитируемый пост)
Как ваши идеи помогут лучше питаться и больше позволять излишеств?

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


любитель
****


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

Репутация: 79
Всего: 250



Цитата(ИванМ @  14.4.2010,  21:32 Найти цитируемый пост)
у. Как ваши идеи помогут лучше питаться и больше позволять излишеств?

они позволят освободить мысли, и при програмировании не зависить от языка, а использовать его 
smile

я практически полностью подерживаю kemiisto  в высказанных мыслях, кроме одного.. того по какому поводу было все это высказано smile


--------------------
PM MAIL WWW   Вверх
azesmcar
  Дата 14.4.2010, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 52
Всего: 211



Цитата(kemiisto @  14.4.2010,  21:20 Найти цитируемый пост)
Да, и вот начало твоего ответа:

Не помешало бы понять, что мы говорим об ООП в контексте C++ smile 
Неужели я должен был это указать находясь в самом разделе C/C++?
Я вообще-то начинал писать ответ, а потом из одного следовало другое ... ну и вышла такая вот статья или называйте ее как хотите.

kemiisto, ну не знаю я оберон, прости грешного (исправится не обещаю, будем считать что я неисправимый грешник)..я C++ программист smile это меня бес попутал smile

Добавлено @ 22:56
ИванМ

kemiisto ярый ненавистник языка C++, я тоже конечно не в восторге, у него много минусов, но что делать? за что платят на том и пишем.

Это сообщение отредактировал(а) azesmcar - 14.4.2010, 22:56
PM   Вверх
ИванМ
Дата 14.4.2010, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



qweqwe, уж куда мне до вас (что за хамство?)

azesmcar, а идея у вас была благая smile . Теперь чтобы новичков сюда отправить, их нужно будет сперва морально подготовить smile 

Цитата(mes @  14.4.2010,  22:48 Найти цитируемый пост)
они позволят освободить мысли, и при програмировании не зависить от языка, а использовать его 

все равно ничего не понял) видимо qweqwe прав)

PM MAIL   Вверх
limelight
Дата 14.4.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: нет



Исправьте, плз
в куске кода
Код

struct Line {
private:
   Point start;
   Point end;
public:
    Line(int xf, int yf, int xt, yt) // конструктор {
      start.x = xf;
      start.y = yf;
      end.x = xt;
      end.y = yt;
   }
   unsigned int length() {
      return подсчет_длины;
   }
};

Line l(10, 10, 30, 20);
int length = l.length(l);


в последней строке должно быть ведь 
Код

int length = l.length();
,
а не 
Код

int length = l.length(l);

??
PM MAIL ICQ   Вверх
qweqwe
Дата 14.4.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 0



Цитата(ИванМ @  14.4.2010,  22:57 Найти цитируемый пост)
все равно ничего не понял) видимо qweqwe прав)

вон из профессии! smile 
PM MAIL   Вверх
ИванМ
Дата 14.4.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



qweqwe, уже вещи собрал)
PM MAIL   Вверх
azesmcar
Дата 14.4.2010, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 52
Всего: 211



kemiisto

Понимаешь, вообще-то моей целью было рассказать частично о концепциях ООП в C++ и о классах и я попытался сделать это доступным образом. Если ты считаешь, что я не смог уместить в двести строк книгу GOF в вольной интерпретации то ты совершенно прав smile но я, несмотря на прогрессирующую манию величия к этому и не стремился smile 
Я не рассказал и половину того, что поддерживает C++, а говорить о том, что он НЕ поддерживает было бы смешно в конкретной ситуации. Если ты считаешь что в описании того, что есть на данный момент есть ошибка то укажи, я ее с удовольствием исправлю, я и не утверждал что их нет, коды писал тут, текст тоже, даже в книгах ошибаются..мало ли, всякое случается, а если есть что дополнить то милости просим, с удовольствием почитаю. smile

Добавлено через 3 минуты и 23 секунды
limelight, да, поганый копи-паст smile 
исправил, спасибо. smile 
PM   Вверх
kemiisto
  Дата 15.4.2010, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

Репутация: 5
Всего: 160



azesmcar, OK. Сделаем так. Сегодня до полудня (т.е. до 2 МСК) я напишу сюда первую часть опуса о классах. Чтоб не было ощущения, что я тут из пустого в порожнее... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
azesmcar
Дата 15.4.2010, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

Репутация: 52
Всего: 211



kemiisto

Отлично, только у меня нет такого ощущения, я прекрасно понимаю о чем ты говоришь и даже согласен, но это как бы не имеет отношения к теме, мы говорим разном, у меня не было цели описывать то, о чем ты пишешь smile 

ну в общем ждем-с, с радостью почитаю.
PM   Вверх
Shaggie
Дата 15.4.2010, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(kemiisto @  14.4.2010,  22:13 Найти цитируемый пост)
P.S. "Ходят слухи", что для полного просветления можно "курнуть" ФП и осознать единство парадигм функционального и объектно-ориентированного программирования.

А теперь под бравурную музыку в форуме C/C++: для новичков появляется описание Haskell type classes  smile 

Цитата(kemiisto @  14.4.2010,  22:13 Найти цитируемый пост)
P.P.S. Ещё можно "курнуть" Lua. Понять, что ООП бывает и без классов. Нужны то всего first-class functions и таблички.

В скриптовых языках отчётливо видно, что все объекты являются не более чем словарями ключей и значений. Вместо Lua можно взять JavaScript. Или Perl. Или Python, в нём, правда, уже меньше заметно.

А можно нарисовать полную объектность на C и осознать лишний раз, что все эти парадигмы - лишь навороты над голым ассемблером, причём, по большей части, запрещающие. Надеюсь, трава кончится раньше.

Вообще в этой теме по существу только azesmcar ответил, за что ему заслуженный плюс в репутацию, остальное можно будет со временем вынести в религиозные войны (надо только ответа kemiisto дождаться).


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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