Re[2]: На базе самого Немерле.
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.06.10 16:30
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>На базе самого Немерле. А именно его компилятора.

CS>Скажем AST это дерево структур типа Unary/BinaryExpression ну и т.д.

Это явно перебор для новичков.

CS>И людям полезно будет въехать в конструкцию AST ибо Nemerle как я понимаю

CS>позволяет работать с ним.

AST немерла сделано на базе вариантных типов. А они относятся к ФП, а не к ООП. Так что тоже несколько не то.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе самого Немерле.
От: Sinix  
Дата: 11.06.10 17:36
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, c-smile, Вы писали:


Ххо! 11 страниц, и еще не определились?

Всё перечитывать лень, свои 5 копеек (могут быть повторы):

1) Иллюстрировать ООП с помощью примеров из реальной предметной области не стоит (те самые "классические" Vehicle, VehicleEngine, CarriageVehicle и HorseVehicleЕсли стоит Engine). Там поднимается слишком много вопросов — от правильного отображения модели данных на классы до anemic vs rich. Даже в БЛ довольно редко возникает необходимость в наследовании. Не, придумать-то можно, но будет выглядеть тяжеловесно и неестественно.

2) Сценарии, когда проявляется вся моща ООП, довольно редки — как правило, сценарии относятся скорее к компонентному программированию. Обычно в пример приводят:
2.1) всякие rule/flow/token-based engine;
2.2) общие абстракции наподобие потоков или коллекций;
2.3) правильная реализация своего типа данных — правда, к ООП там тможно отнести только переопределение Equals/GetHashCode.

3) Если стоит цель — показать практическое применение ООП, то и сосредоточиться стоит в первую очередь на прикладных примерах с наследованием от уже существующих компонент. Выбрать часть фреймворка, знакомую большей части ЦА (BCL, WinForms, ASP.NET) — примеров найдётся ого-го.
Re[4]: На базе самого Немерле.
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.06.10 17:58
Оценка:
Здравствуйте, Sinix, Вы писали:

S>3) Если стоит цель — показать практическое применение ООП,


Ага. Именно эта цель и стоит.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: На базе чего лучше всего продемонстрировать ООП?
От: vdimas Россия  
Дата: 11.06.10 21:04
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>У меня нет задачи объяснить людям что такое ООП. Моя задача показать как фичи ООП можно использовать для написания реальной программы.


Ну, если аудитория уже подготовлена, можно показать помощь Немерла по автоматической генерации нудных компонентных артефактов под дотнет, например для биндинга:
public int SomeProp {
   get{}

   set {
   ...
      if(_value!=value) {
         ...
         var args = new SomeEventArgs(value);
         if(OnSomePropChanging(args))
            OnSomePropChanged(args);
      }
  }
} 

public event SomeCancelEventHandler SomePropChanging;
public event SomeEventHandler SomePropChanged;

protected virtual bool OnSomePropChanging(...) {
   var callback = SomePropChanging;
   if(callback!=null) {
      bool cancel =  false;
      callback(.., ref cancel);
      return cancel;
   }
   return true;
}
protected virtual void OnSomePropChanged(...) {...}


Всю эту нудь можно расписать парой строк, насколько я понял.

Или аналогичный биндинг, но под WPF.

И сравнить исходники на N и на C#.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.06.10 21:24
Оценка:
Здравствуйте, vdimas, Вы писали:

VD>>У меня нет задачи объяснить людям что такое ООП. Моя задача показать как фичи ООП можно использовать для написания реальной программы.


V>Ну, если аудитория уже подготовлена, можно показать помощь Немерла по автоматической генерации нудных компонентных артефактов под дотнет, например для биндинга:...


Задача показать как создавать ОО-код на базе некоторого примера.

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

Твое предложение — это предложение продемонстрировать мощь макросов применительно к проблемам имеющимся в шаре. Если это интересно, то можно взглянуть в снипеты и в стандартную библиотеку макросов. Например, вот здесь демонстрируется как "бороться" с зависимыми свойствами WPF:
* Пример использования макосов.
* Сами макросы.

Но это не то что нужно в данном разделе.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: На базе чего лучше всего продемонстрировать ООП?
От: andy1618 Россия  
Дата: 12.06.10 05:32
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>... и рассуждения Сапира (лингвиста) из которых следует "язык программирования, на котором записывается решение задачи, напрямую влияет на ход мыслей программиста, заставляя его рассматривать задачу под определенным углом".


Кстати, да, уже давно задумывался о том, что гипотеза Сепира-Уорфа на все 100% применима и к языкам программирования.
Только речь идёт, скорее, не о "языке, на котором НАДО записать решение", а о "языке/языках, на которых программист ПРИВЫК программировать".
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: BulatZiganshin  
Дата: 12.06.10 09:31
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

