Час від часу згадую про штучний інтелект і перевіряю що він може.

Нещодавно задав йому задачку: вирішити рівняння.
Він перетворив рівняння до канонічного рівняння третього ступеня і сказав:
"це рівняння третього ступеня, тому далі вже треба вирішувати за допомогою комп'ютера числовими методами".

Комп'ютер послав до комп'ютера.

Це що, він себе не асоціює  з ...

А з ким?..

Змагався з ШІ у вирішенні задач з фізики за 10 клас.
Програв.
Він розв'язав усі одинадцять задач, а я у двох зробив помилку.
В одній заміть "до" прочитав "на", а в другій замість проекції однієї величини взяв її модуль...
Втішає, що в алгебрі ще я сильніше.
:-)
З іншого боку, чверть століття тому я вивчав фізику.
Після чергової згадки, що просунуті учні виконують домашнє завдання за допомогою chatGPT, вирішив перевірити Штучний інтелект літературою.

Попрохав доказати, що Данте - людина епохи Відродження.

У творі “Божественна комедія” Данте відображає гуманістичні ідеї, зокрема віру в людину, її можливості та свободу. Наприклад, у “Чистилищі” Данте зустрічає душу Ромео, який помер з любові до своєї коханої Джульєтти. Данте показує, що Ромео не заслуговує на кару, адже його гріх полягає лише в любові, яка є вищою цінністю. Таким чином, Данте відображає гуманістичні ідеї, які були характерні для епохи Відродження.
 
ШІ побачив імена Монтеккі та Капелетті у Данте, і вигадав присутність душі Ромео в Чистилищі.
Треба вчити китайську, бо англійкою data sheet не містить деякі важливі примітки...
Довго, довго страждати.
Кинути цю справу і купити Si4463 модуль з UART інтерфейсом.
Через два роки знову взяти до рук модуль з SPI.
Опанувати NetBSD.
Переконатися, що Si4463 працює по SPI протоколу під NetBSD.
Порівняти сигнали.
Полагодити драйвер SPI для Allwinner H3: лише один рядок.
До речи не думав, що FreeBSD та NetBSD настільки різні.
Подумати, може краще Linиx?
Знайти в Інтернете, що під Linux теж є подібна помилка з Allwinner H3.
Посміхнутися, як просто "полагодили" під Linux: за допомогою Pull-down резистора.
Подивитися, що особливість Allwinner полагодити програмно під Linux не просто.
Продолжаю изучать Пайтон.

Зачем?
Сказали, нужно переписать все с Perl на него, так как первый люди не понимают.

> python -c 'import this' | grep 'only one'
There should be one-- and preferably only one --obvious way to do it.

Но только начал изучать - сразу удивления и вопросы.

У объекта список искал метод len. Не нашёл.
Но нашёл функцию len, которая, как говорится, вызывает метод __len__.
При этом функция len - это объект, который имеет свои методы,
в том числе мето __call__:

>>> len.__call__([1,2,3])
3

То есть len - это len.__call__, который вызывает [1,2,3].__len__.

Но для встроенных типов len не делает таких вызовов, а просто сразу вернет значение с C структуры (CPython).

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

Или я капризничаю? Но ведь Пайтон позиционируется как простой язык легкий в обучении.
Як то кажуть "А ваша Галя балувана".
Війна!
Ребенку (в школе) и мне (по работе) приходиться знакомиться со змеиною мовою.

Говорят, что она легкая и подходит для обучения...
Легкая? Тогда почему сразу возникаю вопросы?

Read more... )
А ведь наш домашний робот - это самый первый робот, работающий на связке MLton (Standard ML) - FreeBSD - ARM.

P.S.
До этого MLton не работал на FreeBSD ARM.

P.P.S.
Вот только сейчас робот уже как год ждет, когда ему новую трансмиссию сделают и корпус.
Давным давно, когда я был маленьким и у меня из вычислительной техники был лишь программируемый калькулятор MK-61, решил потренироваться обрабатывать многомерные данные. Где их взять?

О одной газете на последней странице печатали фотографии и параметры моделей: рост, вес, грудь, талия, бедра.

Написал программу для MK-61. Она состояла из 3 или 4 кусков. Промежуточный данные приходилось записывать на листе бумаги.

Анализ показал наличие одного главного фактора.
Обнаружилась также обратная корреляция между ростом и объемом груди.
Чем выше рост, тем меньше грудь. Это меня очень расстроило.

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

Затем применил на всех данных кластерный анализ.
Модели и обычные девушки образовывали две разных кластера.

Сделал вывод: если у девушки высокого роста имеет красивый бюст, то карьера модели ей не светит.

Задумался: почему? Наверное, модельерам шить проще.
Мир "глазами" робота.

Уверенно "видит" до полтора метра. Дальномеры.

Спереди фиолетовое - препятствия (коробки).
Сзади зеленое - слева пианино, справа - диван.

Слепые зоны по бокам, по 60 градусов.


Нашел причину зависания робота.
Оказалось, что один из лазерных дальномеров при интенсивном сканировании иногда сбоит и удерживает i2c шину.
Нужно сделать, чтобы робот, имея незначительные повреждения продолжал работу.
По работе определяется мастер.

Например, электросваршик - по сварному шву.
По высоте и форме валика все видно.
Если валик срезан, то - по приграничной зоне.

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

А как оценить мастерство, если сам в это области ничего не понимаешь?
Рекомендации относительные и халтура может всплыть через несколько лет.

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

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

