Re[9]: передача параметра "по ссылке"
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.12.06 10:54
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Тычеблин, Вы писали:


Т>> откуда такое определение?

R>Re[6]: передача параметра "по ссылке"
Автор: rsn81
Дата: 21.12.06
(ссылка в сообщении)


Т>>скажу мягко...это утверждение несоответствует действительности

R>Скажу твердо: RTFM! В рамках ООП — соответствует. Конечно, если вы пишете процедурно, то...
А если функционально?
Использовать другие подходы кроме ООП нонче запрещается?
Re[5]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 11:04
Оценка:
Здравствуйте, Trean, Вы писали:

T>Здравствуйте, Тычеблин, Вы писали:


T>Я на C/C++ писал в открытом море, и когда, если следовать вашей аналогии меня засунули в аквариум, я даже не расстроился потери int& или int*.






Т>>так и я, начав переписывать код, некоторое время, делал это в стиле JAVA ...

Т>>прозрение наступило позже...
Т>>одним словом, это нужно реально ощутить на практике.
Т>>уверяю, контраст разительный.
Т>>и дело не только в примитивах. считаю возможность передавать ЛЮБЫЕ переменные byref важнее и полезне чем дженерики.

T>Гм, позвольте, а где в java проблема с передачей изменяемых в методе объектов? Это только к примитивам относится, или вы хотите чтобы еще и значение передаваемой ссылки на объект можно было менять?


да, обязательно, именно так. причем в объявлении параметров функции обязательно большими буквами BYREF !!!!!

T>Так это такие баги в программе будут, что лучше сразу выпить яду.


не пользуйся и баги будут все те же...неслышал чтобы программрование на C# более трудоемкое чем на JAVA.

T>Буду рад если вы приведете кусочек кода, после которого у меня наступит прозрение чтобы понять, что я теряю сейчас.



   public static void Swap(ref Object a, ref Object b)
    {
        Object temp = a;
        a = b;
        b = temp;
    }
.......

// использование...где то в коде
Object a=new Object;
Object b=new Object;

Swap(ref a, ref b)


все.

как это сделать на JAVA я знаю...но можешь написать для усугубления осчущения.
Re[9]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 11:07
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Тычеблин, Вы писали:


Т>> откуда такое определение?

R>Re[6]: передача параметра "по ссылке"
Автор: rsn81
Дата: 21.12.06
(ссылка в сообщении)


Т>>скажу мягко...это утверждение несоответствует действительности

R>Скажу твердо: RTFM! В рамках ООП — соответствует. Конечно, если вы пишете процедурно, то...

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

(приведеную ссылку прочел, просветления не наступило )
Re[10]: передача параметра "по ссылке"
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 21.12.06 11:16
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А если функционально?

А вы пробовали? Попробуйте, к примеру, в XSLT-преобразовании такое сделать...

К>Использовать другие подходы кроме ООП нонче запрещается?

Не понял шутку юмора.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[6]: передача параметра "по ссылке"
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 21.12.06 11:20
Оценка: :))
Здравствуйте, Тычеблин, Вы писали:

Т>как это сделать на JAVA я знаю...но можешь написать для усугубления осчущения.

Каков пример, таков и ответ:
Object a = new Object;
Object b = new Object;
// вместо Swap(ref a, ref b)
Object temp = a;
a = b;
b = temp;
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[11]: передача параметра "по ссылке"
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.12.06 11:29
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Курилка, Вы писали:


К>>А если функционально?

R>А вы пробовали? Попробуйте, к примеру, в XSLT-преобразовании такое сделать...
И что ты пытаешься этим показать?
Просто Объекты они только в ООП, поэтому при применении других подходов решение будет другим, ты же только про процедурное говоришь.

К>>Использовать другие подходы кроме ООП нонче запрещается?

R>Не понял шутку юмора.

просто ООП — не единственный подход к решению задач, порой другие варианты более удобны.
Re[15]: передача параметра "по ссылке"
От: JITM  
Дата: 21.12.06 11:30
Оценка:
Здравствуйте, aka50, Вы писали:

A>Здравствуйте, fellow.sufferer, Вы писали:


FS>>То есть ты щас повторил, то что я написал от своего имени и этим типа избежал ответа на вопрос)

FS>>Хорошая попытка)

A>чтоб было понятнее... основная твоя ошибка здесь:

FS>>3. obj = new MyObject(); — создал объект и установил ссылку.
A>изменил значение указателя