WH>>Электронная таблица это функциональный язык. Так что тут ООП вообще никак и ни о чем.


ANS>Плохому танцору... того...

ANS>Как бы, с борландами, и с C++ и с ObjectPascal ходил Calc, если мне склероз не изменяет. С мордой на TurboVision. Как я помню исходники были маленькими.

хуже того — они поставлялись в качестве примера ещё с tp 3.0. задолго до ООП
Люди, я люблю вас! Будьте бдительны!!!
Re[10]: На базе чего лучше всего продемонстрировать ООП?
От: _FRED_ Черногория
Дата: 12.06.10 10:49
Оценка: -1
Здравствуйте, Ikemefula, Вы писали:

I>>>Хорошо бы увидеть в этой проге хорошую аутомейшн модел, что бы можно было в рантаме запускать всякую всячину прямо на немерле и таким образм тренироваться


VD>>Сдается мне, что это все равно как в качестве задач по механике приводить устройство современного танка.


I> У дядьки вот здесь очень неплохо вышло


About the author

Omar AL Zabir is a student of…

Help will always be given at Hogwarts to those who ask for it.
Re[4]: На базе чего лучше всего продемонстрировать ООП?
От: _FRED_ Черногория
Дата: 12.06.10 10:58
Оценка:
Здравствуйте, dsorokin, Вы писали:

VD>> А тут же задача продемонстрировать сам ООП на примере. Хотелось бы чтобы пример не вызвал лишних вопросов, а демонстрировал бы преимущества ООП.


D>Думаю, что можно стырить идею из какого-нибудь учебника по f# типа Expert f# или Programming f#, которые доступны в электронном виде. И чем не подходят всякие точки, окружности, прямоугольники? Ведь твоя задача продемонстрировать преимущества Немерле при использовании ООП, а не преимущества самого ООП, которые итак многим известны.


Читали? В Programming F# говорится не столько про ООП, сколько про ООП в дотнете: методы Систем.Обджект, Эквалити и прочее. В каждом разделе — просто про то, что есть такие вот, например, виртуальные методы, которые можно перегружать и приводится синтаксис данной ООП фтуки. Никакого примера, в котором бы описывались преимущества ООП, а не просто то, как его записать, там нет.
Help will always be given at Hogwarts to those who ask for it.
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 12.06.10 11:19
Оценка:
_FRED_,

I>> У дядьки вот здесь


_FR>

_FR>Omar AL Zabir is a student of…




Кто скажет что это девочка пусть первым бросит в меня камень.

... << RSDN@Home 1.2.0 alpha 4 rev. 1423>>
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[7]: На базе чего лучше всего продемонстрировать ООП?
От: Ziaw Россия  
Дата: 12.06.10 16:10
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, gandjustas, Вы писали:


G>>Кстати идея, почему бы не написать расширение 2010 студии?


S>интеграцию Немерла со студией!


Можно сделать простенькую интеграцию для калькулятора. Т.е. вводим ввыражение в файл, там работает хайлайтинг и показываются хинты. Только статья получится — как прикрутить свой язык к студии. Статья довольно злободневная, но как-то в стороне от темы.
Re[11]: На базе чего лучше всего продемонстрировать ООП?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 12.06.10 18:42
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>

_FR>About the author

_FR>Omar AL Zabir is a student of…




а если прочесть чуть больше


He developed the Web-based automation and collaboration system for his university using the .NET Framework almost three years ago when it was in the Beta 1 stage. He has also worked for seven years (beginning when he was in high school) at Orion Technologies as Lead Developer, developing solutions for large banks in the United States. His love for Microsoft technologies can be seen at his Web site www.oazabir.com.


хороший студент — 7 лет опыт лиддевелопера.
Re[12]: На базе чего лучше всего продемонстрировать ООП?
От: _FRED_ Черногория
Дата: 12.06.10 21:21
Оценка:
Здравствуйте, Ikemefula, Вы писали:

_FR>>

_FR>>About the author
_FR>>Omar AL Zabir is a student of…

I>

I>а если прочесть чуть больше

I>He developed the Web-based automation and collaboration system for his university using the .NET Framework almost three years ago when it was in the Beta 1 stage. He has also worked for seven years (beginning when he was in high school) at Orion Technologies as Lead Developer, developing solutions for large banks in the United States. His love for Microsoft technologies can be seen at his Web site www.oazabir.com.


I>хороший студент — 7 лет опыт лиддевелопера.


В том что касается опыта, на мой более чем скромный взгляд, дела говорят более биографии.

