Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / У Cache своя математика? / 25 сообщений из 36, страница 1 из 2
12.01.2011, 12:43
    #37054256
coder1cv8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
WTF() public
{
	// Изучаем математику  5 -й класс
	s price =  100 
	s quant =  1 
	s sum =  95 
	s disc =  100  - (sum *  100 ) / (price * quant)
	w "discount percent = "_disc
}
Даже не знаю что сказать...
В математике установлен определенный порядок выполнения математических действий при любой записи действий над числами. Для основных арифметических действий установлен следующий порядок: сначала выполняется возведение числа в степень, затем выполняется умножение и деление и в самую последнюю очередь выполняется сложение и вычитание.
...
Рейтинг: 0 / 0
12.01.2011, 13:03
    #37054305
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
coder1cv8 , это не "математика"... Это простой приоритет операций. В Кащее его практически нет... Разве что унарные операции приоритетнее бинарных.
...
Рейтинг: 0 / 0
12.01.2011, 13:05
    #37054308
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Код: plaintext
s disc = (100 - (sum * 100)) / (price * quant)
Вот и вся проблема...
...
Рейтинг: 0 / 0
12.01.2011, 13:06
    #37054309
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Да, и это описано в документации. Скорее всего особенность наследована с M систем.
Приоритетов операций нет (исключение, пожалуй, "." обращение к полю и методу объекта).
Сначала это удивляло, сейчас кажется не более страшным, чем ломать голову на приоритетами (а операций гораздо больше, чем +-*/, о которых написано в учебнике 5го класса)

>w 3>2+3
4
...
Рейтинг: 0 / 0
12.01.2011, 13:06
    #37054315
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Или вовсе вот так

Код: plaintext
s disc = -sum * 100 + 100  / price / quant
...
Рейтинг: 0 / 0
12.01.2011, 13:08
    #37054320
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
krvsa, мне кажется, что лучше явно ставить скобки, меньше проблем будет при исправлении.
...
Рейтинг: 0 / 0
12.01.2011, 13:09
    #37054324
coder1cv8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Вы считаете это нормальным? )
...
Рейтинг: 0 / 0
12.01.2011, 13:16
    #37054340
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Подозреваю, изменение приоритетов крайне плохо скажется на совместимости старых программ и новых версий каше.
Скобки - это нормально, явный приоритеты лучше неявных.
При неявных приоритетах все равно есть возможность ошибки, и эта вероятность не меньше.
О приоритетах в каше достаточно просто знать, дальше это не вызывает особых проблем.
...
Рейтинг: 0 / 0
12.01.2011, 13:44
    #37054414
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Блок А.Н.мне кажется, что лучше явно ставить скобки, меньше проблем будет при исправлении.
Я бы написал

Код: plaintext
s disc = ( 100  - (sum *  100 )) / (price * quant)

Второй пример максимальная "иллюстация" возможного, не более того...
...
Рейтинг: 0 / 0
12.01.2011, 13:46
    #37054420
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
coder1cv8Вы считаете это нормальным? )
Это объективная реальность данная нам в ощущении... (с) (1909) В. И. Ленин

Т.е. другого у нас просто нет.
...
Рейтинг: 0 / 0
12.01.2011, 13:51
    #37054439
coder1cv8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Блок А.Н. ,

Это вызывает проблемы когда о таких багах фичах узнаешь только по странным цифрам в данных (тьфу-тьфу, на этапе тестирования). Я хочу сказать, что даже при моем непродолжительном знакомстве с Cache, эта система постоянно подставляет "подножки" ну в совершенно неожиданных местах!
Здесь кто-то говорил о нетребовательности Cache к качеству кода, легкости "вхождения" и т.д., ха-ха, я бы с этим поспорил. После той же Java или даже (о боже!) 1С, отсутствие таких базовых механизмов вызывает, мягко говоря, легкое недоумение. Я уже не говорю о "дружелюбности" к разработчику, с такой IDE говорить об этом просто смешно!
При такой-то стоимости системы, могу еще много рассказать про ляпы и откровенные баги, подтвержденные саппортом, но не буду. Понятно что фанатов убедить в чем-то сложно, сам такой ) Прошу не воспринимать это слишком серьезно, просто накипело )
...
Рейтинг: 0 / 0
12.01.2011, 13:52
    #37054443
coder1cv8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
krvsaЯ бы написал

Код: plaintext
s disc = ( 100  - (sum *  100 )) / (price * quant)

Второй пример максимальная "иллюстация" возможного, не более того...
И я так написал, как написать вопросов нет )
...
Рейтинг: 0 / 0
12.01.2011, 14:01
    #37054467
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
coder1cv8Прошу не воспринимать это слишком серьезно, просто накипело
Не стоит валить все в кучу... Уж кто, кто... А приоритеты тут точно ни при чем...
...
Рейтинг: 0 / 0
12.01.2011, 14:57
    #37054579
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
coder1cv8 ,