А что если ипользуеться слово установил то этио значит что ничего не изменилось . .??? По-моему если что -то кто -то установил, то по-любому над чем происходила эта операция было изменено!!!!

A>Правильное слово будет "изменил", и тогда становится понятно что

A>есть "примитивный" указатель... он в кавычках, т.к. что int, что
A>ссылка передаются по значению...
Re[6]: передача параметра "по ссылке"
От: Trean Беларусь http://axamit.com/
Дата: 21.12.06 11:38
Оценка: +1
Здравствуйте, Тычеблин, Вы писали:

T>>Гм, позвольте, а где в java проблема с передачей изменяемых в методе объектов? Это только к примитивам относится, или вы хотите чтобы еще и значение передаваемой ссылки на объект можно было менять?


Т>да, обязательно, именно так. причем в объявлении параметров функции обязательно большими буквами BYREF !!!!!


T>>Так это такие баги в программе будут, что лучше сразу выпить яду.


Т>не пользуйся и баги будут все те же...неслышал чтобы программрование на C# более трудоемкое чем на JAVA.


T>>Буду рад если вы приведете кусочек кода, после которого у меня наступит прозрение чтобы понять, что я теряю сейчас.



Т>
Т>   public static void Swap(ref Object a, ref Object b)
Т>    {
Т>        Object temp = a;
Т>        a = b;
Т>        b = temp;
Т>    }
Т>.......

Т>// использование...где то в коде
Т>Object a=new Object;
Т>Object b=new Object;

Т>Swap(ref a, ref b)

Т>


Т>все.


Т>как это сделать на JAVA я знаю...но можешь написать для усугубления осчущения.


Понятно, что на Java так же не напишешь, но я не вижу того, чтобы у меня прозрение наступило. Надо постоянно следить, как объявлена функция (особенно касается сторонних библиотек) и что она делает с переданными параметрами, чтобы не получилось сайд эффектов. Вот допустим, мне дали библиотеку в которой разработчик просто так написал (ref Object a, ref Object b) хотя их и не меняет (может быть), а мне надо чтобы ссылки после вызова метода ссылки гарантированно остались не изменными, мне надо где-то дописать const или вызывать надо Swap(a, b) или самому сохранять их? C# на мой взгляд уже перегружен кейвордами по самое не могу, скоро в C++ превратится для меня ref это усложнение с рассчетом, что разработчик будет очень внимательным.

Указанное выше поведение мне понадобилось считанное число раз, так что меня константность ссылок вполе устраивает
Re[12]: передача параметра "по ссылке"
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 21.12.06 11:49
Оценка: +1 -2
Здравствуйте, Курилка, Вы писали:

К>И что ты пытаешься этим показать?

Мы пока еще на брудершафт не пи... не курили.

К>Просто Объекты они только в ООП, поэтому при применении других подходов решение будет другим, ты же только про процедурное говоришь.

Вы неправы противопоставляя объектно-ориентированное программирование и функциональное. Есть одна класссификация: функциональный, по-другому декларативный подход (вложенные вызовы функций) и императивный подход (вычисления в виде инструкций). А есть другая классификация: объектно-ориентированный подход и процедурный.
К примеру, Java по умолчанию (!) следует и ООП, и императивному подходу. Так давайте мух с котлетами не будем мешать, да?

К>просто ООП — не единственный подход к решению задач, порой другие варианты более удобны.

Я по-моему не утверждал, что на ООП мир клином сошелся, это вы за меня придумали.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[13]: передача параметра "по ссылке"
От: Курилка Россия http://kirya.narod.ru/
Дата: 21.12.06 12:01
Оценка: +1
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Курилка, Вы писали:


К>>И что ты пытаешься этим показать?

R>Мы пока еще на брудершафт не пи... не курили.
РСДН — демократичная среда, извините, если я Вас задел
Но имхо тут принято особо не "выкать", что формирует более простую манеру общения.

К>>Просто Объекты они только в ООП, поэтому при применении других подходов решение будет другим, ты же только про процедурное говоришь.