Прежде чем написать свой пост, я нашёл анкету данного товарища на линкедине, поэтому имел представление о его "послужном списке". Так вот в том, что касается данной статьи, отквоченное мной более отражает действительность, нежели те, где "чуть больше".
Help will always be given at Hogwarts to those who ask for it.
Re[13]: На базе чего лучше всего продемонстрировать ООП?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 13.06.10 06:03
Оценка: :)
Здравствуйте, _FRED_, Вы писали:

I>>хороший студент — 7 лет опыт лиддевелопера.


_FR>В том что касается опыта, на мой более чем скромный взгляд, дела говорят более биографии.


Что тебе в его программе не понравилось ?

Плохая модель, корявый код, вагон ошибок ?

_FR>Прежде чем написать свой пост, я нашёл анкету данного товарища на линкедине, поэтому имел представление о его "послужном списке".


http://bd.linkedin.com/in/oazabir

Что именно тебя смутило в его послужном списке ?

>Так вот в том, что касается данной статьи, отквоченное мной более отражает действительность, нежели те, где "чуть больше".


Нюню

Omar AL Zabir’s Honors:
Microsoft Most Valuable Professional — Visual C# — 2005, 2006, 2007, 2008, 2009, 2010
Re: На базе чего лучше всего продемонстрировать ООП?
От: Тролль зеленый и толстый  
Дата: 14.06.10 16:25
Оценка:
1) Иерархия контейнеров — абстрактное множество, перечисляемое множество, список, массив, ассоциативный словарь и т.д.
2) Опять же, UI — базовый класс Control, производный Panel, производный List и т.д.

<полемика>
А вообще, мне кажется, проблема не в подборе примера, а в тебе самом. Похоже, ты просто считаешь ООП ненужным (или не понимаешь как его применять?) Да и, на самом деле — языки со смешанной парадигмой вообще вещь сомнительная. В этой необходимости переключения между враждебными подходами есть какая-то концептуальная неполноценность. Здесь у нас — ФП, здесь — ООП, а здесь — селедку заворачивали.
</полемика>
Re[14]: На базе чего лучше всего продемонстрировать ООП?
От: Klapaucius  
Дата: 15.06.10 06:51
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Хотябы тем что отсутствуют связи межу объектами.

Извините, не понял.

WH>Попробуй представить реализацию проверки попдания пули по монстру используя реактивное программирование.

А как это будет выглядеть в ОО?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[14]: На базе чего лучше всего продемонстрировать ООП?
От: Klapaucius  
Дата: 15.06.10 06:51
Оценка:
Здравствуйте, vdimas, Вы писали:

V>В чистом виде неудобно для большого кол-ва задач.

Ну, я, собственно, и спросил — чем не удобно? Ответ "тем что неудобно" мне кажется каким-то малосодержательным.
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[12]: На базе чего лучше всего продемонстрировать ООП?
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.06.10 07:54
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

ANS>>Плохому танцору... того...

ANS>>Как бы, с борландами, и с C++ и с ObjectPascal ходил Calc, если мне склероз не изменяет. С мордой на TurboVision. Как я помню исходники были маленькими.

BZ>хуже того — они поставлялись в качестве примера ещё с tp 3.0. задолго до ООП


TurboVision — это ООП.
Re[15]: На базе чего лучше всего продемонстрировать ООП?
От: WolfHound  
Дата: 15.06.10 08:46
Оценка:
Здравствуйте, Klapaucius, Вы писали:

WH>>Хотябы тем что отсутствуют связи межу объектами.

K>Извините, не понял.

Reactive programming is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automatically propagate changes through the data flow.

(С) http://en.wikipedia.org/wiki/Reactive_programming

Найти куда воткнуть эти самые "data flows" между объектами симуляции весьма затруднительно.
А даже если и получится то получишь дикий перерасход памяти и вычислительных ресурсов.
Да и решение получится сложнее чем на ООП.

WH>>Попробуй представить реализацию проверки попдания пули по монстру используя реактивное программирование.

K>А как это будет выглядеть в ОО?
monsters
    .FindNearMonsters(bullet) // отсекаем большую часть живности используя что-то типа quadmap.
    .FlatMap(monster => // Находим всех монстров в которых попадает эта пуля
        do
        {
            dist <- monster.Collide(bullet); // Collide возвращает option (он же maby)
            return (dist, monster);
        })
    .FindBest(((oldDist, _), (newDist, _)) => newDist < oldDist) // Выбераем первого

Даже если забыть про FindNearMonsters который экономит кучу времени выбор первого монстра для убивания выносит мозг на корню. Как это сделать используя реактивное программирование я не знаю.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: На базе чего лучше всего продемонстрировать ООП?
От: z00n  
Дата: 15.06.10 08:51
Оценка:
Использовать пример из 10-ой главы "Programming in Scala" by Odersky et al.

Код:
http://booksites.artima.com/programming_in_scala/examples/html/ch10.html
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.