реальный номер строки с ошибкой

Crazy

Developer
Автор оригинала: Ustas
То "ООП", которое есть в php это скорее имитация. Доказывать это бессмысленно, т.к. вещь, imho, очевидная.
Доказывать это бысмысленно не ввиду очевидности, а ввиду бессмысленности утверждения. По той простой причине, что в природе не существует какого-то фундаментального эталона ООП, на который можно было бы равняться, проверяя, что перед нами: истинный представитель или имитация.

ООП, которое есть в PHP, есть дань моде. С этим я согласен. Но тот же smalltalk является также не эталоном, а всего лишь дохлым реликтом прошлого. Отброшенным, не слишком удачным экспериментом.
 

[VS]

Guest
Автор оригинала: Crazy
А нельзя ли подробнее об этом малоизвестном моменте истории языка? Я про "в начала так и сделали".
Я читал что когда только создавали Java, изначально хотели избавиться от double, int, ... так как это не классы, и пользоваться только Integer, Double,...

Как пережиток этого, в Java до сих пор нет удобных массивов для НЕ обьектов. (Я видел куски кода на Generic Java которая поддерживает темплейты, но мало что знаю об этом чуде).

Естественно еще на этапе разработки Java, когда компьютеры были еще медленее чем сейчас, стало понятно что если оставить только Integer, Double, ... то все будет совсем медленно и памяти совсем много будет занимать. По этому скрипя зубами и "испортив чистую обьектную модель" ввели native типы.
 

Ustas

Guest
Извиняюсь, что не участвовал в обсуждении – не было возможности. Будем наверстывать. Держитесь!.. :)))
Автор оригинала: [VS]
Smalltalk - хороший язык для идеологии, но писать на нем программы требующие реальное кол-во памяти и выполняющиеся не слишком медленно - практически не реально.
А хорошо или плохо то что любое число - обьект, это отдельный разговор. В Java сначала так и сделали, потом поняли что нужны как минимум native числа, иначе тормозить все будет и памяти в несколько раз больше чем нужно кушать.
Не буду доказывать обратное, т.к. на smalltalk’е мне довелось написать всего несколько программ. Признаю свою ошибку – Smalltalk здесь не в тему. Я взял его в качестве примера как язык, наиболее пОлно отвечающий идеологии ООП, и его "эталонность" мне казалась непререкаемой, а реализацию и быстродействие smalltalk’а я в пример не ставил. Тем не менее есть другие замечательные чисто объектно-ориентированные языки: ruby, например. Очень шустрый, надо сказать, и с памятью довольно грамотно работает – лишнего не ест. А наличие методов у любой строчки или числа говорит о том, что вы можете создать производный класс от, например, класса целого числа, добавить свои методы и перегрузить методы базового класса (в том числе математические операции) над ним – это очень удобно. Язык умеет сам себя расширять: расширение пишется на нем же. В php я такой возможности не заметил, как ни искал. А жаль. :(
Ничто так не ограничивает полета мысли программиста, как компилятор/интерпретатор.
 

Ustas

Guest
Автор оригинала: .des.
Ну зачем пытаться везде прикрутить ооп? Именно прикрутить...
потому что для задач, решаемых при помощи PHP, хватает ООП в том виде, в котором он сейчас в нем существует.
Да, не скрою, блок try catch это то, чего допустим и я жду с нетерпением, но, простите, приводить объектную модель пхп к объектной модели smalltalk это просто глупо.
Именно это вы и говорите. Но поймите если у вас возникают такие потребности - именно такие без чего вашим проектам не обойтись, вы выбрали не тот язык и ява вас спасет.
Хотя и ее модель далека от smalltalka.
Почему прикрутить?! :) не смешите. Скажем хак-дизайну "нет". :) Я не заставляю никого "прикручивать" ООП к php. Я просто хочу указать на недостатки языка с точки зрения реализации ООП, если уж взялись реализовывать эту идеологию... как говорится, взялся за гуж, не говори, что не дюж.
Php позаимствовал не самые лучшие особенности ООП. На серьезных проектах php себя показывает не с лучшей стороны именно из-за этих обидных недоработок – проверено на опыте и не только на своем, т.к. приходится разгребать за другими умельцами. Я не говорил, что реализация ООП в php должна в точности соответствовать реализации ООП в Smalltalk’е, хотя это не такая уж глупость: компоненты ООП имеют различные недостатки, но эти недостатки компенсируются плюсами других компонентов. ООП все-таки неглупые люди придумали.
А Java меня не спасет, т.к. работает ДЕЙСТВИТЕЛЬНО медленно. Я предпочитаю ruby или python – с их недостатками можно мириться. Но речь же идет о php, так что не надо съезжать на Jav’у.
 

