Комментарии 70
спрячьте лучше ответ, пусть народ поугадывает.
в MUMPS тоже «не поддерживаются привычные приоритеты арифметических операций (например, выражение 2+3*10 даёт в MUMPS значение 50);»
Мммм, а в чём прикол такого подхода?
В самом языке? Официально «An Introductory Course in J» говорит примерно следующее: все глаголы, и примитивы языка, и определенные программистом, имеют одинаковый синтаксис (имя глагола и 1 или 2 операнда), плюс любому глаголу можно привоить другое имя. Поэтому составить правильный список приоритетов глаголов достаточно сложно, и выбрано самое простое правило порядка выполнения глаголов.
С моей неофициальной точки зрения — просто чтобы программистам жизнь медом не казалась :-)
С моей неофициальной точки зрения — просто чтобы программистам жизнь медом не казалась :-)
не думаю, что это прибавит популярности языку…
А это не реклама языка, а так, наблюдение из жизни противоестественных языков программирования.
я ж не про ваш пост)) я про эту… мм… «особенность»
По сравнению с другими «особенностями» это еще конфетка — с этим можно бороться всего лишь обильной расстановкой скобок :-)
а это уже антиреклама ;) ))))
Ну уж нет! Мне хватит и лиспа с его обилием скобок.
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Вон в виндовом калькуляторе приоритет операций вообще от текущего вида зависит. То 2+2*3 будет 12, а то 8. И ничего, привыкли все уж.
Подобное «нарушение» будет наблюдаться в Smalltalk и некоторых его родственниках, т.к. операции на самом деле — посылка сообщений, выполняющаяся слева на право. Т.е. 1+2*2 вернет 6.
А к ним можно отнести Self, Strongtalk (тот же смолток, только со стальными яйцами) и Newspeak. В своем последнем творении (COLA), Алан Кей почему-то отказался продолжать идею «простой посылки» сообщения и появились приоритеты математических сообщений.
В Pepsi добавлен математический приоритет потому что так проще и понятнее для пишущего программу. Я почему-то думал что в Newspeak тоже привинчен приоритет.
К слову платформа COLA создаётся не Аланом Кеем, но его последователями в Viewpoints Research Institute.
К слову платформа COLA создаётся не Аланом Кеем, но его последователями в Viewpoints Research Institute.
Вот не верю, что сотрудники института без Кея (директора института) начали разработку под громким названием «Перевернем мир программирования» :))
Глянул в спеку: Newspeak сохранил смолтоковские приоритеты посылки сообщений
Глянул в спеку: Newspeak сохранил смолтоковские приоритеты посылки сообщений
Программу институт, понятное дело, начал под присмотром Кея, но COLA это только часть его. Тут только объектная модель + платформа. В проект много чего входит кроме этого.
Я имел ввиду то, что Кей занят руководством и работой с общественностью. Инновациями заняты подопечные. Не все же ему самому делать )
Я имел ввиду то, что Кей занят руководством и работой с общественностью. Инновациями заняты подопечные. Не все же ему самому делать )
Я уже про такую вещь, как «1 + 1 = 10», начисто снесшую меня в свое время с пути понимания этой жизни подумал…
lisp, scheme с его префиксной записью :)
Ну так отсутствие таблицы приоритетов операторов в J — одна из особенностей языка. Тем, кто его изучает, это сразу вдалбливают в голову.
А мне больше K нравится. Но что один, что другой — гуглятся проблематично )
Так и не нашел интерпретатора K, который бы умел деление по модулю.
Если у кого есть — поделитесь )
Так и не нашел интерпретатора K, который бы умел деление по модулю.
Если у кого есть — поделитесь )
бред
Модно… по заграничному…
Понятно что пример и задачка могла быть сложнее, но,
блин, повеселило, это же как должно быть не до того что проще переспросить у интерпретатора)
блин, повеселило, это же как должно быть не до того что проще переспросить у интерпретатора)
Brainfuck выносит мозги гораздо эффективнее.
Вот только J, в отличие от brainfuck, не является эзотерическим языком.
Не в курсе, что там пишут на J, но на очень похожем языке под названием K написана высокопроизводительная база данных kdb. dr-klm писал про нее (там же в жж, кстати, много информации по J):
Не в курсе, что там пишут на J, но на очень похожем языке под названием K написана высокопроизводительная база данных kdb. dr-klm писал про нее (там же в жж, кстати, много информации по J):
Язык K получился проще, компактнее, и оказался отлично приспособлен к сфере баз данных. Компания Уитни (Kx Systems) разработала на этом языке реляционную базу данных под названием kdb, являющуюся на сегодняшний день продуктом-лидером в этой области и превосходящую, в частности, широко разрекламированный Oracle по скорости на тестах TPC. Ходят слухи, что исходники базы данных kdb (поддерживающей SQL, ODBC, JDBC, удаленный доступ по http и множество других функций, стандартных в этой области) хранятся в 26-ти, названных однобуквенными именами, текстовых файлах, содержащих, каждый, примерно один полный стандартный экран кода, просмотреть который можно без скроллинга. Еще говорят, что в kdb нет ни одного цикла. Может быть эти слухи и неправда, но то, что дистрибутив kdb полностью (вместе с интерпретатором K, примерами), занимает (всего !) 200 килобайт — это доступный независимой проверке факт.
Как ни странно, мне на Brainfuck писать гораздо проще. Пруф — примеры с progopedia.ru/language/brainfuck/.
В этом языке глаголы (любые действия над данными, в том числе и арифметические операции) не имеют приоритета и в отсутствие скобок выполняются справа налево.
«Но мы его любим не за это» :)
Забавно)
> вы переадресовываете вопрос своему интерпретатору, который честно отвечает: 6
ну, 6-то почему?
ну, 6-то почему?
что-то пошло не так…

ааа, я поняяял почему я не понял!
> вы переадресовываете вопрос своему интерпретатору
«у меня» интерпретатор J
отвлекаясь: а почему племянник? намек на то, что у программистов с детьми напряг? Или дети программистов родителей по таким пустякам не тревожат, а сами переадресовывают свой вопрос куда надо?
> вы переадресовываете вопрос своему интерпретатору
«у меня» интерпретатор J
отвлекаясь: а почему племянник? намек на то, что у программистов с детьми напряг? Или дети программистов родителей по таким пустякам не тревожат, а сами переадресовывают свой вопрос куда надо?
Excel 2003 помню так шутил надо мной…
2+2=5 выполняется для такого кольца или поля, в котором нету 4 ( для тех кто в танке — имеем значения 0,1,2,3,5,6… 2+2==4ый элемент. Но это 5, это, в принципе, обычная алгебра :) )
На сайте языка:
WHY J?:
J is particularly strong in the mathematical, statistical, and logical analysis of data.
Думаю отсутствие приоритетов в арифметических действиях сделано, чтобы программисты математических и статических приложений всегда имели на уме себе привычку расставлять скобки, чтобы потом не было смутных мест :)
WHY J?:
J is particularly strong in the mathematical, statistical, and logical analysis of data.
Думаю отсутствие приоритетов в арифметических действиях сделано, чтобы программисты математических и статических приложений всегда имели на уме себе привычку расставлять скобки, чтобы потом не было смутных мест :)
из-за чего они выбрали порядок справа налево?)
habrahabr.ru/blogs/programming/94010/#comment_2856487
Для простоты реализации.
Для простоты реализации.
В винде обычный и инженерный калькулятор считают по-разному, а вы тут говорите.
Попробуйте:
2+2*3
Попробуйте:
2+2*3
«для большинства из нас (2*2)+1, а 2*(2+1).» — коль речь идет о порядке операций, то «2*(2+1)» следует заменить на (2+1)*2 ;-)
Этот вопрос уже затрагивался в обсуждении необычной ассоциативности тернарного оператора в PHP.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Трудности перевода: когда 2*2=5