Re[6]: JavaScript
От: Sheridan Россия  
Дата: 24.04.06 05:38
Оценка: -1
Здравствуйте, Oyster, Вы писали:

O>Да я думал написать "технология" — как-то громко звучит как для ASP...


Да и вообще у .net в этом отношении громкость сильно завышена...

[RSDN@Home][1.2.0][alpha][648]
[Hет большей мудрости, чем своевременность. [Ф. Бэкон]]
Matrix has you...
Re[7]: JavaScript
От: anton_t Россия  
Дата: 24.04.06 09:15
Оценка:
Здравствуйте, Sheridan, Вы писали:

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


O>>Да я думал написать "технология" — как-то громко звучит как для ASP...


S>Да и вообще у .net в этом отношении громкость сильно завышена...


А что, уши закладывает?
Re[10]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 24.04.06 09:20
Оценка: +1
M>Ключевое слово — "обычно", то есть — не обязательно

M>>

M>>Hence Kay's objection: I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. Since that writeup has been nuked, I shall explain. Alan C. Kay was the brains behind smalltalk, an pioneering strongly Object-Oriented language. /p>


M>>...так что речь шла всё-таки в контексте конкретного языка, т.е. он хотел сказать, что когда вводил новый термин, он имел ввиду не только, а тогда даже не столько С++, а скорее smalltalk. Наверное, так эту фразу и следует понимать.


M>С++ все равно не является чистым ОО языком. А ЯваСкрипт — вполне себе язык с поддержкой ООП


JavaScript OB, а не OO, по-крайней мере, во всех книгах по нему это явно утверждается. Да и по синтаксису работы с объектами в нем это вполне видно.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[8]: JavaScript
От: Sheridan Россия  
Дата: 24.04.06 09:37
Оценка: +1
Здравствуйте, anton_t, Вы писали:

O>>>Да я думал написать "технология" — как-то громко звучит как для ASP...

S>>Да и вообще у .net в этом отношении громкость сильно завышена...
_>А что, уши закладывает?

Да неговори. Ведь к тем кто раньше в студии работал теперь добавились дельфисты/билдеристы... Причем в основном из общества "дайте компоненту"...

[RSDN@Home][1.2.0][alpha][648]
[Здоровье без силы — то же, что твердость без упругости. [К. Прутков]]
Matrix has you...
Re[11]: JavaScript
От: Mamut Швеция http://dmitriid.com
Дата: 24.04.06 16:51
Оценка:
M>>С++ все равно не является чистым ОО языком. А ЯваСкрипт — вполне себе язык с поддержкой ООП

AS>JavaScript OB, а не OO, по-крайней мере, во всех книгах по нему это явно утверждается. Да и по синтаксису работы с объектами в нем это вполне видно.


Ну, мне все равно хватает

А по некоторым примерам работы вообще выглядит, как вполне человеческий ОО



dmitriid.comGitHubLinkedIn
Re[12]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 24.04.06 19:47
Оценка:
M>А по некоторым примерам работы вообще выглядит, как вполне человеческий ОО

Ок. Тогда изобразите там наследование Я не особый спец в JavaScript, но такого там не припомню.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[13]: JavaScript
От: qwier Украина  
Дата: 24.04.06 20:49
Оценка: 1 (1)
Здравствуйте, Andrew S, Вы писали:

AS>Ок. Тогда изобразите там наследование Я не особый спец в JavaScript, но такого там не припомню.


здесь
... << RSDN@Home 1.2.0 alpha rev. 648>>
Re[14]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 24.04.06 21:58
Оценка:
AS>>Ок. Тогда изобразите там наследование Я не особый спец в JavaScript, но такого там не припомню.

Q>здесь

Интересная статья, спасибо. Но.. Прототипы это все же не наследование. Ну или не в том плане, в котором это подразумевается в ОО. В статье прямо говориться, что "нормального" наследование в терминах ООП в JavaScript нативно нет. Приведенный код реализует эмуляцию наследования посредством прототипов... Но решение интересное, я такого не видел.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[15]: JavaScript
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.04.06 03:56
Оценка: +1
Здравствуйте, Andrew S, Вы писали:

Q>>здесь