R>Вы неправы противопоставляя объектно-ориентированное программирование и функциональное. Есть одна класссификация: функциональный, по-другому декларативный подход (вложенные вызовы функций) и императивный подход (вычисления в виде инструкций). А есть другая классификация: объектно-ориентированный подход и процедурный.
R>К примеру, Java по умолчанию (!) следует и ООП, и императивному подходу. Так давайте мух с котлетами не будем мешать, да?
Только вот приведённая классификация и есть мешания мух с котлетами. Противопоставление декларативного и императивного, не есть противопоставление ООП и ФП. Вложенные вызовы функций не есть ФП, с другой стороны функциональное программирование вполне может сочетаться с императивным. Помимо всего этого есть, к примеру ещё и логическое программирование.
Но это уже какой-то глупый флейм выходит
Просто основной момент был — проме ООП и процедурного программирования существуют и другие подходы, причём их применять можно и в Java, причём и процедурное в том числе (e.g. static-методы по сути и являются теми самыми "процедурам")
Re[7]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 12:15
Оценка:
Здравствуйте, Trean, Вы писали:

T>Понятно, что на Java так же не напишешь, но я не вижу того, чтобы у меня прозрение наступило.


...мы такие разные....

T>Надо постоянно следить, как объявлена функция (особенно касается сторонних библиотек) и что она делает с переданными параметрами, чтобы не получилось сайд эффектов. Вот допустим, мне дали библиотеку в которой разработчик просто так написал (ref Object a, ref Object b) хотя их и не меняет (может быть),


документацию всегда нужно внимательно читать.
ref — однозначно указывает на определенное поведение. точка

T> а мне надо чтобы ссылки после вызова метода ссылки гарантированно остались не изменными, мне надо где-то дописать const или вызывать надо Swap(a, b) или самому сохранять их?


скорее всего пользоваться другой библиотекой.

T>C# на мой взгляд уже перегружен кейвордами по самое не могу, скоро в C++ превратится для меня ref это усложнение с рассчетом, что разработчик будет очень внимательным.


представляю каким шоком было появление дженериков.

T>Указанное выше поведение мне понадобилось считанное число раз, так что меня константность ссылок вполе устраивает


ок...как и предполагал — все свелось к вопросам вкусов ( о которых как известно не спорят)...

ну да ладно, я просто хотел донести свое вИдение. надеюсь был понятен.
Re[14]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 12:21
Оценка:
Здравствуйте, Курилка, Вы писали:

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



К>Но это уже какой-то глупый флейм выходит

К>Просто основной момент был — проме ООП и процедурного программирования существуют и другие подходы,

может я чего не понимаю, но всё начилось с утверждения

rsn81> В ООП по определению метод должен осуществлять обработку самого объекта, а не передаваемого ему.


чему я например был ....удивлен.
Re[14]: передача параметра "по ссылке"
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 21.12.06 12:23
Оценка:
Здравствуйте, Курилка, Вы писали:

И в чем спор-то? Вы и я — говорим одно и тоже за одним исключением: вы мне пытаетесь что-то доказать. Да, я как раз и начал писать, что раз классификации разные, значит возможны пересечения. Про то, что static-программирование в Java есть не что иное, как процедурное программирование, тоже вроде озвучивал выше.

Так о чем вы, в чем хотите меня переубедить?
В том, что если писать на Java функционально, то понадобиться передать параметр по ссылке, пример приведете — поверю.

И потом по умолчанию Java ООЯ, это подразумевает удобство и достижение максимальной эффективности именно с использованием ООП, так что по-моему в этой теме такой разговор действительно флейм.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[7]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 12:25
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Тычеблин, Вы писали:


Т>>как это сделать на JAVA я знаю...но можешь написать для усугубления осчущения.

R>Каков пример, таков и ответ:
Object a = new Object;
R>Object b = new Object;
R>// вместо Swap(ref a, ref b)
R>Object temp = a;
R>a = b;
R>b = temp;


верно, так оно и есть...
Яркий пример виртуозного владения технологией Copy&Paste.
Re[20]: передача параметра "по ссылке"
От: aka50 Россия  
Дата: 21.12.06 12:30
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

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


A>>"Поздравляю Шарик — ты балбес" (с) Матроскин

B>Зарываешься.
Упс... согласен.

A>>примитивный... ну если тебе легче, есть еще weak .

B>Ок. Есть Weak, Soft, Strong, Phantom. "Примитивный" это какой?
Пусть будет Strong. Я не про это говорил, а про принцип
передачи byvalue ccылки в функицию... или ты хочешь
сказать что это происходит иначе?
Re[20]: передача параметра "по ссылке"
От: aka50 Россия  
Дата: 21.12.06 12:35
Оценка:
Здравствуйте, Аноним, Вы писали:

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


