All streams
Search
Write a publication
Pull to refresh
48
0.5
Кирилл @JerryI

физик-теоретик

Send message

ООП в WL это не нативная структура, а эмуляция написанная поверх паттерн матчинга. В этом смысле представление, что 0-элемент это "голова" более подходящее, так как хорошо подходит под свойства языка, что код и данные - одно и то же.

Но бывает, когда пишешь на двух-трех языках, то вечно где-то вместо 0 и 1 пишется и наоборот

Я думаю это стоит того, чтобы добавить в конце статьи

++

Добавлю свои две копейки к пункту 2. :)

Поддерживаю, ведь не обязательно в принципе специфичного для проекта мелкого модуля создавать полноценную библиотеку. Я бы в этих случаях просто обозначал BeginPackage[], для того, чтобы просто изолировать его переменные, затем, сохранял бы его в директорию проекта и потом заполучал Get-ом.

Но мне этим и нравится WL, что можно так, можно эдак, можно вовсе засунуть весь код в Module и также Get-ом его получить.

Окей, понял свою ошибку. Извиняюсь, вот исправленная версия

Module.wl

BeginPackage["ContextName`"]

Begin["`DontLookAtMe`"]

SomeVariable = 777;
SomeFunction[_] := RandomInteger[{0,10}];

End[] 

EndPackage[]

{ContextName`DontLookAtMe`SomeFunction, ContextName`DontLookAtMe`SomeVariable}

Да, верно. Но все равно в вашей программе найдется где-то главный Main, где нужны будут обычные переменные. Впрочем, ниче не стоит все еще раз завернуть в BeginPackage :)

Я думаю еще один возможный паттерн стоит упоминания.


Это в духе ES, Python и их импортов. Скажем, есть файл - "библиотека", но не хочется ее оформлять как настоящий Paclet, а что-то по компактнее и локаничнее

Module.wl

BeginPackage["ContextName`", {"Другие контексты, которые нужны"}]

SomeVariable = 777;
SomeFunction[_] := RandomInteger[{0,10}];

EndPackage[]

{ContextName`SomeFunction, ContextName`SomeVariable}


Тогда где-то в вашем основном файле или блокноте программы - делаем один раз

{func, var} = Get["Module.wl"];

func[123]

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

UPD: а, уже ответили...

Там кстати это можно через расширения класса HTMLElement как показано в статье. Вещь интересная

Наконец то они додумались не мочить механическую клавиатуру, а вынести eink на крышу

Я думаю это не так плохо. Вероятно старое API использует большое количество приложений (там взять хоть OriginPro 8.1 - допотопная версия графопостроителя, единственная, которая запустится под маком / линукс). А здесь - если удастся запустить Nuclear Strike, значит, еще целый ворох игр/приложений того времени будет работать с полпинка.

За сепульки спасибо

Я недавно перешел на мак. Мне нравятся там многие вещи, впечатления как будто скрестили linux и win. Однако кто бы как не хвалил osx, работа с окнами эффективнее выполнена в win.

Привет из 2023. Ничего не поменялось ) есть VR, и все такое, но ближайшее, к тому, что вы описали - это Motion control в геймпадах.

Можно цеплять CPLD - очень помогает. Я давно-давно искал способ вывода графики, но после многих попыток пришел к такому

https://www.youtube.com/watch?v=LxGfVtqwm2Q

Да как минимум можно SRAM синхронную повесить на целый порт, чтобы писать за один такт. Не знаю, есть ли там спец порты для внешней шины, но на младших кортексах от тех же Atmel и stm были, и даже с кэшем.

По больше бы периферии, там ленту светодиодов и индикацию инструкций на светодиодах. Тогда реально прикольная игрушка для елки. Захотел, сделал бегущий огонь с помощью регистров и лежит. А кому интересно, тот может переписать из гостей

А так круто! ??

Бойтесь autocomplete!

Очень жаль. Но спасибо за отзыв! Будем продолжать бороться за кроссплатформерность.

Да, все верно, это либо проблема Электрона, либо Сономы. У меня половина программ отвалилась после обновления (Electron, RunJS, Ableton Live ... ) с вентуры (M1 Air).

Однако обновление до бета-версии Сономы помогло решить все проблемы.

Обновил версию электрона, попробуйте этот https://github.com/JerryI/wolfram-js-frontend/releases/download/1.0.7/WLJS.Notebook-0.7.0-arm64.dmg

Information

Rating
1,955-th
Location
Augsburg, Bayern, Германия
Registered
Activity

Specialization

Fullstack Developer
Web development
Maths
C
JavaScript
FPGA
OpenCL
Wolfram Mathematica
Research work