AS>Интересная статья, спасибо. Но.. Прототипы это все же не наследование. Ну или не в том плане, в котором это подразумевается в ОО.
Особенно мне нравится слово "подразумевается". Ребята, ООП != "class A: publiс B".
AS>В статье прямо говориться, что "нормального" наследование в терминах ООП в JavaScript нативно нет.
Определение "нормального" наследования в студию. Подсказка: ввести более-менее удовлетворительно формальное определение наследования в Theory of Classification удается ввести только к 8 части (см. http://www.jot.fm/issues/issue_2003_07/column4)

AS>Приведенный код реализует эмуляцию наследования посредством прототипов... Но решение интересное, я такого не видел.

Решение очевидное, и оно было заложено в JavaScript в самом начале. Никакой эмуляции здесь нет, это и есть настоящее наследование, только наследование экземпляров, а не классов. Просто С++ и другие мейнстрим языки настолько прочно промыли мозг разработчикам, что им трудно воспринять концепции, хоть в чем-то отличные от привычных vtbl и downcast.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.04.06 06:30
Оценка:
Q>>>здесь
AS>>Интересная статья, спасибо. Но.. Прототипы это все же не наследование. Ну или не в том плане, в котором это подразумевается в ОО.
S>Особенно мне нравится слово "подразумевается". Ребята, ООП != "class A: publiс B".

Где я это говорил, а?

AS>>В статье прямо говориться, что "нормального" наследование в терминах ООП в JavaScript нативно нет.

S>Определение "нормального" наследования в студию. Подсказка: ввести более-менее удовлетворительно формальное определение наследования в Theory of Classification удается ввести только к 8 части (см. http://www.jot.fm/issues/issue_2003_07/column4)

Смешно, право. Открытое наследование (в данном случае) выражает отношение "ЯВЛЯЕТСЯ" и должно следовать принципу LSP. Прочтите этот принцип и убедитесь, что там говориться про _типы_.

AS>>Приведенный код реализует эмуляцию наследования посредством прототипов... Но решение интересное, я такого не видел.

S>Решение очевидное, и оно было заложено в JavaScript в самом начале. Никакой эмуляции здесь нет, это и есть настоящее наследование, только наследование экземпляров, а не классов.

Правильно, наследование не на уровне типов, а на уровне объектов. Поведение OB языка, а не OO, верно?
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[15]: JavaScript
От: Курилка Россия http://kirya.narod.ru/
Дата: 25.04.06 06:56
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>>>Ок. Тогда изобразите там наследование Я не особый спец в JavaScript, но такого там не припомню.


Q>>здесь

AS>Интересная статья, спасибо. Но.. Прототипы это все же не наследование. Ну или не в том плане, в котором это подразумевается в ОО. В статье прямо говориться, что "нормального" наследование в терминах ООП в JavaScript нативно нет. Приведенный код реализует эмуляцию наследования посредством прототипов... Но решение интересное, я такого не видел.
И что? Прототипы — один из вариантов организации ООП. Не стандартный, но вполне возможный.
Re[17]: JavaScript
От: Cyberax Марс  
Дата: 25.04.06 07:48
Оценка:
Andrew S wrote:
> Смешно, право. Открытое наследование (в данном случае) выражает
> отношение "ЯВЛЯЕТСЯ" и должно следовать принципу LSP. Прочтите этот
> принцип и убедитесь, что там говориться про _типы_.

Let q(x) be a property provable about objects x of type T. Then q(y)
should be true for objects y of type S where S is a subtype of T.


Для JavaScript понятие "тип" вводим как "множество объектов, имеющих
одинаковый набор сигнатур методов". Тогда наследование в JS вполне
удовлетворяет LSP.

> Правильно, наследование не на уровне типов, а на уровне объектов.

> Поведение OB языка, а не OO, верно?
Определите понятие "Object-Based" языка. Классическое опредление ООП —
"объекты, обменивающиеся сообщениями" (см. Smalltalk).
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[18]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 26.04.06 21:21
Оценка: +1
C>Andrew S wrote:
>> Смешно, право. Открытое наследование (в данном случае) выражает
>> отношение "ЯВЛЯЕТСЯ" и должно следовать принципу LSP. Прочтите этот
>> принцип и убедитесь, что там говориться про _типы_.
C>

Let q(x) be a property provable about objects x of type T. Then q(y)
C>should be true for objects y of type S where S is a subtype of T.


C>Для JavaScript понятие "тип" вводим как "множество объектов, имеющих

C>одинаковый набор сигнатур методов". Тогда наследование в JS вполне
C>удовлетворяет LSP.

Вы путаете понятия типа объекта и понятия экземпляра объекта. Если вы какашку назовете конфеткой, пахнуть под другому, извините, оно не будет...
Наследование подразумевает создание экземпляра типа, который одновременно является и _новым_ экземпляром родительского типа. Для JavaScript _автоматически_ это не выполняется, почему, надеюсь, пояснять не надо? Просто посмотрите указанную ранее статью. А вообще — ОО можно эмулировать хоть на С (при помощи функций-указателей), были и такие варианты — только недавно смотрел библиотеку, где так сделано

>> Правильно, наследование не на уровне типов, а на уровне объектов.

>> Поведение OB языка, а не OO, верно?
C>Определите понятие "Object-Based" языка. Классическое опредление ООП —
C>"объекты, обменивающиеся сообщениями" (см. Smalltalk).
Сильное определение, и главное, какое формальное. Вы, похоже, не читаете, что вам отвечают. http://gzip.rsdn.ru/Forum/Message.aspx?mid=1861569&amp;only=1
Автор: maxluzin
Дата: 21.04.06


Вот, еще посмотрите:
http://www.sitepoint.com/article/oriented-programming-1
В самом начале статьи поясняется, что JavaScript OB. http://en.wikipedia.org/wiki/Object-based
Теперь убедились, что прототипы это не ООП? Если нет, то вдогонку почитайте
http://en.wikipedia.org/wiki/Prototype-based_%28programming%29

Кстати, как там в JavaScript с полиморфизмом (я на самом деле просто не знаю)? Только не предлагайте очередную "эмуляцию", как в случае наследования

BTW — я не говорю, что OB это плохо, а OO это хорошо, или что лучше или хуже. Меня, например, JavaScript для целей автоматизации вполне устраивает. Хотя, конечно, если был бы альтернативный скриптовый движок от m$ с синтаксисом С++, я бы предпочел его — просто привычнее, что ли.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[16]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 26.04.06 21:25
Оценка:
AS>>>>Ок. Тогда изобразите там наследование Я не особый спец в JavaScript, но такого там не припомню.

Q>>>здесь

AS>>Интересная статья, спасибо. Но.. Прототипы это все же не наследование. Ну или не в том плане, в котором это подразумевается в ОО. В статье прямо говориться, что "нормального" наследование в терминах ООП в JavaScript нативно нет. Приведенный код реализует эмуляцию наследования посредством прототипов... Но решение интересное, я такого не видел.
К>И что? Прототипы — один из вариантов организации ООП. Не стандартный, но вполне возможный.

Прототипы реализуют только сабсет ооп. В указанной вами ссылке это сказано явно
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[19]: JavaScript
От: Cyberax Марс  
Дата: 27.04.06 05:32
Оценка:
Andrew S wrote:
> Вы путаете понятия типа объекта и понятия экземпляра объекта.
Нет, это вы путаете понятие "тип", которое применимо к LSP и понятие
"тип" в языке C++/C/Java.

> какашку назовете конфеткой, пахнуть под другому, извините, оно не будет...

> Наследование подразумевает создание экземпляра типа, который
> одновременно является и _новым_ экземпляром родительского типа.
И? Я могу создать новый объект JS по прототипу и добавить туда новые
функции или перегрузить старые.

> Для JavaScript _автоматически_ это не выполняется, почему, надеюсь, пояснять

> не надо?
Надо.

> Просто посмотрите указанную ранее статью. А вообще — ОО можно

> эмулировать хоть на С (при помощи функций-указателей), были и такие
> варианты — только недавно смотрел библиотеку, где так сделано
Я сам такие библиотеки писал.

> C>Определите понятие "Object-Based" языка. Классическое опредление ООП —

> C>"объекты, обменивающиеся сообщениями" (см. Smalltalk).
> Сильное определение, и главное, какое формальное. Вы, похоже, не
> читаете, что вам отвечают.
Что делать — других определений я не встречал.

Разъяснения "ООП — это когда есть полиморфизм и наследование" — на
определение не тянут.

> http://gzip.rsdn.ru/Forum/Message.aspx?mid=1861569&amp;only=1
Автор: maxluzin
Дата: 21.04.06

An object-oriented programming language generally has three
distinguishing features that other languages lack:

Выделено.

> Вот, еще посмотрите:

> http://www.sitepoint.com/article/oriented-programming-1
> В самом начале статьи поясняется, что JavaScript OB.
Не тянет на серьезную статью:

First of all, JavaScript is not a full-blown OOP (Object-Oriented
Programming) language, such as Java, but it is an object-based
language.

— и больше про OB ничего нет.

> http://en.wikipedia.org/wiki/Object-based

> Теперь убедились, что прототипы это не ООП? Если нет, то вдогонку почитайте
> http://en.wikipedia.org/wiki/Prototype-based_%28programming%29

Prototype-based programming is a style and subset of
object-oriented programming in which classes are not present, and
behaviour reuse (known as inheritance in class-based languages) is
accomplished through a process of cloning existing objects which serve
as prototypes.

И чем это должно меня убедить?

> Кстати, как там в JavaScript с полиморфизмом (я на самом деле просто не

> знаю)? Только не предлагайте очередную "эмуляцию", как в случае
> наследования
Обычный name-based полиморфизм. Как в Smalltalk/Python/Ruby и других
динамических языках.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[20]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 27.04.06 07:09
Оценка:
C>

Prototype-based programming is a style and subset of
C>object-oriented programming in which classes are not present, and
C>behaviour reuse (known as inheritance in class-based languages) is
C>accomplished through a process of cloning existing objects which serve
C>as prototypes.

C>И чем это должно меня убедить?

Тем, что _подмножество_ ООП. Т.е. все же не ООП.

>> Кстати, как там в JavaScript с полиморфизмом (я на самом деле просто не

>> знаю)? Только не предлагайте очередную "эмуляцию", как в случае
>> наследования
C>Обычный name-based полиморфизм. Как в Smalltalk/Python/Ruby и других
C>динамических языках.

Вообще, да, тут же нет типов, поэтому полиморфизм весьма условен. В общем, я думаю, все друг-друга поняли, а дальнейшая полемика бесперспективна. Но, право, непонятно, зачем упираться и утверждать, что JavaScript полноценный ОО язык, когда _везде_ пишут, что это не так
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[21]: JavaScript
От: Cyberax Марс  
Дата: 27.04.06 07:25
Оценка: +3
Andrew S wrote:
> Prototype-based programming is *a style and subset* of
> C>object-oriented programming in which classes are not present, and
> C>behaviour reuse (known as inheritance in class-based languages) is
> C>accomplished through a process of cloning existing objects which serve
> C>as prototypes.
> C>И чем это должно меня убедить?
> Тем, что _подмножество_ ООП. Т.е. все же не ООП.
Естественно. Class-based — это тоже стиль и подмножество ООП.

> C>Обычный name-based полиморфизм. Как в Smalltalk/Python/Ruby и других

> C>динамических языках.
> Вообще, да, тут же нет типов, поэтому полиморфизм весьма условен. В
> общем, я думаю, все друг-друга поняли, а дальнейшая полемика
> бесперспективна. Но, право, непонятно, зачем упираться и утверждать, что
> JavaScript полноценный ОО язык, когда _везде_ пишут, что это не так
http://www.javascriptkit.com/javatutors/oopjs.shtml :

JavaScript is an excellent language to write object oriented web
applications. It can support OOP because it supports inheritance
through prototyping as well as properties and methods
. Many
developers cast off JS as a suitable OOP language because they are so
used to the class style of C# and Java. Many people don't realize that
JavaScript supports inheritance. When you write object-oriented code it
instantly gives you power; you can write code that can be re-used and
that is encapsulated.

Так что не везде пишут
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[21]: JavaScript
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 27.04.06 09:02
Оценка: +1
Здравствуйте, Andrew S, Вы писали:

AS>Тем, что _подмножество_ ООП. Т.е. все же не ООП.


Ты можеш думать, как тебе угодно, но ты сам себя ограничиваеш. Когда говорят "машина", то термин не определяют через "наличие корпуса, четырёх колёс и бибикалки". Потому что может оказаться, что штука отвечающая определению не ездит. И наоборот, что, "шесть колёс" и уже не машина? Так и тут. "3 кита" это всего лиш вторичные половые признаки, которые вытащили, когда пытались формализовать, что же такого даёт "объект сам отвечающий на сообщения".

>>> Кстати, как там в JavaScript с полиморфизмом (я на самом деле просто не

>>> знаю)? Только не предлагайте очередную "эмуляцию", как в случае
>>> наследования
C>>Обычный name-based полиморфизм. Как в Smalltalk/Python/Ruby и других
C>>динамических языках.

Лучше написать "динамически типизируемых языках". Чтобы типы были.

AS>Вообще, да, тут же нет типов, поэтому полиморфизм весьма условен.


"Нет типов" это "нет классов"?
И, кстати, вот ты упоминал LSP в контексте определения "ООП". Внимание вопрос, является ли С++ ООЯ, если там нельзя форсировать выполнение LSP?

AS>В общем, я думаю, все друг-друга поняли, а дальнейшая полемика бесперспективна.


Это действительно так. Вопрос "с ООП" обсосан в "философии программирования" до невозможности. К чему повторятся?

AS>Но, право, непонятно, зачем упираться и утверждать, что JavaScript полноценный ОО язык, когда _везде_ пишут, что это не так


"_Везде_" это на wikipedia? Обращатся нужно к ресурсам созданным программистами. Например "c2" wiki. Смотрим определение ОО. Бац! Больше одного варианта. Пройдись по ссылкам. Там ты сможеш найти кучу цитат и в поддержку своей точки зрения в том числе. По этому, говорить "везде пишут" это столь же сильное, сколь и не верное утверждение.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[22]: JavaScript
От: Andrew S Россия http://alchemy-lab.com
Дата: 27.04.06 09:42
Оценка: -1
ANS>Лучше написать "динамически типизируемых языках". Чтобы типы были.

AS>>Вообще, да, тут же нет типов, поэтому полиморфизм весьма условен.


ANS>"Нет типов" это "нет классов"?

Подразумевается статических типов, вы это прекрасно поняли

ANS>И, кстати, вот ты упоминал LSP в контексте определения "ООП". Внимание вопрос, является ли С++ ООЯ, если там нельзя форсировать выполнение LSP?


LSP определяет термин наследование. ООП включает в себя наследование (по крайней мере, большинство определений, что я видел).

AS>>Но, право, непонятно, зачем упираться и утверждать, что JavaScript полноценный ОО язык, когда _везде_ пишут, что это не так


ANS>"_Везде_" это на wikipedia? Обращатся нужно к ресурсам созданным программистами. Например "c2" wiki. Смотрим определение ОО. Бац! Больше одного варианта. Пройдись по ссылкам. Там ты сможеш найти кучу цитат и в поддержку своей точки зрения в том числе. По этому, говорить "везде пишут" это столь же сильное, сколь и не верное утверждение.


Отнюдь не в вики. Это только в последнем сообщении.
А ссылка хорошая в плане собирательности, ничего кардинально нового там для себя я не нашел
В общем, конструктива я пока больше не вижу
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[22]: JavaScript
От: Sheridan Россия  
Дата: 27.04.06 09:46
Оценка: :))
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Ты можеш думать, как тебе угодно, но ты сам себя ограничиваеш. Когда говорят "машина", то термин не определяют через "наличие корпуса, четырёх колёс и бибикалки". Потому что может оказаться, что штука отвечающая определению не ездит. И наоборот, что, "шесть колёс" и уже не машина? Так и тут. "3 кита" это всего лиш вторичные половые признаки, которые вытащили, когда пытались формализовать, что же такого даёт "объект сам отвечающий на сообщения".


У меня вобще со словом "машина" сразу ассоциация с компом.

[RSDN@Home][1.2.0][alpha][648]
[Кто не думает о конце, ошибется в начале. [Хуан Мануэль]]
Matrix has you...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.