Как стать автором
Поиск
Написать публикацию
Обновить
8.67

Визуальное программирование *

Всё о попытках визуализировать программирование

Сначала показывать
Порог рейтинга
Уровень сложности

Засады многопоточности

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров9.3K

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

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

Предсказанное сбылось, как говорится, по полной программе. Думаю, что озвученные далее проблемы для кого-то не станут новостью, но будут и те, кто о них не подозревает, как не подозревал и я. А потому захотелось их зафиксировать и поделиться, с чем пришлось столкнуться.  Ну, и рассказать, как я выкрутился, попав в не совсем привычные для меня ситуации (в автоматном программировании, подчеркну, они не возникли бы в принципе).

Итак, создав ранее тест потоков (о нем подробнее см. [1]), гоняя его многократно и в разных режимах, я заметил, что пусть редко, но выскакивают некорректные результаты. В подобных случаях я грешу обычно на себя. А в данном случае тем более, т.к., что там скрывать, имею весьма небольшой опыт использования потоков.

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

Читать далее

Все секреты многопоточности

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров16K

Disclaimer. Данная работа не повлияла на мои взгляды на программирование, но повлекла достаточно радикальные изменения в подходах к проектированию автоматных объектов.  Теперь, если процесс  автономен и/или не предъявляет требований  к синхронизации, он может использовать другие механизмы параллелизма, не переставая при этом быть автоматным по сути. А почему так случилось, что этому предшествовало  и что это за изменения, вы прочтете далее.

Это не самая большая моя статья (так я думал, начиная ее), над которой я работал, пожалуй, дольше и больше, чем над другими. Но это точно первая моя статья, в которой автоматы и ВКПа не будут главной темой. Тема потоков для меня достаточно необычна, т.к. я совсем не фанат многопоточного программирования. Но,  тем не менее, занимаясь параллельным программированием, время от времени возвращаюсь к теме многопоточности. И вот, чтобы добыть какие-то аргументы для критики и одновременно попробовать найти практическое применение потокам, я решил в этот очередной раз более плотно заняться потоками. А что из этого получилось,  читайте далее.

Читать далее

Как мы реализовали Low-code на микросервисах

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров12K

Привет Хабр!

Меня зовут Алексей Пушкарёв, я – архитектор продуктовых решений компании ELMA. Наша команда разрабатывает одноименную Low-code платформу.  В этой статье я расскажу, почему мы выбрали микросервисную архитектуру для Low-code системы вместо классической монолитной, которой до этого занимались много лет. Поясню, почему использовали именно такие технологии и решения, с какими недостатками сами столкнулись. Поговорим, как такая архитектура сказалась на Low-code разработчиках.

Для кого эта статья? Для архитекторов, аналитиков, внедренцев и тимлидов и всех тех, кому интересна тема Low-code. Мне кажется, что в публичном пространстве мало информации об архитектуре таких решений и применяемых технологиях. Для многих они до сих пор остаются черным ящиком, что нередко приводит к обманутым ожиданиям, и в целом недоверию к Low-code как к технологии. Хочу показать, что находится под капотом у таких систем на примере платформы, которую сами разрабатываем.

Добро пожаловать под кат!

Читать далее

Ему всего 20 и он делает $1,200,000 в год на no-code. Разбираемся, как именно

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров55K

Если вы читаете это - вы точно слышали о no-code разработке. Кто-то считает что за ней будущее, кто-то вообще не относится к сфере серьёзно, считая no-code баловством. Так же и история, что я расскажу сегодня для кого-то будет классным мотиватором узнать больше об этой сфере, а кому-то просто подожжёт пуканы. Погнали!

Читать далее

Falang: Low-сode конструктор логики с экcпортом в C++, C#, Rust, Go, TypeScript

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.4K

Полтора года назад я рассказывал про свой пет‑проект по визуальному программированию — falang.io. Основная его особенность состоит в том, что пользователь не управляет расположением икон на схеме, только их содержимым. Все остальные соединительные линии рисуются автоматически алгоритмом по строгим правилам. В т.ч. continue, break, return.

На данный момент, помимо обычных текстовых диаграмм, у меня появился Low‑code констркутор логики с упрощенной семантикой, который может экспортироваться в 5 современных языков программирования: C++, C#, Rust, Go, TypeScript.

Читать далее

Программируем в браузерном моде для Scratch 3 на JavaScript

Время на прочтение4 мин
Количество просмотров1.6K

Для преодоления ограничений функциональности блоков мы воспользуемся модом Sheeptester для Scratch, который позволяет подключать внешние расширения, написанные на JavaScript. Хорошей новостью является то, что писать такие расширения несложно даже в случае обладания минимальными знаниями JavaScript, HTML и CSS. Давайте взбодрим кота программным кодом для получения кодоблочной (или котоблочной) среды разработки.

Читать далее

Использовать LLM в оффлайне — LocalAI, Ollama, Flowise

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров42K

Привет, Хабр.

В этой статье о том, как без написания кода поставить себе локально и использовать LLM без подключения к сети. Для меня это удобный способ использования в самолёте или in the middle of nowhere. Заранее выгрузив себе нужные файлы, можно делать анализ бесед саппорта с клиентами, или получить саммарайз отзывов из стора на приложение, или оценить резюме/тестовое задание кандидата...

Читать далее

Теперь я адепт Глубины, но денежный вопрос все ещё актуален

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров6.8K

И вновь я приветствую всех своих читателей! В своей прошлой статье я начал рассказывать про то, как я стал кадетом Глубины. Продолжение погружения в Глубину начнётся здесь и сейчас, поэтому настоятельно рекомендую всё-таки обратиться к истокам, чтобы быть в курсе всех событий, которые произошли со мной за этот период.

Читать далее

ShIoTiny5 — OTA, часы, Encoder и прочие новости от v0.26 до v0.32

Время на прочтение9 мин
Количество просмотров2K

Это продолжение цикла статей о хобби-проекте ShIoTiny5 - встраиваемой системе графического программирования микроконтроллеров семейства ESP8266.

Изменения, новшества, планы - за последние несколько месяцев.

Для тех, кто не знает о чём речь

Для тех, кто слышит о проекте ShIoTiny5 впервые - можно посмотреть сайт проекта и там же найти подробную инструкцию прошивки v0.32 и саму прошивку.

Кроме того, в конце статьи есть ссылки, которые помогут понять о чём речь.

Для написания программ для ShIoTiny5 не нужно ничего, кроме интернет-браузера и модуля на базе ESP8266, соединённого с компьютером или ноутбуком по WiFi.

Если интересно, то жми сюда!

Марафон DataYoga “Ничего лишнего” — кому будет полезна неделя лучших практик визуализации данных

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.5K

Привет, Хабр! Сегодня мы хотим поделиться одним интересным событием, которое не может оставить равнодушным никого из сферы BI и визуализации данных. Марафон  будет проходить с 18 по 22 марта в онлайн-режиме (разумеется бесплатно) и включит в себя наработки ведущих визуализаторов и дата-йогов. Это будет настоящее погружение для тех, кто уже в BI и аналитике, а также для тех, кто еще только думает о расширении своих компетенций (или пока вообще не понимает, почему за “построение диаграмм” сегодня обещают хорошие зарплаты). Все подробности о Марафоне и ссылка на регистрацию — под катом.

Хочу стать дата-йогом!

Flowise: доступ к AI без кода

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров17K

Привет, Хабр!

Как без единой строчки кода сделать чат-бот с доступом в сеть, или сервис для генерации изображений, анализа файлов, как встроить это всё в свой проект... Об этом и не только в обзоре Flowise.

Читать далее

ВКПа. Введение, ч.3. Графика. Имитационное моделирование

Время на прочтение12 мин
Количество просмотров727

Наконец‑то мы добрались до конечной цели — графики, которая достаточно близко к реальности моделирует интересующие нас объекты. Речь пойдет об объектах систем управления (СУ). Это датчики, переключатели, индикаторы, моторы, конвейеры, объекты типа рассматриваемой нами гильотины и т. д. и т. п.

Читать далее

ВКПа. Введение, ч.2. Копирование автоматов и начала имитационного моделирования

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров1.7K

Данный цикл статей - не техническая документация, не подробное описание научных идей. Это краткое, обобщенное описание возможностей среды ВКПа на простом примере. Демонстрация процессов и принципов работы в ней. Идеи - проверенная временем часть. Они описаны в статьях, ссылки на основные из них приведены в  первой части [1]. Без понимания этого материала невозможно разобраться, зачем вообще нужна подобная среда. Ведь, существует и другое автоматное программирование. Но только идеи, положенные в их основу, другие.

Отличие идей - это главное, чем объясняется необходимость среды ВКПа. Другой такой просто нет, как нет по большому счету и таких идей. И,  вообще, без понимания основ теории автоматов невозможно объяснить необходимость данной модели вычислений. Ведь, без автоматов программисты когда-то вполне обходились, а большая часть без них обходится и до сих пор.

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

Читать далее

Ближайшие события

ВКПа. Введение, ч.1. Визуальное проектирование автоматов

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров2.5K

В моих статьях часто используется аббревиатура ВКПа. Это сокращение названия программной среды проектирования по канонам технологии автоматного программирования - среды автоматного Визуально-Компонентного Программирования (подробно основы ее теории описаны в статьях [1, 2]). Объяснение, что это за среда, конечно, дается, но, признаю, что делается это часто по ходу, достаточно поверхностно и разбросанно по многим статьям.

Отсюда вполне закономерный вопрос - что собой представляет ВКПа? В результате созрело решение, а, может, просто пришло время, дать достаточно концентрированное, пусть не столь подробное, описание среды. Будет это не техническая документация, т.к. речь все же не о ней, а о расстановке акцентов, точек, которые могли бы дать правильное представление о технологии и среде автоматного программирования, в которой, за очень редким исключением, создается мой программный код.   Но это одна сторона дела. Есть и другая...

Буквально за последние месяцы была проделана объемная целенаправленная работа по развитию среды и, что особенно важно, по повышению качества ее работы.  Раньше она была рассчитана на одного пользователя, который с ее проблемами легко мирился. Но, как говорится, до поры до времени... Теперь этот пользователь, а заодно и разработчик, решил сконцентрировать силы на доведении ее до нормального рабочего состояния.  Пришло, так сказать, время перейти на новый уровень качества среды. И, может, это прозвучит нескромно, но захотелось заодно поделиться также удовольствием от нынешней работы в ВКПа...

Читать далее

Формализация WF2M сети на примере алгоритма Кофе-машина и два ученых

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров1.1K

Предлагается WF2M сеть (From workflow to mathematic) с формализмом, обеспечивающим расчет движения маркера по сети workflow [WF2M23]. WF2M сеть основана на ЕРС (Event-Driven Process Chain) – событийная цепочка процессов: последовательность операций, управляемых событиями.

Ранее [CCSWF24] был приведен сценарий «кофе-машина и ученый» - как демонстрация формализма алгебры процессов CCS. Текущий пример формализации WF2M сети дополнен взаимодействием второго учёного, т.е. реализует более сложный сценарий: Кофе-машина и два ученых. Настоящую статью можно считать, как апробацию [WF2M23] на сценарии [CCSWF24].

Читать далее

Алгебры процессов для бизнес-процессов на примере CCS: кофе-машина-теорема

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров2.4K

Формализация бизнес-процессов алгебраическими выражениями полвека будоражит умы математиков и методологов BPM (Business Process Management, ранее называемое CASE). Однако появление разнообразных алгебр процессов не добавили в практику BPM алгебраического формализма.

Алгебра алгоритмов (алгоритмическая алгебра Глушкова [GLU78], включая формализацию параллелизма), Алгебра \ исчисление процессов (CCS \ pi-calculus, CSP, ACP и др.), «Исчисление функций» (УФО, [UFO14]) не позволяют говорить о формальной (математической) теории BPM, а также инструменте, применимым бизнес-аналитиком на практике, т.е. об Алгебрах \ исчислениях бизнес-процессов - как математических абстракциях, формализующих workflow \ docflow и другие составляющие бизнес-процессов (Алгебре \ исчислении workflow).

Читать далее

Гайд по Scratch для детей: как запустить игру на Android

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.6K

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

Читать далее

FlowCanvas и визуальное программирование в Unity

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров4.9K

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

Инди-команды не имея опыта в программировании собирают целые игры исключительно на нодах, а большие игры-сервисы удерживают исходники проекта в текстовом варианте? В нескольких проектах, с которыми я работал, были инструменты и системы визуального программирования: от древнего, тогда еще самостоятельного Bolt до монстров FlowCanvas/NodeCanvas и BluePrints в Unreal Engine.

После такого разнообразного опыта и раздумий, в сюжетном проекте столкнулся с FlowCanvas, который оказался очень нужен даже мне, как программисту и архитектору. Поработав с ним и интегрировав его в архитектуру проекта, имею вам кое-что сказать за визуальное программирование. В начале - много текста, процессов, методологии и проектирования, но в конце - это приводит к короткой и (надеюсь) понятной реализации. Рассчитываю на вдумчивых читателей и обсуждение в комментариях.

заварить лапшу

Управление зависимостями в Go

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров14K


Одна из основных фич Go это система управления зависимостями. В начале своего пути Go полагался на GOPATH, что иногда вызывало сложности и ограничения для разработчиков. Однако с появлением Go Modules в Go версии 1.11, ситуация изменилась. Go Modules представили более гибкий инструмент для управления зависимостями, позволяя более эффективно управлять библиотеками и их версиями.

Go Modules был введен в Go с версии 1.11 как официальная система управления зависимостями. Она позволяет автоматически загружать зависимости, управлять версиями, и облегчает совместную работу.
Читать дальше →

WF2M сеть. Формализм и математика workflow

Уровень сложностиПростой
Время на прочтение24 мин
Количество просмотров2.8K

Кому нужны книжки без картинок … или хоть стишков, не понимаю! – думала Алиса

Кому нужны регламенты бизнес-процессов без схемок … или хоть скриптов, не понимаю! –осенило бизнес-аналитика Алису

Алгоритмы бизнес-процессов можно формализовать (построить модель процесса) по-разному: подробным текстовым регламентом (см. заставку), графически (схемами, диаграммами) в разнообразных нотациях, математически (булевой алгеброй), специальным скриптовым языком, программно. При этом важно не только обеспечить абсолютную (или требуемого уровня) однозначность и адекватность полученной модели моделируемому процессу (текстовый регламент если и воссоздаст такую абстракцию, то с трудом), но и его понятность другими заинтересованным в нем лицам.

Существует широкий спектр workflow нотаций (стандартов): от классических ГОСТ 19.701-90 (ИСО 5807-85, flowchart), IDEF3, UML2-AD и XML-сериализованных BPMN\YAWL\XPDL\EPML до специфических, например, Дракон.

Ведутся споры «насколько хороша» та или иная нотация: насколько интуитивно понятно передает она в графическом представлении модели (в картинке) суть процесса (упрощенная нотация, понятная рядовому бизнес-пользователю), но не встречал обсуждения их математических представлений и вообще workflow-модели с простой и прозрачной математической абстракцией: математической интерпретацией объектов модели и механики процесса (метамодели алгоритма).

Ниже предложен математический формализм workflow-сетей: Модель WF2M (From workflow to mathematic), WF2M-сеть, как механизм формализации алгоритмов бизнес-процессов в части потока работ (workflow) путем задания аналитическими выражениями функций переходов между дискретными состояниями, маркировки состояний моделируемого объекта. Механизм (механика интерпретации алгоритма бизнес-процесса) заимствует от сетей Петри терминологию (маркировка сети, активация перехода, реализация перехода и т.п.) и частично концептуализм и классификацию. Предложенная WF2M сеть имеет иной механизм формализации (абстракцию) по сравнению с WF-nets.

Читать далее