Pull to refresh
30
0
Кирилл Белов @KirillBelovTest

Инженер по автоматизации тестирования

Send message

Вот про последний костыль не понял, можете подробнее описать?

Очень интересно, а можете привести какой-нибудь пример? Как я сказал в самом начале - буду рад объяснению от математика

Для меня наоборот то, что на одном только паттерн матчинге можно построить реальный язык программирования является поразительным фактом. Но все таки, в WL кроме сравнения шаблонов есть и другие важные концепции:

  • код является данными

  • все данные (и код) - это древовидные структуры из символов, чисел и строк

  • вычисление кода происходит при помощи правил замен, а паттерн-матчинг только часть этого процесса

Отличная идея, спасибо! Как только смогу я попытаюсь сравнить WL и Maxima!

Как я в самом начале и написал - я не знаю Lisp и поэтому не могу сравнить. Я поверхностно знаком с ним и знаю то, что WL и Lisp очень похожи концептуально. Но я с вами согласен - сравнение Lisp и WL было бы очень полезным делом

Спасибо большое, конечно же я уверен в том, что Хабр все еще торт и уважаемые читатели знают Константина не только как героя популярного мема =)

Спасибо за ответ. Думаю квадратные скобки и двойной слеш это самая меньшая из проблем. На мой взгляд САМАЯ большая проблема в том, что это проприетарный язык, который 30 лет продавался только за деньги, а когда наконец до Стивена Хьюговича дошло, что опен-сорс двигает технологии вперед - было уже очень поздно.

Я общаюсь с разработчиками ядра и их мнение такое, что в том виде, в котором выпускает язык WRI прямо сейчас у него очень сомнительное будущее, куда больший толчок к развитию он получит в тот момент, когда у кого-то дойдут руки выпустить открытую реализацию языка с возможностью подключения пакетов из реализации WRI.

Какие ваши доказательства? Парадигмы программирования все примитивные и очень простые. Они основываются на нескольких простых принципах. ООП на инкапсуляции, наследовании, полиморфизме и абстракции. ООП код представляет собой в классическом виде объекты, которые обмениваются сообщениями. ФП смещает фокус с объектов, которые обладают "умениями" на действия или функции, которые обрабатывают данные. Символьное программирование концентрируется на преобразовании древовидных выражений при помощи правил замены. Никто вам не мешает писать ФП или ООП код на WL, но вы кажется невнимательно прочитали - я писал про те концепции, которые лежат в основе процесса вычисления кода. То что в большинстве случаев на WL пишут ФП-код - не говорит о том, по каким принципам работает ядро.

Вообще в моей голове сложилось такое мировоззрение, что символьное программирование - это одна из парадигм - такая же как функциональное программирование или ООП. По своим личным наблюдениям я могу только сказать, что оно более редкое, а поэтому менее освещенное. И я еще раз постараюсь кратко сформулировать свою мысль. Чаще всего символьное программирование подразумевает аналитические преобразования математических выражений. По крайней мере так это в популярных библиотеках, которые я встречал. Для этого же в большинстве случаев использую Haskell. Но весь язык Wolfram построен на этой концепции. В нем все является выражением, а исполнение кода происходит при помощи применения правил замен. В комментарии выше @Refridgerator говорил об алгоритмах Маркова, я в конце статьи упомянул про клеточные автоматы - и то и другое является классическим примером символьного программирования. И к тому и к другому можно свести принцип исполнения выражений на языке Wolfram. В общем главная мысль - WL не просто умеет работать с символьными выражениями, а целиком на них построен

К своему стыду во время написания статьи я не вспомнил про алгоритмы Маркова. Вы абсолютно правы на счет того, что это лучший теоретический пример символьного программирования. Но хочу сказать, клеточные автоматы, которыми вдохновлялся Стивен Хьюгович и алгоритмы Маркова это практически одно и тоже. Только автоматы чуть-чуть более примитивные. На самом деле всю концепцию исполнения кода в WL точно так же можно свести к нормальным алгоритмам Маркова, чего я к сожалению в статье не показал, но если я найду в себе силы - то отредактирую статьи и продемонстрирую это

Да, именно там такое количество модов на данный момент, т.е. 70 и 60 тысяч. На других сайтах меньше. Большинство модов между LE и SE/AE пересекаются, но скорее всего несколько тысяч модов уникальны для каждого по отдельности