Ustas

Guest
2 ErrN0:
Про пространства имен ты точно подметил. Когда модулей становится побольше, начинаются проблемы. Php на это просто не рассчитан.
А еще в php нет множественного наследования, а без него плохо, т.к. начинают плодиться дублирующие друг друга иерархии классов. Об экономии ресурсов здесь говорить не приходится. :(
 

Ustas

Guest
Автор оригинала: Crazy
Вносить изменения в потроха PHP придется. Но, IMHO, вовсе не такие катастрофические. С совместимостью же я никаких проблем вообще не вижу. Нельзя ли подронее об этом?
Пожалуй, ты прав. С обратной совместимостью проблем, вроде, быть не должно. В исходный код php я заглядывал всего пару раз, поэтому не буду спорить о катастрофичности изменений, требуемых для внесения корректив в механизм хранения и представления данных. Это было мое предположение, основанное на программистской интуиции. :)
Автор оригинала: Crazy
Доказывать это бысмысленно не ввиду очевидности, а ввиду бессмысленности утверждения. По той простой причине, что в природе не существует какого-то фундаментального эталона ООП, на который можно было бы равняться, проверяя, что перед нами: истинный представитель или имитация.
Не согласен! Есть конкретные формализованные принципы.
ООП, которое есть в PHP, есть дань моде. С этим я согласен. Но тот же smalltalk является также не эталоном, а всего лишь дохлым реликтом прошлого. Отброшенным, не слишком удачным экспериментом.
Слишком категоричное высказывание. Smalltalk вовсе не дохлый и не реликт. Imho, это один из самых успешных экспериментов в области программирования. Да, у него есть недостатки, но он работает; на нем был реализован первый в мире оконный интерфейс; его используют и по сей день.
 

Crazy

Developer
Автор оригинала: Ustas
А наличие методов у любой строчки или числа говорит о том, что вы можете создать производный класс от, например, класса целого числа
Ошибка. "Наличие методов" здесь вообще побоку. Если ты имел в виду "если число/строка являются объектом", то в Java, к примеру, строка -- объект String. Но наследовать от нее нельзя. :)
 

Crazy

Developer
Автор оригинала: Ustas
без него плохо, т.к. начинают плодиться дублирующие друг друга иерархии классов.
В PHP нет жесткой типизации, а потому эта проблема именно в PHP в принципе не существует.
 

Crazy

Developer
Автор оригинала: Ustas
Не согласен! Есть конкретные формализованные принципы.
Ту так излагай, не томи. :) Не забудь обосновать их истинность.

Слишком категоричное высказывание. Smalltalk вовсе не дохлый и не реликт.
1. Если на языке никто не пишет, то он дохлый.
2. Если реализации языковой среды под новые платформы перестали создавать, то он реликт.

Примерно на том же уровне, что и Cobol. Да, есть незначительное количество недовымерших программистов. Да, иногда для поддержки старых систем выпускают доделки-компилятора...

Imho, это один из самых успешных экспериментов в области программирования.
Эксперимент -- да, удачный.

Да, у него есть недостатки, но он работает;
Где?

на нем был реализован первый в мире оконный интерфейс; его используют и по сей день.
У меня нет под рукой источников, но для Smalltalk, если мне память не изменяет, были использованы уже существовавшие в PARC наработки по GUI.
 

tony2001

TeaM PHPClub
>Я просто хочу указать на недостатки языка с точки зрения
>реализации ООП, если уж взялись реализовывать эту
>идеологию... как говорится, взялся за гуж, не говори, что не
>дюж.
я, если говорить честно, так и не увидел тех вещей, которых не хватает.
можно говорить о том, что там-то и то-то не соответствует модели ООП в smalltalk, что в джаве у каждой строки есть свои методы и это намного круче, можно много чего сказать..
но надо ли вам это?
в веб-программировании? в РНР? надо?
может отделим мух от котлет и smalltalk от РНР ?

