Пример спора с ярким этиком :)

 
+
-
edit
 

Balancer

администратор
★★★★★

[09:33] <********> друх мой :) это в сях были споры :) в C# идет сначало предсказание ключевых знаний (для логических выражений) потом косвенное разрешение всех элементов и потом уже вычисления :)
[09:34] <********> например (func1(a) == func2(a)) || (a != a) никогда не вызовет не func1 не func2 :)
[09:35] <Balancer> Стоп! || должен быть левоассоциативным!
[09:35] <********> :) && тобиш :)
[09:36] <********> короче если заведомо ясно что результат выражения предопределен то вызовов не будет. Или будет вызванно минимум разрешений чтобы сделать выражение предопределенным
[09:38] <Balancer> ********, ты не прав :) Как и ожидалось, && - леквоассоциативный. См. пример:
[09:38] <Balancer> using System;
[09:38] <Balancer> class cHello
[09:38] <Balancer> {
[09:38] <Balancer> public static int func1(int a)
[09:38] <Balancer> {
[09:38] <Balancer> Console.WriteLine("Func1\n");
[09:38] <Balancer> return a+1;
[09:38] <Balancer> }
[09:38] <Balancer> public static int func2(int a)
[09:38] <Balancer> {
[09:38] <Balancer> Console.WriteLine("Func2\n");
[09:38] <Balancer> return a+2;
[09:38] <Balancer> }
[09:38] <Balancer> public static void Main()
[09:38] <Balancer> {
[09:38] <Balancer> int a = 5;
[09:38] <Balancer> bool x = (func1(a) == func2(a)) && (a != a);
[09:38] <Balancer> Console.WriteLine(x);
[09:38] <Balancer> }
[09:38] <Balancer> }
[09:38] <Balancer> Вывод: Func1
[09:38] <Balancer> Func2
[09:38] <Balancer> False
[09:39] <Balancer> Вот если записать " bool x = (a != a) && (func1(a) == func2(a));" - то всё ок, func не вызывается :)
[09:39] <xxxxxxxxxxx> все правильно
[09:39] <xxxxxxxxxxx> ******** облажался
[09:39] <xxxxxxxxxxx> вызова не будет
[09:39] <xxxxxxxxxxx> только
[09:39] <xxxxxxxxxxx> если a!=a стоит первой
[09:40] <Balancer> Эти правила ещё со времён Си Кернигана и Ричи не менялись :)
[09:40] <xxxxxxxxxxx> в C# не отрабатывают условие если предыдущее обломалось
[09:40] <Balancer> а вот смысл ++a они нечётко определили. Отсюда - в разных языках разночтения :)
[09:40] <********> Уважаемые, все что вы пишете это гон :) Юзайте поиск :)
[09:41] <********> Вы юзаете direct resolving :)
[09:41] <Balancer> ********, это не гон, это и идеология, и реальный результат. Если на в лом - сам скомпили и посмотри :)
[09:41] <********> А кто его знает в своих проектах я умолчу :)
[09:41] <Balancer> ********, а что надо юзать и как включить? :D
[09:42] <xxxxxxxxxxx> дай я угадаю
[09:42] <xxxxxxxxxxx> ща нам прочтут лекцию про out ?
[09:43] <********> а нафиг ? У меня на это времяни нет. Все треды и споры можно найти микрософт кнолидж байз
[09:44] <Balancer> понятно, ******** уходит от ответа :D
[09:45] <Balancer> Я не думаю, что предусмотрели возможность столь кардинального отхода от стандарта. Не пойдут разработчики на такую неоднозначность в чтении исходника. Некошерно это :)
[09:45] <Balancer> А главное - бессмысленно. Экономии на оптимизации большой это не даст :)
[09:45] <xxxxxxxxxxx> лана всем удачи я работать
[09:46] <********> ок
[09:47] <********> Балансер, ты знаеш что такое шот эксепшт три резолушн ? Это СТАНДАРТ.
[09:47] <********> Этот стандарт во всех серьезных компилятора еще со времен ваткома
[09:48] <Balancer> Ты мне просто скажи, что нужно прописывать в исходник, или с каким ключиком компилятор запускать, чтобы было как ты говоришь и почему, если это стандарт, работает по-другому (так, как было и есть всю жизнь :D )
[09:48] <********> И как раз это сделано чтобы идеологически правельно был написан код.
[09:48] <Balancer> Вот я скомпилировал исходник. Вот получил результат, тебя опровергающий, но подтверждающий общее правило. Что я не так делаю? :)
[09:48] <********> Балансер, я что против ?
[09:50] <********> Если хочеш остановится в развитии на уровне басика и проектирование тетрисов - флаг в руки, я не против
[09:51] <Balancer> Давай от начала. Ты сказал, что если хоть один элемент условного выражения однозначно определяет результат, то остальные вычисляться не будут. Я сказал, что подвыражения будут вычисляться слева на право до первого, которое определит результат всего выражения однозначно. МЧто, как сам понимаешь, совершенно не соответствкует твоему высказыванию. Мой тест на C# подтвердил мой вариант. Что у тебя есть из реальных подтверждений твоего варианта? :)
[09:51] <********> (func1(a) == func2(a)) && (func3(a) == a)
[09:52] <Balancer> В этом выражении, если func1 вернёт значение, отличное от func2, то func3 вызываться не будет.
[09:52] <********> разбивается на 2 модальных выражения. (func1(a) == func2(a)) и (func3(a) == a)
[09:52] <Balancer> Но это пример ортогональный исходному.
[09:52] <********> потом определяется цена разрешения
[09:52] <********> да ПОФИГУ хоть переставь последовательность
[09:53] <Balancer> Нет! Давай вернёмся к твоему примеру попроще.
[09:53] <Balancer> bool x = (func1(a) == func2(a)) && (a != a);
[09:53] <Balancer> В этом выражении вызов func1 и func2 будет происходить ВСЕГДА.
[09:53] <Balancer> Есть контрпример - давай код, проверим :)
[09:53] <********> у тебя в протекте - не сомниваюсь :)
[09:53] <********> я тебе расскажу как будет у меня
[09:54] <********> определится цена разрешеиня бодальных выражений
[09:54] <Balancer> Мне не интересно, как будет у тебя. Мне интересно, что нужно укказать C# компилятору, чтобы было как у тебя :D
[09:54] <********> и выяснится что 1 кусок потребует 2 вызовов, а второй одного.
[09:54] <Balancer> Потому что во всех языках, начиная с Си, кончая Java и C# в данном примере вызов функций выполняется всегда. Что прекрасно подтверждается тестом.
[09:55] * Angelok[CL] has joined #Riven
[09:55] <Balancer> Дай мне фрагмент кода, который покажет твою правоту и я признаю неправоту свою :)
[09:55] <Angelok[CL]> всем привет
[09:55] <********> А я что-то тебе должен доказывать ? :) Бесплатные курсы ? :)
[09:56] <Balancer> Нет, просто ты не прав, от тебя - только голые слова. От меня - работающий код, доказывающий мою правоту :)
[09:56] <********> Балансер, я что против ? :)
[09:56] <********> Работай так и дальше :)
[09:57] <Balancer> ********, скомпили код и скажи, вызываются у тебя функции или нет. Это всего несколько секунд на это нужно :)
[09:57] <Balancer> using System;
[09:57] <Balancer> class cHello
[09:57] <Balancer> {
[09:57] <Balancer> public static int func1(int a) { Console.WriteLine("Func1\n"); return a+1; }
[09:57] <Balancer> public static int func2(int a) { Console.WriteLine("Func2\n"); return a+2; }
[09:57] <Balancer> public static void Main()
[09:57] <Balancer> {
[09:57] <Balancer> int a = 5;
[09:57] <Balancer> bool x = (func1(a) == func2(a)) && (a != a);
[09:57] <Balancer> Console.WriteLine(x);
[09:57] <Balancer> }
[09:57] <Balancer> }
[09:58] <********> :) Я не понял что ты мне хочеш доказать что в твоем проекте работает прямое разрешение ? :)
[09:58] <********> Я тебе верю :)
[09:59] <Balancer> Нет, я хочу, чтобы ты привёл пример (реально работающий), когда это не так :)
[09:59] <Balancer> Иначе - всё твои личные измышления :)
[09:59] <********> во, я шас по отцовски тебе отвечу :) иди на стратикс... ой на http://www.msdn.com :)
[10:00] <Balancer> к тому же, это не проект, это только кусочек кода, для компиляции которого даже MSDev иметь не нужно :)
[10:00] <Balancer> когда человек даже точных ссылок не даёт, не говоря уже об аргументах, это первый признак того, что аргументов-то у него и нет :)
[10:01] <********> Балансер, ты исходиш из того что мне это нужно. Тебе не кажется что это не так ?
[10:01] <Balancer> ********, я пока вижу только отмазки :) ладно, пойду ужинать :)
[10:01] <********> Ужинать ?!?
[10:01] <********> Где же ты живеш то :)
[10:01] <Balancer> Да какая разница, земшар-то круглый :)
[10:02] <********> Хотя сюдя по уровню образования или израиль, видел я закончивших их коледжы или что-то такое :)
[10:02] <********> Даже IP стотреть не буду )
[10:02] <********> Не спортивно
[10:02] <Balancer> Да нет, Москва банальная :)
[10:03] <Balancer> И на счёт образования - это ты тоже сильно мимо :D
[10:03] <********> Балансер просто есть такая штука как опции компилятора
[10:03] <********> есть такая штука как прожукт полисити
[10:04] <Balancer> Вот тебе лень ключик один сообщить, да? :D
[10:04] <********> И поверь мне, 99% кодеров (не путать с програмерами) такие как ты этого знать в своей жизни никогда не будут.
[10:04] <********> Им это и не надо.
 

