← All posts tagged программирование

Подумал как потоки можно реализовать наиболее простым образом.

Пока по запуску потоков есть идеи:
есть специальный набор суффиксов, которые указывают что слово нужно запустить в отдельном потоке, а также из стека извлечь его аргументы и это будет новый стек. Если стек реализован двусвязным списком, то создание нового стека из куска имеющегося — очень быстрая операция, но вообще и из массива можно копировать довольно быстро (на МК это можно поручить DMA).

Классический подход такой что запущенному потоку присваивается токен, и его уже программа может использовать для управления потоком и обменом с ним данными, однако можно ввести суффикс, который сохранит токен под именем. Например, как-то так:
в слове Й’хан-тлеи корень хан исполнится в отдельном потоке (префикс й), а токен сохранится под именем тлеи. Точнее даже не так, хан-тлеи будет возвращать токен, а различные суффиксы помогут собрать слово ожидания результата, остановки потока, пересылки потока на другую машину, и т.д.

Я правильно понимаю что в рейтинге самых кроссплатформенных решений для разработки игрового движка первые два места занимают javascript и plain c?

Если да, то кто на каком месте? С одной стороны, хороший джаваскрипт-интерпретатор тяжёлый, и в тамагочи на attiny движок уже не поиспользуешь. С другой, технология трансляции сишного кода в браузеры ещё непонятно в каком состоянии, ну и как обычно кто во что стандарт.

У меня новый любимый саундтрек для отладки

youtu.be

Я до сих пор на работе. Лифт уже отключили.

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

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

Я что спросить хотел, как с такого рода ошибками в более других чем C языках дело обстоит? Сразу отмечу что статический анализатор ничто не сказал потому что ошибка алгоритмическая. Что там хаскель? Что теоретически можно придумать чтобы в torth сделать лучше?

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

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

И вот я решил пооптимизировать ещё немножко, и в видеокарту данные не такими пакетами засовывать, а другими (пачками по n таких). Оптимизация удалась... В 100 раз! Для пачек по 10! И знаете что? С пачками по 1 то же самое!

Это странно ещё и потому что я напихивал программу измерениями времени операций, и у меня получалось что треть времени кушает одна операция, треть — другая, и треть — третья. И они все тут остались! Ну две изменялись, а третья-то нет!

Магия.

Жесть как люди обленились. Программированием теперь называют подбор параметров OpenCV и встроенных шагалок ROS. Цитата с гиктаймс (орфография сохранена с RSS, автор мог уже поправить):

Другой неприятной стороной было то что в качестве мозгов в основном использовались — если не ардуино, то STM32. Мне же хотелось занимтаься программированием. Научить робота бегать за мячиком, обходить препятсвия, передвигаться по открытомй пространству. То есть то, для чего надо больше чем ардуина.
Я вот чому-то не вижу никаких проблем реализовать описанное как на stm32, так и на ардуино (которые, для справки, бывают и на ARM, и на x86, и довольно неслабыми).

котаны, а каким лучшим способом преобразовать набор бинарных данных, чтобы сделать из него относительно валидную юникодную строку? Относительно потому что после передачи через юникодопередавалку обратно распакуется всё равно в сырые данные, главное чтобы не было например конца строки, и прочего подобного. Сейчас в голове Base64 как вариант присутствует, однако это выглядит крайне избыточным для двубайтового юникода.