Уже было .
coder1cv8Даже не знаю что сказать...Увидев поведение, которое не ожидалось, достаточно сделать поиск в документации по фразе Operator Precedence , чтобы понять в чём дело.
Цитата из документации You may be surprised to learn that ObjectScript\'s rules for operator precedence are different than those in other languages: there aren\'t any!
PS: Посмотрите ещё Re: Какой у вас результат ычисления вот этого: 36/-4/3 ? (в ветке есть несколько моих сообщений).
...
Рейтинг: 0 / 0
12.01.2011, 15:21
    #37054641
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Почему все пишут про отсутствие приоритетов ?

Если явно не указано скобками он считает справа налево.
...
Рейтинг: 0 / 0
12.01.2011, 15:27
    #37054663
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
coder1cv8Это вызывает проблемы когда о таких багах фичах узнаешь только по странным цифрам в данных (тьфу-тьфу, на этапе тестирования). Я хочу сказать, что даже при моем непродолжительном знакомстве с Cache, эта система постоянно подставляет "подножки" ну в совершенно неожиданных местах!

Дык извините, если пишите на COS, а не на встроенном BASIC, то как бы RTFM.

Operator Precedence

Operator precedence in ObjectScript is strictly left-to-right; within an expression operations are performed in the order in which they appear. This is different from other languages in which certain operators have higher precedence than others. You can use explicit parentheses within an expression to force certain operations to be carried ahead of others.
...
Рейтинг: 0 / 0
12.01.2011, 15:58
    #37054744
Константин Цветков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
krvsa
Код: plaintext
s disc = (100 - (sum * 100)) / (price * quant)
Вот и вся проблема... Занесло совершенно случайно, но правильная запись:
Код: plaintext
s disc = 100 - ((sum  / (price * quant)) * 100 )
Вы не находите?
...
Рейтинг: 0 / 0
12.01.2011, 16:02
    #37054754
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Константин ЦветковВы не находите?
Нет...

Потому как даже автор уже написал

coder1cv8krvsaЯ бы написал

Код: plaintext
s disc = ( 100  - (sum *  100 )) / (price * quant)

Второй пример максимальная "иллюстация" возможного, не более того...
И я так написал, как написать вопросов нет )
...
Рейтинг: 0 / 0
12.01.2011, 16:05
    #37054764
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Константин Цветков , хотя х/з чего именно хотел автор... Потому как полученый результат его не порадовал... А мне уже "мешает" кащейское м Ы шление...
...
Рейтинг: 0 / 0
12.01.2011, 17:00
    #37054935
coder1cv8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Константин ЦветковЗанесло совершенно случайно, но правильная запись:
Код: plaintext
s disc = 100 - ((sum  / (price * quant)) * 100 )
Вы не находите?
Да, это опечатка. Сам подтвердил не посмотрев внимательно )
...
Рейтинг: 0 / 0
12.01.2011, 20:11
    #37055410
Константин Цветков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
krvsa Константин Цветков , хотя х/з чего именно хотел автор... Это важное свойство программиста — знать больше, чем (нужное подставить). Автор хотел посчитать процент скидки: 100 - процент от суммы на количество-цена. Так и написал. Но с учётом накопления округления более правильно:
Код: plaintext
disc = (1 - (sum / (price * quant))) * 100 
...
Рейтинг: 0 / 0
12.01.2011, 20:44
    #37055462
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
krvsa,

Ну меня кащейское мЫшление приучило расставлять скобки независимо от приоритетов операций - на всех языках. Дабы не гадать. Да и читается легче.
...
Рейтинг: 0 / 0
12.01.2011, 21:12
    #37055510
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Ptn , я рад за тебя...
...
Рейтинг: 0 / 0
13.01.2011, 00:13
    #37055690
andrew000999
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
Задача вроде такая
// Изучаем математику 5-й класс
s price = 100
s quant = 1
s sum = 95
s disc = 100 - (sum * 100) / (price * quant)
w "discount percent = "_disc
//


Граждане!!! иногда все таки полезно почитать документацию по языку

заявлениия об отсутствии приоритета - чушь
первый приоритет - скобки - сначала вычисляется то что в скобках


sum*100 = 95*100 =9500
price*quant= 100*1 =100


а в арифметических операциях (+-*/) приоритета действительно нет
то есть все в порядке следования

100-9500 =-9400
-9400/100=-94

это собственно и результат - какие обиды.

от себя добавлю что это скорее особенность языка чем недостаток
(очень иногда полезная особенность)
...
Рейтинг: 0 / 0
13.01.2011, 04:15
    #37055796
kolesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
У Cache своя математика?
andrew000999от себя добавлю что это скорее особенность языка чем недостаток
(очень иногда полезная особенность)

Это однозначно и безусловно недостаток. Средний программист использует 5-15 языков или нотаций. Есть вещи общепринятые. Не убей, не укради, вначале возведи в степень, потом умножь/подели, а уже потом вычитай и складывай. Это - азбука. Норма.

В каше довольно много далекого от нормы поведения... Ничего не поделаешь. Мне это продолжает доставлять серьезные неудобства и после 10-летнего знакомства с каше. К плохому привыкать трудно ;)
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / У Cache своя математика? / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]