Veyrd

опытный

каюсь, я не смогла осилить весь разговор.. :F
…Избавьте от химер хоть наш последний час!
Бесславно жили мы и до смерти устали.
Клинки, откликнитесь! Быть может и для нас
Жизнь ярче молнии блеснет на кромке стали.
П–М.Верлен
 
+
-
edit
 

Balancer

администратор
★★★★★

Veyrd>каюсь, я не смогла осилить весь разговор.. :F[»]

Это, вероятно, базовый этик :)
 

Veyrd

опытный

эт я просто гиперэтик :D
…Избавьте от химер хоть наш последний час!
Бесславно жили мы и до смерти устали.
Клинки, откликнитесь! Быть может и для нас
Жизнь ярче молнии блеснет на кромке стали.
П–М.Верлен
 

Zeus

Динамик

А по-моему, просто дурак :D

Если этик - то наверняка не творческий; базовые БЭ - они ролевые БЛ, а тут на это как-то не похоже. Ролевой ЧЛ? тут ближе. Гамлетогюг? :)
И животноводство!  

Zeus

Динамик

П.С. Крайнее относится к первому постингу, конечно ;)
И животноводство!  

hcube

старожил
★★
Ага. У нас есть такие приборы.... но мы вам о них не расскажем... ;-)
Убей в себе зомби!  