Получается, чтобы косвенно оценить мастера по инструменты, нужно разбираться в самом инструменте и в технологии.

:-(

P.S.
Недавно слесаря просил накрутить резьбу на трубе. Чистая резьба должна быть 12 мм. Даже нарисовал с витками и размерами. Так он 12 мм не от витка сделал, а от проточки. И получилось 10 мм.
Это же элементарные вещи. Я даже не мог подумать, что даже это нужно контролировать!


Навеяло страшным постом про IT https://vit-r.dreamwidth.org/1130727.html .
Только "загадочные эффекты", это не магия. "загадочные эффекты" - это некомпетентность.
Задание по природе в первом классе: определить длину тени, которую отбрасывает метровый гномон в полдень.

Вспомнил широту города, наклон оси вращения Земли, дату летнего солнцестояния.
При этом возмущался, что уж слишком сложная современная школа. Такие задачи для первого класса!

Когда дошло до тангенса, то меня осенило: я может суть задания - просто выйти на улицу и измерить линейкой?!

P.S.
Хотя полдень мы пропустили, поэтому все равно рассчитали.
Кажется, в Mio ("Scalable IO Manager") есть ошибка.
Mio - это IO менеджер для threaded режима в GHC 7.8 и выше.
В сервере, при превышении определенного размера данных, происходит зависание треда.
Mio считает, что писать в сокет еще нельзя, а на самом деле можно.
Проверил на GHC 7.8.[34] и 8.0.1.
В не-threaded режиме зависания нет, все работает.

А ведь считал, что основное преимущество Haskell - это "зеленые нитки" с многопроцессорностью при высокой скорости. А тут, оказывается...
Однокласница сына сильно заболела: ревматический артрит.
Ее сестра просит всех о помощи - https://vk.com/id333229995
Нужен курс длительного лечения препаратом Actemra, а одна ампула его стоит около 12 тыс гривен...
5168 7572 2604 8942 (Павлусь Кристина Юрьевна) - ПриватБанк.
Haskell не перестает удивлять меня!
Есть старый проект https://github.com/kni/redis-sharding-hs-strict.
В нем для определение типа команды используется поиск по списку пар:
https://github.com/kni/redis-sharding-hs-strict/blob/master/RedisSharding.hs#L59

Давном-давно [livejournal.com profile] thesz посоветовал заменить это на дата-тип.

Заменил на:
 data CmdType = 
    CmdToAll         -- На все сервера
  | CmdToOne         -- На конкретные сервер
  | CmdToMany        -- На множество серверов. CMD key1 ... keyN
  | CmdToManyValues  -- На множество серверов. CMD key1 value1 ... keyN valueN
  | CmdToManyTimeout -- На множество серверов. CMD key1 ... keyN timeout (блокирующие команды)
 
 
 cmdType "PING"             = Just CmdToAll
 cmdType "AUTH"             = Just CmdToAll
 ....

Ожидал рост производительности, но получил ухудшение на 20-25%!

Измерял при следующих условиях, и, разумеется несколько раз и разной очередности:
 cpuset -l 0 ./redis_sharding --port=8090 --nodes=127.0.0.1:8081,127.0.0.1:8082,127.0.0.1:8083,127.0.0.1:8084 +RTS -s -N1 -A10M -qa
 redis-benchmark -p 8090 -n 10000 -c 10 -q -t set,get,mset -P 10

Вот результат профилирования (при профилировании замедление меньше).

Старая версия:
 COST CENTRE                             MODULE                              %time %alloc
 throwSocketErrorIfMinus1RetryMayBlock   Network.Socket.Internal              12.2    0.5
 endOfLine                               Data.Attoparsec.ByteString.Internal  11.5    7.5
 servers_sender                          RedisSharding                        10.0   13.2

А вот - новая с data CmdType:
 COST CENTRE                             MODULE                              %time %alloc
 cmdType                                 RedisParser                          12.5   12.4
 throwSocketErrorIfMinus1RetryMayBlock   Network.Socket.Internal              11.9    0.4
 endOfLine                               Data.Attoparsec.ByteString.Internal   9.2    6.4

Почему?!

UPDATE.
Загвоздка была, в том, что cmdType, так как много строк, поместил в другой файл, а не в тот, где case cmdType cmd of

И Haskell не смог оптимизировать. Когда все слил в один - скорость вернулась!!!
Есть у меня одно старое приложение в полтысячи строк реализованное на Haskell и на Perl.

На старых процессорах: "Intel(R) Xeon(TM) CPU 2.66GHz", "AMD Sempron(tm) Processor 2800+", - Haskell быстрей Perl в 4.2 раза. Но на относительно новом ноутбучном "Intel(R) Pentium(R) CPU P6200 @ 2.13GHz" разница уже составляет 5.7 раз. Это на FreeBSD 9.0 32bit. Версия Perl - 5.12, из FreeBSD package.

Далее для AMD Sempron(tm) Processor 2800+.
Если поменять 32bit архитектуру на 64bit, Perl ускоряется в 1.2 раза, что связано с использованием use64bitint под 32bit архитектурой. Для GHC 7.4.2 наоборот наблюдается небольшое снижение производительности: 1.08. Для GHC 7.0.3 скорость не зависит от разрядности архитектуры.
GHC 7.4.2 быстрей GHC 7.0.3 в 1.13 раза под 32bit и в 1.05 под 64bit.

Profile

iamjaph

March 2025

S M T W T F S
      1
2345678
9101112131415
16171819 202122
23242526272829
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 10:28 am
Powered by Dreamwidth Studios