A>>примитивный... ну если тебе легче, есть еще weak .


А>А ты можешь просто ответить на вопрос, который сам же и вызвал введением новых терминов?

А>Как же себя ведет при сравнении (==) "не_примитивный" указатель, если "примитивный" ведет себя как int?

Еще раз... "примитивный" == с семантикой примитивного типа. Все. Точка.
Он указатель, ссылается на объект и при передаче в функцию копируется,
как примитивный тип, т.е. поменять внутри функции этот указатель можно
(если не final), но это не повлияет на указатель вне функции.

Я объяснял человеку из c++, там есть понятие указатель. Вот и использовал
этот термин. В java суть ссылка = сложный объект с семантикой примитивного
типа. Усе.
Re[10]: передача параметра "по ссылке"
От: aka50 Россия  
Дата: 21.12.06 12:37
Оценка: +2
Здравствуйте, Курилка, Вы писали:

К>А если функционально?

К>Использовать другие подходы кроме ООП нонче запрещается?

Тогда можно другой язык взять ту же scala.
Re[8]: передача параметра "по ссылке"
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 21.12.06 12:41
Оценка: -1
Здравствуйте, Тычеблин, Вы писали:

Т>документацию всегда нужно внимательно читать.

Железный аргумент, чтобы сделать людям жизнь посложнее.

Т>ref — однозначно указывает на определенное поведение. точка

Совсем неоднозначно: или ссылка измениться, или нет — сиди в debug и гадай, а если нет, то в определенный момент жди лавины необъяснимых глюков. dixi

Т>скорее всего пользоваться другой библиотекой.

Скорее всего? А поточнее можно? Ведь чтобы выбрать такую библиотеку, нужно будет все известные перебрать руками.

Т>представляю каким шоком было появление дженериков.

Очень неуместная попытка передернуть.
MS действительно постепено все сильнее и сильнее перегружает C# все новыми и новыми конструкциями, яркий пример постоянно привожу с непонятным богатством зоопарка модификаторов virtual-override-new-abstract. А C# 3.0 видели, добавление SQL в лексику языка — это такая остроумная шутка от MS?

Т>ок...как и предполагал — все свелось к вопросам вкусов ( о которых как известно не спорят)...

Не совсем. Полностью формализованная парадигма исключает адекватность вкусов. Любить делать криво можно, но за это придется платить. ООП не предполагает, что это правильно, значит в рамках ООП такого вкуса быть не может.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Re[16]: передача параметра "по ссылке"
От: aka50 Россия  
Дата: 21.12.06 12:52
Оценка:
Здравствуйте, JITM, Вы писали:

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


A>>чтоб было понятнее... основная твоя ошибка здесь:

FS>>>3. obj = new MyObject(); — создал объект и установил ссылку.
A>>изменил значение указателя

JIT>А что если ипользуеться слово установил то этио значит что ничего не изменилось . .??? По-моему если что -то кто -то установил, то по-любому над чем происходила эта операция было изменено!!!!


Если уж докапываться до слов, по по полной.

"Куда он установил ссылку?".
Изменить можно что-то (т.е. ссылку как некий объект, по этому я испльзовал слово указатель,
как понятное тем, кто работал в С++, т.к. это некая переменная значением которой является
ссылка на объект). Установить можно что-то куда-то... дык вот вопрос, куда установлена ссылка?
Я понял как установлена на объект. Но она должна где-то хранится, вот в переменной типа "указатель"
она и хранится.

И вообще, это все в любой более менее толстой книжке расписано и цитату выше приводили...
Re[9]: передача параметра "по ссылке"
От: Тычеблин Китай  
Дата: 21.12.06 13:13
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Тычеблин, Вы писали:


Т>>документацию всегда нужно внимательно читать.

R>Железный аргумент, чтобы сделать людям жизнь посложнее.

вообщето это я тебя
Автор: rsn81
Дата: 21.12.06
цитировал

Скажу твердо: RTFM!



Т>>ref — однозначно указывает на определенное поведение. точка

R>Совсем неоднозначно: или ссылка измениться, или нет — сиди в debug и гадай, а если нет, то в определенный момент жди лавины необъяснимых глюков. dixi

ref — утверждает ненужно надеятся что ссылка не изменится...все.какие гадания?
ты ведь не гадаешь что вернет функция ноль или 338.

было бы полезнее услышать твой комментарий на предмет тебе известный.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.