Veyrd

опытный

Zeus>П.С. Крайнее относится к первому постингу, конечно ;)[»]

:D:D:D
…Избавьте от химер хоть наш последний час!
Бесславно жили мы и до смерти устали.
Клинки, откликнитесь! Быть может и для нас
Жизнь ярче молнии блеснет на кромке стали.
П–М.Верлен
 
+
-
edit
 

Mishka

модератор
★★★
Справедливости ради токмо - Алгол 68 не определяет операции по Макартни (не полное вычисление формулы). И допускает перестановку элементов во всех формулах и списках параметров. По стандарту. Про Паскаль - вроде бы тоже также. Как и в Аде было. Модулу 2 и Оберон надо смотреть. Если дома найду книжки, то гляну.

Но это к соционике не относиться. :)
 
+
-
edit
 

Balancer

администратор
★★★★★

Дык, спор же конкретно по C# :)
В Форте, вон, тоже всё явно указанное вычисляется :)
 
+
-
edit
 

Mishka

модератор
★★★
Мне показалось, что в какой-то момент вы переползли на множество языков - там, где "Потому что во всех языках, начиная с Си, кончая Java и C# " - пардон, если оттрактовал слишков широко.
 
+
-
edit
 

Balancer

администратор
★★★★★

Mishka>Мне показалось, что в какой-то момент вы переползли на множество языков - там, где "Потому что во всех языках, начиная с Си, кончая Java и C# " - пардон, если оттрактовал слишков широко.[»]

Ну, естественно, имелись в виду Си-подобные языки :)
 

Rada

опытный

<********> друх мой это в сях были споры в C# идет сначало предсказание ключевых знаний (для логических выражений) потом косвенное разрешение всех элементов и потом уже вычисления
[09:34] <********> например (func1(a) == func2(a)) || (a != a) никогда не вызовет не func1 не func2
[09:35] <Balancer> Стоп! || должен быть левоассоциативным!
[09:35] <********> && тобиш
 
Я рыдал.
С себя можно начать когда все остальное будет в порядке.  

Rada

опытный

Zeus>А по-моему, просто дурак

Что это ещё за тип такой - Дурак? :blink: К какой квадре принадлежит? И эта, по аспектам пожалуйста! ;)
С себя можно начать когда все остальное будет в порядке.  

Balancer

администратор
★★★★★

Rada>И эта, по аспектам пожалуйста! ;)[»]

Но этик и аристократ. Статик. Гек/Дост :) Я бы за Доста дал, всё же, пытается по БЛ работать. Хотя, может, это он так по болевой? :) Правда, он мне квестимом кажется, а и Гек и Дост - деклатимы. В общем, мало данных :)
 

Rada

опытный

Я думаю Гек. Причём весь его разовор с тобой - чистый стёб и ни грамма серьёзности. Кто-то тут так тоже иногда разговаривает или разговаривал.
С себя можно начать когда все остальное будет в порядке.  
Это сообщение редактировалось 17.08.2004 в 19:38
+
-
edit
 

Balancer

администратор
★★★★★

Rada>Я думаю Гек. Причём весь его разовор с тобой - чистый стёб и ни грамма серьёзности

Разговор был именно на полном серьёзе :)
Это, в общем-то, выдержка из контекста.
 

Rada

опытный

>Разговор был именно на полном серьёзе

Ты думаешь? Хотя может ты его поприжал и он стал отшучиваться.
С себя можно начать когда все остальное будет в порядке.  

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru