Pull to refresh
179
0.3

Человек

Send message
Думаю вы это не мне писали, а сообществу
Конечно, это я не вам лично писал — это просто комментарий, отражающий некоторые идеи, возможно ошибочные. Как я об этом узнаю, если буду держать их при себе?

1) «преждевременная оптимизация — корень всех зол» ©. Кто не согласен, пусть первым кинет в меня камень. Наглядность важнее, особенно при прототипировании.

2) способность WL решать рекуррентные уравнения вообще говоря не очевидна — я сам о ней узнал чисто случайно, и примеры с рекурсивным вычислением факториала этому никак не способствуют.

3) использовать WL игнорируя всю мощь его символьного движка — это примерно то же самое, что использовать компилятор с++ не используя классы, перегрузку операторов, умные указатели, шаблоны и всё такое. Так и тут возникает закономерный вопрос — а зачем вообще нужен WL, если это всё точно так же реализуется на c/c++/c#/python и наверняка будет работать ещё быстрее?

А вот тут вы жесткоко ошибаетесь. Встроенная функция медленная, весьма.
По-моему, это очевидный недостаток языка или его реализации конкретной версии — учитывая, что сам Леонид Шифрин постоянно твердит «используйте встроенные функции, если они есть, и не изобретайте велосипеды», да и вы здесь же пишете «используйте функциональное программирование». Если у нас рекуррентная последовательность определена как функция — мы можем использовать её в качестве аргумента, интегрировать/дифференцировать, делать подстановки и всё такое.
По-моему, тут не хватает самой главной рекомендации — не используйте списки и рекурсию там, где они не нужны явным образом. Использовать списки для рекурсивного нахождения чисел Фибоначчи — это треш, за это нужно бить палкой по голове. Вы можете не знать, что в WL есть встроенная функция для чисел Фибоначчи, но вы обязаны знать, что в WL есть решатель рекуррентных уравнений! Пишите
RSolve[{f[n + 2] == f[n] + f[n + 1], f[1] == f[2] == 1}, f, n]
получите ответ
{{f -> Function[{n}, Fibonacci[n]]}}
его и используйте. Если вы не знаете, что значит «Fibonacci» — пишите
Fibonacci[n] // FunctionExpand
получите формулу в явном виде
((1/2 (1 + Sqrt[5]))^n - (2/(1 + Sqrt[5]))^n Cos[Pi n])/Sqrt[5]

Если вам действительно нужен список из чисел Фибоначчи — не используйте примеры из статьи. Используйте
Table[Fibonacci[n], {n, 10}]

К сожалению, у нас пока что мало знают об этом языке
Я бы даже сказал, что WL — самый недооценённый язык на текущий момент, причём за пропаганду Mathematica мне никто ничего не платит))

Я думаю, что политика продвижения Mathematica и WL не совсем верная. Не нужно упирать на то, насколько он крут и в нём можно сделать всё, что угодно — это вызывает скорее отторжение. Пользователь должен сам осознать и сделать свой выбор без давление извне.

Противопоставлять Mathematica нужно прежде всего Matlab-у и Mathcad-у — это наиболее популярные инструменты для прототипирования и символьных расчётов. Я сам пришёл к Mathematica тогда, когда Mathcad не смог решить какое-то уравнение, и поначалу было непросто приспособиться к новому синтаксису. Но когда приспособился, он вдохновил меня настолько, что я решил разориться на лицензионную версию — не для работы, а для личного пользования, и если сравнивать с Matlab-ом — цена действительно смешная.

Продвигать Mathematica нужно (как мне кажется) не для уже сформировавшихся разработчиков, а для школьников и студентов, у которых всё ещё впереди. Чтобы он привык в любой непонятной ситуации открывать Mathematica или документацию к Mathematica (которой тоже нету равных по содержательности).
Посмотрев демку я окончательно убедился, что никакой я не программист, а лишь убедительно им притворяюсь)
А самое крутое это
спектрумовская пасхалка в конце
Моцарт начал играть на клавесине с 3-х лет. Возможно потому, что в их семье не было настольных игр.
Можно ли расширить дуальные числа до гипер- дуальных (по аналогии с кватернионами, октонионами и пр.), чтобы получать автоматически не только первую, но и вторую, и прочие производные?
Нет, «в отместку» досталось только вам. Если вам это показалось несправедливым — мне жаль, но никто не считает минусы в свою сторону справедливыми. Возможно, это добавит вам мотивации написать свою статью, накопить кармы и поставить минус мне в ответ. Возможно также, что прочитав вашу статью, я изменю своё мнение и сменю минус на плюс (хотя вряд ли вы об этом узнаете).
Я вам поставил (а не «плюнул») минус не столько за содержание, сколько за мотивацию. Вы шли мимо, увидели, что кого-то сильно минусуют, и решили попинать его за компанию, ничем при этом не рискуя. Это низко и недостойно. Самоутверждаются за чужой счёт только те, кому утвердиться больше нечем — у вас нет ни статей, ни сколько-нибудь значимых комментариев в обозримый промежуток времени.

По содержанию. Изображая из себя знающего человека вы прокололись, назвав эллиптический интеграл «термином» — в то время как это никакой не термин, а функция. По основной теме статьи — ranges — вы также ничего сказать не смогли.

Вы никак не подтвердили свою квалификацию, чтобы позволить себе подобного рода высказывания. Я считаю, что вам и подобным вам нет места на Хабре. Ваше последующее прилюдное нытьё по поводу потери единицы кармы лишь подтвердило это.

Ну а если другим членам сообщества, минусующим мои комментарии, ваши более интересны — имеют на то полное право.

P.S. Чтобы читать о фичах языка без матана и прочей шелухи, нужно читать просто документацию.
Я не знаю, моя карма пострадала сильно больше, если вам станет от этого легче.
Всё что угодно является структурой, или есть исключения? Что не является структурой?
Извлечение корня изучают ещё в школе и даже раньше, чем тригонометрию. Это операция, обратная возведению в квадрат. Что страшного в корне, я упорно не понимаю.

Математику за то и не любят, что её дают на примерах, отдалённых от реальности; и многие вещи, звучащие страшно и непонятно, на деле оказываются простыми и очевидными — если их излагать не как «вешь в себе», а применительно к реальным задачам.
Статья бы, конечно, проиграла, если бы в качестве примера был взят эллиптический интеграл.
То есть, если бы автор начал статью не с «найти интеграл функции ...» а с «посчитать длину кривой» было бы хуже?

Потому что важно не то, что умеет автор статьи (он же не для себя статью пишет!), важно что знают и умеют читатели.
Если статья о том, что все и так знают, то какой вообще смысл её читать?
Я понимаю, что математика нужна не каждому программисту, но автор всё-таки позиционирует себя как «физик-теоретик», а от физика-теоретика ожидаешь содержания чуть более интересного, чем школьные примеры. Статья бы только выиграла, будь в качестве примера хотя бы эллиптический интеграл. И ещё больше бы выиграла, если бы код из неё можно было бы взять и использовать «как есть» в реальных задачах.
Мне кажется, самое востребованное в символьных вычислениях это не скорость, а — автоматическое вычисление пределов. Чтобы вычисляя значения функции sin(pi⋅x)/(x-x³) в точках 0 и ±1 получать корректные значения без дополнительных телодвижений.
Для заранее известного ответа можно использовать системы компьютерной алгебры, которые с произвольной точностью считать умеют. И метод трапеций очевидно не так быстро сходится, по сравнению с другими — тоже не самый лучший выбор. Закономерно возникает сомнение, что и дальше по тексту у вас будет оптимальное решение.
Будем интегрировать методом трапеций вот такую функцию:
А какой в этом смысл, если эта функция прекрасно интегрируется аналитически? На что у меня потребовалось меньше времени, чем на прочтение следующего абзаца.
Я в ответ привёл конкретный пример с картинкой из детского программистского творчества.
Вместо того, чтобы привести видоизменённый алгоритм Брезенхема.
Уравнение получилось изменением начальных условий, когда константный радиус окружности перестал быть константным, а стал линейно зависеть от времени.
Ну вот, теперь уже и спираль не та. В вопросе не было ничего про «ту» или «не ту».
Что значит «не было»? Я конкретную формулу приводил, которой эта спираль должна соответствовать.

подкрутить длину отрезка и смещение – дело десятое.
Покажите, как. Методом проб и ошибок?

Information

Rating
2,312-th
Location
Россия
Works in
Registered
Activity