>Язык умеет сам себя расширять: расширение пишется на
>нем же. В php я такой возможности не заметил, как ни
>искал. А жаль.
можно ли считать CPAN расширением Перла, а PEAR - расширением РНР?
я не совсем понимаю понятие "расширять" и насколько оно пересекается с понятием "писать скрипты на языке".
с ruby не сталкивался совсем, поэтому мои познания о нем можно считать равными нулю.
 

GoBeer

Guest
PHP не является объектно-ориентированным языком потому как:
1. Изначально разработан для обработки текстовой или так называемой "бизнес" информации (как, например COBOL или Perl), а не для обработки объектов. (вроде очевидно :) )
2. Программа написанная на ООП языке с использованием классов должна выполняться с такой же эффективностью как и без использования классов (точную ссылку на источник приведу завтра). Насколько я знаю, PHP этим похвастаться не может, хотя до сих пор не уверен на 100%.
Поэтому реализация модели ООП в PHP не может сравниться с ее реализацией в изначально объектно-ориентированными языками (С++, SmallTalk и т.д.).
 

kvn

programmer
1. Изначально разработан для обработки текстовой или так называемой "бизнес" информации (как, например COBOL или Perl), а не для обработки объектов. (вроде очевидно )
угу, посмотрим на это мнение со стороны php5.. потом.
2. Программа написанная на ООП языке с использованием классов должна выполняться с такой же эффективностью как и без использования классов (точную ссылку на источник приведу завтра). Насколько я знаю, PHP этим похвастаться не может, хотя до сих пор не уверен на 100%.
м.... ну и что?

Я, если честно, не пойму о чем Вы спорите, тем более если взглянуть на тему топика, ну то ладно.
Если уже придираться к ООП в ПХП с точки зрения скорости - то это, извините меня, просто глупо.

П.С. Никого глупцом назвать не хотел, тем более извинился.

У каждого языка свой синтаксис, свои +/-, свое ООП, хотя фраза ООП в ПХП мне не очень нравится, ООП - это больше образ мышления, а не особенности реализации того же c++/smaltalk/etc..,
Я видел, как ребята на ANSI C наваяли довольно серьезный проект, с использованием структур аля обьектов, о ОО подход там был на высоте. Да, там не было многих вещей, которые желательны для ОО программирования, ну и что?

П.С. Сам на С/С++ не пишу, поэтому пересказ со слов авторов.

Удачи.
 

tony2001

TeaM PHPClub
>вроде очевидно
кому?

>Программа написанная на ООП языке с использованием
>классов должна выполняться с такой же эффективностью
>как и без использования классов
можно привести пример такой программы на упоминавшихся выше smalltalk & Java?
 

kvn

programmer
... и еще:
Как сказал, один из участников этого форума:
"Использование классов - это еще не ООП"
 

Crazy

Developer
Автор оригинала: GoBeer
1. Изначально разработан для обработки текстовой или так называемой "бизнес" информации (как, например COBOL или Perl), а не для обработки объектов. (вроде очевидно :) )
PHP никогда не разрабатывался для обработки текстовой информации. Его первая версия была сделана для оживляжа домашних страниц как более крутая версия SSI. Но PHP 1.0 и 4.x -- это не разные версии, а разные языки.

Про бизнес-информации хочется послушать подробнее.

2. Программа написанная на ООП языке с использованием классов должна выполняться с такой же эффективностью как и без использования классов
Чушь. Ибо:

1. Чистые ОО-языки вообще не позволяют работать без классов, так что сравнить не с чем.
2. Гибридные ОО-языки сохранили не-ОО компоненты именно по соображениям эффективности.

(точную ссылку на источник приведу завтра).
На источник чего? Повторяю: не существует ИСТИННОГО ООП. У ООП нет апостолов. Нет священного писания. Разные авторы понимают эту концепцию различно. В разных языках она реализована по-разному.

Поэтому реализация модели ООП в PHP не может сравниться с ее реализацией в изначально объектно-ориентированными языками (С++, SmallTalk и т.д.).
Ты хочешь сказать, что на C++ скорость работы с использованием объектов и без них всегда идентична? :)
 

Crazy

Developer
Автор оригинала: kvn
"Использование классов - это еще не ООП"
Я, похоже, скоро соглашусь с изречением неизвестного автора о том, что OOP, в отличие от OOD, на 90% представляет собой спекуляцию.
 

Ustas

Guest
Автор оригинала: Crazy
Ошибка. "Наличие методов" здесь вообще побоку. Если ты имел в виду "если число/строка являются объектом", то в Java, к примеру, строка -- объект String. Но наследовать от нее нельзя. :)
Не ошибка. В python’е том же можно создавать классы наследованием от любого встроенного типа данных. Методы бывают только у объектов, если уж придерживаться терминологии, поэтому наличие методов здесь не побоку. Java не является эталоном ООП, поэтому давайте его в пример ставить не будем.

Автор оригинала: Crazy
В PHP нет жесткой типизации, а потому эта проблема именно в PHP в принципе не существует.
В python’е и ruby тоже нет жесткой типизации, но это нисколько им не мешает работать с объектами и поддерживать множественное наследование. Ты знаешь, что такое наследование?

Автор оригинала: Crazy
Ту так излагай, не томи. :) Не забудь обосновать их истинность.
RTFM. Я тебе не собираюсь здесь ничего доказывать и излагать. Почитай Гради Буча хотя бы, а потом уже разводи флейм.

По поводу Smalltalk’а. На нем пишут многие люди в научной среде (только в последнее время многие стали переходить на расширенный вариант Python’а). Так что он вовсе не такой динозавр, как тебе кажется и даст фору. Не знаешь – не говори. Cobol – действительно мертвый язык; это была попытка максимально приблизить язык программирования к естественному языку, но оказалось, что решение этой задачи "в лоб" не дает должной гибкости.
Все необходимые реализации у Smalltalk’а уже давно есть. В коммерческих разработках Smalltalk не используется и не позиционируется как альтернатива коммерческих решений, поэтому нет необходимости переносить его на экзотические платформы.

Автор оригинала: Crazy
У меня нет под рукой источников, но для Smalltalk, если мне память не изменяет, были использованы уже существовавшие в PARC наработки по GUI.
Идея оконного интерфейса принадлежит Айвену Сазерленду – он ее изложил в своей диссертации, еще 60-х. В Xerox PARC идея GUI была успешно реализована на основе ООП на Smalltalk’е, и распространение это не получило в то время, т.к. машины Xerox Alto и Xerox Star стоили довольно дорого (даже по тем временам), не было инвестиций – всем показалось это забавной дорогой игрушкой.
 

kvn

programmer
Автор оригинала: Crazy
Я, похоже, скоро соглашусь с изречением неизвестного автора о том, что OOP, в отличие от OOD, на 90% представляет собой спекуляцию.
Есть доля правды в этой шутке..
;)
 

Ustas

Guest
Автор оригинала: tony2001
я, если говорить честно, так и не увидел тех вещей, которых не хватает.
можно говорить о том, что там-то и то-то не соответствует модели ООП в smalltalk, что в джаве у каждой строки есть свои методы и это намного круче, можно много чего сказать..
но надо ли вам это?
в веб-программировании? в РНР? надо?
может отделим мух от котлет и smalltalk от РНР ?
Мда-а-а... Вы, я смотрю, здорово ориентируетесь в технологиях...
Web-программирование мало чем отличается от программирования вообще. Точнее web-программирование -- это всего лишь прикладная область. Серьезный web-проект это тоже программный продукт, причем довольно сложный. Это вам не хомепаги клепать.
Отделим мух. Список вещей, которых, imho, не хватает в php (не потому, что в других языках это есть и это прикольно, а из практических соображений):
1) множественное наследование;
2) поддержка пространств имен (не так вобщем-то важно, но было бы полезно);
3) система каскадной обработки исключений (это критически важная проблема);
4) возможность расширения языка.
Этого хватит. Поясню последний пункт. Что такое расширяемость? В языке есть встроенный тип данных, скажем, "действительное число", а программисту для решения какой-то задачи нужно создать тип данных "комплексное число". Программист, почесав в затылке, создает свой класс наследованием от встроенного, перегружает методы, отлаживает свой класс и посылает его разработчикам. Те соглашаются, типа, "Да, это нужно" и добавляют этот класс в стандартный комплект поставки. Python наполовину написан на себе же! Работает замечательно!
 

su1d

Старожил PHPClubа
...OOP, в отличие от OOD, на 90% представляет собой спекуляцию.
предлагаю всем с этим согласиться, начать переводить все темы об ООП в категорию "оффтопика" (или сразу на помойку) и впредь обсуждать только ООД. =)
 
Сверху