Как это у вас получилось что на Skyrim всего 8000 модов? На LE сейчас 70 тысяч модов, а на SE/AE 60 тысяч

Хочу еще раз отметить одну из самых важных концепций проекта. Все, что печатается в ячейках с CodeMirror-редактора - является выражением на Wolfram Language. Это одна из самых главных особенностей Mathematica, которая там работает в точности так же. Отличие только в способе реализации. Mathematica - это приложение рабочего стола написанное на QT, а WLJS - такое же приложение, но в виде веб-страницы. В нашем приложении есть интерпретатор, который работает в браузере и передает результат выполнения кода на рендер браузеру и CodeMorror-редактору, но и в Mathematica точно так же есть отдельное Fronend Kernel, которое является интерпретатором зашитым именно в сам UI написанный на QT, а результат интерпретации передается в QT для рендера.

Еще раз спасибо, что напомнили. Только что установил текущую версию. Действительно с тех пор, как я последний раз запускал Максиму - там довольно много изменений произошло. Посмотрел документацию и приятно удивился сколько всего там есть. Интерфейс тоже порадовал своей аутентичностью. А еще я вспомнил, что мне там действительно очень понравилось - это то, что графики строятся в gnuplot

Wolfram Language - это уже не система компьютерной алгебры. В плане набора функций Maxima находится слишком далеко от Wolfram Language. Пользовательский интерфейс Максимы тоже не обладает той функциональностью Mathematica, о которой я писал в статье и концепцию которой мы сумели воспроизвести. Я пользовался максимой примерно 8 лет назад и может быть с тех пор многое изменилось, но в не кажется нельзя было редактировать output и пользоваться хотя бы отдалено похожим «синтаксическим сахаром» как в WL. Но я могу ошибаться. Я обязательно поставлю текущую версию и посмотрю что там изменилось. Спасибо вам за комментарий и напоминание

Насколько я знаю уже миллионы лет человек и его предки являются социальными организмами и следовательно эволюционировали все это время в обществе. В результате наш мозг лучше всего адаптирован к взаимодействию с другими членами общества и намного хуже работает если ему нужно разбираться в чем-то точном и техническом. Мы очень хорошо видим эмоции других, понимаем по выражению лица, глаз где опасность а где нет и так далее. Еще одним следствием является то, что любое необъяснимое являете человек стал наделять личностью, так как тогда можно сказать что явление тоже как член общества обладает своим характером и поведением, которое свойственно другим членам общества. А тогда явление становится более понятным и его можно объяснить. В итоге все это превратилось в религию. Так как вместо попыток найти рациональное объяснение тому что например ветер дует - человек просто сказал что у ветра такой характер и он дует потому что хочет. А дальше по индукции. Стало можно объяснить все необъяснимое. Так и появилась религия. Кстати у животных тоже есть религия. Точнее признаки религии и того что у них есть вера в высшие силы. Так вот… Из-за невероятного количества технологий, языков, методик и фреймворков уже стало невозможно запомнить как все они работают и тут подключаются те самые механизмы когда мы начинаем наделять личностью уже технологии а затем превращать их в духов и божества

Я сначала подумал, что пост Король Разработки написал

Я понял в чем дело. Почему-то в определенный момент текст, который в блоке с кодом перестал считаться редактором как те 1500 символом разрешенные для постов. В итоге я отредактировал и сократил текст поста

Я не знаю почему, но после публикации пропадает код из одного блока с кодом. В пустом блоке должно быть вот это:

chatGPT[chatId_, text_String] := 
Module[{userMessage, assistantMessage, chat, errorText = ""}, 
  If[Not[KeyExistsQ[$chats, chatId]], $chats[chatId] = {}]; 
  chat = $chats[chatId]; 
  AppendTo[chat,  userMessage = OpenAIChatMessageObject["user", text]];   
  assistantMessage = Check[
   OpenAIChatComplete[chat], 
   chat = {userMessage}; 
   errorText = "[HISTORY REMOVED]\n"; 
   OpenAIChatComplete[chat], 
   OpenAIChatComplete::openAIResponseFailureMessage
  ]; 
  $chats[chatId] = Append[chat, assistantMessage]; 
  errorText <> assistantMessage[[-1, "Text"]]
]

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

Information

Rating
Does not participate
Location
Саратов, Саратовская обл., Россия
Registered
Activity