format - (>>/malform/35) thread is missing in lookups: [rus][15062]
Russian - Русскоязычный - Endchan Magrathea

/rus/ - Russian - Русскоязычный

На дереве почки, под ними грибочки, поставим тут точку или новую строчку?


New Reply on thread #1331
X
Max 20 files0 B total
[New Reply]

[Index] [Catalog] [Banners] [Logs]
Posting mode: Reply [Return]


thumbnail of a.png
thumbnail of a.png
a png
(27.78 KB, 1075x316)
Я сделал свой язык программирования под названием Laisi. Помните, писал, что выпущу к концу Мая? Теперь покровы уничтожены и я могу не назвывать Laisi █████, а icolaisi ████████.
https://gitlab.com/Ninikaita/icolaisi
Правда его компилятор, icolaisi, поддерживает очень маленькую часть языка. Посмотреть можно в doc/completed.html. Зелёный — поддерживается, синий — поддерживается частично.
Я ещё хотел сайт сделать, но там требуют скан паспорта и регистрацию некоего Ай Эс Пи. Решил хостить дома, но доступ только из тора. Но ещё не сделал из-за проблем с роутером. На самом деле у меня есть домен и может быть я сделаю редирект на онионадрес.онион.то или что-то такое.
Кроме того, сейчас я тружусь над nnaamapeiko, как оказалось, я до сих пор не определил систему координат там и из-за этого у меня не получается ввести обсчёт длины и площади. Незнаю как я делал раньше, но теперь я определил, что есть x, y и z, они будто в угол смотришь, а из него оси растут. В углу шар с центром в самом углу (0,0,0), думаю, долгота будет начинаться с оси Z с положительной стороны и идти к положительной части икса и по кругу. Ну а широта обычно, с экватора на положительный Y растёт. И получается планета. А я собирался потом ещё ввести просмотр звёздной системы или даже галактики, а там будет скорее всего цилиндрическая система координат использоваться.
А Jdavabrav застаивается.
Но вы можете задонатить на Jdavabrav или nnaamapeiko, XMR-адрес на гитлабе в README.md посмотрите. Если вы задонатите немного, то я найму себя, чтобы их развивать, а если много, то найму и других людей.

 >>/1332/
Спасибо, удача это хорошо, ещё бы воли и было бы прекрасно.
Сейчас Laisi версии 0.7, следующая скорее всего будет 0.7.1 и туда я добавлю новое слово для препроцессинга. @for. Например, есть функция repr, которая в ОП-пике, на самом деле это не функция, а темплейт. Темплейт это препроцессинговая штучка для callable объекта, при вызове его внутри кода, генерируется объект (функция в частности) в зависимости от типов пересылаемых аргументов. В версии 0.7 нельзя сделать так, чтобы темплейт орудовал переменным количеством аргументов, но с @for можно будет. Например:

@template func (text,[... data,codec := DEFAULT_CODEC.decode,int base := 10]) repr := {
	@for N in data
		@iftype N is int
		#TODO
	@end
};

Мой ЯП статичски типизован и не поддерживает изменение/получения типа во время исполнения, но во время компиляции. Полиморфизм в метапрограммировании.
Я всё время слышал про ООП и не понимал его. Когда я осознал, что 3 основные вещи в ООП это полиморфизм, инкапсуляция и наследование, я был разочарованно удивлён. Может быть я чего-то не понял, но "Полиморфизм, инкапсуляция, наследование" звучит как "секс, наркотики, рок-н-ролл". Если секс и наркотики можно связать, то рок-н-ролл is out of topic. Так же в ООПной строке. При чём тут полиморфизм? Ладно инкапсуляция и наследование, это увязывается, но полиморфизм? Когда-то я хотел в свой ЯП добавить возможность получения и изменения типа переменной во время исполнения, но понял, что это очень сложно для компиляции и не подходит для моего низкоуровневого ЯП.

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


thumbnail of a.png
thumbnail of a.png
a png
(225.23 KB, 1280x720)
Мои знания геометрии оставляют желать лучшего. Сначала я перепутал тригонометрические фунции, из-за чего получался двойной конус, а теперь уголок X-Y-Z (X — красный, Y — зелёный, Z — синий) смотрит не туда. Он должен смотреть на Европу, где нулевой меридиан.

thumbnail of out.webm
thumbnail of out.webm
out webm
(12.89 MB, 1280x720 vp9)
Я добавил немного измерения расстояния, но точки ставятся под камерой, а не куда курсор указывает.
Расстояние вроде бы правильно меряет, экватор правильно показывает. Расстояния пишутся в терминале из nnaamap, я считаю разницу лонгтитуды и латтитуды двух точек, возвожу каждый в квадрат и беру корень из суммы, чтобы получить дугу. Ну а потом через радиус получается расстояние.

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

Я так же хотел написать свой 3D-растерайзер. Писать я его буду на лайси, а он-то позволяет очень хорошо распараллелить вычисление, в т. ч. и на ГПУ. И у лайси будет библиотека math, которая будет включать в себя очень много математики. И тригонометрия, и комбинации, наверное, и геометрия всякая, в том числе пересечение фигур и всё такое. Я ещё хотел добавить уравнения, то есть y = sin(x), y = x^2 и подобное и по табличным данным находить от них производные и первичные, где получится, а это даст возможность производить расчёты с фигурами, созданными данными уравнениями. Но я не уверен насколько это нужно.


 >>/1439/
Нет, лучше заработай денег и задонать мне на развитие nnaamapeiko или jdavabrav. Ещё, когда создам сайт для laisi, там тоже будут контакты для доната. Я принимаю XMR (монеро), но ты можешь на bestchange.ru найти обменник даже для банковских денег, будь то гривны, доллары, евро или рубли.
Даже если ты зарабатываешь 4000 рублей в месяц и половину будешь мне донатить, мой денежный поток вырастет более чем в 100 раз.


 >>/1457/
Потому что хочу. Потому что мне не нравятся нынешние стандарты. C мне не нравится, хотя это классика и отказываться полностью я от него не буду. C++ и джаву я возненавидел в детстве, когда подрос, с C++ отношения улучшились, а с джавой ухудшились. Питон хорош, но он мне не полностью подходит из-за его указателей и пары отсутствий фич. И вообще это скриптовый ЯП.

nnaamapeiko https://gitlab.com/Ninikaita/nnaamapeiko для просмотра Земли и не просто, а модульно, будь то OSM или спутниковые снимки, будь то веб-камеры или пролетающие мимо самолёты.
Jdavabrav https://gitlab.com/Ninikaita/jdavabrav/ для борьбы с вебом современным, для выуживания полезной или просто желаемой информации из джаваскриптозного мусора и извращения.

Мой анекдот https://gitlab.com/Ninikaita/anecdote-about-infinity-of-mathematicians это просто шутка, но не совершенная, совершенная заговорила бы чистым русским языком с генерацией числительных и возможностью перенаправления в espeak или festival, чтобы ваших оппонентов психично задушить, рассказывая анекдот и не прекращая.

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

И это не всё, будущее впереди:

? — скриптовый язык, мне питон не нравится, смешаю-ка я Laisi с питоном и типичным шелл-языком, получится ?.

███████ — CAD или просто игрушка, эмулятор, я не знаю, но мне такое нужно.

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

Мой гипертекстовый разметочный язык вместе с Laisi как программой и парочкой библиотек для интернета — замена WEBа, его убийца и воскреситель. AAA игры в браузере и без стриминговых сервисов, аааааааааа высокопроизводительные майнеры в браузере, побочный эффект. Не спалите свою видеокарту, конфигурируйте настройки.
Мой 3D-растерайзер. Не нравится мне OpenGL из-за отсутствия кривизны, мало в графике я знаю и математику надо учить. Хоть опенгл это стандарт, но мой растерайзер мне больше нужен. Ни от опенгла, ни от вулкана я бы не отказался, их возможностей хватает для тривиальных задач, но сделать растерайзер — великое дело. Хоть и кажется сложным, на самом деле простое, хабр подтвердит.
24 библиотеки для Laisi: audio, avs, c, dapa, dl, error, fs, hash, io, llvm, math, module, nn, noise, opengl, os, repr, sdl2, socket, stdio, subprocess, thread, time, video, всё это мне нужно.
Да, проекты могут умереть, 1 из 5 выпущенных умер, а именно mctagfs, может и будет восстановлен, но потом. Невыпущенные, особенно зачаточные проекты могут быть удалены или преобразованы. Удалённых я уже и не помню, преобразованный это мой убийца WEBа.

Кстати, за несколько дней до удаления лолифокса, у меня было ощущение, что скоро что-то плохое произойдёт, что-то по типу апокалипсиса. А оказалось, просто лолифокс умер. И ещё одна борда закрылась, но наверное нет, она обновилась что-ли, сейчас работает. Филиалы моего блога были только на лолифоксе и на той борде.


 >>/1474/
0.
Довольно часто людей называют психически больными, потому что они не обычные. А ведь на самом деле психические заболевания это шизофрения и ещё парочка.

Ух, страшно и сложно делать icolaisi. У меня не работает pyparsing, а если работает, то неймоверно медленно, особенно в infixNotation, а этот инфикс нотатион встречается везде, где формулы. Возможно, надо на C написать библиотеку для парсинга, заодно добавить байткод Laisi, а потом переписать на laisi и это будет библиотека dapa (акроним от data parsing). Благодаря полиморфизму и дженерикам в метапрограммирования, которые в Laisi, парсить можно любые индексабельные данные, будь то байтовая строка, текст из repr или массив чисел. Кроме того, индексацию у меня можно перегрузить. Собственно, так индексация text из repr и [s]работает[/s] будет работать.
Кстати, я подумал насчёт генераторов, как в питоне с yield, в Laisi у меня тоже такие есть. Может быть стоит добавить к ним индексацию или что-то. Не уверен. Реализовать генераторы в компилируемом ЯП будет сложно, наверное. Думаю, в случае, если он не рекурсивный, то просто все локальные переменные станут глобальными, а в генератор как функуию будет пересылаться адрес или номер yield, который был вызыван в пролшлый раз. А если рекурсивный, то придётся пересылать все локальные переменные в аргументы.
Я ещё подумывал над добавлением оператора факториала ! в ЯП. Он вроде бы ни с чем не коллизит, так что можно смело добавлять. Не то, чтобы я хотел считать факториалы, просто больше операторов — больше перегрузок операторов — меньше вызовов функций в коде.

Вот такой пример как хандлить сегфаулт в линуксе:

#include 
#include 
#include 

jmp_buf buf;

void handler(int s) {
	printf("Segmentation fault signal caught! Attempting recovery...\n");
	longjmp(buf,1);
}

int main(void) {
	int *p = NULL;
	
	signal(SIGSEGV,handler);
	
	int value = setjmp(buf);
	if (!value) {
		 *p=0xdead;
	}
	else {
		printf("recovered, %i\n",value); 
	}
	return 0;
}

Но есть проблема. Если компилировать через clang с ненулевым уровнем оптимизации, то происходит illegal instruction. Кстати, это тоже можно хандлить. Если компилировать через gcc, то на любом уровне оптимизации всё работает. Видимо, clang делает какие-то оптимизации и не обращает внимания на setjmp. Или тут проблема в стандартах. gcc же использует расширения для си, они могут включать определения для компиляции, где setjmp. Незнаю... Возможно это ещё и проблема x86-64 с её разноразмерными инструкциями. Может быть в ARM и clang справился бы?
В laisi по идее обращения по указателям не часто должны быть, так как индексация идёт по своим правилам и адреса проверяются, исключения выдаются. Но когда всё же будет обращение по адресу, можно делать такую штуку. Хотя это ОСезависимо, а у в laisi такого не надо, но, может быть, в библиотеке error такое будет полезно. Кроме того, когда icolaisi будет запускать файл кода, а не просто компилировать, он автоматически подключит библиотеку error для дебаггинга, а также будет использовать оптимизации для фич хостового процессора, в случае компиляции в файл изначально неизвестно какие фичи нужны и программист сам должен их включать.


Ухх, как же мне надоел этот си и питон! А особенно стандартные, обычные библиотеки. Хочу программировать на laisi, но для этого надо написать компилятор.

 >>/1483/
Да, вечно эти психиатры пытаются напоить медикаментами. Галоперидолом, в частности, чтобы мозг разжижить.

 >>/1471/
Это нормально. Я на лолифокс зашёл как раз в момент, когда в мод был создан тред о том что лолифокс всё. Я как чувствовал что нужно на лолифокс идти(небыл больше месяца).

Это у всех таких как мы, массово начинаются обострения.

Тесла то тоже был шизиком, страдал от ОКР, не пил таблетки и пилил изобретения. ОП может ты такойже.




Как же плохо! Дебиан не может поставить тор новой версии, арчлинукс не подключается к вайфаю автоматически. Не получается у меня сделать сайт для laisi. Наверное нет дистрибутивов, сделанных для людей. Разве что LFS, но он не дистрибутив и очень сложный.

 >>/1510/
> дебиан

Зачем тебе тор новой версии? Там какие-то уязвимости?
Пробовал тор из backports ставить? Там должна быть свежая версия.



Мне до сих пор никто не задонатил :(. Мне нужны деньги, чтобы нормально жить. Нужны трансформаторы, генераторы, насосы, сосуды, кремний, электроды, электричество, солнечные батареи, микроконтроллеры, сервоприводы и шаговые двигатели, ещё бы цирконий, чтобы красиво было. Хотя да, всё это вторично. Был бы у меня токарный станок, было бы супер. Много токарей берут индивидуальные заказы на детали. Я бы мог научиться токарить, чтобы зарабатывать деньги такими заказами. Или делать собственные детали и продавать на интернет площадках, если будет окупабельно. Но чтобы купить станок, мне нужно, наверное, где-то 20 XMR.

 >>/1512/
Тор новой версии поддерживает HiddenServiceVersion 3. Не разбираюсь в дебиане и незнаю, что такое бекпорты.
 >>/1517/
Вохможно. Когда-то пытался поставить на виртуальную машину, но с сетью не разобрался. Я всё время пользовался арчлинуксовым wifi-menu (и сейчас пользуюсь). Когда я научился пользоваться wpa_supplicant (и зачем существуют миллиарды нетворк менеджеров?), запустил iso в qemu, а там чего-то клавиатура не работает. Так и забросил изучение.


 >>/1519/
> Мне до сих пор никто не задонатил :(. Мне нужны деньги, чтобы нормально жить.

Тебе сколько лет? Мышление 13-летней девочки.

 >>/1522/
Возраст секретен. Ну да, я негодую, что мне не задонатили. Я понимаю, что вероятность очень маленькая, что мне задонатят. Но как ещё получать деньги? Идти работать? Нет.


 >>/1527/
Голод, в отличие от станка легко удовлетворяется.
Кроме того, есть возможность заработка денег не работая. Например, если кто-то задонатит. Вообще деньги только так и можно честно получить, надо чтобы кто-то их дал. Обычно дают за некоторые услуги или вещи. Я мог бы попробовать производить lathegened вещи и продавать их, но для этого мне нужен lathe. Ещё можно производить электронные предметы из компьютера. Это могут быть программное обеспечение, видеоигры, картинки, видео. Я не представляю как бы я производил не открытое ПО. Несвободное можно, но не всё. Все эти дждавабравы и ннаамапейко я просто не могу делать несвободными, ведь они несут часть меня в мир. Какие-нибудь нейросети с обученными весами я мог бы продавать, но у меня нет аппаратного обеспечения для быстрого обучения и датасеты кому-то надо создавать. Картинки я мог бы рисовать, это не так уж и сложно, но разве на этом можно заработать? Через видео скорее можно добыть власть над вниманием людей, как поступают блоггеры всякие и аниматионмейкеры. После этого можно рекламировать что-то за деньги, например. Но делать видео сложновато. А делать видеоигры очень сложно, это и рисование, и программирование, и маркетинг (?) и много чего ещё. Кроме того, придётся заняться юриспруденцией, чтобы меня не посадили в тюрьму за это.
Видишь, ничего из этого мне не подходит, так же как и работа, так как указание к работе исходят из чужих уст.

 >>/1528/
> есть возможность заработка денег не работая. Например, если кто-то задонатит. 

Что, правда есть, ты не ошибся? 
> Я мог бы попробовать производить lathegened вещи и продавать их, но для этого мне нужен lathe. 

Когда люди начинают бизнес они берут кредит или ты боишься, что не сможешь ПРОИЗВОДИТЬ и ПРОДАВАТЬ? 
> Видишь, ничего из этого мне не подходит, так же как и работа, так как указание к работе исходят из чужих уст.

Повзрослеешь -- подойдет. Жаль на пожрат хватает, иначе бы быстрее повзрослел, а то потом больнее будет.


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

thumbnail of 0.png
thumbnail of 0.png
0 png
(87.01 KB, 1280x720)
Я сделал интерактивную https://icchimarin-raspitrik.itch.io/money-bottler сцену про человека, который хотел токарный станок, но вместо этого родители отвели его в школу.
Я хотел скомпилировать и под виндовс, но у меня, на арчлинуксе, не поставился mingw, а clang пишет, что ему нужна какая-то visual studio инсталяция. Я не понял, что это такое. Ясно, что там скорее всего хедеры и библиотеки, но где мне их взять и куда положить — неясно.




 >>/1736/
Пора возрождать mctagfs, который я когда-то удалил. Теперь он будет принимать JSON-файлы, ибо популярный стандарт, в котором будут расписаны файлы и их теги. Он будет работать в двух режимах — интерактивный и неинтерактивный. В интерактивном режиме он подгружает fuse при помощи libdl (чтобы без статической динамической линковки), монтирует директорию и туда директории-названия тегов, а в них файлы. Но кроме того, можно пройтись в директорию с логическими операциями и выбирать наличие тегов по логическим оператором. Типа тег0&тег1&!тег2|(!тег3). В неинтерактивном mctagfs создаст новую директорию с жёсткими или мягкими ссылками, по выбору.
Я это к чему. Приводишь тяночку, показываешь как можешь при помощи mctagfs. 3 кейза:
0. Тяночка тупая и подразумевает происходящее как само собой разумеющееся. "ого, ололёша, ты программист))0)00))) у меня на айфоне нельзя сохранять файлы"
1. Тяночка нетупая и удивится. "O_o Ого, :) Антон, как ты это сделал? В Линуксе так можно?"
2. Тяночка умная и подразумевает происходящее как само собой разумеющееся. "Какая-то программулина на фьюз? Как называется? Классная, задоначу автору 1000 XMR за то что свёл нас и обнажил перед тобой мою внимательность и заинтересованность в области программного обеспечения."

 >>/1762/
На гитлабе в двух проектах (https://gitlab.com/Ninikaita/nnaamapeiko nnaamapeiko и https://gitlab.com/Ninikaita/jdavabrav Jdavabrav) есть реквизиты для доната в монеро 85z5mb2KQGm6nAcyQkQcA5Uh8DRggGATgYQsFEzdj3dv7Vip2NpL2VWHDDXKPUzdzbhYLmym5WHu2hTD6DdkZnUDDfTXNH9 и 86t6yFTrccBewn4DNABrnqL51qrXhofQVH1phHn6RfRJYBgNSSSX1qALJstYiL25Y15QfR3in3ANibpUkYo2Bz1xBvHGc5v
Скидывай на любой из них, если нет монеро-кошелька, ищи обменник на bestchange.ru/



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

Метапрограммирование это моё всё. Хоть icolaisi не готов, я пишу библиотеки на laisi и они состоят из метапрограммирования чуть более чем на половину. Вон в math почти все функции являются темплейтами, а в dapa темплейты от дженериков. Джереники — типы, генерируемые макросами.
Но и байткод мне надо сделать. С байткодом будет легче.


 >>/1789/
> Тут на сайте одни художники и программисты с радиолюбителями чтоле сидят?
Как что-то плохое. На том Дваче сидел тот же контингент.



Я всё-же начал делать байткод для лайси.
Например код
u8 a := 5;

#*func () main := {
	u8 a := 8;
	u8[a] b;
};*#
преобразуется в репрезентованный байткод
u8 0 := 0x5;
На самом деле тут не на что смотреть, вот будет код, будут видны наглядные отличия.

thumbnail of a.png
thumbnail of a.png
a png
(30.58 KB, 498x433)
Пора переделывать anekdot.py и добавить возможность генерации числительных, даже если на 1000e(1 + 37) будет отсебятина.


thumbnail of b.png
thumbnail of b.png
b png
(62.96 KB, 809x374)
Кстати, библиотека repr (будет) is language and coding neutral и одни и те же значения (например числа) могут быть репрезентованы по-разному, в зависимости от кодинга и лейаута. При этом лейаут может быть языковым + ещё дополнительно. И в итоге вполне возможно репрезентовать как в десятичные ASCII числа, так и в шестнадцатиричные ASCII числа (0...F), так и в английские имена числительные, так и юникодные русские имена числительные или ещё что-то, например Майя или кого там 20-ричные числа. А юникод это большой стандарт. В repr основной тип — text, он состоит из char, а char из int. char должен представлять один глиф. Я видел статью на хабре, где несколько эмодзи объединяли, получая один глиф.
Ещё я хотел сделать так, чтобы в типе можно было прописать так:
struct {
    func (self,кодинг,лейаут) r 'repr';
} a
и тогда бы при пересылке a в repr(), оно бы исполнило функцию r. Но после того как я отказался от динамизации типов во время исполнения это ушло. Возможно в метапрограммирование laisi надо будет добавить такую возможность. Типа
@template with T func ([T data]) repr := {
    @ifhas T repr
        return data.repr()
    @endif
};

Получается, что библиотека repr будет сильно расти в своей функциональности, но это ничто по сравнению с math, где не только тригонометрические функции и логарифмы, но и пересечения фигур, преобразования координат, возможно будет дифференцирование и интегрирование по табличным данным, обсчёт площади и объёма фигур образованных математическими функциями, ух, так можно и математику выучить.



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


 >>/1864/
На уродливый синий? Фу. Ужасное сочетание цвета. Мне нравится либо белое на чёрном, либо зелёное на чёрном, как в ретрохакерских фильмах. Но второй вариант подходит только для бесцветного текста. Так что только белый на чёрном 12-й шрифт. А в текстовом редакторе у меня 11-й моноширный.

Тем временем я пытаюсь делать icolaisi, но мне не нравится програмимровать на питоне, а на си сложно, потому что все страницы в интернете заняты C++, когда я ищу C, а если включаю -"C++", то не находит и вовсе ничего дельного. Не нравится людям C.
> Явное лучше, чем неявное.
Что-то мне было неявно, когда я не знал, что чтобы копировать класс, нужно подключать целый модуль, deepcopy и что если в классе сделать var = [], то потом в новом экземляре этого класса var будет равен не [], а списку из прошлого экземпляра. Неразбериха в указателях! Если я сделаю свой второй ЯП, скриптовый, интепретируемый, то там будут явные указатели!
Кстати, я подумал о документировании кода. Питон меня научил кое-чему. Надо будет и в лайси добавить что-нибудь для документирования, какие-нибудь особые комментарии. И чтобы потом можно было icolaisi --doc libname.funcname или как-то так. И сайт надо бы как-то сделать. Вообще я мог бы и на своём ПК хостить сайт, но я боюсь, что это сделает какие-то уязвимости в моём компьютере. С моим-то велосипедным HTTP-сервером. Хотя он на питоне написан и делает его более безопасным. А на сайте будет страница с библиотеками как у питона есть модули в централизованном месте.

 >>/1864/
скорее сине-зеленый. Синий из паскаля нинужен, а так глаза отдыхают. От черного потом бед трипы ловишь на стене

 >>/1866/
>  потому что все страницы в интернете заняты C++, когда я ищу C
Страниц по C ровно одна, находится по адресу https://en.cppreference.com/w/c .


thumbnail of x.png
thumbnail of x.png
x png
(15.36 KB, 628x180)
Питоновский map удобный, но в моём ЯП можно было бы сделать:
funcname(args), где args это больше аргументов, чем принимается. Но я ещё не подумал над правилами размножения аргументов или как это назвать. Может быть придётся изменить и делать dup(funcname)(args), а может быть тоже добавить map и делать map(funcname,args)

Есть небольшой прогресс.
Laisi код
u8 a := 5;

func (u8,[u32 c0,f32e8 c1]) main := {
	u8 a := 8 + 5;
};
преобразуется в репрезентованный laisi-байткод:
u8 @0 := 0x5

func(u8,[u32 %0,f32e8 %1]) @1 := {
        %2 := 0x8 + 0x5;
        %3 := alloc u8 := %2;
}
То есть сложные операции разделяются на простые. После, этот байткод может быть послан в бекенд — компилятор для LLVM, а из LLVM в следующий бекенд — компилятор LLVM, который преобразует LLVM-биткод в машинный код и микрокод, а микрокод пойдёт в следующий бекенд — экзекутор микрокода в процессоре.
Но я не сделал всё в операциях, если будет a := (5 + 3) + (8 - 2), то зачем выполнять последовательно (5 + 3), затем (8 - 2) и, наконец, результат0 + результат1 если выполнение в скобках можно распараллелить? А мой ЯП поддерживает параллельные инструкции. Это может быть полезно для всяких будущих VLIW-архитектур, а может быть и для современных SIMD-инструкций.
Но вообще для SIMD-инструкций в моём ЯП подходят операции по типу a[:] := (b[:] + c[:])*d[:] - e[:]
То есть загружаем в какой-нибудь xmm b, c и d, добавляем в b c, умножаем на d, загружаем e и отнимаем e от b. Повторить N/S + !!(N%S) раз, где N — количество субоперандов, S — размер регистра в элементах для данного типа.
Но у меня нет XPренса по программированию с SIMD.
Благодаря тому, что мой ЯП — набор переменных и экстернов, компиляцию тоже можно распараллелить. Когда перепишу icolaisi на laisi, надо будет сделать тип контекста в котором будут данные о локальных переменных. Сначала прочекать все глобальные переменные и начать компиляцию инструкций параллельно через each-конструкцию laisi. Чем больше ядер в процессоре или компьютеров в кластере, тем быстрее будет происходить компиляция, как и исполнение. Мне надо ещё придумать как кластеризовывать интепретацию laisi-код файлов, лучше бы узнать о уже готовых стандартах для пересылки данных для вычислений.

Вот http://ngphe4occygdwuirh4jqw2bbwqktm2ewhlcniygjylez3vrrxyj2sfid.onion/ сайт для Laisi. Он может упасть. Надеюсь не пробьёт защиту, вы можете пробить защиту? А сдеанонить меня?

thumbnail of redwitch.jpg
thumbnail of redwitch.jpg
redwitch jpg
(77.68 KB, 1280x720)
у ОПа конечно своя атмосфера, и мне не хочется ее портить, но почему знак ":=" в качестве присвоения? Почему не Сишный "=", почему не ФПшный и псевдокодовый "<-"?

Второй вопрос, когда будет полноценный релиз твоего браузера? Ты пилил что-то отталкиваясь от PaleMoon, от движка файерфокса или у тебя свой путь?

Я посмотрел, что такое GLSL и мало что понял, есть вертекс-шейдеры и фрагментные шейдеры. Что это такое — неясно, но я думаю, что свой 3D-растерайзер начну писать раньше чем свой hypertext markdown language, так что рендерить буду не опенглом, а растерайзером. Это может быть полезно, так как не все системы поддерживают опенгл, например MCU.
В растеризации 3D-объектов ничего сложного нет. Трассировка лучей, нормали, пересечения. Но главное это сделать в icolaisi поддержку OpenCL, иначе одна картинка будет рендериться несколько минут.
Я думаю, пусть будет целостная сцена, в которой расположены объекты, они имеют координаты, вращение и дочерние объекты. Рендеринг представляет собой помещение "камеры" в некоторое место и трассировку лучей. Камера может быть изометрическая, перспективная, рыбий глаз (?), точка и какая угодно. Но рендеринг отдельных объектов может быть переопределён и тогда будет подобие шейдеров.

 >>/1996/
> :=
Я воспринимаю '=' как знак тождества, то есть это математический символ. А вот ':=' для присваивания мне нравится больше и выглядит логичнее. Тем не менее, оператор сравнения (equ) у меня это '==', чтобы не было путаницы.
> браузер
Вообще мне не очень хочется его делать. Если ты попросишь создателей тор-браузера что-то ухудшить в нём, например запретить ходить по http (и .onion в т. ч.) тоже, то мне придётся делать Jdavabrav. Ещё ты можешь задонатить мне на донат-адрес дждавабрава, в гитлабе на странице проекта есть адрес. Когда я увижу зачисления на этот адрес, начну вводить фичи и исправлять баги. Насчёт движка, у меня PyQt5. Мне не нравится ни Qt, ни Веб, но питон это скриптовый язык программирования, так что почему бы и нет.
Но я уже давно не делал Jdavabrav и в следующие несколько дней может быть поделаю его. Надо ввести POST-операции с файлами, букмарки и много чего ещё.

Ой, я ошибся с генераторами, что ж вы меня не предупредили?
Описанный мною способ реализации с глобальными переменными не thread-safe.
Подумав, я пришёл к выводу, что можно применять такие способы реализации:
В любом случае просто пересылать все локальные переменные функции в функцию, а так же адрес или номер метки, где был последний yield. Но этот способ, вероятно, будет медленным.
В случае если таргет не имеет потоков (большинство bare metal микроконтроллеров), тот тут можно локальные переменные сделать глобальными, если функция не рекурсивная.
В случае елси таргет имеет потоки и в компиляторе включена соответствующая оптимизация для генераторов, то нужно функцию обернуть, создать на ней поток и чтобы она останавливалась после каждого yield (с помощью мьютексов, например) а результат клала по некоторому адресу.

Но на самом деле я незнаю зачем в laisi генераторы. Увидел yield в питоне, понравилось.

Ух, ну и сложности с icolaisi. Я очень неэффективно генерирую байткод, придётся всё переписывать. У меня, получается, компиляция будет идти в целую кучу стадий:
Препроцессирование кода
|
V
Импортирование библиотек и проделка всех операций с ними
|
V
Парсинг
|
V
Когда встречается макрос или темплейт, то генерация кода для него, препроцессирование и парсинг.
|
V
превращение в байткод
|
V
превращение в LLVM-биткод
|
V
Создание исполняемого файла.

Незнаю когда будет полная поддержка laisi. На самом деле она уже убавилась, чем в completed.html
И, возможно, скоро выйдет laisi v0.7.1. Будут добавлены правила для написания документации в коде, добавлены @for, @ifhas, кое-что удалено и кое-что исправлено.

Нет, я не могу просто взять и поменять то, что я уже напрограл. Я хочу просто быть аморфным и лепить костыли.
Чтобы нормально программировать, надо придумывать структуру данных сначала и понормальнее это делать. Но уже позно. Буду переписывать на laisi, может и подумаю. Хорошо у меня в nnaamapeiko хоть более-менее в порядке. Но это потому что, там ничего сложного нет, пока что. Мне надо туда ввести 2 важные структуры — контекст и виртуальную FS. Контекст будет хранить данные о модулях, о слоях и всяких линий, положения и такого. Это по сути замена глобальным переменным и позволяет использовать 2 разных набора данных nnaamapeiko в одном фронтенде. Хотя не уверен, насколько это полезно. Но что точно нужно, так это виртуальная ФС, которая будет давать доступ к файлам карт для модулей. А файлы карт это могут быть директории, могут быть архивы или что-то ещё и для модулей через функции будет одно API.

Из-за того что люди не умеют считать я заражаюсь от них и допускаю очень глупые ошибки. Почему люди не знают что такое номер? Ведь номер это не число, номером может быть как число, так и слово, адрес другими словами. Часто в зданиях этажи нумеруют так: -4, -3, -2, -1, 1, 2, 3... Но ведь это странно! Лично я нумерую начиная с нуля, как адрес в программирования. 0-вой предмет, одиный предмет. Хотя я понимаю, что первый это первый, то есть нулевой, а второй это одиный, аналогично и для английского языка и первым, 1st обозначаю нулевой. Может быть это немного некрасиво, -2, -1, 0, 1, 2, 3, но зато логично. Если считать по полу этажа, то первый находится на 0 метров, второй на 1*3 метра, третий на 2*3 метра, -1 на -1*3 метра.
Ещё в некоторых суеверных зданиях пропускают числа 13, 666 и 1989, говоря о том, что номер это не математика, номер это просто обозначение.
Из-за этого я часто могу ошибаться в результате на единицу.
Хотя что там, многие люди не знают что такое число. Они наверняка думают, что это набор циферек, лол.

Изначально laisi задумывался как замена C, но со временем я понял, что не выйдет так и не нужно.
Чтобы laisi стал заменой С, пришлось бы выпилить динамические массивы, string, int, float, запретить переопределять функции, убрать исключения и генераторы.


Я добавил байткодеризацию для while, но без do, else, post instruction, break и continue. Всё-таки пришлось переписать кое-что, но это оказалось много легче, чем я думал.
u8 a := 33;

func (u8,[u32 c0,f32e8 c1]) main := {
	u8 b := 8 + 5;
	while 1 {
		b := 3;
	};
	return a + 57;
};
преобразуется в:
u8 @0 'a' := 0x21

func(u8,[u32 %0,f32e8 %1]) @1 'main' := {
.0:
        %2 := alloca u8;
        %3 := 0x8 + 0x5;
        %2 := %3;
.3:
        branch 0x1 .4,.6;
.4:
        {
        .0:
                %2 := 0x3;
        };
        goto .3;
.6:
        %4 := @0 + 0x39;
        return %4;
}
В итоге я засомневался в goto в laisi. Дело в том, что если написать такое:
{a := b + c;
d := e + f;},,
{lbl: g := h + i;
j := k + l;};
goto lbl;
?????
Верхние 2 комплекса ({}) инструкций исполняются в неопределённом порядке, потенцаильно параллельно, но при это внутри комплексов инструкции исполняются по порядку. И что сделает goto lbl; — неясно.

 >>/2098/
https://ru.wikipedia.org/wiki/События&#95;на&#95;площади&#95;Тяньаньмэнь&#95;(1989)

На сайте для Laisi пока не работают lib и examples, пересылают на домашнюю страницу. Когда-нибудь добавлю. И в lib будут зарезервированные названия библиотек и их иконки.
Зачем я добавляю байткод? Чтобы можно было писать игры с закрытыми исходниками. Я считаю, что у игр должны быть закрытые исходные коды. А так как лайси имеет встроенную поддержку параллелизации, то вполне можно подключить какую-нибудь библиотеку для нейросетей, скомпилировать с библиотекой OpenCL или запустить байткод интерпретатором и будет параллельно на видеокарте вычисляться.
Возьмём к примеру майнкрафт и майнтест. Майнкрафт проприетарен, закрыт и на джаве. Но сколько для него модов, а сам он хорош и красив. Может быть и деньги тому причиной, но мне кажется, что в моджанге им почти не занимаются. Обновления выходят раз в полгода, да?
А в майнтесте всё уныло и некрасиво, хоть он и открыт, и документация есть.
Вот закрытый софт это то, что ненужно. Какой же это софт, если он закрыт?

Jdavabrav update v0.3.3 https://gitlab.com/Ninikaita/jdavabrav/

Я добавил в Дждавабрав возможность указывать строку юзер-агента. Добавил режим dataflow, позволяющий логгировать все данные, идущие и исходящие из браузера, но на данный момент доступен только GET-запрос.
Если вы, например, взламывали джаваскриптозный емейл, а затем судорожно искали важные письма, то такой режим подойдёт, данные будут сохранены. Или если вы хотите загрузить все данные с какого-нибудь вконтактика, определённой страницы, кликая по картинкам, лентам.
POST-запросы пока нет и на ютубе, например, крашнется.

Байткодеризация do while и if/elif/else добавлена. Следующим будет for.
u8 a := 33;

func (u8,[u32 c0,f32e8 c1]) main := {
	u8 b := 8 + 5;
	if 1 {
		b := 3;
	}
	elif 0 {
		b := 8;
	}
	elif 5 {
		a := 12;
	}
	else {
		a := 45;
	};
	return a + 57;
};
|
|
|
V
u8 @0 'a' := 0x21

func(u8,[u32 %0,f32e8 %1]) @1 'main' := {
.0:
        %2 := alloca u8;
        %3 := 0x8 + 0x5;
        %2 := %3;
        branch 0x1 .4,.5;
.4:
        {
        .0:
                %2 := 0x3;
        };
.5:
        branch 0x0 .6,.7;
.6:
        {
        .0:
                %2 := 0x8;
        };
.7:
        branch 0x5 .8,.9;
.8:
        {
        .0:
                @0 := 0xC;
        };
.9:
        {
        .0:
                @0 := 0x2D;
        };
        %4 := @0 + 0x39;
        return %4;
}

Как тут форматировать код? Через какие теги, чтобы табы показывало хотя бы?

Jdavabrav — экскременты, образно говоря. Потому что он использует Qt webkit и requests. Про requests могу ошибаться, может быть я документацию не дочитал. И про qt webkit аналогично.
Я исправил баг с ютубом, оказалось он слал POST-операции в виде JSON. Офигеть, не так ли? То берут файлы и смешивают с текстом, разделяя через boundary, то просто строку типа var0=val0&var1=val1&..., теперь JSON. Я не разбираюсь в POST-операциях, надеюсь вы мне не скинете ещё какой формат.
В кьютешном вебките мне не нравится то, что он мне шлёт сырые данные, которые следует отправить в POST-операцию вместо значений переменных и открытых/названий файлов. Я бы и не против, но requests не хочет принимать сырые данные, он хочет сам собирать. В requests это и плохо, мало ли что он в boundary шлёт, пользователь не узнает. Может он через него айпи-адрес сливает. Может стоит перейти на urllib3, если оно будет поддерживать сырые данные, но я искал в коде как реализована POST-операция и не нашёл проверку на класс bytes. Как и в requsts.
Обновление пока не выйдет, потом выпущу.
Ютубовское видео тоже не загружается, не хочет ютуб давать мне, но на это почти наплевать, так как Jdavabrav позволяет открыть ссылку через тот же mpv или любую вашу любимую программу для просмотра видео.
В тор-браузере мне не нравится то, что он насильно переводит фокус в окне загрузки. Я запретил автоперевод фокуса на новые окна, у меня компьютер слабый. Я запускаю GUI-шную программу за 10 секунд до начала её использования, а в это время занимаюсь неравновременными делами. Пишу я текст и тут окно открывает и несколько букв съело. Ну как так можно?
Вообще ноги растут из древности, когда люди не знали что такое интернет, не было джаваскрипта, а закрытые программы являлись нормой, не исключая нормальность свободного и просто открытого софта.
Я же хочу сделать свой WEB, исправляющий множество проблем — приватности, производительности и хорошести. Он будет состоять из двух частей — сетевой и HMLной (hypertext markdown language). Сетевая имеет GET и POST операции, всё. При этом GET может получать GUIшную часть (HML), APIшную и документацию к API, которая тоже будет GUIшной. А POST только APIшный. При этом всякие IP это вторично, первично — общение с сервером, а под сервером может выступать и MCU, подключенный через переходник USB-UART без всяких обычных сетей.
Как я уже писал на лолифоксе, мой HML тоже будет иметь скрипты, потому что без них нельзя делать комплексный и сложный GUI. А точнее не скрипты, а программы. Программы могут быть написаны на разных ЯП, но по-умолчанию будет поддерживаться надстройка над laisi, не позволяющая взаимодействовать с ОС напрямую. Хотя позволяя иметь доступ ко всей памяти, которую даёт ОС, что может быть уязвимо на всяких x86-64. Благодаря тому что laisi может быть очень хорошо распараллелен, возможно делать WEB-игры или WEB-майнеры работающие так же хорошо, как если бы они были нативными программами, используя все GPU, TPU, NPU, SIMD и дополнительные процессорные инструкции и кластеризованные компьютеры.
Если рассмотреть саму MLную часть моего HML, то он поддерживает ссылки наложенные на текст или картинки, но при этом без скриптов они загружаться не будут, это лишь ссылка. Это минус, так как серверу придётся генерировать превью, но плюс, так как не будут загружаться чужие сервисы по сбору данных.
У веб-страниц моего веба было бы хорошо быть значки условий:
0. Программозный (Скриптозный?) — не может быть нормально использован без включения исполнения программы. (Интерактивные игры, например)
1. Безпрограммный — нет программ. (Документы и статьи)
2. Программы не влияют на возможность получения контента. (Кнопочки перестали мигать или счётчик какой-нибудь остановился, например)
3. Безкоммуникабельный — Если и есть скрипты, то дополнительные коммуникации не нужны. (несетевые, но интерактивные игры)
Это можно четвёртым типом запроса GET сделать.


 >>/2240/
Когда-то мне нравился Си и ассемблер, но со временем я понял, что си мне не подходит. Нет параллельных вычислений, типы странные (В си base *variable[][5][], а в laisi base[][7]*{key}[[]*2,3,4] var), эти инклуды. Тогда я вроде бы уже немного умел в питон и мне понравились dict и import. То есть первый это ассоциативный массив, не приходится велосипедить, а второй это другое пространство имён и не надо писать кучу инклудов. Я решил, что с первого июня 2018-го года начну разрабатывать свои 3 языка программирования:
1. Для машин.
2. Для скриптов.
3. Шелл.
Сейчас у меня осталось только для машин (laisi) и скриптовый для шелла (?). Это происходило в течении раздумий на протяжении года. Уже и не помню, что я хотел сделать в laisi, но это название я быстро придумал. Хотя если посмотреть в старые исходники, то не сильно изменился синтаксис с тех времён. В начале тип функций был вида returntype (args) name, сейчас же func (returntype,[args]). Это сделано в связи с синтаксисом макросов, они у меня macroname(args) и при вызове макросов macroname(args).
Ух, что-то пишущая часть барахлит. Смыслы на концах предложений разные и контрастируют, а надо бы снаоборотить, всмысле отсимментричить относительно точки. Наобороты разные бывают.
Ещё исключений не было. Так...
В любом случае, если я успею сделать поддержку laisi хотя бы на 80%, то это победа, кто-то может подхватить и мой ЯП будет жить. Наверное.
Тем не менее, у меня большие планы и на другие проекты. nnaamapeiko, например. Это мой самый первый открытый проект. Карты, карты это то, что мне нужно. Надо собирать их в одном месте через модули. Можно даже meshroom использовать для реконструкции 3D с данных с нескольких видеокамера.
библиотека math и растерайзер на laisi это тоже хорошие вещи. Я плохо знаю математику, но с помощью них смогу обучиться. Сейчас я на грани, когда добавить в math классы для математических функций, с дифференцированием, интегрированием, разложением в ряды, может быть. Но незнаю какая в этом может быть практическая ценность. Разве что высчитывать характеристик тел вращения математических функций. Но насколько это нужно? Не уверен, пользы мало. Я думаю, операций лишь над значениями (sin, cos, factorial, dot) достаточно, над функциями (дифференцирование, интегрирование, решение задачек школьничкамим)))00)00) это перебор.

thumbnail of 744466a69c9e9b07237d66a5f7520c9e.png
thumbnail of 744466a69c9e9b07237d66a5f7520c9e.png
744466a69c9e9b07237d6... png
(1.65 MB, 1245x929)
 >>/1531/
> Повзрослеешь -- подойдет. Жаль на пожрат хватает, иначе бы быстрее повзрослел, а то потом больнее будет.
Как мне противно стало от твоей реплики, сразу повеяло запахом пивасика, водочки, шашлыка, жизненных планов, обсуждения чьей-то судьбы, хихикания полупьяных дурнораскрашенных женщин, золотых крестиков на шеях, среднерусского леса, мусора на опушке, березок, ухающей 50-ти летней женщины, застольных разговоров, мобильных телефонов, метро, детей в яркой китайской одежде, загадочно-дебиловатых улыбок молодых матерей в парках спальных районов, следа от самолёта в небе над подмосковным городком, первых наркотиков шустрых светловолосых детей, молящих о еде собаками у перехода.


Сделать поддержку for не так уж и просто.
У меня это:
for a in iterable {

};
как в питоне, только a является по сути каждым элементом iterable, то есть значение iterable изменится, в отличие от питона. Чтобы реализовать фор, надо потрудиться с адресами, у, ужас. Добавить новые значения в структуру с локальными переменными, мол приравнивание надо делать по указателю.
Получится, если %a := address iterable[index], то когда a := n, надо %a-> := %n, как-то так. Думаю синтаксис *%a := %n лучшу, похоже на сишный. А адреса будут расчитываться в каждой отдельной инструкции. То есть, если есть a->->-> (то куда ссылается куда ссылается куда ссылается a) станет %0 := *%a; %1 := *%0; %2 := *%1
У меня переменные байткода не как в LLVM. В LLVM там адреса и к ним приравниваются значения, а чтение через инструкцию load, а у меня чтение и присваивание происходит с одними и теми же переменными.

Но я реализовал lenof и индексацию:

u8 @0 'a' := 0x21

func(u8,[u32 %0,f32e8 %1]) @1 'main' := {
.0:
        %2 := alloca u8[6];
        %3 := lenof %2;
        %2[0x2] := %3;
        %4 := @0 + 0x39;
        return %4;
}

Я видел одного анона, который жаловался, что в питоне for не как в си и считал это идиотизмом. Дурак, для него же как лучше сделали! Вот в момё ЯП у циклов есть postins, это то, что выполняется после каждой итерации, в т. ч. и continue. Благодаря этому сишный for (int i := 0; i < n; i++) {ins} у меня будет s32 i := 0; while (i < n): i++ {ins};


Чем мне ещё не нравится тор-браузер, так это тем, что когда endchan говорит, что флуд детектед, мне нужно меняться на new identity, закрывая все вкладки. В jdavaбраве я мог бы ничего не делать, просто пезагрузить тор.
Уже второй раз приходится перезагружать, чтобы отправить данный пост.

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

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



 >>/2301/
Нет, не так. Нужно просто разработать Jdavabrav так, чтобы я мог постить сюда. Я же браузердельник. Этот пост еле-еле запощен через Jdavabrav. Их... *New Reply*...
Нет, не получилось. Незнаю что нашаманили тут, но мне приходится отправлять через какнутый тор-браузер. Кто вообще пользуется этим говном? Если все польлзовались Jdavabrавом, то на эту борду никто не ходил бы и проблему исправили бы и на эту борду ходили бы. Но почему-то все используют firefox, google chrome, даже qutebrowser.
Это означает только одно. Мне нужно создать свой WEB, с laisi и приватностью, как я уже писал. Тогда я смогу создать монополичный веб-браузер, так как модульный и свободный.
Тем не менее, в обычном вебе очень много данных остаётся и бросать Jdavabrav нельзя.

Ща попробую хедеров добавить в запрос...


Короче, проблема скорее всего в пост-операциях. Ни на одном сайте с POST ничего не постится, если запрос с boundary, а тутовская капча с boundary зачем-то. Скорее всего проблема в хеадерах, которые реквестс шлёт. Я мог бы доверить пересылку pyqt5, а не костылить, хоть WEB это сам по себе костыль. И знаете, что ещё? Вероятно сайт моего банка будет использовать boundary в пост операциях, из-за чего я не буду иметь доступ к деньгам и мне придётся перевести всё в криптовалюты и драгоценные металлы. Так что я вас призываю использовать криптовалюты, монеро, биткоины, создавать магазины, принимающие их, оружейно захватывать магазины и внедрять системы, чтобы можно было купить вещи за криптовалюты. Монеро, вроде бы, имеет такую фишку, что можно сделать один ID платежа и с лёгкостью оплатить его. Так же торговля с использование золота, серебра, алюмния и других металлов хороша.

 >>/2306/
Нет, слишком много деанонящей информации, потому что придётся терминал записывать, долго скрывать буду.

В бездну Jdavabrav! Завтра или когда-нибудь удалю проект. Один анон на лолифоксе советовал мне luakit, а я уже начал делать Jdavabrav.
Сначала я попробую разобраться с луакитом, а потом приму решение. Не всё так просто тут. Вместо дждавабрава наверное конфиг свой выложу.

Хуита этот ваш веб, HTML, CSS, JS, HTTP, как и браузеры для них. Нет таких, чтобы были и лёгкие в использовании, и для людей.
Свой сайт для laisi http://ngphe4occygdwuirh4jqw2bbwqktm2ewhlcniygjylez3vrrxyj2sfid.onion/ я перевёл в text/plain вид кроме /doc/completed

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

Что насчёт luakit, я попробовал переписать rc.lua (главный скрипт luakit), но я незнаю lua и в итоге смог лишь создать окно с подвязанным вебвью, хоть ничего на нём и не было (вебкитовский инициализируется белым цветом).
Какой большой плюс в luakit, так это то, что он написон на чистейшем как капля воды, взятой из столетиями стоявшей воды в затопленных этажах древних тоннелей, Си. Судя по тому, что написано на оффициальном сайте. Ещё, луакит сейчас сильно разрабатывается, так что есть и возможность попробовать добавить недостающие виджеры, если надо. Кнопки, лайнэдиты, может быть. Больше GUI. Но это надо посмотреть структуру проекта.
В любом случае, luakit лучше чем ничего и, наверняка, лучше чем рассадник зондов под названием "тор-браузер".
Но вообще документация luakit меня не радует, слишком сложно и непонятно. На плохих документациях надо учиться и писать хорошие документации для своих проектов. nnaamapeiko, icolaisi, laisi. Видели, что я в документации для laisi вложенные разделы отделяю табами? К этому я пришёл на практике, когда понял, что непонятно что к чему относится. Теперь лучше. Для nnaamapeiko и icolaisi надо будет потом нарисовать картинки как они устроены и работают.

thumbnail of in.png
thumbnail of in.png
in png
(9.1 KB, 348x222)
thumbnail of out.png
thumbnail of out.png
out png
(23.68 KB, 436x461)
Байткодирование for.
В общем-то осталось немного для байткодирования. each, вызов функций, raise и yield. Ну ещё структуры всякие, типы, классы, переопределения операторов. Ссылание, получение элементов объектов. И парочка мелочей.
И это совсем не всё. Ведь есть ещё препроцессирование — condition compilation, импорт библиотек, темплейты, макросы.

thumbnail of bacbcb5769c8984bfc6dab9f2bdf97b9.jpg
thumbnail of bacbcb5769c8984bfc6dab9f2bdf97b9.jpg
bacbcb5769c89... jpg
(89.87 KB, 500x667)
 >>/2372/
Какова вероятность, что это всё твои фантазии и на самом деле твой язык не работает, а в репозитории лежит нагенерированный тобой мусор, который не скомпилируется?

Странный какой-то чел. 
Его браузер это вроде просто поделка на pyqt, но приэтом он как-то смог запилить яп.
Хуй знает короче.


 >>/2400/
Маленькая. Я уже компилировал свой язык в LLVM-биткод, а оттуда в самый настоящий shared object. Через ctypes вызывал функцию main, значение возвращалось то, которое нужно.
> который не скомпилируется?
Лол, он сейчас на питоне написан. Но да, он компилируется в питоновский байткод.
План такой. Написать на питоне компилятор, который будет хоть и не полностью, но поддерживать laisi. Переписать его на laisi (надо сделать библиотеку для парсинга данных и биндинг для LLVM-кодогенератора, на laisi). Компилировать, сделать Makefile и всё такое. И бинарные релизы выпустить под x86-64, так как никто не сможет скомпилировать компилятор языка, если он на этом языке и написан, не имея компилятора, который надо скомпилировать сначала.
 >>/2401/
Ну да, такое часто бывает. Я стереотип-негативный.
> странный чел. Вроде бы электроникой занимается, даже не ардуино, а AVR и STM32, но при этом использует виндовс
> странный чел. Вроде и программст, а тостер починить не может
> странный чел. Стреляет метко, спортсмен, а вместо армии решил стать дезертиром
 >>/2402/
Это где? Судя по всему это питоновская ошибка. В icolaisi такого нет, а Jdavabrav я удалил с гитлаба, так как это неудачный проект и лучше использовать уже готовые браузеры, такие как luakit, возможно.

Что можно сказать про luakit?
Раньше я некоторое время использовал qutebrowser, но он меня выбесил своими сообщениями о том, что не получается что-то загрузить в стране, в которой часть соединений блокируется, а сконфигурировать не получалось.
Как я понимаю, luakit и qutebrowser унаследовали cli-интерфейс от какого-то друго бразуера. Благодаря этому порог вхождения для меня оказался ниже. Luakit имеет хороший дизайн по-дефолту, но насчёт юзабилити я не уверен. В дждавабрав на каждой вкладке была кнопка повзоляющая отключить JS, также я хотел добавить кнопку для отключаения коммуникаций (если джаваскрипт пытается, например). Незнаю, можно ли тут такое добавить.
Luakit очень highly конфигурэйбл и флексибл. Есть модуль mpv позвляющий открыть ссылку в оном, но я не уверен. Это очень хорошо.
Есть модуль adblock, я адблоком в жизни не пользовался, но возможно оно будет мне полезно, потому что иногда сайты прикрываюбт свой текст сообщением на разрешение сбора данных. Я не хочу тратить на это время, так как всё-равно периодически удаляю кукисы. Было бы хорошо, если бы он позволял убирать данное сообщение и давать мне прочесть текст.


Я добавил в icolaisi лучше юзер-френдли и опции. Теперь и вы можете посмотреть на репрезентованный laisi-байткод через ./icolaisi t.lic -S -o -
 >>/2431/
Нет, не я.

У луакита очень мало документации, приходится код исследовать. Я хотел бы написать сначала модуль, позволяющий открывать ссылки в экстернальных программах. Есть сигнал populate-popup, вроде бы через него можно добавлять элементы для контекстного меню, открываемого через ПКМ. Но как это делать, я незнаю. Если бы мне запринтили структуру, то я бы понял, но функция print не работает.
После этого можно браться за модуль, реализующий функционал dataflow, который был в дждавабраве, пока тот не умер. Хотя не уверен, хватает ли API для этого. Надеюсь хватает.
Ещё мне не нравится, что гифы перематывать нельзя стандартными средствами веб-движков. Что за мода? Нет, всё нормально, это просто пользователи используют гиф не для того. Гиф это для анимаций, когда неважно какой кадр сейчас. Например, Земля крутится. А когда вебм конвертируют в гиф это фу. Может быть можно сделать какой-нибудь джаваскриптовый кадр, который загрузит все кадры гифа и даст возможность перематывать?
Также было бы хорош перевод выделенного текста.


thumbnail of zlo.png
thumbnail of zlo.png
zlo png
(45.13 KB, 703x431)
Еле написал модуль для луакита чтобы открывать ссылки в других программах. Луакит хоть лагучее и багучее, но модули.
А луа это вообще бешеная дичь. Там индексы начинаются с единицы. ИНДЕСЫ С ЕДИНИЦЫ


Меня только что осенило! Исключения надо объявлять в аргументах функции func(ret,[args],exc)/func(ret,[args])/func([args],exc)/func()/func([],exc). Тогда для исключений можно будет сделать свой тип. Для одного исключение то, для другого то.
Я из-за этого ещё удалил генераторы из лайси, так как не уверен. Может потом снова введу.
А вообще тот же генератор можно заменить функцией, которая принимает некоторые индекс. В for это будет как for v in gen(somedata,i): i++ {instructions}, а если надо заполнить массив, то arr := dup(gen)(dup(somedata),0 : end)
В случае с генераторами это будет for v in gen(somedata) {instructions} и arr := gen(somedata). Сложности-несложности, зато реализация легче, а ведь мой ЯП должен быть программируем и на микроконтроллеры, а для этого может понадобиться реализовывать там heap.

thumbnail of b.png
thumbnail of b.png
b png
(4.71 KB, 258x94)
Собираюсь добавить компиляцию пикрелейтеда в реально работающий шейред обджект, а потом можно препроцессирование заняться.
У меня есть баг с выражениями в скобках.

 >>/2611/
По описанию-то ты Лев Толстой, генераторы туда-сюда добавляешь, при том, что это довольно сложная фича, исключения там доделываешь, всё заебца.

Но хоть один пруф того, что это всё функционирует, у тебя есть?

 >>/2619/
Ну да. На странице проекта есть компилятор. Можешь запустить его с t.lic (пример кода, который там же) ./icolaisi t.lic -S -o - и получишь репрезентованный лайси-байткод.
Что насчёт компилирования в машинный код, я только сейчас это делаю. Я и раньше компилировал, но отпарсенный код, а теперь буду переделывать под байткод.
А генератор я убрал из лайси, в смысле стандарта лайси. То есть просто убрал несколько строк описания. Из документации к laisi v0.7.1, которая ещё не вышла.



thumbnail of 69e76e43db759aaed48de22629a69d00.jpg
thumbnail of 69e76e43db759aaed48de22629a69d00.jpg
69e76e43db759aaed48de... jpg
(81.85 KB, 604x581)
 >>/2620/
> и получишь репрезентованный лайси-байткод
И его никак не запустить?

> А генератор я убрал из лайси, в смысле стандарта лайси. То есть просто убрал несколько строк описания.
И генераторы никогда не были реализованы даже в виде неисполняемого байткода?

> Из документации к laisi v0.7.1, которая ещё не вышла.
И даже в текстовом виде их не было.

То есть как и я говорил, это всё - исключительно фантазии.

thumbnail of a.png
thumbnail of a.png
a png
(38.15 KB, 1161x413)
 >>/2624/
Да, никак не запустить сейчас. Я уже могу скомпилировать
func (u64,[u64 i]) fac := {
	return i;
};
в LLVM-биткод. А его в шейред обджект. Пока что я не пушил эту версию на гитлаб.
Ща доделаю компиляцию в LLVM так, чтобы приведённый в высшых постах код компилировался и запушу.
> И генераторы никогда не были реализованы даже в виде неисполняемого байткода?
Да. Впрочем, там ничего особенного не надо было бы и делать. Просто вместо return yield подставить.
> И даже в текстовом виде их не было.
А пикрилейтед что?

thumbnail of 4f91ef83de143b6f3bfd9b177ed0ff32.jpg
thumbnail of 4f91ef83de143b6f3bfd9b177ed0ff32.jpg
4f91ef83de143b6f3... jpg
(96.96 KB, 900x1059)
 >>/2638/
> Да, никак не запустить сейчас.
Вся суть. То есть ты хуяришь код на своём языке, но запустить его не можешь и не можешь даже проверить, работает ли он? Ты фантазированием занимаешься. ты фантазируешь, как твоя программа, написанная на выдуманном языке, запускается и выполняется без единой ошибки с первого раза, и всё в твоём выдуманном мире идеально и работает как ты хочешь. Только в реальности этого ничего нет.

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

> Впрочем, там ничего особенного не надо было бы и делать.
Ты и не пробовал. Просто решил, что легкотня, если захочется, за две минуты сделаешь. Там же всего лишь надо:
> Просто вместо return yield подставить.
Где, кстати? В байткоде?

> А пикрилейтед что?
Поверхностное описание довольно куцего интерфейса генератора. Ни next, ни send, ни throw, ни yield from, ни возврата значения в финальном return. Это если с Питоном сравнивать.

 >>/2643/
Писать код на лайси, даже не спрограммировав его приносит пользу тоже. Потом надо будет меньше разрабатывать, просто проверить на баги.
> Ни next, ни send, ни throw, ни yield from, ни возврата значения в финальном return
Видимо я очень мало разбираюсь в генераторах. Надо будет почитать.
> Где, кстати? В байткоде?
Да, в байткоде. И raise (бросить исключение), и return, и yield были бы почти одним и тем же.

thumbnail of efb5d80441daf48a28482614010f3842.jpg
thumbnail of efb5d80441daf48a28482614010f3842.jpg
efb5d80441daf48a28482... jpg
(91.95 KB, 620x620)
 >>/2646/
> Потом надо будет меньше разрабатывать, просто проверить на баги.
Ты когда-нибудь писал программы? Оно так не работает. Если не корректировать баги в процессе написания, то может оказаться, что у тебя половина кода полагается на неправильно тобою предположенное поведение языка в одной из строчек, которую ты написал неделю назад.

И тебе придётся всё переписывать.

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

> И raise (бросить исключение), и return, и yield были бы почти одним и тем же.
Хорошо, слово "стекфрейм" тебе о чём-нибудь говорит? Можешь диаграмму в Паинте набросать, как происходит return - как выглядит стек до него и после - как происходит raise и как делается yield и возврат назад в генератор?

Совсем приблизительно.

 >>/2647/
> программы
Что ты описал это тоже хорошо, но не всегда. Иногда нужно прописать классы, их методы и просто функции, чтобы определиться с архитектурой. И вот только тогда будет возможно определить, если решение неправильное и вовремя исправить свою ошибку.
И в случае с разработкой ЯП, письмо кода на нём, до его выпуска, позволяет хорошо отшлифовать стандарт, чтобы было удобно. А то выпустил бы я laisi с процедурно генерируемыми типами, во время исполнения и это было бы очень сложно реализовать.
> Паинте
Нет, такое не использую.
Что насчёт стека, то вроде бы как, представляю как он работает. При вызове функции в стек заносится адрес инструкции, с которой был call, чтобы при возврате поместить этот адрес в регистр указателя инструкции. Внутри функций регистр стека сдвигается на столько байт, сколько нужно для локальных переменных. Во время возврата он отодвигается обратно, освобождая память стека, а потом совершает возврат из функции. Возвращая значние он может либо положить его в регистр, в несколько регистров, либо, если возвращаемое значение велико в размере, компилятор генерирует функцию не которая возвращает значение, а которая принимает указатель на некоторое количество байт в в памяти. И тогда перед ретурном по указателю помещается возвращаемое значение.
Как работают исключения и генераторы в других компилируемых языках программирования я не имею понятия. Но я планировал, что будет в функцию будет пересылаться указатель на структуру исключения, которая состоит из структуры которую функция бросает и немного памяти для результат выхода из функции, при raise она будет в эту структуру записывать данные и возвращаеться. В зависимости от результата (return, raise или yield) в ту структуру пересылается номер типа выхода. И дальше в зависимости от этого результата зависит поведение программы. Если исключение, то это исключение пересылается в исключение верхнего уровня, если это не в try {} и так далее, пока не выйдет из программы. В случае если это простая исполняемая программа с _start, то функция _start содержит обработчик исключения, который выведет сообщение об ошибке, либо просто возвратит ненулевой результат.
Хотя я ещё планировал ввести такой модификатор кода, который позволит в структуру исключения заносить названия функций, номера строк и столбцов в коде. Для дебаггинга.
Как я планировал генераторы сделать, я уже писал выше. Либо все локальные переменные пересылаются в аргументы, либо, если платформа поддерживает потоки, то внутри потока будет и мьютексом останавливаться когда надо, а yieldить в опредлённый адрес. Если платформа однопоточная и не поддерживает потоки (микроконтроллеры, например), а генератор не рекурсивный, то переменные вообще можно хранить в глобальной памяти.

Выпущен icolaisi v0.1.3
Добавлено немного компиляции в LLVM IR ассемблер.
В шейред обджект.
Теперь можно исполнять функции шейред обджекта, которые используют ABI laisi.
Там есть файл t.lic. Можно скомпилировать через ./icolaisi t.lic -o out.so, а потом запустить через ./icolaisi out.so -f fac
Чтобы убедиться в правильности результата, придётся править код файла icolaisi, раскомментировать принтинг retval.

thumbnail of 0514702bec8c76d4e1d732edd7a2f658.png
thumbnail of 0514702bec8c76d4e1d732edd7a2f658.png
0514702bec8c76d4e1d73... png
(613.72 KB, 604x604)
 >>/2649/
> Иногда нужно прописать классы, их методы и просто функции, чтобы определиться с архитектурой. И вот только тогда будет возможно определить, если решение неправильное и вовремя исправить свою ошибку.
> И в случае с разработкой ЯП, письмо кода на нём, до его выпуска, позволяет хорошо отшлифовать стандарт, чтобы было удобно.
Всё это логично и, наверное, помогает разрабатывать язык, но ты же его ещё не разработал. Его нет, зато есть громкие заявления о сложных фичах, которые ты уже оттестировал путём написания незапускаемого кода.

> А то выпустил бы я laisi с процедурно генерируемыми типами, во время исполнения и это было бы очень сложно реализовать.
Написание кода для несуществующего компилятора помогает тебе понять, что та или иная фича будет сложна в реализации?

> Нет, такое не использую.
Да хосспади, это же так принципиально.

> Что насчёт стека, то вроде бы как, представляю как он работает.
И с этими знаниями ты берёшься разрабатывать язык?

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

> Но я планировал, что будет в функцию будет пересылаться указатель на структуру исключения, которая состоит из структуры которую функция бросает и немного памяти для результат выхода из функции, при raise она будет в эту структуру записывать данные и возвращаеться. В зависимости от результата (return, raise или yield) в ту структуру пересылается номер типа выхода. И дальше в зависимости от этого результата зависит поведение программы. Если исключение, то это исключение пересылается в исключение верхнего уровня, если это не в try {} и так далее, пока не выйдет из программы. В случае если это простая исполняемая программа с _start, то функция _start содержит обработчик исключения, который выведет сообщение об ошибке, либо просто возвратит ненулевой результат.
> Хотя я ещё планировал ввести такой модификатор кода, который позволит в структуру исключения заносить названия функций, номера строк и столбцов в коде. Для дебаггинга.
Как я всё это понял: функция может вернуть либо значение через return, либо исключение через raise. Вызывающая функция должна проверять, что было возвращено. И если это оказалось исключение, то она сама делает raise дальше, ну или обрабатывает исключение сама, если в ней есть try. Верно?

Звучит правдоподобно, хоть и неэффективно. Работать будет, в принципе.

> Как я планировал генераторы сделать, я уже писал выше. Либо все локальные переменные пересылаются в аргументы
И возвращаются назад, когда делается yield?

> либо, если платформа поддерживает потоки, то внутри потока будет и мьютексом останавливаться когда надо, а yieldить в опредлённый адрес
Какой же это пиздец костыль, ты же несерьёзно?

> Если платформа однопоточная и не поддерживает потоки (микроконтроллеры, например)
Ты ещё и о поддержке микроконтроллеров фантазируешь?

> а генератор не рекурсивный, то переменные вообще можно хранить в глобальной памяти
Рекурсивных генераторов не существует. Может быть несколько инстансов одного генератора одновременно, например, в Питоне:

a = range(10)
b = range(10)
c = range(10)

Хуяк, и у тебя есть три генератора, созданных из одной функции. И использовать глобальные переменные вместо локальных уже нельзя. Как ты будешь это проблему решать?

 >>/2653/
> Чтобы убедиться в правильности результата, придётся править код файла icolaisi, раскомментировать принтинг retval.
То есть на данный момент по-прежнему ничего не работает?

 >>/2673/
range это, вообще говоря, не генератор даже в третьем Питоне. Но вместо него в моём примере можешь любой генератор подставить.

 >>/2673/
> Его нет, зато есть громкие заявления о сложных фичах, которые ты уже оттестировал путём написания незапускаемого кода.
Да.
> И с этими знаниями ты берёшься разрабатывать язык?
Да. А что, LLVM вполне позволяет почти ничего не знать о работе компьютера и компилировать работоспособный код.
> И возвращаются назад, когда делается yield?
Наверное да, но скорее пересылается указатель на все локальные переменные и по указателю внутри функции данные записываются. Если нет рекурсии. Наверное.
> Какой же это пиздец костыль, ты же несерьёзно?
Я думал об этом серьёзно. Мне показалось это эффективнее, чем пересылать сотни байт, в случае рекурсии. Хотя я уже запутался.
> Какой же это пиздец костыль, ты же несерьёзно?
Если бы в Laisi не было динамических типов (термин из документации), то никаких сложностей не было бы. На си же можно программировать микроконтроллеры. Вообще, если пользователь не будет использовать динамические типы, то вполне можно скомпилировать. Но так как они есть, то надо будет реализовать управление памятью в куче. Не говорю, что будет работать всё как часы, но если стек не дойдёт до heap, то всё будет ок.
К тому же laisi это довольно безопасный язык. В случае, если индекс у массива выходит за пределы, то будет брошено исключение. Ещё я планирую добавить дополнительные исключения, которые можно включить или выключить в компиляторе, связанные с памятью, а именно с segmentatin fault и недостатком памяти. Для первого нужно будет лишь перед каждым обращением по указателю (оператор ->) делать setjmp, а перед вызовом программы инициализировать перехват сигнала SIGSEGV, если на линуксе. Хотя пока не уверен как всё это будет работать с потоками.
> Рекурсивных генераторов не существует. Может быть несколько инстансов одного генератора одновременно
Если бы это было в laisi, то в каждой строке исполнился бы генератор и заполнил каждую переменную значениями, если эти переменные являются динамическими массивами. Я предполагал, что одна итерация генератора происходит только тогда, когда это нужно. В случае в присваиванием переменной, исполнились бы все итерации, а в случае с for, каждая итерация перед телом цикла.
> То есть на данный момент по-прежнему ничего не работает?
Работает. Компиляция есть, хоть поддерживаются только оператор + и :=, а так же аллокирование переменных и возврат значений. И тип uN.

Кстати, а это не ты ли в /pr/ лисача критиковал мои циклические индексы? Я тогда подумал и выпилил из из стандарта.

Мне всё ещё кажется, что стоит убрать динамические типы из чистого Laisi. Но я не уверен. Надо решать сейчас, пока всё болтается.
Тогда не придётся полагаться на heap.
Ну же, у меня же есть препроцессировальное метапрограммирование, стоит попробовать через него и дополнительные библиотеки реализовать динамические типы. Это сделает всё легче. И название будет оправдано.

Если убрать динамические типы из моего ЯП, то будет плохо, ведь даже func — динамический тип.
Нет-нет-нет, ненадо убирать их. Если рассматривать, если бы мир был другим и более 90% программирования было программирование bare metal, микроконтроллеров, а не программ для ОС, то динамические типы были бы как раз очень хорошей вещью, ведь как раз в bare metal можно сделать свою систему heap, хоть и не виртуальную память, хотя нет, можно и виртуальную память, если будет ЯП Laisi. И в случае в laisi, когда обращение в произвольный участок памяти только через оператор ->, это очень легко обезопасить. Только я с исключениями допустил большую ошибку. Если тип исключения будет в функции, то как он будет передавать в высшие функции, у которых тип исключения другой? Мне кажется, исключения это какая-то дичь. Тут, вероятно, нужна другая система для контроля ошибок. И ведь исключения встречаются везде в laisi! Деление на ноль, индекс аут оф рендж, возведение в дробную степень типа float и это только внутрилайсишные исключения. А в библиотеке math, например нельзя получить факториал от отрицательного числа, логарифм от отрицательного числа (но на самом деле это должно быть не во всех случаяХ), transpose от двумерных динамических массивов с размерами 0,0, много их!. Есть вариант сделать один тип для всех исключений, но хватит ли всем? Или в куче выделять данные...
Исключения сложны. Это единственная нерешённая проблема, которая осталась в laisi.

thumbnail of 1.png
thumbnail of 1.png
1 png
(30.83 KB, 1920x1560)
Выпущен laisi v0.7.1
Убраны генераторы.
Переделаны исключения (??????????).
Добавлено документирования кода в комментариях.
Добавлен @for
Добавлен @ifhas

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

Жидкий дискомфорт очень плотный.

Мне надо делать icolaisi. Ща, оператор энумерации (:) и динамические массивы. Знаете, а liblaisi.so будет заниматься решейпингом, аппендингом и другими вещами.
Встроенные методы. Может передлать их в функции? reshape, append, sort, fromlittle, frombig.............................................................................

Laisi-m — модифицированный лайси, приближённый к машинам. Нет динамических типов и исключений, proc нельзя изменить во время исполнения.
Embedded laisi — встроенный лайси. Может быть запрет на экстернирование символов или ещё каких-то действий. Может быть предопределённый набор импортов, дефайнов, экстерновых символов. Такой laisi будет использоваться в моём вебе.
Ща, доделаю эти динамические массивы + ещё 8 базовых типов + ассоциативные массивы + встроенные функции + ещё кое-что.


 >>/3404/
Что за наглый обман!
Ох уж эти ниггеры, телепортируются по картонному порталу из Африки в США и программируют на C#, а потом считают, что они самые умные, хоть и понимают, что C# — низшая ступень эволюции ниггера.
Но ведь C#, C, C++, Java это не ум, а культура и тут у каждого вкуса свой оттенок.
Так что тебе стоило написать:
*Sir, Your culture is inadmissible to me, get the fuck out from the Earth, otherwise I will kill you and everything what you love*

Ой, можно же, получается, написать liblaisi на laisi-m, а не на C, ведь laisi-m это, по сути своей, замена C. Тут есть беззнаковые целые числа, но их размер ограничен ОЗУ платформы, а не 4 типа, есть знаковые целые числа, но их размер тоже ограничен ОЗУ платформы, а не 4 типа, есть тип, у которого частные — IEEE754 (надеюсь, по крайней мере поля совпадают) half, single, double, quadruple, octuple, brain half, 80-битные интеловские числа. Нет heap, а proc — обычные машинные функции, которые нельзя изменить в процессе исполнения (в laisi (без "-m") функции можно присвоить значение другой функции или добавить ещё функцию и реализация рабочая, там просто в LLVM-коде тип funcbundle.X, который содержит указатели на функцию X типа).
Но я сейчас очень сильно занят другим проектом, который программирую и который сам не программируется, не смотря на то, что мои действия стали рутиной и я по сути Си-макака, которая не думает об архитектуре изначально (это сложно), а добавляет код по мере прихода и исправляет имеющийся.
Может выкрою немного времени и сутки станут 24:50 минут и смогу на досуге попрограммировать icolaisi или liblaisi пописать или в библиотеку math добавить ифдефы для laisi-m.


Моя быстрота уменьшилась, а медленность повысилась из-за другого проекта.
Тем не менее, потихоньку программирую иколайси.
Возможно, я изменю стандарт Laisi так, что laisi будет laisi-m и будет стандарт laisi-h, как laisi heap. В laisi не будет доступны динамические массивы. Но статические массивы с динамическим размером будет доступен, правда я не уверен в какой степени. И функции нельзя будет переопределить. Тем не менее, параллельность всё так же будет поддерживаться.

Я потерял ключи от сайта.
Теперь новый адрес для лайси — x6pptowh4vo743wsg6llb3vxglhzk5k7zk35aoxlyuvk32yfewbsr5id.onion
Теперь я забекапил.

Я случайно повредил блокчейн монеро и теперь не могу посмотреть есть ли пожертвования. Хоть вероятность того, что мне на софт пожертвовали очень мала, мне надо проверить.

Я обновил Laisi до v0.7.2.
Удалён тип rNdM, вместо встроенных методов в типах теперь встроенные функции, добавлены ассоциативные массивы со статическим размером.
Что насчёт реализации компилятора, icolaisi, то я пробовал что-то там с оператором энумерации и динамическими массивами сделать, но не доделал.


thumbnail of a.png
thumbnail of a.png
a png
(5.83 KB, 233x120)
thumbnail of b.png
thumbnail of b.png
b png
(78.78 KB, 1295x693)
Смотрите, как у меня реализован тип func. Так как func и proc можно переопределять, надо сделать как-то, чтобы это можно было делать. К функциями можно складывать другие фукнции, то есть, конкатенировать код. Хотя я ещё не со всем разобрался, например, с ретурнами.
Есть переменная functionname.bundle, которая содержит указатель на машинную функцию (процедуру), указатель на такие указатели и пустой int, всмысле, бесконечное целое число. Изначально можно присвоить одни инструкции для этой функции и эти инструкции будут в functionname.bundle. Есть процедура functionname и она исполняет все функции из functionname.bundle.

thumbnail of 15480221180050.png
thumbnail of 15480221180050.png
15480221180050 png
(233.09 KB, 489x516)
https://github.com/SthephanShinkufag/Dollchan-Extension-Tools
Чел, форкни куклоскрипт. Нужно убрать из него весь левый функционал и онлайн слежку.
Упростить скрытие всякого дерьма, поменять интерфейс. Это должна быть удобная помойка, которая бы заменяла отключенные скрипты на аибах.

 >>/5054/
После создания лайси я хочу сделать свой GUI-стандарт и GUI-библиотеку, а так же веб, основанный на этом GUI. Вот тогда вы сможете создавать борды в таком вебе, а этот веб будет не таким зондовым. Что он сможет узнать, так это куки, айпи, хедеры (которые будут почти одинаковые) запроса, если включены скрипты (на лайси), то сможет так же отправлять данные положения курсора, клавиатурные нажатия и размер и цветность дисплея. Но это будет легко отключаемо, по кнопке и настройке на каждую вкладку в оригинальном веббраузере для моего веба. А ещё стандарты, определяющие качество (не 0...1 или -1...1, а разностное) страницы, где будет указано, а нужны ли скрипты и нужны ли они обязательно (веб-игра или аналог джаваскриптозного сайта, который не даёт контент без включения скриптов) или необязательно (кнопочки будут красиво мигать, если включён), использует ли опенгл, нужно ли посылать лишние запросы (мультиплеерная веб-игра) и всё такое.
Если хочешь писать на борду, то можно одноразовые куки, если капча в каждом посте как на нормальных бордых, а не введи одну капчу один раз на другой странице и можешь писать сколько угодно постов в течении 10 секунд, но не чаще чем раз в 10 секунд, как тут.
Знаешь, в отпечаток браузера входят пост-формы, если они запрашивают файлы, там боундари есть какие-то (что за бред?). В моём вебе в пост-формах для файлов будут просто бинарные поля для размера файла, а потом уже сами данные и без всяких base64, у вас там что, люди обслуживают ПОСТ-запросы, лол?
Так же, благодаря тому, что мой ГУИ будет использовать embedded laisi, он может быть очень сильно распараллелен. Получится, что можно запустить AAA-веб-игру со сверхреалистичной графикой и нейросетями и она будет работать как на хосте и всё благодаря возможности распараллеливания each-конструкций. Их можно распараллелить на что угодно, на потоки, на видеокарту, на SIMD, если получится нормально. Хотя я немного не уверен насчёт внешних (для данного each) переменных, вероятно, нужны будут мьютексы. А ещё в лайси есть векторные (?) или массивные вычисления. Можно за одну операцию laisi сложить много элементов с много элементов. Это так же можно распараллелить в SIMD, видеокарту или потоки ммм, при чём это будет гораздо легче, чем в случае each-конструкций.
Эх, как же хочется доделать icolaisi, чтобы он поддерживал laisi v0.7.2
В следующую версию я бы хотел ввести препроцессинговую штучку @CALL(objname), которая позволяет препроцессору вызвать функцию или вызывабельный объект, если вызов проиходит без сайд-эффектов.
Таким образом можно построить таблицу предвычисленных элементов. Например в библиотеке math, хоть она и накалякана без проверки, есть таблица предвычесленных 0...22 значений факториала. Таким образом, функция fac (факториал), когда принимает аргумент, проверяет, есть ли он в этой таблице или нет. Если нет, то он вычисляет через sum(1 : input,*).
Так вот, можно было бы ввести константу, кото

рая определяла бы количество предвычисленных элементов. Это может быть полезно для оптимизации.
Что-то типа такого:
@ifdef not(FACRESLEN)
@define FACRESLEN 50
@end
int[lenof(facres)] facres := [@for N in (1 : FACRESLEN)
N : @CALL(facbase),]
func (int,[int i]) fac := {
if (i constant); без компиляции, но с heap; и с компиляцией. В разных случаях компилятор будет знать, что надо линковать. В машинном типе, например, не надо линковать функции для управления памятью из liblaisi malloc32 и другие.
Что насчёт твоего вопроса, то я незнаю джаваскрипт и как устроены эти npm-пакеты.

 >>/4968/
Чем меньше чел понимает в теме тем скорее он будет восхищаться.
 >>/5076/
Чел, не замахивайся так. Попробуй сначала какой-нибуд, immediate-mode гуй написать хотя бы, на существующем языке.
И то что ты делаешь надо не на бордах показывать, а на hn например.

Я добавил немного поддержки f32e8 и f64e11, которые по полям аналогичны IEEE 754 Single и IEEE 754 Double соответственно.
Но это малость. Гораздо важнее — динамические массивы, ассоциативные массивы, структуры, юнионы, переопределение операторов, препроцессирование!
На самом деле, создание компилятора для ЯП это не сложно, если на базовом уровне. Даже если без LLVM. Средние проекты, которые чаще встречаются, гораздо сложнее.
 >>/5090/
> immediate mode gui
Ну это да, это ядро для ГУИ. Всякие подключения к SDL2 или Xlib это уже вторичное, дополнительная обёртка.
Главное рендеринг и обработка событий, которые посылается в функцию обработки виджетов.
> hn
Куда? о.o

Что-то на питоне не получается нормально программировать. Наверное, иколайси стоит писать на си.

Нет, на питоне уже что-то есть, стоит продолжать использовать его.

Я не за этим. Вот статья про https://habr.com/ru/post/462385/ другие флоатские числа. Мой ЯП, Laisi, имеет тип fNeM, где N и M это количество бит общее и для экспоненты соответственно. Это типа для чисел, подобные IEEE754. Учитывая такие тенденции, наверное надо сделать типа fN, где экспонента будет выбираться автоматически или вовсе заменяться не IEEE754-подобным типом, как этот posit.
Ещё я хочу добавить слово unsigned. Например, функция факториала может принимать int, но нельзя брать факториал от отрицательного числа, тогда пусть он будет принимать unsigned int, это будет тот же тип, но компилятор не будет компилировать, если пересылается отрицательное число. Или исключение будет.




thumbnail of tr.png
thumbnail of tr.png
tr png
(834.61 KB, 1039x799)
Ого, тред жив, вот это ностальджи (но не как если бы это был почивший лолифокс)

Пока этот тред тут болтается, я уже столько всего ввёл! Но Иколайси до сих пор не готов.
Например, уже есть зачатки перегрузки операторов, темплейтов, импортирования, мультивекторных операций и много чего ещё.
И никаких alloc, realloc долбанных, вместо них сделаю liblaisi с этими функциями alloc, vary, del.

 >>/6547/
Извини, я его уже давно удалил из публичного доступа. Держи зип-пнг картинку. unzip image.png и будут исходники.

 >>/6553/
Что за идиот писал этот код? У меня тут что, ещё динамические типы были? Вот же тупость, знал бы прошлый я, каким Лайси будет на самом деле.



 >>/7739/
Да, понравилась. Я не смог точно опознать стиль.
Можешь в двух словах без особого применения технических терминов объяснить не сведущему в программировании человеку, чем создаваемый тобой язык отличается от других? В чём должно быть его превосходство?
Ты действительно делаешь что то новое и важное, и твои разработки могут быть применены другими в реальных работающих проектах? Или ты изобретаешь велосипед как хобби?

thumbnail of out.mp4
thumbnail of out.mp4
out mp4
(837.07 KB, 1200x800 h264)
 >>/7740/
> чем создаваемый тобой язык отличается от других
Там один код создаёт другой. Препроцессинг создаёт код, близкий к машинному или к Сишному. Такое уже есть в C/C++ и многих других ЯП, но мой более усовершенствован чем Сишный.
Кроме того, там можно реализовать параллельные вычисления. То есть, если в Си надо потоки/OMP явно подключать, то в Лайси написать выражение типа out[:][:] = var0[:][:] + var1[:][:], а его реализация уже будет зависеть от настроек компилятора и свойств целевой машины. На AVR-микроконтроллере все операции прорешаются циклом, а на ПК можно использовать все ядра и SIMD-операции, ещё и видюху подключить в некоторых случаях.
> ты изобретаешь велосипед как хобби
Скорее это, но тут важен не только сам ЯП, но и инфраструктура вокруг него. Например, у меня есть заготовки для своей системы ГУИ (как Qt, GTK+, EFL, но более ориентированное на ГУИ и, возможно, более удобное для геймдева) и своего графического движка на C++, их выпускать я собираюсь переписанными на Лайси. Как только появится Лайси, так примусь за ГУИшки и на своём будущем сайте, может, выпущу туториалы как использовать мою ГУИ-либу и всё такое. ГУИ это на самом деле не такое важное, так как к тем же GTK+, EFL и, возможно, Qt можно сделать биндинги для Лайси (чтобы их можно было подключать), но будет ещё много всяких библиотек. Вот, например, я хочу сделать Лайси-библиотеки video и audio, которые будут абстрактными слоями для загрузки и сохранение картинок, видео и аудио. Если в Си приходится подключать всякие png.h и libjpeg.h, avutils.h (сишники любят велосипедить), то в Лайси подключил парочку библиотек и весь софт воспринимает все доступные форматы файлов.

Его можно будет (в будущем, он ещё не готов) применять и в реальных проектах так же как C++ или больше, но популярность, естесственно, высокой не будет по началу. Отчего растёт популярность у языков программирования? От спроса на рынке. Программистушка видит, что спрос идёт на 1с, HTML+CSS+JS, C++, python, java и идёт учить их, а не хаскелль или какой-нибудь F.
Но мне популярность Лайси и не нужна, это просто мой ЯП, на котором я хочу программировать, а другим я дам к нему доступ просто так, кому-то тоже понравится.

Кроме Лайси, я хотел бы написать очень много юзер-софта на нём. Оконная система; файловый менеджер; аналог https://www.shadertoy.com/ (только запуск на компе) в виде Лайси-скриптов, учитывая возможность к параллелизации; свой собственный веб с языком разметки для моей системы ГУИ и Лайси-скриптами; имейждвьюер; текстовый редактор; 3D-редактор. И именно на Лайси, так как сишные функций не имеют полиморфизма и имеют идиотские типы (int, short, long), C++ные имеют какой-то ужас с нейм манглингом и вообще всё плохо, а питон это скриптовый ООП. На Лайси же я буду готов нормально программировать, а заодно и видоизменять его самого, когда мне не будет хватать некоторой фичи.
Я мог бы и сейчас начать писать тот же файловый менеджер на C++, а потом переписать, но это муторно. Не муторно было писать графический движок и ГУИ-библиотеку. Или, например, вот видос с моим рейтрейсингом. Он поддерживает не всё (отражения, нормальные преломления), но код этого демо-рейтрейсера стал основой для двух из четырёх бекендов моего графического движка.

 >>/7741/
Я же просил без терминов. Ты наверное столько времени тратил что бы написать этот пост.
Продублируй в остальные треды его что ли.
Просто мне почему то кажется, что то о чём ты говоришь наверняка существует. И может быть ты об этом не знаешь. Желаю тебе удачи с твоим проектом.

Тучка опять умерла, так что можно тут свой блогек продолжить.
Что я сделал за последнее время?
Добавил частично поддержку списковых данных как тут:

func () main {
	u8 var = 3 + 2;
	s32[3][2] a = [[5,var,3],[54,12,65]];
	s32[2][3] b = [[65,12],[var + 5,var],[3,23]];
	
	s32[1][6] c;
	c[:][:] = a[:][:] + b[:][:];
};


Теперь можно получше взаимодействовать с массивами. Но всё-равно этого мало, на Лайси до сих пор нельзя кодить! Мне надо написать инфраструктуру в виде кучи библиотек.
Думаю, я буду потихоньку выпиливать из стандарта некоторые ещё не реализованные вещи. Такие как switch, @call, сложные имена энамов, doc-комментарии.
И препроцессинг надо немного переделать. Думаю, изменить @ifdef, @iftype и подобные на просто @if (условия) и там будут поддерживать операторы всякие и препроцессинговые функции def(NAME) (ifdef) и прочее. Препроцессинг это моё слабое Лайси-место. У меня до сих пор, вроде, @ifdef не работает и всё это.
А ещё код самого компилятор оставляет желать лучшего. Недавно я ввёл такую вещь как контекст типа в Лайси и это довольно такое неудобное правило. Мне придётся как-то переписать часть функций. Правило заключается в том, что в зависимости от типа соседнего операнда или типа аргумента вызываемой функции операнд может быть рассмотрен с другой точки зрения. Например, если список приравнивается структуре (в C и C++ это будет через {.x = 5,.y = 8...}), то будет так [.x : 5,.y : 8]. А в случае энама можно его внутреннее имя переслать. Например, @define mode as enum {READONLY; WRITEONLY} и в случае если контекстный тип это такой энам, то можно написать READONLY или WRITEONLY. Иначе нельзя и будет ошибка. А если вам нужны именно их численные значения, то можно написать mode.READONLY.
Да и API следует лучше скомпоновать. Не удивлюсь, если сейчас посмотрю и увижу несколько почти одинаковых функций.

О, Дваченнел. Помнится, я перестал там сидеть, когда там удалили мой пост, в котором я послал одного ебаного дегенерата нахуй.

Так вот, я вспомнил, этим ебаным дегенератом был ты.

 >>/8115/
Очень долго думал над твоим постом. К счастью, имиджборды, как и многие текстовые диалоги позволяют долго думать на ответами. Дни, месяца, года. Разговором вслух можно ляпнуть чего-то или не придумать, что ответить, так ночью через 2 года и понимаешь, что ответить нужно было так-то, а не как-то.
Так вот, если ты думаешь, что этот человек, о котором ты говоришь дегенерат, то это неверно. У тебя либо нарушения памяти, либо нарушение восприятия, либо просто совершенно иное мировозорение. Во втором всмысле в третьем, лол. Уже счёт автоматически с нуля идёт случае это совершенно не плохо. Я считаю, что хорошо, когда люди думают по-разному, даже если их мышление кажется сумасшествием, шизофренией, бредом. Взять, например, виндузятников. Мне не понятно, как они позволяют виндовсу, нет, корпорации владеть их компьютером. Им на самом деле не так уж и нужен компьюетер, наверное. Хотя, среди каких-нибудь радиолюбителей, станочников, даже программистов, то есть технических специальносетй, полно виндовсюзеров. Хоть мне и кажется это безумием, я это принимаю как данность. Окружают меня безумные люди в основном и это нормально. Они тоже имеют право на выражение собственных мыслей.
Что насчёт твоего поста, то тебе следовало бы написать не "дегенерата", а "генерата", "прогенерата", "сверхчеловека", на крайняк "протогенерата". А если тебе просто отвратителен и не нравится этот человек, то "отвратительного человека", "ужасного человека", "врага", "мерзкого червя" или что-то подобное.
А что сказать про модерацию на тучке, то мне она нравилась. Моих постов почти не удаляли. Не знаю, как именно ты послал человека, но если односложно, то это явное серунство. Мне бы не хотелось сидеть на имиджборде, где каждый серунит как на сосаче "пук кек срёньк порвался". Но теперь я не мог постить на тучке, так как постинг с тора запрещали. Наверное, админ на работку пошёл или ещё почему-то не мог модерировать борду. А сейчас я не пробовал на пучку постить. Наверное, пора потихоньку отказываться от имиджборд. Они едят время, а почти ничего интересного там нет. Лучше написать автоматический логгер постов, парсер тем и приблизительного смысла текста, картинок, архивируя и обрабатывая всё. Но не уверен, а интересно ли это мне.
Так же допускаю возможность, что ты назвал человека дегенератом, так как сам являешься сверхразвитым существом, обрёл уже свою божественность или достиг высот в некотором навыке, в частности, в программировании. Но это вряд ли.

Сегодня смог усесться и пописать Иколайси. Теперь есть поддержка вложенных структур, то есть что-то типа такого:
@define stsup as struct {
	s32 v0;
	s32 v1;
};

@define st as struct {
	u8 a;
	u8 b;
	stsup c;
};

func () main {
	st v;
	
	v.a = 5;
	
	st* vptr = &v;
	vptr->b = 12;
	
	v = vptr->;
	vptr-> = v;
	
	v.c.v1 = 54;
};

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

Но я думаю над тем, как следует пользователям сигнализировать об ошибках. Пока что у меня в стандарте есть assert. Это должно будет вызывать аварийное завершение программы + вывод ошибки. Я считаю так, что программа не должна иметь ошибки и поэтому надо теребить программиста исправлять их, а главное это показывать, где они. А чтобы проверять правильность аргументов, вызывать функцию, проверяющую её. Например, если где-то будет функция умножения матриц произвольного размера, то надо чтобы ширина и высота в некотором порядке совпадали. То есть, если не будут совпадать, то вызов assert. А для проверки можно использовать функцию проверки. Причём, я собираюсь ввести такую фичу, чтобы названия некоторых функций могли начинаться с оператора. И можно будет сделать m0 *.check m1, чтобы не писать какое-нибудь громоздкое MatrixMulCheck(m0,m1).
Но точно ли только такой подход нужен? Что если ошибка не простая как в случае умножения матриц? Что если это обращение к какому-то API и там штук 400 сообщений для каждого из типа ошибки. Программисту не захочется обрабатывать каждый случай. Можно было бы ввести try, except и raise для исключений, чтобы программа хандлила эти ошибки и уже в зависимости от прихотей программиста слала их сообщения в консольку, на клиент пользователю или в ГУИ-приложение. Но может лучше давать делать это и просто функцией для проверки аргументов и всего такого. Пусть она возвращает строку с ошибкой вместо raise или assert. К тому же, ввести исключения не так уж и просто, это придётся ввести поддержку потоков, чтобы для каждого создавать свою скрытую глобальную переменную, которая содержит инфу для setjmp. Наверное. Да и какие-то странные эти исключения, не хочу их.
Кстати, вспомнил вредные исключения, которые получаются в pyparsing. Это питон-модуль для парсинга и так там можно на грамматическое правило сделать функцию проверки, которая из одних аргументов (строк, например) сделает другие (объект). А если вызовет исключение, значит правило не прошло проверку. И когда у меня были исключения от всяких key error или index out of range в обычных питоновских переменных, то я не понимаю, где ошибка.

Ещё я раздумывал о том, как сделать встроенную функцию суммы. Я хочу, чтобы лаконично записанной операцией можно было посчитать значений операндов, как если бы между ними был некоторый оператор. То есть sum(ops[:4]) это ops[0] + ops[1] + ops[2] + ops[3]. Но я хочу, чтобы не только + можно было поставить. Раньше я думал сделать это так, чтобы можно было свой оператор поставить в sum(). То есть sum(ops,+) или sum(ops,-) или sum(ops,*). Но это как-то тупо выглядит. Пересылать операторы, серьёзно? И вот я придумал такой синтаксис: ops{operator}. То есть ops[0:10]{+} это сумма 10 элементов ops, ops[1:10]{*} это факторил девяти. И чтобы можно было переслать подходящую функцию ops[0:10]{myfunc}.
Ещё надо бы какой-нибудь аттрибут для таких функций придумать, которые показывают, а можно ли аргументы мешать местами. Если можно, как скалярные числа, то такое вычисление можно будет распараллелить. А если нет и это как умножение матриц, то нельзя. Таким же образом можно будет и одну функцию перегруженного оператора сделать для, например, вектор*скаляр и и скаляр*вектор.

надеюсь сдешняя разметка не съест звёздочки...

> ops[1:10]{*}

Что это будет возвращать, если массив пустой? Сумма должна вернуть 0, произведение 1, а myfunc?

 >>/8149/
Массив не может быть пустым, если уже имеет размер. Если ты имеешь ввиду, что массив заполнен нулями, то сумма 0, произведение 0, а myfunc в зависимости от её кода.
Если вместо массива используется mem.vector (почти аналог std::vector из C++) и его размер меньше 10, то будет assert что index out of range.

 >>/8150/
> Массив не может быть пустым

> Если ты имеешь ввиду, что массив заполнен нулями

Мышление древнего человека, который не понимает, что такое ноль.

Массив может быть пустым. Если в твоём языке нельзя создавать пустые массивы, то нахуй он такой нужен?

А та штука, которую ты пытаешься изобрести, называется reduce, и она есть в Питоне, в третьем её правда надо импортировать перед использованием:

from functools import reduce
from operator import mul
print(reduce(mul, [5, 1, 1, 97]))

Напечатает 485. И можно задать начальное значение третьим аргументом функции reduce, чтобы она работала с пустыми массивами. Если начальное значение не задать, то она бросит исключение на пустом массиве.

 >>/8145/
Ты зря ему отвечаешь. Скорее всего он просто серун и никого никуда не посылал, а ты повёлся, ещё и простыню накатал. Я прочитал её всю, и могу сказать, что тебе вредно писать длинные посты. Лучше не трать время и отвлекись на что нибудь другое. А с борд действительно нужно уходить. Это дно на самом деле. Для продуктивных тематик форумы лучше всего. В том числе форумы в скрыто сетях. Да, там придётся регистрироваться, вероятно делать фейкомыло, но можно аккаунт хоть каждый месяц менять.
Модерация на тучке не правильная. Ладно если бы он тёр просто серунство. Но ведь он вводит цензуру на целые темы. Чем так плохи самоубийств треды на пример? Ах да, вспомнил, ведь они нарушают какой то там закон! При чём это закон отдельно взятой авторитарной страны, а не всего мира, как тоже цп. Нафиг сидеть на таких бордах. Для чего эта анонимность если нельзя обсуждать  подобные личные незаконные темы?
По поводу виндовса, какую ОС ты посоветуешь на слабый ПК?

 >>/8151/
Лолшто, ты знаешь, что существуют языки не только динамически типизированные, но и статически типизированные? Лайси как раз статически типизирован (хотя в далёком прошлом мои шизоидеи были в гибридной типизации).
Хочешь пустой массив, берёшь mem.vector (в будущем, когда доделаю Иколайси и напишу парочку библиотек) и он сразу пустой. Даже более, mem.vector это частный случай mem.tensor!N!D. mem.tensor1D, mem.tensor2D, mem.tensor3D, mem.tensor20D и т.д. И все они могут быть пустыми.
Я не против питона, это хороший ЯП и я планирую нескольким моим библиотекам (графический движок и ГУИ-библиотека), в будущем переписанных на Лайси, дать Python биндинг, чтоб можно было из питона их запускать (их скомпилированные версии).

 >>/8152/
Да ладно, я понимаю, что не обязательно отвечать на любые гневные сообщения. Но на этот раз решил "пошутить".

> какую ОС ты посоветуешь на слабый ПК?
Да гну/линукс подбери какой-нибудь. Когда я только начинал пользоваться линуксом, я перепробовал несколько дистрибутивов, пока не остановился на арчлинуксе. Если во всяких убунтах, дебианах и прочих мне предлагают установщик типа "Далее, далее, установить", то в арчлинуксе я почувствовал власть над компьютером и ОСью. А учитывая его вики и простоту установки, даже школьник справится с ним.
И ты можешь попробовать арчлинукс. Поставишь те пакеты, ту графическую оболочку, которая достаточно легковесна для твоего ПК. Думаю, система с xfce4 неплохо себя будет чувствовать и на 500 МБ ОЗУ со слабым процессором.

 >>/8153/
> установщик типа "Далее, далее, установить"
Покупаю!
Вот поэтому виндовс и господствует. Ну и ещё синдром утёнка, ага. Ставил бы я с самого начала линуксы наверное на них и сидел бы. А сейчас софт весь, привычки, прирос.

thumbnail of goblet.png
thumbnail of goblet.png
goblet png
(5.77 KB, 456x85)
thumbnail of mug.png
thumbnail of mug.png
mug png
(3.46 KB, 249x316)
Ох, ну и пасту я написал...

Добавил поддержку мултисравнения.
В Лайси можно сравнивать между собой сразу несколько значений. То есть a  1, а потом 5 > 3, а не наоборот.

Помню раньше я рвался писать Лайси-библиотеки, но компилятор совсем не был готов, я даже простые выражения не мог компилировать. Теперь ситуация получше, но библиотеки не очень хочется писать. Надеюсь, я не перегорю.
Задумал целую абстрагированную инфраструктуру по производству программ на Лайси.
В самом корне идёт Лайси как язык программирования, ниже (или выше, главное — дальше) идёт либлайси-библиотека. В эту библиотеку я собираюсь засунуть некоторые функции, такие как max, min, clamp, bigendian, littleendian, floor, round, ceil, другие и функции по управлению памятью, а так же по выводу ошибки после assert.
Затем идут библиотеки по работе с памятью и математикой. mem и math. mem включает в себя н-мерный тензор, в который можно аппендить, инсертить элементы или решейпить его дименшионы. Записывать и читать значения элементов по индексам, опционально флоатскому индексу, интерполируя значения по заданной функции; всякие ассоциативные массивы типа деревьев и хеш-таблицы и ещё чего-то. Возможно тут будут такие функции как startswith, endswith, split и всякие другие, функции для взаимодействия со строками и их разбиения, сращивания, сравнения. Но может быть это будет в liblaisi. У меня тут коды перемешались.
math это библиотека для всяких разных численных методов, но не математических движков. То есть синусы, косинусы, факториалы, умножения матриц, комплексных чисел, но не дифференцирование или интегрирование функций.

Ну вот, здешний движок символы съел

...
В ней есть свой вектор, но называется он vec!N!. Его суть в том, что размер статический а внутри структуры есть псевдонимы x,y,z,w или r,g,b,a. И это псевдонимы можно объединять для получения другого вектора. Например (vec4 a).xz это будет vec2 со значениями x и z. Наверное, задефайню частные случаи вектора vec!N!f, vec!N!l, vec!N!s, vec!N!u, vec!N!b для float, long, ssize, usize (или s32 и u32, хм), bool соответсвенно.
Особняком стоит библиотека dapa, которая по интерфейсу будет почти копиркой с pyparsing. Использовать для парсинга различных итерейблов (статических массивов, mem.vector и другие).
Потом библиотеки для ввода-вывода io, stdio, fs, repr. io это просто интерфейс для взаимодействия с потоками, подобный сишному FILE* + fread,fwrite,fopen и т.д. Только более гибкая для различных гипотетических ОС. Например, мне не нравится, что в линуксе нельзя в файловом названии ставить '/', а ведь это всего лишь 47. Самое обычное число. Ни 0, ни 1, ни 2, ни 255, ни 254. Поэтому я собираюсь сделать так, чтобы можно было вектор или массив файловых названий пересылать. Например ['/','home','cloudnite','myfile.txt'] в линуксе преобразуется в '/home/cloudnite/myfile.txt', а в другой ОС может подругому. В винде с обратным слешем, например, хоть это и не обязательно. Если пользователь плюётся от такого, то пусть пишет стандартный путь '/home/cloudnite/myfile.txt' и он будет работать только на линуксе, винде, макос (наверное) и ещё парочке топ-6 самых популярных ОС.
stdio это просто набор констант для stdin, stdout, stderr.
fs это для взаимодействия с файловой системой — создавать директории, удалять файлы, читать директории, а, может быть, даже, искать файлы по тегам. Не уверен, нужен ли такой функционал тут. Точнее нужен, но не уверен как его стандартизировать, ведь мало кто на практике имеет дело с ФС, поддерживающими теги на файлах.
repr это просто библиотека для форматирования и вывода в хуман-ридейбл вид всяких структур и прочих переменных. Думаю так, что надо будет каждому типу оверлоадить функцию _repr_. Если функция определена для типа, то инстантс (так как это темплейт) format/print/ещё чего-то вызовет его для получения строки.
Потом пойдут библиотеки для хранения, загрузки и записи растровых изображений, звуков, 3D-моделей. video, audio и другие названия я не придумал.
Затем идёт библиотека mesh (или другое название придумаю), которая хранит набор вертексов в N-мерном пространстве. Вертексы могут быть физическими, а могут быть управленческими для нурбсов и быть связаны линией, полигоном, объёмом (возможно). Для неё будет сделать ряд модулей для скелетной анимации, булевых операций, различных модификаторов как в блендере, всяких обработок, обсчётов и т.д.

Почему тут ограничение в 4096 символов? Было б 20000 хотя бы, было б нормально

И, наконец, вершина софта. Графический движок и ГУИ-библиотека. Я уже пишу их, правда на C++, так как Лайси ещё не готов. Графический движок заниматься преобразованием мешей, света, частиц и некоторых других вещей в растровое изображение на экране монитора или в буфер в памяти. Предназначен прежде всего под рейтрейсинг, но будет и неполноценный OpenGL-бекенд. Так же в нём должна быть поддержка анимаций. Анимации текстурно-цветовые и коллбечные. Получается, в архитектуре моего движка основа объекта это меш, а меш имеет в себе вертексы и аттрибуты для каждого вертекса. Аттрибуты это как бы разные свойства вертекса, которые интерполируются на полигоне. Например, если задать разные цвета вертексу, то они проинтерполируются и будет цветной полигон. А текстурные координаты соответственно дадут текстуру на полигоне. И текстуры + цвета должны быть не только цветовыми, но и всякие спекулары, металличность, степень отражения и преломелния и прочее. Правда с PBR я пока плохо знаком и даже не знаю, что вводить. Так вот, эти самые текстуры это на самом деле не картинки, а видео, а цвета это массивы цветов или однопиксельное видео. И анимировать это всё передавая переменную времени в функцию.
А коллбечная анимация это просто коллбек, который немного меняет матрицу или ещё что-то у объекта.
ГУИ-библиотека работает поверх графического движка и SDL2. Похожа на обычные ГУИ (как Qt, GTK+ и другие), но более гибкая. Если в Qt надо задавать стили, а в стилях всякие бордеры, шрифты, то тут немного подругому и более гибко. Примитивные виджеты — рект, суперэллипс, полигон и т.д. образуют более сложные такие как кнопка, слайдер, скроллбар, прогрессбар, список, графики, плоты и прочее.

К сожалению, до сих пор очень мало из этого реализовано. Недавно писал библиотеку io, вроде несложно для линукс-интерфейса. Но надо задуматься на Лайсишными модулями. То есть есть библиотеки, но у них могут быть подбиблиотеки. Например для video такие могут содержать кодек для чтения нового формата файлов. И надо, чтобы эта подбиблиотека могла во внешнюю библиотеку записать некоторые свои константы, чтобы главная библиотека смогла абстрагированно взаимодействовать с подбиблиотекой как и со всеми.
А вот чтобы написать библиотеку repr, мне надо ввести "..." в темплейты, чтоб передавать переменное кол-во аргументов.

 >>/8165/
> Почему тут ограничение в 4096 символов?
А хз. Не нашёл в настройках где меняется это число. Надо либо админа трясти, либо забить.

thumbnail of longs.png
thumbnail of longs.png
longs png
(7.74 KB, 299x173)
thumbnail of repring.png
thumbnail of repring.png
repring png
(35.05 KB, 735x453)
Недавно ввёл поддержку флоатов и их некоторые операторы.
Также я изменил императивную трансформацию типов на декларативную. Теперь у меня просто таблица с лямбда и просто функциями, которые вызываются для соответствующих типов. Надо будет что-то такое и для операторов сделать.

Всё. Пора заниматься серьёзными вещами и вводить репрезентацию как на втором пике.
Это будет сделать непросто. Во-первых, надо значительно переделать препроцессинговую часть, добавить @for, @if, @elif, @else, @end, сделать несколько препроссинговых функций, который возвращают True/False в зависимости от дефайнед ли или есть какая-нибудь функция.
Во-вторых, мне придётся частично сделать библиотеку mem, а для этого заново ввести alloc, vary и del.
В случае с repr, думаю, будет переопределяемая функция _repr_. Её можно будет определить для своего типа, получать указатель на переменную + "строковые аргументы", а возвращать mem.string.
Строковые аргументы это для форматирования. Например format("value: {x} : {02}",a,b) в первом случае даст 'x', а во-втором '02'. Таким образом можно указать _repr_ инта в первом случае выдать шестнадцатиричное число, а во втором с двумя лидирующими нулями (если число не больше).
И как раз функции hasoperator и operatorof будут давать возможность обращения к перегруженным функциям.
Я всё побаиваюсь, что LLVM или Я не сможет правильно оптимизировать возвращение или передачу больших структур, например mem.string. Всмысле не их самих, а и их контента. Ведь очевидно, что если я хочу передать mem.string в качестве аргумента или приравнять его переменной, то надо и контент скопировать, иначе можно было б просто указатель кинуть.

Кстати, недавно я осознал важность возможности переопределения таких операторов как +=, *=, %= и прочих. В C++ я жаловался, да зачем мне лишний раз переопределять, просто плюс используй, а потом приравняй. Но потом я задумался надо булевой геометрией и понял, что иногда надо применить булевую операцию на меш и сразу его изменить, а иногда нужно сохранить прошлые переменные. Например можно переопределить | и |= для условных структур мешей по разному и будет так: c = a | b; d |= e; В первом случае a и b сохранятся, а в c будет результат их юниона, а во втором случае контент d не сохранится, вместо этого юнион сразу применится на d.

 >>/8212/
У меня как у не соображающего есть такой вопрос. А можно ли твой язык учить первым? Или сначала паскаль и бэйсик? Ты закладываешь какие то возможности для обучения твоему языку? И с каких языков легче будет на него переходить?

 >>/8213/
> А можно ли твой язык учить первым?
Нет!
Ещё не мало времени пройдёт до момента, когда по Лайси появятся готовые учебные пособия. Даже когда я выпущу первую рабочую версию Иколайси+Лайси и запущу сайт, то там может будет только туториал для тех, кто уже программист.
Лучше изучить сначала C (можно в связке с ассемблером) для понимания памяти, C++ для понимания темплейтов и дженериков, а в конце питоном закинуться, чтобы почувствовать [i]удобность[/i]


Немного оффтопа: во-первых, расскажи подробней о том, как тебе пришла идея собственный язык запилить, и использовал ли ты материалы вроде “драконьей книги” или “crafting interpreters” при создании своего языка? Во-вторых, как ты прокачал логику? Посоветуй, что ли, самый лучший ресурс — желательно книгу, язык может быть как русский, так и английский, — который с нуля научит логически мыслить; неплохо бы, чтобы она могла обучить даже необучаемых кретинов гуманитариев вроде меня. Спасибо.


Часы повернулись на пирадиан    и делать Иколайси.
Пора полноценно вводить макросы.

@define macro as (A + B);
@define m1 as 5;

func () main {
	s32 a = macro;
};

...

thumbnail of ahk.png
thumbnail of ahk.png
ahk png
(38.99 KB, 522x591)
Ввёл фичу conditional compilation, но добавил в README ещё с десяток-двадцаток, потому что я о них вспомнил.

Но всё-равно препроцессинг пока не будет работать нормально. Мне надо сделать библиотеку dapa на Лайси или, хотя бы, её прототип на питоне, чтобы нормально парсить препроцессинг.
По-моему парсинг должен быть декларативным. Когда он императивен, то всё становится ужасно и плохо и отвратительно.
Я тут над тем, как сархитектурить dapa и пришёл к выводу, что он должен иметь инструменты не только для парсинга текста, но и разных бинарных форматов, файлов, протоколов. Например, часто можно увидеть формат файла, где в одном поле из нескольких байт написано количество следующих данных, а в поле следующим за тем будет хеш-функция от этих данных. И для этого надо придумать как реализовать подобные правила:
bytes(number=4,endian=little) + numbered(bytes(number=1),amount=NumberToken(relative - 1)) + checkhashsum(data=relative - 1), ну вы поняли. И какие-нибудь пресеты сделать, чтобы для человеческих языков в парсеры автоматически добавлялись вайтспейсы и всё такое.


В отличие от сижки с её #ifdef у меня заменено на @if expr, где может быть функция defined, возвращающая True, если задефайнено. Пока что только defined(X) введён, в дальнейшем в @if должны будут вычисляться и просто вычисляемые экспрешионы. А так как Лайси библиотеки предполагается распространять в виде исходных кодов, то в вычисляемых экспрешонах смогут быть всякие без-сайд-эффектные функции типа синуса, косинуса, разбиения concave на convex, распаковка байтовой строки...

thumbnail of bcd513d5c9292f5a1c1ee5551f3560a1.jpg
thumbnail of bcd513d5c9292f5a1c1ee5551f3560a1.jpg
bcd513d5c9... jpg
(22.47 KB, 720x1280)
 >>/1331/
> они будто в угол смотришь, а из него оси растут. 

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


Я решил убрать из стандарта слайсинг, потому что он немного неявный. Вместо них будет просто индексация. Да и не понятно, зачем нужен мне этот слайсинг. Вообще я планировал сделать это так, чтобы условно был какой-нибудь контейнер с ключами-словами и можно было сделать container['apple':'bozon'] и вышли б все элементы по индексам 'apple','aprecot','anime','bazingze','bogdan','bolvan','boris','bozon', но вообще вряд ли такое может найти где-то применение.
К тому же у меня изначально слайсоподобные операции, например u8[50] var; var[10:30]... это не то, что в других языках, как в питоне. У меня это по сути индексация в пределах [start; stop). Вот и тут теперь будет var[:] всё-равно, что var[0:lenof(var)].
Где слайсы могут быть логичными, так это в каких-нибудь readonly-строках/векторах. Например, парсим мы строку императивно, проверяем каждый раз string[i:].startswith(...). В случае питона строка и так не поддерживает item assignment, а в случае Лайси если сделать так, строка каждый раз будет копироваться начиная с индекса i до конца просто для небольшой проверки, а потом удаляться (в лучшем случае).
Так что придётся использовать отдельные функции, псевдонимы и делать типа string.slice(i,lenof(string)) и на выходе будет стринг, ссылающийся на тот же участок памяти, что и прошлый, то есть без копирования 20 КБ текста.
Кстати, насчёт псевдонимов. Недавно я ввёл их в struct. Это в общем замена "методам", к которым можно обращаться из переменной ну типа vector.normalize(). То есть взяли мы написали библиотеку math, а в ней есть темплейт normalize. И в структуру vec!N! прописываем псевдонимы:
normalize -> {self = normalize(self)};
normalized -> normalize(self);
length -> length(self);
что-то типа такого. Выглядит немного неряшливо, ещё и члены находятся в тех же скобках, что и псевдонимы, что может сбить с толку, но я не собираюсь вводить какие-нибудь классы с отдельными элементами и псевдонимами или ещё что.

 >>/8633/
Хорошо.
Насчёт полярных координат это надо будет обратиться в мою библиотеку ГУИ (когда разработаю). Я собираюсь туда добавить модуль математических plotов и там будут графики и декартовы, и планирую полярные, цилиндрические, сферические заделать.
Вот мой канал, где я иногда пощу видео своей библиотеки:
http://videonwcswhrqynk.onion/channel/pDVaxIx1i33hGFj2p1uSG5vz

Недавно начал разрабатывать markdown-язык для неё, чтобы ГУИ-страницы можно было описывать текстово и легко менять содержимое.
Но для её разработки ещё очень много надо сделать, в особенности возможность произвольно обрезать виджеты (для прогресс баров) и перемешивать цвета виджетов (для перемешивания стилей, как бы).

thumbnail of bvv.png
thumbnail of bvv.png
bvv png
(55.43 KB, 664x935)
Я начал вводить библиотеку liblaisi. Это библиотека, которая должна будет автоматически импортирована в любой Лайси-код. Библиотека, которая содержит функции max, min, clamp, abs, sign, в будущем функции popcount, startswith, endswith, функции для преобразования инта в байтовую строку по некоторому эндианлесс, функцию для вывода ошибки с assert и свою систему управления памятью в куче (сейчас используется либсишные malloc, realloc и free).
И вот я ввожу первые функции. На картинке видите abs, sign и clamp и выглядят они как обычные функции/темплейты. А для max и min я решил сделать поддержку переменного кол-ва аргументов, чтобы не приходилось писать конструкции max(max(max(max(a,b),c),d). Для этого я подрихтовал стандарт в плане ... и ввёл ему возможность указания характеристик. Принимаемые типы, минимальное кол-во и максимальное кол-во аргументов. Например, в max и min бессмысленно передавать 0 аргументов.

thumbnail of iq.png
thumbnail of iq.png
iq png
(102.57 KB, 301x302)
НАПОМИНАЮ

Этого языка программирования не существует за пределами фантазии опа. Для него нет компилятора, нет библиотек, нет ни одной рабочей программы на этом языке - и никогда не будет.

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

Все его посты либо написаны в будущем времени, "планируется", "предполагается", "будет", либо используются обтекаемые формулировочки типа "ввёл", "добавил в стандарт" вместо конкретного "реализовал".

Разговаривать с этим ебанатом имеет смысл только чтобы его троллить.

thumbnail of a.png
thumbnail of a.png
a png
(48.62 KB, 740x864)
thumbnail of b.png
thumbnail of b.png
b png
(39.6 KB, 507x524)
Добавил пару поддержек в компилер, в особенности перегрузку функций и посыл аргументов в перемешанном порядке. Но я особо не проверял и работоспособность очень частичная.
Знаете, перегрузка функций и темпелйты это такая фигня! Ведь когда мы хотим вызвать функцию в си-подобном языке, мы на самом деле вызываем адрес. А название функции это просто константная переменная, которая содержит адрес самой функции/процедуры. А когда мы хотим вызвать несуществующую функцию, то есть либо создать её динамически (темплейт) или найти её настоящее название используя мнимное + аргументы, это уже что-то совершенно иное.
Из-за этого часть кода Иколайси сейчас в хаосе.
Но перегрузка функций необходима, чтобы, например, работала функция print. Ведь она будет вызывать функцию repr, которая перегружена для некоторых переменных некоторых библиотек, если автор библиотеки захочет.

Пока с max и min из liblaisi не разобрался. Чтобы начать нормально парсить, мне надо перевести Иколайси с pyparsing на прототип библиотеки dapa на питоне. Он уже более-менее готов, некоторые правила работают, но я всё ещё раздумываю какая архитектура там должна быть. Просто моя библиотека парсинга будет немало отличаться от pyparsing.
Тогда я смогу парсить препроцессинг не императивно, а декларативно, а вместе с ним разобраться со всякими эллипсисами.

Ещё я немного порезал стандарт Лайси, чтобы побыстрее выпустить первую работоспособную версию Иколайси и не заниматься неважными фичами.
Но что самое страшное, мне придётся в первой же работспособной версии научиться исполнять Лайси-код во время компиляции. Ну типа 5 равно 5 или не равно. Это нужно для некоторых типов. Например, в библиотеке math будет тип vec!N!, а у него настроен @assert, что если N == 0 (размер равен нулю), то будет ошибка.



 >>/8669/
Слышь, это для тебя компилятора нет, одна нога тут, другая там, сердце слоями валяется, а череп по швам распадается.

thumbnail of first i was.png
thumbnail of first i was.png
first i was png
(8.1 KB, 684x47)
thumbnail of but then i'm.png
thumbnail of but then i'm.png
but then i'm png
(20.8 KB, 1078x65)
Вот отличие между pyparsing и моим прототипом dapa, написанном на питоне. Парсилась одна и та же строка.
Тут я не уверен, стоит ли как-то ангроупить токены или что вообще с ними делать.

thumbnail of aht.png
thumbnail of aht.png
aht png
(156.38 KB, 1823x869)
В общем, разобрался я с ангроупингом токенов и обработкой вайтспейсов.
Теперь Иколайси крутится не на пипарсинге, а на дапапи (прототип библиотеки dapa для Лайси). Но я очень много функционала сломал, так как надо исправить некоторые конфликты.

Зато препроцессирование теперь занимает не 300 негибких строк императивного парсинга, а 50 строк гибких правил пикрилейтед. (+ парочка функций)

Конечно, плохо, что Иколайси до сих пор не доделан. Уже Февраль... Ещё столько фич надо ввести, чтобы Лайси стал работоспособен...


thumbnail of 16108121593220.png
thumbnail of 16108121593220.png
16108121593220 png
(336.7 KB, 919x1024)
Нельзя просто взять и вместо тор нодов заюзать рандомные сервера? 
Вставил адреса серв с торрент сети.. тор не пускается.
Почему такая несправедливость вжизне?)

Начал вводить способность преобразования листданных в безымянную структуру типа struct {T[] ptr; numeric num;}.
Например, такой код:
struct {u8[] values; u16 num;} a = [2,6,4,3,7,89,12,54,12,6];

Это очень низкоуровневая операция, которая не должна будет использоваться условным программистом на Лайси без веской причины (например, нежелание юзать память в куче на микроконтроллере).
Эта фича будет применяться в библиотеки mem, когда к mem.vector или mem.tensor хотят += [листданные], то текстрелейтед будет передаваться в функцию в виде такой структуры. Суть структуры в том, что указатель values это указатель на константу, которая будет содержать в себе те самые листданные. Ну а num просто кол-во элементов. Пытаться заvaryть (реаллокить) этот указатель не стоит, иначе будет бобо.
Структура анонимная, потому что я не хочу вводить лишние кейворды или вообще темплейты в Лайси.
Я там реадмд.ми подправил, в общем мне осталось сделать всего лишь 18 фич и можно будет выпускать Laisi v0.8 и Icolaisi v1.0.
И потихоньку надо писать библиотеки mem, thread, math, io и repr (великая пятёрка библиотек).
Кстати, вспомнил, что и для ввода assert нужна эта фича с листданными. В liblaisi нужна будет функция print_assert, которая примет данную структуру, а в ней строка, которую надо вывести в stdout/stderr. Немного поwetчу в liblaisi, чтобы не было зависимости от mem, liblaisi и так собирается быть зависимым от thread, чтобы лочить мьютексы, если будут вводить свою систему хип-мемори.

thumbnail of abc.png
thumbnail of abc.png
abc png
(5.47 KB, 1200x800)
Вчера делал дюпинг. Толком не проверил, для дебаггинга языка надо сделать библиотеку repr.

Суть токова, я понял, что нельзя разрешать операции между мультивекторами разной размерности:
abc[:] = a[:][:] + b[:][:], потому что будут проблемы.
Зато можно одинаковой размерности:
abc[:][:] = a[:][:] + b[:][:]
Но есть проблема, когда мы выбираем, старт, стоп и шаги:
abc[0:5] = a[0:3:2] + b[0:1]
Левый элемент говорит, что хочет провести операцию на пятью элементами и заполнить ими массив. Но a выдаёт только по индексам 0 и 2, а b по индексу 0. В таком случае надо просто сдюпать, то есть будет a[0],a[2],a[0],a[2],a[0] и b[0],b[0],b[0],b[0],b[0]. Но там всё довольно сложно, я сделал ремеиндер для счётчика и будет a[0],a[2],a[1],a[0],a[2]. В любом случае, дюпинг пока не очень стандартизирован и его не следует использовать с шагами.
Зато удобно, если хочешь много элементов умножить на число: a[:] *= [number][:].
В итоге мне надо ещё штук 15 фич ввести, чтобы выпустить пререлиз Иколайси v1.0.

Я ещё придумал как реализовать модульность библиотек. Есть @import, а надо будет сделать что-то типа @importnames или как ещё назвать, эта директива препроцессора кроме импортирования будет возвращать лист имён библиотек. Таким образом, можно будет импортировать все библиотеки из некоторой директории, а потом прочекать их константы и спрепроцессить в основную библиотеку. В константах могут быть ID модулей, коллбеки всякие, структуры.


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

Конкретно в Graph2D надо будет добавить антиалиазинг, отображение имён осей, сделать возможность неортонормированности, легенду самого графика, значения нотчей осей, а также элементы управления самого графика, чтобы масштабировать его, транслейтить, гетать точку курсора, етц.
Кроме Graph2D я планирую добавить Graph3D — для отображения функций двух и трёх аргументов.
А также их модификации — полярный, сферический, цилиндрический графики, что-то с вокселями попробовать.
А кроме графиков и гистограммы самые разнообразные нужны. Очень важны диаграммы (где элементы соединены линиями и важно, чтобы линии были кликабельными).


 >>/9444/
Выглядит как старьё примитивного древенего программинга. Не уверен в хорошести данного ПО.
pyparsing из питона мне понравился гораздо больше, всё лакончино, логично, операторы норм перегружены. Но не хватало функционала, я и сделал dapapy:прототип Laisi dapa.
А ещё регеэксы это фуватая техника, по моему-.

Да и вообще, почти всё ПО (особенно графическое, CLI и библиотечное) отвратительно! Как люди им пользуются? Даже блендер, для меня mid-tier из мира ПО благодаря огромному функционалу и неплохому ГУИ, но всё-равно не дотягивает до high-tier. А есть ли вообще high-tier? Ну если ток какие-нибудь маленькие программки или библиотеки, выполняющие специфичные функции.
Также межпроцессорное взаимодействие между графическими программами плохое. Я недавно придумал такую крутую фичу — чтобы у запущенных программ были каналы, подобные пайпу, но их много и чтобы можно было графически перетягивать ниточки (например) между окнами и виндов-менеджер или какой-нибудь ещё менеджер отправлял в процессы (или сокеты, которые открыли эти процессы) сигнал, что открыт такой "пайп". И программы бы обменивались данными.
Например, открыл видео mpv, а там субтитры по-английски. А у тебя как раз есть переводчик, оттягиваешь ниточку субтитр-вкладки окна mpv и перетягиваешь в переводчику, он переводит и отправляет обратно. shared memory или даже shared ресурсы. Данные синхронизируются и получаешь переведённый текст. Аналогично можно было бы меши генерировать в блендере, программируя в своей любимой ИДЕ на любом ЯП.

Только заметил, что введя dapapy вместо pyparsing и убрав императивщину в препроцессинге я потерял фичу с macro args дефолт валуес, и вообще нельзя теперь в макросы по-имённо аргументы передавать.
Теперь мне надо заново эту фичу вводить :,(((((9
Зато недавно я осознал, что надо иметь возможность обращения к аргументам макросов, которые были им переданы. Чтобы, например, вместо:
v->elms = v->elms vary typeof(V.elms[0])[v->num + 1];
написать простое:
v->elms = v->elms vary V.T[v->num + 1];
А для этого придётся перекорёжить добрую часть кода Иколайси.
И именно из-за верхнего я всё никак не могу дописать vector для библиотеки mem. Ну и ещё из-за пары ошибок. А из mem базируется io, а из io repr, а из repr дебаггинг можно заделать.

thumbnail of out.webm
thumbnail of out.webm
out webm
(2.22 MB, 1200x800 vp9)
Кстати, ещё поделал Graph2D... Оказывается, всё гораздо сложнее. Хотел сделать валуы нотчей (чёрточек на осях) по середине, но они закрывают сам график, перенёс на бока. А ещё их кол-во надо учитывать для разной плотности нотчей, чтобы текст не перекрывался.
Зато я ввёл анимацию функций. Помню когда-то хотел посмотреть, что там с первообразными и производными у функций и их касательными и всем таким, но не смог на матплотлиб сделать это. Теперь могу не на матплотлиб.

thumbnail of out.webm
thumbnail of out.webm
out webm
(128.86 KB, 1350x850 vp9)
Какой же сипипи кака!
Накидал тут в свою библиотеке ГУИ прототип виджета TabBox (которая на C++ ещё) для одной задачи. А чтобы написать эту задачу, мне приходится писать десятки строк бойлерблейта, когда тот же код можно было написать на Лайси в пару строк.
Пожалуй, использование фуватых ЯП это один из важнейших деморализаторов в программировании. C++, C, Java!, я не говорю про всякие паскали, бейзики или ады в военных технологиях.
Вот питон это хороший ЯП с хорошей инфраструктурой. Но он слишком скриптовый для меня, не подходит для программирования общего назначения.
А некоторые люди ещё кукарекают, мол неважно какой язык, мол все алгоритмы одинаковые, пиши сиди на брейнфаке. Или про софт говорят, что надо использовать всё что можно в своих задачах. В блендере вертексы перетягивать, в компасе3д твёрдые материи осваивать, в гимпе шумы применять, в крите кисточкой рисовать, в юните игры производить, а для написания нейросетей учить юпитер. А потом появляется веб.

thumbnail of vector.png
thumbnail of vector.png
vector png
(65.3 KB, 711x968)
Писать Иколайси сложно, у меня возникают баги то тут, то там, а я затыкаю их костылями.
Пока не развивал сам Иколайси в -> Иколайси[Лайси], но делаю библиотеку mem.
А в ней планирую очень простой сабмодуль vector, состоящий всего из одного дженерика и штук 15 темплейтов. Еле исправил баги, из-за которых темплейты не парсились. Представляете, в правиле парсинга nestedanyth было записано:
nestedanyth = dapa.forward()

nestedanyth  не должна быть, ведь эти символы используются в операторах сравнения. Во-вторых, я забыл, что dapapy.anything после парсинга не включает в себя токен, который заканчивает dapapy.anything, соответсвенно надо было в каждое миниправило добавить + dplit['rXbracket'].
Кстати, насчёт парсинга, я недавно понял, а ведь же современные компиляторы выдают сразу 10, 20, 30 и больше ошибок насчёт кода. Чтобы это сделать, в будущем надо будет перевести парсинг безпроцессинговой части Лайси на парсинг не символов (чарактеров), а токенов. Тогда можно будет сделать отдельные правила для написания инструкций (которые оканчиваются на ;) и потом только проверять правильность их написания, чтобы писать, какие переменные недекларированы и всё такое.

Ещё я подумал о том, что в библиотеку mem надо будет сделать такую хорошую структуру, ух. Я её незвание не придумал, но может будет называться linked. Суть её в том, что есть объект в куче и на него могут ссылаться N указателей и ведётся их учёт. Если удалить один из указателей, то он просто вычтется из структуры учёта, а когда указателей останется 0, то и сам объект удалится.
Что-то подобное linked используется у меня в графическом движке и ГУИ-библиотеке, там один и тот же виджет/меш может отрисовываться в разных местах благодаря этому. А хорошо бы, чтоб можно было не только меш перелинковывать, но и материалы, текстуры, анимации и всё такое.
Ещё подумываю о том, чтобы в библиотеке mem была такая структура как chunk. Это элемент некоторой размерности, некоторого измерения, который может иметь смежные чанки и у каждого одинаковое кол-во внутренних элементов. Вот майнкрафтовские чанки подходят под такой критерий или ещё какие. Но я не уверен в полезности такого отдельного абстрактного элемента, так как, а что если надо сделать чанки шестиугольными или вообще бесформенными и смежность будет определяться по-другому, незнаю, можно ли это нормально реализовать. И что если будет гораздо удобнее использовать обычные октодеревья или N-деревья, это, конечно же, совершенно другая структура данных, но...
А в библиотеку math надо будет сделать сабмодуль image для компьютерного зрения и обработки изображений и других тензоров N-ной размерности. Ну типа фильтр применить, заресмплить, задетектить края или углы, оптический поток и всё такое.

Сделал кое-чего в Иколайси, но выход v0.8 будет ещё не скоро, надо ввести аж 16 фич!
Я понял то, что нужен ещё один слой обработки кода. Процессирование парсенного, чтобы в нём генерировать функции из темплейтов и всего такого, а то из байткода очень костыльно получается!
Ещё я раздумывал над библиотеками, в частности на ГУИ и загрузкой картинок, аудио и другого.
Из загрузок картинок и аудио я понял, что они должны идти не разными либами, а одной. Ведь что картинка, что аудио это по сути тензор. Картинка это 2D-тензор 1-4 канальных элементов (Можно представит как 3D-тензор). Воксельная 3D-модель это вообще 4D-тензор и каналов там может быть больше чем 4 цвета (металличность, спекулярность и что там ещё). При этом они все растровые. Но главное, что объединение позволит объеденить загрузку ауидо и видео из видеофайла, например, mkv. Были бы там либы audio и video, так пришлось бы audio.LoadFile(path) и video.LoadFile(path), а обе эти либы обращались бы к другой либе для загрузки такого медиаконтейнера и файл читался бы 2 раза.
Хотя есть же ещё субтитры...

А из ГУИ я понял то, что функции для лейаута не дожны быть исключительно частью ГУИ, ведь в лейауты надо вставлять и другие объекты. Например, полочки, предметы на полочках, сектора круга, элементы прикреплённые к октодеревьям (ахах).
Если вы не поняли, то лейаут это простая система, которая выравнивает положение элементов, имеющих размеры, по некоторым правилам (паддинг, например). Вот горизонтальный лейаут может превратить ███ в █ █ ██ ППП ███. В первом варианте всё рисовалось начиная с (0,0), а во втором варианте нарисовалось 5 элементов шириной : 1 1 2 3 3 через паддинг 1.
Да и вообще, всё это смахивает на ECS, виджеты это вроде бы хорошо, всё скачет и кликает, бликает и мерцает, но что если я хочу ввести это не в ГУИ, а в произвольные объекты? Например, модельку кита.
Тут и получается, что надо разделять на ECS. Отдельные сущности имеют разные компоненты и их обработкой занимаются системой. В данном случае расположением предметов может заниматься лейаутинг ГУИ.
А вообще, что-то типа ECS можно было реализовать что в Лайси (в будущем), что в C, если создать внутреннюю динамическую типизацию как в питоне. В питоне же есть объекты, а у объектов есть аттрибуты. И питон работает на интерпретаторе, написанном на C. Для ECS можно сделать более хардкодно и создать просто структуру с хешмапами. И вот берём мы ассет. Ассет это сериализованная (переведённая в байты) сущность, в ней есть хешмапа с сериализованными данными. Тип можно не указывать, так как система сама поймёт, что за тип она использует. Загружаем ассет и программный объект, один компонент — 3D-моделька для графического движка, 3D-моделька-коллайдер для физического движка, несколько вариантов 3D-моделек для LOD (level of detail)-движка, чтоб не покоробило некрасиво, всякие игровые данные (ID, хп, XП, мп, инвентарь) и для каждого типа данных своя система модифицирует и изменяет компоненты.
Поэтому и надо движки разделять. Даже если это движок лейаутинга.

Кстати, я решил устроить ЮНИТ-ТЕСТЫ! Только единственный юнит это Иколайси, а тесты в директории tests. А то я так часто изрезаю Иколайси, что всё ломается. Надо проверять тестингом. Сейчас я заново ввожу импорт (который сломался после dapapy) и тесты буксуются ет.

thumbnail of out.webm
thumbnail of out.webm
out webm
(352.31 KB, 1380x880 vp9)
Вот, видите как чудно лейауты в ГУИ себя ведут? Я сказал библиотеке, пусть правый виджет (это бокс с vert layout) находится на N пикселей от правого края родителя к правому краю виджета и теперь когда ввожу в лайнэдит (я его тока сегодня начал делать) текст, он выходит, но виджет меня продолжает слушаться. Они всегда слушаются, пока у них достаточно пространства.
Для самого лайнэдита/текстэдита надо будет устроить рендеринг во внутреннюю зону, но для этого мне надо ввести в свой графический движок рендеринг в текстуры в большой глубине рекурсии. А то недавно я попытался отрендерить в текстуру внутри другой рендеримой текстуры и понял, у меня же опенгловские фреймбуфферы не FILO! Вместо этого в конце просто берётся нулевой фреймбуффер, который является оконным. Надо будет переделать кое-что...

Видео это я решил в кои-то веки ГУИшную программу себе написать (хоть Лайси пока и не готов, но переписывать код легче, чем придумывать). А вообще, давно пора переходить на самописное графическое ПО.
Вот я использую арчлинукс и у меня с почти каждым обновлением что-то ломается! Это дистрибутив для людей, которые готовы в голове держать все ченджлоги и пакеты. А я так не хочу, я хочу чтобы ОСью можно было легко и удобно пользоваться.
По-моему хорошее DE+оконная система это виджет, внутри которого другие виджеты. В идеале вообще, чтоб был изначальный виджет моей DE на моей ГУИ-библиотеке, описанный моим ГУИ-ML и он мог запускать другие такие же виджеты, у которых отдельно подвязан код с коллбеками (когда кнопку жму) и отдельными потоками (когда надо что-то высчитывать отдельно от пользователя). В межпроцессорное взаимодействие надо заделать через сокеты (или что-то другое) и дополнительные минивиджеты, с помощью которых направлять потоки данных между программами. Например, хочу я описать 3D-модельку питонокодом и автоматические подгружать её в блендер. Надо чтобы был виджет от эмулятора терминала, позволяющий читать из stdout и виджет внутри блендера (плагином реализовать?) к мешу. Соединяешь графической ниточкой виджеты и происходит обмен данными. Изменяю питоно-код, перезапускаю и меняются вертексы на модельке. Прекрасно же!
Но в любом случае придётся хандлить уже готовые программы, использующие иксы и SDL2. Как это сделать кроме подмены библиотеки я не знаю. Можно взять линковщик, посмотреть, а не запускает ли бинарник икслиб и если да, то подменить на свой эмулятор икслиб, который соеденится с сервером моей оконной системы или что-то такое.

 >>/9448/
> Выглядит как старьё примитивного древенего программинга. Не уверен в хорошести данного ПО.

Наоборот. lex и yacc - это древние UNIX утилиты, которые как раз предназначены для создания генераторов лексического и синтаксического анализа.
flex и bison - их реализации от GNU.
Лучше ПО в хорошести нет.
На выходе flex код на C.
> pyparsing из питона мне понравился гораздо больше, всё лакончино, логично, операторы норм перегружены.

Он вроде императивный. Мне не понравилось.
> А ещё регеэксы это фуватая техника, по моему-.

Как раз декларативные регексы - это годно.


Очень хороший тред. Правда, нет времени читать.
Если правильно помню, парсер на pyparsing парсит код лайси и переводит его в байт-код llvm.
Почему бы код не переводить в код С? А потом компилировать произвольным компилятором?

 >>/9967/
> для создания генераторов лексического и синтаксического анализа
Не совсем уверен в нужности создания именно генераторов. Почему бы не образовывать правила в рантайме и парсить исходя из них?
Да и вообще, смотрел я как-то туториалы по этим флексам или бизонам, и не совсем понял, что это вообще такое. Это что-то странное и необъяснимое. Можно долго гадать над тем как мыслили люди в древности, какие у них были привычки, культура, менталитет, отношения между друг-другом. То есть флекс и бизон, они просто берут некоторый код, C-код и вставляют его в другой, генерируемый собой си-код? То есть это такой специализированный прерпоцессор. Мне так не нравится.

> Он вроде императивный
Наоборот же, пипарсинг и есть декларативный насколько можно. А вот я сейчас рядом открыл книгу, где рассказывается про флекс и бизон и вижу всякие императивный команды, ифы, вайлы, не понимаю, зачем всё это. Да и вообще, генерировать C и C++, для последующей их компиляции это как-то не очень. По-моему эти языки устарели, они только и годятся, что небольшие программки под ардуину писать, блинком помигать или по ESP8266 приконнектиться.

> декларативные регексы - это годно
Да, они декларативные, но меня не устраивает парочка фактов. Во-первых, в них вместо чётких и ясных команд используются одинкие символы: звёздочка, точка и что там ещё. Во-вторых, там есть выражения типа 0-9, a-z, но откуда программа знает, что после условного нуля идёт единица? А если я захочу, чтобы после него шла буква a? Не предусмотрели. Ладно, если бы это были отдельный константы, но константы надо использовать во время программирования, а не во время написания регекспов, ведь они это строки.
Где регекспы полезны, так это во всякие высокоуровневых аппликациях. Например, при поиске названия файла в файловом менеджере. Мне было бы очень хорошо, если бы я в pcmanfm мог ввести в поиск image*ko*.png, чтобы, например, найти все .png файлы, начинающиеся на image и внутри них есть ko (koshka, kot). А в программировании не надо.

> Если правильно помню, парсер на pyparsing парсит код лайси и переводит его в байт-код llvm. 
Твоя инфа устарела, теперь я использую не pyparsing, а самописный dapapy (на питоне), прототип библиотеки dapa (для Лайси). Да, в конце он переводит в LLVM, но перед этим в лайси-байткод (для которого пока нет формата, только программное представление).
pyparsing не смог справиться с препроцессированием, а в dapapy есть больше возможностей, но и управляться с ним сложнее. Например, в dapapy опцинально наличие вайтспейсов. Вайтспейсы это токены, которые мусор и они просто пропускаются. То есть, когда человек пишет на языках программирования, разметки, он пишет много мусора — ' ' '\n' '\t' и всё такое. И вот вайтспейсы (в отличие, например, от "литералов", схожих по свойствам с ними) наследуются другими токенами, дочерними в правиле order (переопределяется опертором +). А для препроцессинга я специально в некоторых местах указал, что вайтспейсы не должны наследоваться. Для чего это нужно не помню, но теперь препроцессинг парсится декларативно, а не императивно.
И вообще, я ненавиажу императивно парсить что-либо. Помню, когда только начинал писать Icolaisi на Си, я как начал через циклы что-то там перебирать и офигел с этого. Потом узнал о пипарсинг и понеслось. Но ведь я продолжаю императивно парсить, в некоторых проектах, например, файлы ресурсов. В данном случае эти файлы это просто набор из всяких разных полей и включает в себя дополнительно картинки, аудио, 3D-модельки и другие файлы. И вот делаю я это на C++ и там мне приходится парсить императивно. А ведь на Лайси с dapa можно было бы написать что-то типа resources = int32 + numbered(token=-1,image) + int32 + numbered(token=-1,audio), ну ты понял и оно б само всё спарсилось, а дополниительные функции загрузили бы картинки, 3D-модельки, аудио в vp (void* в Лайси). И всё без вайтспейсов, так как формат бинарный.
...

 >>/9967/
...
> Почему бы код не переводить в код С? А потом компилировать произвольным компилятором?
Зачем мне компилировать лайси-байткод или даже просто отпарсенный код в C, то есть генерировать заново дополнительный код, чтобы потом его ещё какой-то неизвестный компилятор пропарсил, потом скомпилировал, а потом они ещё стандартный стандарт C и C++ изменят и придётся правила трансляции кода изменять, это всё ужасно, это отвратительно. Зачем вообще нужно компилировать в другой ЯП? Взял LLVM и скомпилировал в него, а его скомпилировать llvm-as (лучше библиотекой, а не утилитой) в любую доступную архитектуру.
Вообще, хорошо бы компилировать не llvm в машинный код, а сразу лайси-байткод в машинный код, потому что Лайси более широкий, он не зацикливается на интах, он оперирует целыми массивами, я, может, ещё много месяцев или лет буду разрабатывать по каким правилам векторы умножаются с матрицами, с каким шагом и направлением, где можно распараллелить, а где нельзя, компилировать лайси-байткод в SPIRV или код видеокарты нвидии, радеона, интела. Компилировать функциональные участки в Verilog, чтобы прямо в ПЛИСе всё за один такт считалось!

У меня в Лайси и так существует препроцессинг, то есть текстовый код генерируется текстовым кодом. А это не очень хорошая тактика, но я так просишился, что уже не представляю язык, близкий к машинам и чтобы без препроцессинга, потому что рано или поздно придётся писать макросы. У меня темплейты через @for генерируются (или будут генерироваться, не помню, работает сейчас или нет), а под темплейты генерируются функции, использующие дженерики. Дженерики тоже могут через @for генерировать типы.
Ох, как вспомню тот же GLSL. То есть это си-подобный язык и его должен компилировать ДРАЙВЕР или библиотека, использующая ДРАЙВЕР. Хорошо, хоть не видеокарту заставили GLSL парсить и компилировать. Представьте, придут дядьки к инженерам, вот пишите на верилоге парсер GLSL, это нужно, чтобы поддерживать легаси GLSL демосценщиков их 1920-х годов, когда они ещё радиолампами токи стреляли. А напишите-ка ещё на верилоге таблицу юникод-глифов, чтобы шрифты прямо с процессора запускать. А давайте сделаем мониторы с новым VGA-режимом, но чтобы он был текстовый. Шрифт загружается из напылённого ROM, нет пусть ROM ещё будет и аналоговым для сглаживания, вот загружаем юникод-буквы (кроме букв враждебных стран) из одной аналоговой таблицы, ищем для неё глиф одного из шрифтов из другой аналоговой таблицы и рисуем его на мониторьчике. Будет сначала BIOS-приветствие из букв, а потом загрузка виндовса. Чтобы нарисовать виндовс, надо уменьшить юникод-глифы до размеров пикселя и поставить один из 360 HSV-цветов наибольшей яркости и насыщенности. А чтобы менять яркость, выбираем глиф с меньшим размером. Для белого будет O, а для чёрного .
Ахахахаха

Может быть, потом на всё отвечу.
 >>/9968/
> То есть флекс и бизон, они просто берут некоторый код, C-код и вставляют его в другой, генерируемый собой си-код? То есть это такой специализированный прерпоцессор.

Я не уверен, что ты правильно понял, но примерно так работает "компилятор компиляторов".
> Наоборот же, пипарсинг и есть декларативный насколько можно.

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

Так если находится определенный регекс, выполняется код. Декларативность в регексе
> По-моему эти языки устарели

Если они работают, то не устарели. Язык скорее про удобство использования.

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

Так в этом и суть. Регекс - шаблон для строк.
> Во-вторых, там есть выражения типа 0-9, a-z, но откуда программа знает, что после условного нуля идёт единица?

Это договоренность. Она работает только в квадратных скобках.
> А если я захочу, чтобы после него шла буква a?

Ты это прямо пишешь. [0a] вместо этого символа в строчке будет стоять либо 0 либо a.
> Мне было бы очень хорошо, если бы я в pcmanfm мог ввести в поиск image*ko*.png

Это не регулярное выражение. Это шаблон поиска или glob pattern.
Аналогичное регулярное выражение image.*ko.*\.png
> А в программировании не надо.

Ты не любишь декларативность.

 >>/9969/
> ещё стандартный стандарт C и C++ изменят и придётся правила трансляции кода изменять

Байткод llvm стандартнее C?
Будет цепочка
лайси -> байткод лайси -> код на C -> clang -> байткод llvm -> машинный код
вместо
лайси -> байткод лайси -> байткод llvm -> машинный код

Так ты будешь не привязан к компилятору от
> Its contributors include Apple, Microsoft, Google, ARM, Sony, Intel and Advanced Micro Devices (AMD).

Плохие компании.
Можно будет переводить лайси в машинный код с помощью gcc.

Тебе бы матчасть по парсингу подучить, всё-таки.

Дошли руки до обновленьца. SSS. Start. Stop. Step. Это языковая конструкция, позволяющая взаимодействовать с элементами в индексируемой переменной, а также просто между числами, задавая начало, конец и шаг, так что получается N в [start,stop), при этом каждый N = start + I*step.
Например:
s32[50] data = (60:240:3);
или
for a in (5:12:1) {}
Очень сложно её вводить. Она это не совсем экспрессион, в экспрешоне 1-2 операнда и оператор, а тут 2-3 операнда и между ними чары ":".
Конструкция всё ещё не готова, не учтён реверс, учтены только инты и не работает заполнение произвольных переменных по индексам. Да и в принципе код получился ужасным. Я не могу использовать питон для таких огромных программ.
Ещё у меня непонятка, а почему можно только линейное увеличение? Надо чтобы и функционально можно было задать. Что-то типа (0:100:myfunc), а в func (usize,[usize i]) myfunc будет return i*2, например.

Осталось ещё очень много фич: for для данных, оператор in, dict-дата, темплейтированные лист- и дикт-даты, БИТ-ИНДЕКЫ! для копирования и взаимодействия с битами. Не факт что в этом году доведу до конца.

thumbnail of abc.png
thumbnail of abc.png
abc png
(71.87 KB, 1400x900)
Пикрилейтед — софт, которого не хватает в блендаке.
К сожалению, он написан не на Laisi, так как Иколайси не готов ет.

Кстати, недавно Пасха была, ну что, христиане, поели крашеные яички и куличи? Мне нравится Пасха, это прибилизительно единственный день в году, когда я ем яйца итселф. Но так будет не всегда и поскорее бы. Не забывайте сдабривать варёные яйца кетчупом, чтобы почтить память тех цыплят, которые оказались самцами.

Насчёт Лайси, то пора бы уже библиотеками заняться. У меня есть графический движок на C++ и с точки зрения готовности Иколайси, его не очень сложно переписать на Лайси, так как дженериков и темплейтов там почти не должно быть. Проблема в библиотеке mem, так как мой графический движок потребует mem.vector и mem.HashTable

На самом деле я в последнее время не занимался Иколайси, много проектов и работы. Зато я придумал крутую вещь!
Поделал что-то там с битовыми индексами, ещё зачатки LDI-либс в код добавил (только я ещё не запушил на гитлаб)
Битовые индексы нужны не только, чтобы взаимодействовать с отдельными битами переменной (которые в лайси являются двоичными), но и для копирования памяти. А то приравнивание по идее должно иметь возможность перегрузки (чтобы копировать mem.vector, например) и без битовых индексов или сторонних функций (memcpy) не обойтись, когда надо именно скопировать (зачем?).

Насчёт той крутой вещи, так это умные линкинг указатели! (Не путать со смартпоинтерами сипипи).
Их суть в том, что это как бы много указателей, которые ссылаются на один объект, но если совершить del smartlinkingptr, то del над целевым объектом произойдёт, только если никакой другой смартптрлинкинг не ссылается на него.
То есть, например, у нас есть графический движок и мы хотим запилить инстансинг. Инстансинг разных вещей. Один меш на 2 объекта, один набор коллбеков на 2 объекта, один материал на 3 объекта, одна ротационная матрица на 10 объектов. Тут и нужны такие указатели.
То есть, например есть функция func (slp,[...]) CreateMesh, мы её вызываем и получаем смартуказатель типа slp. Потом берём структуру "объекта" (основная графическая единица графического движока) и приравнием его slp name тот, что мы получили. Во время приравния вызывается функция перегрузки приравнивания и в их общий mem.vector указателей на самих себя увеличивается на единицу. При каждом del он будет уменьшаться, а если станет ноль, то совершится del над полем ptr, который содержит указатель на сам mesh.

Есть ещё одна ситуация, где такая структура потенциально полезная. Бывает, надо выделить какую-то переменную на стеке и её указатель приравнять в другую структуру, которая при удалении себя попробует удалить и эту переменную. А так как она на стеке, то произойдёт сегфолт или мемори коррупшион. С помощью такого смартпоинтера (но только если и целевая структура содержит в себе смартпоинтер) данные на стеке не удалятся, можно будет потом вручную очистить указатель и удалить безболезненно.

Для этого надо будет ещё ввести поддержку перегрузки оператор -> (reference)

Готовлю обновление до конца лета после которого Иколайси начнёт поддерживать непубличный Laisi v0.8. Я решил, что проекты лучше делать последовательно, а не параллельно, а то плохо будет.
На одном из моих трекдов на мейлаче один анон уже пожаловался, что я настоящий мейлачер, ничего не довожу до конца. Я дико извиняюсь, мне надо ещё дописать некоторый код. Я не мейлачер.

 >>/10098/
BlenderCAM используй, поехавший.


thumbnail of abc.png
thumbnail of abc.png
abc png
(115.79 KB, 1400x900)
У меня был канал на DarkVideo, загружал видео со своими ГУИ-софтами. Сейчас зашёл, а там ничего нет http://videonwcswhrqynk.onion/channel/videos/pDVaxIx1i33hGFj2p1uSG5vz
Мочепараша.
То есть глупые видео про наркотики и закладки у них повсюду, а мои видео они потеряли/удалили? Или кто-то взломал аккаунт... Или они удаляются автоматически...
Вот что означает использовать чужие сервисы. Если на каком-нибудь пейспуке или вютубчике запостить запрещёнку или нежелательное мнение, то хотя бы уведомят? Мда...

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

Я решил, что архитектура графического движка неплохая такая:
Есть объект, у него есть ID, трансформация и ObjectData. ObjectData это shared_ptr (на C++ же пишу), и вообще, много чего там shared_ptr ради инстансинга. А ObjectData содержит детей children, меши, потенциально растровые данные, и материалы.
Я в общем копирую с блендера. Суть в том, что получаемые вертекс-данные это преобразованные "шейдером" инпут вертекс-данные. Как геометрические ноды блендера. То есть, например, взяли меш кубика и меш шариков. Этим шейдером/преобразователем сделали так, что каждрый вертекс куба соответсвует локации шарика, а сам кубик пропадает. И можно делать красивые эффекты в рантайме! А ещё автоматический LOD и просто модификаторы типа бевела или миррора.
Кроме мешей я планировал, что движок будет отображать и растровые данные. Картинки в виде спрайтов (в т. ч. объёмных), воксели, вот это всё. Но пока ими не занимался.
А насчёт материалов, тоже надо скопировать с блендера. Там же отображением материала занимаются ноды, так тут это будут шейдеры/преобразователи. В идеале, чтобы они писались на Laisi (в частности), а компилятор сам преобразовывал их в GLSL или вулканов SPIRV или ещё что. Но это на далёкое будущее.

 >>/11791/
> Вот что означает использовать чужие сервисы
Вот что означает не хранить исходники самостоятельно. Более того скажу, на разных физических носителях.


thumbnail of codes.png
thumbnail of codes.png
codes png
(256.09 KB, 1039x799)
thumbnail of plyazh Beach.png
thumbnail of plyazh Beach.png
plyazh Beach png
(1 MB, 1400x900)
thumbnail of blc.mp4
thumbnail of blc.mp4
blc mp4
(4.22 MB, 1420x920 h264)
thumbnail of uch.jpg
thumbnail of uch.jpg
uch jpg
(73.49 KB, 1000x807)
А может ну его. Зачем мне в инфраструктуре Лайси слой байткода? Я тут подумал, что он не нужен, лучше сразу компилировать Лайси в LLVM IR. Ведь если и подумать, то лайси-байткод почти полностью был подобен LLVM IR, там разве что тензоные инструкции были, ещё и с указателями.
Кстати, недавно у меня снова чуть не случился приступ высокоуровнезации стандарта Лайси. Я подумал, что обычные поинтеры это так боринг! Каждый раз переудалять их, следить за количеством. С шейред поинтерами всё гораздо легче. Вот тот же питон по сути и состоит из шейдер поинтер PyDecref PyIncref или как там в CPython. Конечно, я планировал, что shared ptr будет в библиотеке mem. Но тогда пользователю придётся всё время писать mem.shr или shr. А если сделать суффикс типа подобные звёздочке? Например &. structname& — shr. Но это же тогда в глобальных переменных придётся где-то выделять отдельную структуру под них... Не то чтобы это сложно или плохо. Просто если я буду вводить шейред поинтеры прямо в Лайси, то почему не ввести, например, вектор или ассоциативный массив? Всё-равно у меня стандартизировано обращение к куче через alloc, vary, del. Ну а там и треды можно добавить. Всё-равно обращение к куче требует локинга мьютексов, наверное.
Мне не так уж и сложно осталось всё сделать, но много. Из сложного надо продумать валидацию типов для вызова темплейтов (matrix[N][M] и matrix[M][N], например. Чтобы M и N были равны и оба были матриксами). Трудно когда приходится архитектуру расширять, ведь я всё время что-то не досматриваю.
В Лайси, кстати есть двойственность некоторых правил парсинга. То есть одни и те же правила похожи. Например, есть операнд обычный, а есть для alloc, vary и del и внутри себя они тоже могут иметь операнды, но последний тип не может иметь alloc vary или del.
Недавно я ещё понял, что операнды делятся на тензорные и скалярные. a[3:8] — тензорный, b — скалярный. Соответственно, a[5:2] + c[6:12] — тензорный операнд (типа expr). Но вот a[5:12]{+} (сумма, редюс с плюсом) уже будет скалярным.
У меня осталось ещё всего лишь 14 дней, чтобы выкатить первую настоящую версию Иколайси! Не уверен, что справлюсь, но я собираюсь справиться. Я недавно начал учиться планировать свою жизнь, пока что в небольших масштабах. Или предсказывать? В любом случае, где предсказание, там и самосбывающееся пророчество.

 >>/11860/
 >>/11859/
Ну ладно уже. Всё-равно видео были просто записью, не хочется писать в техподдержку.

 >>/11293/
> BlenderCAM используй, поехавший.
Не уверен на его счёт. Думаю, мне придётся генерировать некоторые инструкции вручную.

thumbnail of dizes.png
thumbnail of dizes.png
dizes png
(321.9 KB, 512x512)
Эх... (-_-*)
Мне стыдно об этом говорить (¬.¬;) но я опять не смог сделать это.
Выполнил я около трети работы труда.
Опять мне не хватило воли.
Я принял несколько неверных решений, которые в итоге привели меня сюда.
Сколько же можно так делать? И ведь мне хватало времени... Пора взрослеть...
В итоге не известно когда Лайси v0.8 + Иколайси v1.0 выйдет. Надеюсь, что в Сентябре. Когда-нибудь. Может быть в первой декаде, может во второй...

 >>/12441/
Ничего, бывает.
А кто то уже пробовал тестировать твой Лайси у себя? Может тебе стоит найти единомышленников и с ними процесс пойдёт быстрее? Одному вероятность бросить всё куда выше.

thumbnail of becoming.webm
thumbnail of becoming.webm
becoming webm
(393.55 KB, 800x800 vp8)
thumbnail of programmirowwwaniyre.jpeg
thumbnail of programmirowwwaniyre.jpeg
programmirowwwaniyre jpeg
(78.32 KB, 700x575)
thumbnail of ale op.jpg
thumbnail of ale op.jpg
ale op jpg
(43.96 KB, 600x496)
 >>/12443/
Незнаю, пробовал ли кто. На гитлабе всё ещё есть старый Иколайси, но у меня возникают бȯльные мысли, если подумать, что кто-то попытается использовать его хотя бы на имеющихся тестах.
Насчёт единомышленников в плане программирования это точно нет. Лайси это проявление меня. Точно не помню, почему я решил создать свой язык программирования 3 года НАЗАД, может из-за изоляционизма, может из-за NIH, а может я считал себя очень всемогущим в плане программирования (камон, работы на месяц-другой, а делаю уже 2-3 года), но скорее всего и то и другое. Но недавно я подумал и решил, что Лайси мне нужен, чтобы складывать в него и им же свои наработки.
Когда я пишу на C/C++-подобном ЯП, я в итоге тупо копирую куски наработанного кода из проекта в проект, а если создаю библиотеку, то выглядит она не лучшим образом (хотя всё-равно это облегчает всё). Кроме того, тех же возможностей C++ мне не хватит, иначе как я напишу define vec!N! as class...?
Если Лайси со временем популяризуется спустя долгое время, то будет неплохо запускать не единомышленников, но фанатов/фанов/последователей.
Когда инфраструктура Лайси стабилизируется, можно будет внедрять чужие разработки на Лайси, если кто-то захочет написать библиотеку. Особенно, если библиотека маленькая или ориентированная на редкий интерфейс. Например, преобразование координат под гексы или API к какому-то редкому формату файлов.

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

Кстати, это же тред не только по Лайси, но и в принципе по моему софту.

Недавно я оказался "счастливым" обладателем смартфона на линуксе, а конкретно Pinephone.
Получить его оказалось затруднительно. В магазине написано, для Европейского союза отправляем раз в неделю из Польши, для остального мира в конце месяца из Гонконга. Не знаю что там с законами и почему им легче отправить в Украину через Околокитай, чем через Польшу со смежными границами, но ладно.
После этого я ощутил воздействие ТАМОЖНИ на себе. Оказалось, что чтобы просто купить смартфон, надо отправить какую-то декларацию в таможню и заплатить пошлину. Вообще, я не понимаю, а почему это граждане страны должны платить за получение собственных посылок. Ладно, если бы это был транзит в другую страну, типа за то что на нашей территории ваша посылка не будет уничтожена благодаря действию закона, но каким боком тут сами граждане? Это странно. Думаю, такие странности будут и дальше происходить по мере моего финансового развития.
В итоге пришлось подписать контракт со службой доставки, потому что мне просто психически легче заплатить немного больше денег, чем пытаться понять что за мафиозные формы, зачем их вообще заполнять. Без истерики всё-равно не обошлось, всё-таки подписывание контрактов или других соглашений тоже сильно давит.

Ну ладно, вот пришёл ко мне смортфончик. Сразу увидел хардварные плюсы по сравнению с моим прошлым телефоном:
+ есть дисплей с ёмкостным (!) экраном.
+ легко ставить линукс или другую ОС
+ есть камера, даже две.
+ более мощный процессор и всё остальное
+ Если захочу, можно отключить мобильную связь хардварно.
- маловато кнопок. Штуки 3 как на обычных смартфонах. Не понимаю, почему их делают так мало?
 Если отключу мобильную связь, то отключится и GPS.

Но что насчёт софта? А я боюсь и не хочу экспериментировать с ним. Сначала у меня был manjaro + kde plasma, решил поставить другую для эксперимента, а оказалась, что это она и есть. В общем тут и началось веселье. Захотел установить виджет, чтобы показывало точно и время и дату (до секунд хватает обычно), случайно поставил виджет календаря, попробовал его удалить и плазма эта или кде зависло. После перезагрузки не включалось.
Потом решил попробовать другую прошивку. То же самое, только графическая оболочка называется Phosh. И что оно мне предложило с самого начала? Установить аккаунты гугла и ещё чего-то! Я по-вашему айфон купил или что?
Да и почему вообще все эти прошивки так похожи на андроидовые/айфоновые? То виндовс копируют на линукс-десктоп, теперь андроид на линукс-смартфоны, что за гадость!
Потом решил поставить обратно манджаро с kde plasma, но чего-то SD-карта не загружалась, то ли оно конфиг считывало с обычной флеш-памяти, в итоге я вспомнил, что играю в линукс, подключил клавиатуру (хаб шёл в комлекте), Ctrl+Alt+FX и смог удалить кдешные конфиги напрямую. Починило.

...

 >>/12476/

...

Ну ладно, думаю уже пора начинать нормально пользоваться им как смартфоном. Наделал фоточек для цифрого фотоальбома и теперь надо их как-то на комп перебросить. Ну самое оченвидное, что приходит в голову — ssh (scp). Открываю терминал, ввожу команду, ip, создаю отдельного пользователя на ПК специально для этого. "Не получается подключиться". А ну да, забыл sshd на компе включить, это ок. Пытаюсь понять как нажать Вверх и ничего не выходит. На клавиатуре есть Ctrl, Alt и даже стрелочка вправо. Не понял, что делать, пришлось переписывать команду. "Пермиссион дениед". Ах да, забыл доступ поменять. Снова ввожу команду. И пока я всё это делал, уровень заряда как-то быстро падал вниз, хмм.
Хотя меня только осенило, что та менюшка была скроллейбл и там была стрелочка и вверх. Мда, ну не привык я к смартфонам.
Кстати, ещё местный ФМ под названием Index очень долго запускается. Не понимаю, в чём проблема. На ПК pcmanfm за долю секунды запускается, а тут другой более 5 секунд. Ну не верю, что флеш-память такая медленная.
Ещё я не понимаю, как люди пользуются ими на улице. Вот попытался на улице поснимать, но он чуть ли не выскальзывает из рук, придётся напечатать толстый такой чехольчик. Жаль, что в TPU я не умею.
Кстати, и аккумулятор там какой-то маленький. Мне кажется, 2 18650 были бы гораздо объёмнее, а учитывая его площадь можно 4 таких акка поставить. И можно было бы не заказывать новый аккумулятор с пайнстора вдруг чего. И раз есть прослойка для воздуха, то можно было вертушку поставить охлаждать.

Короче, пенисня, а не софт сделанный. Андроид-интерфейс совсем не удобный. Мне кажется, было бы лучше сделать просто X воркспейсов как в XFCE, разместить кнопки с ними где-то вверху и переключаться между ними нажатиями. Окна программ к каждому воркспейсу пусть будут в отдельной менюшке, чтобы можно было легко переключаться между ними.
Что удобно в андроподобном интерфейсе, так это менюшка, выскакивающая при свайпе в верхней части экрана вниз, где есть возможность включить/выключить вайфай, блютуз, фонарик и прочее. Для КПК такое полезно.
Но неужели мне всё это самому придётся писать? Эх...

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

 >>/12476/
> + Если захочу, можно отключить мобильную связь хардварно.
Это как? Прям аналоговый выключатель? А Блютус и прочие вайфаи?
И где фото твоего смартфона?
> Установить аккаунты гугла
Криптотелефон )))
>  2 18650
Оу, у меня у друга обычный смартфон переделан на такие аккумуляторы с приклеенным слотом сзади. Смотрится прикольно. Но это телефон для машины, для путешествий. А не для повседневного ношения в кармане.

 >>/12478/
> Прям аналоговый выключатель?
Да, рычажки прямо под крышкой. Как я понял, моб. связь + GPS идут одним модулем, другим ВайФай+Блютуз. Другие отключение микрофона, спикеров и камер. Кстати, отключив, вроде, слот для наушников, можно его использовать для передачи по UART.
Тут https://www.pine64.org/pinephone/ в общем написано, никаких фотографий смартфона или со смартфона постить не хочу, слишком личное, отследите ещё по рисунку напольной плитки и форме уличных растений. Могу сказать, что цветопередача таксебешная, если приблизить изображение, то всё в разноцветных шумах. Ну, может фильтры какие-то можно включить, не знаю.




thumbnail of aaaaaaaa.jpg
thumbnail of aaaaaaaa.jpg
aaaaaaaa jpg
(112.29 KB, 996x560)
thumbnail of pinuxoidy.png
thumbnail of pinuxoidy.png
pinuxoidy png
(1.28 MB, 1280x1071)
thumbnail of nenavizhu nenavizhu nenavizhu.webm
thumbnail of nenavizhu nenavizhu nenavizhu.webm
nenavizhu nenavizhu... webm
(6.94 MB, 1280x720 vp9)
Представляете, недавно захотел заснять видео Пайнфоном, а оказалось, что дефолтное приложение камеры Megapixels не умеет! ((((9((((999(
Не нашёл ничего лучше, чем начать писать своё приложение-камеру, вот разбираю video4linux https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/open.html
Только знаете, тут немного посложнее, нет просто файла для камеры, есть ещё всякие /dev/mediaX, /dev/v4l-subdevX. В пайнфоне как раз через mediaX делается. Если я правильно понял, то одно "устройство" владеет обеими камерами, то есть нельзя снимать одновременно с двух.
Кстати, незавершение начатых проектов больно бьёт по моей психике и потом я меньше занимаюсь Иколайси-Лайси! Нужно использовать волю для преодоления, ведь именно она расплавляет несуществующие стены.

Когда доделаю Иколайси, надо будет когда-нибудь в инфраструктуру добавить библиотеку camera — слой для взаимодействия с более-менее обычными камерами. Получить изображение, помигать светодиодами, получить аудио, настроить фокус, фильтры и всё такое.

thumbnail of class.png
thumbnail of class.png
class png
(31.38 KB, 501x620)
thumbnail of why im antisocial.jpg
thumbnail of why im antisocial.jpg
why im antisocial jpg
(35.97 KB, 700x500)
thumbnail of zumerok so znakami.jpg
thumbnail of zumerok so znakami.jpg
zumerok so znakami jpg
(244.32 KB, 1198x1088)
Наверное так будет выглядеть math.vec по версии Laisi v0.8.
Думаю объяснять не надо, что тут написано, и так всё ясно.
Прежде чем выпускать компилятор, мне надо, чтобы такой вектор можно было запринтить.
Мне осталось ввести ещё где-то 22 фичи Иколайси (из 38, когда я начал переписывать его на C/C++-подобный язык). Но они разного размера. Если сгруппировать их, то получится, что надо ввести темплейты, классы, несколько функций препроцессинга, перегрузку операторов и функций, преобразование списковых и дикт-данных в типы, liblaisi и завершить тензорные+скалярные вычисления.
За этот месяц я почти ничего не ввёл, хотя за половину прошлого фич 15, мда. У меня много проектов, и работа, и антиработа, и новые таски, и старые таски, да и просто проекты.
Я вроде бы недавно говорил себе, ну не надо так много заданий куррентных держать, надо поменьше, а если уж держутся, то надо регулярно заниматься каждым, даже если по чуть-чуть (контекст не будет в глубокие части мозга отходить). Но чего-то не получается.
Вот за прошлый месяц мне надо было достичь трёх целей. В итоге я провалил все и только в этом месяце исполнил одну, а две другие (одна из них — Иколайси) валяются в половинчатом состоянии.
А на этот месяц у меня ещё 2 цели, хотя одну из них вроде не слишком сложно исполнить.
А ведь если бы я каждый раз, когда отдыхаю скучным отдыхом, занимался Лайси, осталось бы уже фич 10 или меньше ввести.
Кстати, некоторые фичи я вводил в компилятор, когда на питончике его писал, а теперь приходится заново вводить, лол (нет)

Ах да, я же в версию 0.8 собирюась добавить классы. Лайси это не ООП, но классы нужны для инкапсуляции. Чтобы не писать муторное normalize(vectorname), а vectorname.normalize(). Красивее.

thumbnail of conmortem.png
thumbnail of conmortem.png
conmortem png
(232.59 KB, 1400x900)
Одно слово — СЛА-БА-КИ

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

Суть вот пококова: В Лайси имя Name может быть субнеймами разделёнными через точку. libname.modulename.variablename, как-то так. Когда-то давно я хотел сделать, чтобы переменные можно было называть с точками в названиях, но понял, что это фуватен солюшн (если вы яснопонимаете). Короче, имена с точками только для использования, а не декларации. Такие точки и возникают, если, например, импортировать библиотеку. Но также точки могут случиться, если происходит обращение к членам. У вас есть члены? Члены могут быть у структур, но также это могут быть не члены, а псевдонимы или методы. У людей тоже есть члены — ручки, ножки, почки и прочие листочки. Но это не к тексту, а к разбавлению внимания. В любом случае, я понял, что операнды надо перед компиляцией обрабатывать. Сначала нахожу что за переменная используется по имени итерирую, обрезая правую часть имени. Если это темплейт, так вообще у операнда должен быть постфикс вызова функции. Вот, потом члены надо преобразовать в постфиксы (про постфиксы ниже), то есть надо будет нормально взять и определить, что за индексы у членов (структуры), а если это метод, то вообще взять переменную и первый операнд (имя) станет аргументов для вызова.
Постфиксы в моей реализации компилятора Лайси это то, что добавляется к операндам при взаимодействии с ними едиными. Индекс '', референс ->, члены .membername, функ калл (x,y,z)!
Соответственно, придётся теперь нормально обрабатывать постфиксы, чтобы разработка облегчилась.
Ни одну из фич я до сих пор не ввёл, всё в нескольких сложных копошусь.

thumbnail of laisi.png
thumbnail of laisi.png
laisi png
(31.1 KB, 434x756)
thumbnail of llvm ir.png
thumbnail of llvm ir.png
llvm ir png
(99.32 KB, 648x857)
Оуфигеть, еле скомпилировал пикрилейтед.
В итоге ввёл большую часть класса, ещё и self-тип. Можете поглядеть на LLVM IR, если поймёте что-то. Что закоментировано тоже работает, проверил.
В классах надо ещё ввести передачу self*. Потом пора будет переходить к перегрузке функций и операторов. В частости, внутри классов можно будет писать методы для перегрузки init, del, index, get, set и другие одноаргументные.
Перегружать операторы сложения, умножения и прочих двуаргументных как-то мне видится некрасивым. Лучше их писать отдельно, к тому же те же вектора math.vec надо иметь возможность складывать, у которых разные подтипы. Например vec3 и vec3 и написать просто template with V0(vec!N!),V1(vec!N!) func (V0 out,[V0 in0,V1 in1])...
А в случае именованных классов это же на самом деле макросы, представляющие из себя дженерики и если сделать add методом, то можно, чтобы только один тип самого себя принимался.

только заметил, что функция метода называется .m0, а не abc.m0, надо исправить

 >>/12542/
Щииииит а я так хочу телефон с нормальной ОС. Раз в десять лет и видео записывать приходится. Да и судя по видосам с трубы там и более насущных проблем хватает. А говнокодить не могу. Держи в курсе как этот сосновый огрызок себя ведёт, пожалуйста.

thumbnail of ii zeloof.jpeg
thumbnail of ii zeloof.jpeg
ii zeloof jpeg
(632.88 KB, 1560x1169)
thumbnail of i zeloof.jpeg
thumbnail of i zeloof.jpeg
i zeloof jpeg
(406.27 KB, 1560x1169)
thumbnail of zeloof.jpg
thumbnail of zeloof.jpg
zeloof jpg
(2.16 MB, 4032x3024)
 >>/13061/
Ок.
В последнее время он у меня просто лежит. С отключенным вайфаем заряд держит 2+ дня. Думаю, в течение пары недель всё-таки вставлю симку и начну использовать в обычном телефонном режиме.
Там ещё и тулиграм предустановлен, ну а я и не против. Хоть мессенджер и пророссийский, но во-1 что вы мне сделаете, я в другой стране, во-2 клиент с открытыми исходниками, удобно, в тетих я в другом городе что вы мне сделаете (соре за отсутствие мата я его ненавижу). Для деловых переписок подходит, если надо будет сойтись с кабанчиком где-нибудь. А ну и с гугл-картами даже в квартальном лесопарке будет сложно заблудиться.
Хотя я же когда-то делал ПО под названием nnaamapeiko, но так и оставил какую-то демку сферы с натянутыми спутниковыми снимками, лол. Надо будет когда-нибудь натянуть OSM, викимапию и те же снимки и устроить удобную навигацию. Благо, в пайнфон можно вставить очень много гигабайт SD-карты, так что теоретически можно закачать и карту половинки мира и википедию с советами по выживанию ха.

А по-хорошему надо самому научиться производить КПК. А для этого нужны процессоры, RAM, МЭМС-акселерометры, КАМЕРЫ, накопители, ну и, конечно же, дисплеи. Думаю, самое сложное здесь это процессоры/RAM и камеры. Для микроэлектроники я вижу 3 пути: кремниевые, вакуумные или органические транзисторы. Несмотря на все сложности, мне кажется, что кремниевый путь наиболее простой. Но я не то что кремний добывать, я даже выращивать кристаллы даже олова не умею. Мне надо для начала печь новую построить. Я разделяюсь между двумя путями — газовая и индукционная. Я думаю, что индукционная лучше, но у меня так мало знаний электроники, я просто не понимаю что к чему. И точно ли графитовый тигель будет разогреваться? А если пытаться выращивать кристаллы в индукционной печи, то не скажется ли магнитное поле на структуре?
В общем, наверное, надо оба варианта строить, наверняка у обоих есть свои преимущества и недостатки, которые я пока не вижу. А может даже и муфельные печи могут сюда протиснуться. Электрическая, но без лишних магнитных полей и может быть для большого объёма индукционной печи пришлось бы очень страшную электронику ставить, аж искры из глаз полетят, мда, не подумал я об этом.

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

thumbnail of mzz.png
thumbnail of mzz.png
mzz png
(212.41 KB, 500x500)
thumbnail of gltfOverview-2.0.0b.png
thumbnail of gltfOverview-2.0.0b.png
gltfOverview-2.0.0b png
(4.54 MB, 3778x2500)
thumbnail of eggman hatsune miku.jpeg
thumbnail of eggman hatsune miku.jpeg
eggman hatsune miku jpeg
(170.09 KB, 1024x1024)
Я слишком много на себя беру...

Опять я не сделал Иколайси. Из того, что помню, ввёл оверлоады функций и начал вводить оверлоады операторов (операторов много). Но этим я уже занимался в питоновской версии компилятора. Если думать такими темпами, то мало ли когда Иколайси выйдет. В Октябре. Или вообще в Ноябре...
Наверное это всё из-за нечто, что я пока назвал выученной ленью. Как только в каком-либо проекте я ввёл фичу, то мозг думает "О, теперь можно и отдохнуть", хотя отдых этот на самом деле очень скучный зачастую. Не знаю когда у меня началась прогрессировать данная психическая проблема.
К тому же у меня очень много проектов и просто дел. Распыление ведёт к ухудшению ситуации. Ну почему, я же и так сузил свой сектор областей деятельности до такого минимума!
Если журналюхи не наврали, то Никола Тесла говорил/писал "Когда у меня возникает задача, я набрасываюсь и набрасываюсь на неё, пока не будет решена". Ну поняли, это как вода точит орешки золотые, пока не останутся ядра чистый изумруд.
Если бы я действовал по такому принципу, то мог бы уже достичь всяких целей. Мне надо как-то прокачать свой разум?
А ну ещё я пострадываю от того, что почти не могу использовать уже готовые технологии. Например, когда чад в годоте или юнити набрасывает ассеты очень художественно и выпускают игру на миллиарды, я в своём графическом движке пытаюсь ввести скиннинг! То есть позирование, джоинты, кости эти все. Но я не знаю как вообще можно отказаться от своих низкоуровневых технологий, когда они уже есть, хоть и на таком маленьком уровне.

Кстати, что я там писал по печам, это бред, не читайте. На самом деле не знаю, а нужны ли те же газовые печи? Нет, в промышленности может и нужны, когда газ дешевле электричества, но если для хобби то и муфельную печь можно разогреть до высоких температур. Есть же не только нихром фехраль, но и вольфрам, вроде и молибденовые тэны. Токо в случае с вольфрамом его оксид испаряется быстрее чем сам вольфрам плавится! Наверняка и с молибденом такие подводные камни. Но зачем вообще пропускать ток через тэн, если можно напрямую через графитовый тигель, а если он не графитоый, то можно графитоый тэн обустроить.
Недавно попробовал один регулятор мощности, в общем графит слишком проводим, надо думать над решением, а пока можно собрать просто маленькую муфельную печь. Как я понимаю, благодаря регулятору мощности не нужно очень много тэна (чтобы на 220 вольт), вместо этого можно просто покрутить ручку регулятора. И маленький размер, возможно, хорошо сказится на теплосохраняющих свойствах.


thumbnail of img1.png
thumbnail of img1.png
img1 png
(690.18 KB, 1280x720)
thumbnail of ele.jpg
thumbnail of ele.jpg
ele jpg
(13.29 KB, 474x355)
thumbnail of convolve.png
thumbnail of convolve.png
convolve png
(83.57 KB, 1080x508)
Вот я уже почти 5 лет в мире программирования, а до сих пор почти ничего не умею и не знаю. И не только в программировании.

Недавно мне дали задачу, совершенно простую для 2021-го года: сделать программу, где можно на картинке выбирать объект интерьера и будет создаваться его 3D-моделька Directed by Robert B. Weide я попросил пример поконкретнее и мы остановились на просто прямоугольных объектах типа окон, плитки или чего-то ещё
И вот я вспоминаю, что недавно игрался с фильтрами, сделал что-то типа канни фильтра, и вот никак не могу вспомнить куда я положил код свёртки.
Начинаю злиться ну как так в ПИТОНЕ нельзя просто взять и свернуть что-нибудь. Опять что ли писать эту функцию, опять проходить ошибки, я не помню где я писал эти эксперименты со свёрткой? У меня более 100 директорий с разными проектами и кодами, как мне его найти?
Даже если бы Лайси и Иколайси были бы готовы к этому моменту, то и там возникли бы проблемы со свёрткой. Во-первых, вряд ли стандартные средства Лайси позволят написать свёртку в одну строку, так как при ней используются одни и те же элементы для вычисления разных значений (ну то есть, когда сдвигается на шаг, значение в правой и нижней частях подкернельной области используется).
Хотя в таком случае логичным назревает желание потом написать в liblaisi функцию для свёртки, чтобы не велосипедить. Но если писать такую функцию, то желательно сделать возможность свёртки не только квадратных (линейных, кубических) N-dim, в общем, массивов. Что если кто-то захочет свернуть поле из шестиугольников? Надо иметь возможность взятия значений по отдельной функции, которая будет принимать координаты или я даже не знаю, что. Надо подумать над этим.

В общем, потом я вспомнил про grep и быстренько прошёлся им, ищя название функции и нашёл код, день спасён.

Но я должен был стать к нынешнему времени полубогом программирования, почему я не могу просто сказать в любой части подконтрольной зоны "Главный компьютер, сверни-ка мне картинку по ссылке https://tratata.blablabla/img.webp сначала кернелем [[-1,-1...]], а потом кернелем [[...]]", после чего ко мне подлетит квадрокоптер с дисплеем и выведет на экран полученное изображение?
Хотя я даже базовые принципы программирования не знаю и не понимаю. Что такое SOLID, зачем нужно наследование? Как проектировать большие системы и как следить за своими функциями, чтобы они выполняли только то, что надо? Я знаю только про WET и DRY, но далеко не всегда следую им.

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

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


thumbnail of aaa.png
thumbnail of aaa.png
aaa png
(25.15 KB, 482x638)
thumbnail of aaa1.png
thumbnail of aaa1.png
aaa1 png
(10.05 KB, 557x192)
thumbnail of OMORI OST - 106 GOLDENVENGEANCE-PqQC_gl5k0w.webm
thumbnail of OMORI OST - 106 GOLDENVENGEANCE-PqQC_gl5k0w.webm
OMORI OST... webm
(2.34 MB, 0x0)
thumbnail of gan output.jpg
thumbnail of gan output.jpg
gan output jpg
(71.5 KB, 700x534)
Недавно взял себя в руки и ввёл пару фич с пикрилейтеда. Улучшил взятие члена по указателю, методы, вот это всё. А справа валидация типов при вызове темплейта.
Но это на самом деле полухалтурные фичи. Как вы видите на картинке слева, я делаю ttt tz, а потом vvv.t.t = addrof(tz). А ведь можно было взять сразу из мммюе vvv.t. Просто в аддроф-вайпер я пока не пересылаю нормальные операнды, а только операнд-имя. Надо будет это исправить.
А справа хоть и есть валидация типов, но я не смогу написать что-то типа M0(mat!N!x!M!), M1(mat!M!x!X!) для умножения матриц, например.

Прежде чем выпустить новый, свежий, работоспособный Иколайси в свет, надо сделать так, чтобы можно было хотя бы запринтить вектор и умножить матрицы. Ну и читать-писать файлы, естесственно. Валидация типов темплейта нужна и для io.open, так как я планирую следующие варианты аргументов: u8[], mem.string, mem.vector. Первый это Null-terminated string (ну мало ли), второе это просто путь ('/root/secrets/mm.jta'), а третье это путь, но вместо слешей названия директорий/файлов (['/','root','secrets','mm.jta']). К счастю швиндовс понимает линукс-пути, но всё-равно такая дискриминация слеша в линуксе (посиксе?) это странность. Из-за него я когда-то не смог при помощи mctagfs (кстати, его тоже надо переписать, чтож это) ввести тег для картинок GNU/Linux. Ну в самом деле, '/' это 47. Это ни 0, ни 1, ни 2, ни 255, ни 254, ни 253 или что-то подобное, а 47. Что не так с этим числом я не понимаю. То есть из-за какой-то глупой кодировки менять судьбу всего.

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

Зато, когда начнётся новый период свободы, всё будет таким красивым и счастливым... Или нет я просто плохо знаю историю и социологию.

 >>/13786/
Ну да, к сожалению наличие одной лишь только всего лишь микроинфраструктурки SIM-карт и мобильной связи уже делает устройство непригодным для личного провождения. Для анонов такое не прокатывает. Когда-то я хотел сделать себе КПК на малинке, но малинка громоздкая и мне вообще страшно ею пользоваться, она у меня как человечек, живущий в коробочке из фанеры и подающий сигналы на устройства.
Можно ещё создавать КПК на базе микроконтроллеров, ПЛИСов и отреверсенных диспелеев и камер со смартфонов, но это так сложно! Лично я до сих пор не умею подавать сигналы на шлейфы всяких этих смартфоно-камер или дисплеев. А мог бы, можно было бы попытаться отреверсить. И ведь эти устройства качественные, у них много мегапикселей и для отображения, и для съёмки, а у камер ещё и фокусная линза умеет двигаться. неизвестно сколько лет мне понадобится, чтобы достить такого уровня. Я даже просто кремний не умею добывать! Я плохо знаю электронику! Можно попробовать пропустить силан сквозь 2 пластинки из нагретого 600+ °C металла с выфрезированной канавкой. Но как нагревать? Я планировал индукционным нагреваталем для пробы. А как охлаждать сочленение к трубке, через которую подаётся силан? Жтого я не знаю...
Вокруг очень много компаний, которые гораздо моложе меня, но при этом умеют создавать сверх-предметы и супер-программы. Их секрет заключается в распределённом мышлении, они не устают, потому что пока 5 сотрудников спят, другие 5 могут работать и разрабатывать, не отвлекаясь на разные задачи.



 >>/13882/
> КПК на малинке

Ботнет?

Boards based on the Broadcom VideoCore 4 family, such as the Raspberry Pi, require non-free software to startup, although signature checks are not enforced. A free proof-of-concept replacement firmware has been developed, but it is not in a usable state, and development has halted. Until the non-free startup program is fully freed, these boards are useless in the free world.

https://www.fsf.org/resources/hw/single-board-computers
https://news.ycombinator.com/item?id=24521265

Кстати, можно как-то выпилить все радиомодули из платы? Bluetooth, Wi-Fi, GSM и прочее говно? Чтоб никак нельзя было подключиться без провода?
Я как-то пытался выпилить это из кнопочной Нокии, выдрал оттуда отверткой мелкий барабанчик похожий на радар с крутящейся антенной, и золотистый барабанчик еще меньше (без антенны). На сколько помню, полоски связи в углу экрана были в нуле и с симкой он не работал, а блютуз и звонок на 112 работали.

 >>/14048/
Физически сдуть паяльным феном с платы, не?

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

 >>/14055/
А что сдувать? Как эти радиомодули выглядят вообще?

> невозможность загрузки

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

 >>/14213/
Читаешь маркировку на микросхеме, ищещь, что это за микросхема.

Или ищи на сайтах одноплатникоёбов, там обычно бывают картинки.

thumbnail of pushpoppushpoppushpop.png
thumbnail of pushpoppushpoppushpop.png
pushpoppushpoppushpop png
(16.37 KB, 556x301)
thumbnail of img.png
thumbnail of img.png
img png
(41.65 KB, 1582x878)
thumbnail of annnnnnnnnnnnnnnnnnnnnnnnn.png
thumbnail of annnnnnnnnnnnnnnnnnnnnnnnn.png
annnnnnnnnnnnnnnnnnnn... png
(1.3 MB, 1280x800)
thumbnail of tin_ch.pdf
thumbnail of tin_ch.pdf
tin_ch pdf
(2.24 MB, 0x0)
Еженерегулярный отчёт. Я опять почти ничего не делал, хотя мне осталось реализовать ещё аж 17 фич! Когда я это сделаю... Вот такие дела, когда много тасков одновременно на человеке, но на самом деле это нытьё и я мог бы прямо сейчас взять и пойти делать Иколайси дальше.
Дев-версия Иколайси уже достаточно зрелая, чтобы пробовать в мем-вектор. Вчера попробовал и сразу баги полезли.
Но так же одной из фич является ввести в liblaisi min, max, clamp, abs, sign. Это 7 темплейтов. Для max и  min по 2 темплейта, так как я решил, что когда они принимают один аргумент, то пытаются найти значение из его элементов. А когда много аргументов, то сравнивают их между собой. Реализуется это через for и multiply (бывшее @for) соответственно. Ах да, я вспомнил, что вчера придумал как изменить архитектуру, а то сейчас у меня там дуализм развёлся. Почти одинаковый код исполняется, если мне надо просто получить тип операнда и если мне надо его скомпилировать. Тип операнда нужен, например, для sizeof или alloc/vary.

Кстати, недавно я писал про электрические печи, в общем я опять полную ерунду написал. Собрал экземплярчик муфельной печи с фехралевым тэном, а она разогрелась всего лишь до 500 °C за 35 минут! Но я ещё ватой не утеплял.
Так вот, суть в том, что это неправильная муфельная печь. Надо не фехралевую спиральку по стенкам прокладывать, а графитовую плоскую спираль прямо в пол ставить. На спираль поставить тонкую теплопроводящую, но электронепроводящую и теплостойкую пластинку (из корунда, мб?), если планируется использовать графитовый тигель. Чтоб не замкнуло. Ну или тигель в стаканчик положить.
Надо бы выфрезировать такую и затестить.
Кстати, ещё один способ электрического нагрева это пропускать ток прямо через тигель, но я недавно понял, что тогда же расплавленный металл тоже начнёт проводить и уменьшит сопротивление! Да и вообще я не понимаю, а достаточно ли напряжения будет падать на тигле? Будет там какие-нибудь 0.5 Ом, значит в проводке должно быть хотя бы менее 0.1-0.2 Ом? Электроника это непонятно, конечно...

Ну и пайнфон я испытывал с симкой. Вставил, включаю: Введите пинкод (от симки). Ввожу, отправляю — ничего не происходит. Ну и ладно. А я думал, что смогу иметь доступ в интернет с любой точки города. Но, похоже, это доступно только избранными. Получается, что пайнфон может иметь 3 полезных функции — 0. Камера. 1. Запуск консольных приложений (Если ночью захотелось посчитать чего-нить, то пишешь python и там считаешь) 2. Потенциально универсальный пульт для ваших робоподобных устройств. Если для андроида пришлось бы APK как-то генерить, то с линуксом вы можете хоть на питоне ГУИ-пультик набросать и сразу же начать использовать.
Кстати, у него и экран иногда начинает высокочастотно (заметно) мигать, или так было, а уже нет. Но только при включении и постепенно проходит. А ещё меня раздражает, что его надо заряжать каждые 2 дня! Если кнопочный телефон может неделю держать заряд, то со смартфонами всё сложнее. И вроде бы ничего не мешает в 3-4 раза увеличить толщину, поставить нормальные акки, причём съемные и чтобы одним движением сменять один другим, ставя разряженный на зарядку, а пока сменяется использовать заряд из соседнего буферного миниаккумулятора (или конденсатора?). Можно было тогда и корпус делать не из PLA или нефтяных водорослей, а металла, керамики, металлокерамики. Если мешает радиосвязи, то пусть антенны выводят наружу. И они ещё ставят 3 камеры на одну сторону, но почему-то забывают про торцы. Почему там нет камер? Можно было следить за своими пользователями, даже если смартфон лежит далеко на столе. Ну, раз уже следят.
Вместо этого всё направлено на стрижку бабла, а люди хавают. И запланированное устаревание внедряют. Я однажды заметил запланированное (хотя это могло быть и случайным) устаревание в клеевом пистолете! Там при нажатии кнопки всё время протерался проводок и через несколько лет он оторвался от нагревателя так, что не припаять. А ведь был самый первый и самый лучший клеевой пистолет, после него только одна фигня.

 >>/13935/ (и выше)
Спасибо за охрану.

 >>/14233/ 

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

Инвертор где-то нужно достать, но если любишь эксперименты, можешь сам попробовать собрать.

 >>/14246/
Как раз недавно высверливал обмотки из МОТа, чтобы намотать свой трансформатор, а там для линейного блока питания у меня всё есть. И индукционный нагреватель лежит, пылится. Заинтересовался ими, когда увидел на канале Thoisoi, что такими штуками можно даже сталь плавить!
Это же такие возможности, можно, например, победит спечь или какой-нибудь сплав приготовить, стёкла, керамику. И в регионе моего проживания довольно легко купить розничные кол-ва всяких неорганических веществ, в т.ч. используемых в металлургии.

Но у меня lack в технологиях (technologies). Я когда-то собрал индукционный нагреватель по схемке, но один из проводников сгорел. Я сделал вид, что на самом деле схема не работала и купил в китае. Но и там, скорее всего, не очень качественная схема и мне всё-равно придётся учиться и проектировать свои схемы, к тому же мне понадобятся разные размеры.

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

 >>/14247/
>  расплавить корунд
А потом кристаллизовать его обратно, причём таким образом, чтобы он принял нужную тебе форму?

На алиэкспрессе продаются готовые индукционные нагреватели с внутренним водяным охлаждением индуктора. Тигли графитовые, вроде бы, я тоже видел.

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

Навальный отравление Новичком Пригожин петух Потупчик курица Володин пидор Медведев алкоголик Мишустин вор Моль Окурок Хуйло Карлик Плешивый Тиран Карлик Убийца Вор Революция Восстание Забастовка Митинг Коктейль Молотова Партия жуликов и воров Вбросы Шпилькин Долой узурпаторов ФСБ Певчих Волков Албуров Выборы УГ Умное голосование Хватит терпеть Выходи Много политзаключенных Зарплаты маленькие Теракт Хлопок газа Экологическая катастрофа Подтопление Наводнение Задымление Пшик газа Пожар Курс рубля Отрицательный рост Развитие с негативной динамикой динамикой Коронавирус Пандемия Падения рубля Турбулентность рубля Обнуленный Авиакатастрофа Жесткая посадка Разрушение потолка Обвал штукатурки Оптимизация Здравоохранение урезание сокращение увольнения закрытия Разворовали Стабильность Стагнация Взнос Сбор Пошлина Отчисление Скрытый налог Туалет на улице Нищета Разруха Пытки

Для чего нужен этот странный и почти неразличимый текст? А вот для чего:  >>/14153/

thumbnail of pushpoppushpoppushpoppushpopresize.png
thumbnail of pushpoppushpoppushpoppushpopresize.png
pushpoppushpoppushpop... png
(30.29 KB, 614x396)
thumbnail of assert your tongue.png
thumbnail of assert your tongue.png
assert your tongue png
(17.47 KB, 653x273)
thumbnail of korund.jpg
thumbnail of korund.jpg
korund jpg
(69.8 KB, 800x374)
thumbnail of OMORI OST - 034 A Rose By Any Other Name...-0IT0kOwFaaE.webm
thumbnail of OMORI OST - 034 A Rose By Any Other Name...-0IT0kOwFaaE.webm
OMORI OST... webm
(916.41 KB, 0x0)
Ух, недавно ввёл 1.5 фичи. Я себя случайно деморализовал, из-за чего не доввёл assert (кстати, он тоже был в питоновской версии Иколайси). Суть ассерта пока что проста — это просто вызов отдельной функции (которая будет в liblaisi), выводящей сообщение об ошибке и завершающая программу. На второй картинке вы можете видеть такое (там, кста и другая фича со структом). Только я забыл про exit, да и в приниципе у меня сломался парсинг чисел, из-за чего endl это 10, а не 0xA.
Зато на первой картинке показаны методы mem.vector, которые компилируются. Но они тоже не совершенны, так как надо делать v->elms vary T[v->length + 1] (чтобы данные инициализировались под нужный тип). Но нынешний Иколайси так не умеет.

Ну хватит про программирование. Недавно я купил себе огромную графитовую дуру и пару часов отпиливал от неё диск, который теперь надо бы выфрезировать в тэн. Только у меня не оказалось лобзика подходящего размера. Я немного обнаглел в своих возможностях. Знаете, у графита очень низкая твёрдость — всего 1-2 по Моосу. А у меня как раз валялась полосочка какой-то стали. Я взял и нарезал в ней зубья, ею же отпилил. Надо будет по такому принципу сделать коронки и инструмент для вырезания цилиндра из глухого отверстия или как это назвать? Из канавки образованной коронкой. Незнаю как называются такие инструменты. Они позволят сделать из одного круга очень много тиглей, например. Так как серединка не будет выброшена впыль.
И вообще, это крутой бизнесс-план:
0. Научиться производить всё, что производит Китай
1. Продавать на 20% дешевле.
2. ?????
3. PROFIT!
Лишить КНРовцев миски риса и кошек-жён, а тайваньцев просто зарплаты и можно будет не пытаться создавать глупые, никому не нужные игры. К тому же я ни одной (кроме самой первой, лежащей на закромах интернета) так и не довёл до конца.

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

 >>/14248/
> А потом кристаллизовать его обратно, причём таким образом, чтобы он принял нужную тебе форму?
Технически да, но я подразумевал обычное литьё.
Конечно, я хочу в будущем научиться и просто кристаллы корунда выращивать методом Чохральского, но это уже высокие технолгии, скорее всего там надо будет реализовать индукционный нагрев, да и вообще сложную печь построить. С механизмом выращивания.

thumbnail of imgiska.png
thumbnail of imgiska.png
imgiska png
(42.82 KB, 754x665)
thumbnail of out.jpg
thumbnail of out.jpg
out jpg
(66.62 KB, 920x964)
Я НЕ УМЕЮ ПРОГРАММИРОВАТЬ!

Долго не прикасался к Лайси. Я немного алчный человек, хочу денег и иногда приходится брать больше работы, чтобы получить их. Заодно и неплохих знаний приобрёл. Говорить каких не буду, но если вы парсите и анализируете все посты с разных имиждборд, то могли уже догадаться.

Попытался снова ввести фичу "Тензорные вычисления". Вообще, я сначала хотел сделать фичу перегрузки операторов, но потом вспомнил, что там есть перегрузка оператора перечисления или как это назвать: (10:15) это [10,11,12,13,14]. Можно использовать в for: for x in (0:num) или просто для заполнения массива arr[:] = (0:30:2). А чтобы ввести перечисление, мне надо сначала ввести тензорные операции.
И вот сделал я функцию, но ввёл только частично. Больше, чем в прошлый раз. Теперь поддерживается N измерений, а не одно. На картинке видна сама операция (ar2[1:10]...) и снизу в комментах то, как оно раскладывается в компиляторе.
Но есть 2 проблемы: 0) если step (шаг) меньше нуля, то надо уменьшать соответствующий counter на нужное число и при этом в условии ставить противоположное сравнение. А для этого придётся добавить (в раскрытии выражения) переменных-флагов или ещё что-то. 1) нельзя указать x[0:], то есть stop надо указывать явно. Дело в том, что если это массив, то надо к нему взять lenof-операнд, чтобы понять, какой у него размер. Но если вы посмотрите на нижнюю операцию (с двумя измерениями, тоже уже компилируется), то там в самом левом операнде 3 постфикса-индекса. Просто последний не является частью всей этой тензорной операции, это просто индекс. И надо будет как-то сложно lenof-операнд брать.
Кстати, ещё тут можно оптимизаций всяких наделать, например, если степ это константа, а не переменная, то можно сразу выставить нужные операции. И ещё тензорные операции между простыми типами сделать при помощи LLVM-векторов, которые преобразуются в архитектурные SIMD-операции. Последнее я уже делал в питоновской версии. Но все эти оптимизации на будущее! Сейчас не время!
Мне осталось ввести ещё 14 фич.

Кстати, я ещё недавно думал и решил, что следует объеденить функционал типов T* и T[] в один T*. То есть, T* будет поддерживать и T-> (референс), и T[x] (индексация) как зижке. Просто, возможно, в будущем я больше приобъеденю mem к самому Лайси и можно будет вместо mem.vector написать T[], вместо mem.HashTable/mem.map (не решил) T{K}, а вместо mem.shr T&. Ведь же все эти вектора и шейред-поинтеры используются так часто в нормально проргаммировании!

Сайд: я снова запускал и совершенствовал свою печь, в общем люминь плавится, но сессия печи составляет где-то 2.5 часа. Результат не плохой, хотя в своей прошлой, угольно-воздушной печи делал это за 20-30 минут. Но со временем сноровка пропала, а тигли перегорели и я разучился плавить алюминий. Пробовал ещё переплавить стружку, которая у меня поднакопилась, так столко шлака образуется! Надо перемешивать чем-то, но страшно. Ведь тэн выпирает и под напряжением из сети.
И графитовую спиральку дофрезеровал (ок, приваси, го-го, пик-фотка, ориджинал-контент). Но сопротивление от конца до конца где-то 1 Ом, если не меньше. Наверное, надо отверстий наделать, образовав фермы. Чтобы в прочности сильно не потеряла, но средняя поперечная площадь уменьшилась.
Вдруг графитовый прямой нагрев окажется в некоторых областях лучше индукционки?

thumbnail of gdfg.png
thumbnail of gdfg.png
gdfg png
(40.96 KB, 822x457)
thumbnail of out.mp4
thumbnail of out.mp4
out mp4
(2.6 MB, 1920x1080 h264)
thumbnail of OMORI OST - 116 Underwater Prom Queens-7xl5kRE19y4.webm
thumbnail of OMORI OST - 116 Underwater Prom Queens-7xl5kRE19y4.webm
OMORI OST... webm
(1.92 MB, 0x0)
Пока я колупаюсь в Лайси и других штуковинах, тысячи людей по всему миру создают нейронки, генерирующие изображения! и другие крутые штуки https://habr.com/ru/company/sberbank/blog/586926/
Я вообще-то тоже хочу создать [УДАЛЕНО] на базе ██████████████████████████████████████████████████████, чтобы кое-что делать с ██████ и ███████████.
Похоже, скоро придётся дифференцироваться.

Но пока доделал тензорные вычисления (с парой оговорок, но это потом можно ввести, в последующих версиях). Как вы можете видеть на картинке, верхняя строка (только она закомменчена тут) в компиляторе раскладывается приблизительно на то, что ниже. Тут можно ввести много оптимизаций.
Осталось 13 фич. Самые сложные это 37. iterexpr ((X:Y:Z)), 36. reduce (W[X:Y:Z]{operator}) и 17. перегрузка всех операторов (как и сами операторы). Может уже пора выпускать в этом месяце Laisi v0.8 и Иколайси v1.0?????????????????????????????????????????????????!?????????????????????????????????????????????????????????????????????????????????

 >>/14934/
> Пробовал ещё переплавить стружку, которая у меня поднакопилась
Это мало эффективно. Я сам не плавил, но все говорят, что чем мельче алюминиевые частицы, то тем больше они выходят в шлак. Выход реального металла после этого сильно сокращается.
> графитовую спиральку дофрезеровал
Не думал что так можно делать с графитом. Из чего заготовка? Контакт от троллейбуса? 
Я  думаю ты знаешь что он очень хрупкий. Не исключено что она треснет у тебя от нагрузки.

 >>/14934/
> переплавить стружку
> графитовый прямой нагрев окажется в некоторых областях лучше индукционки?
А нахуя всё это? И чем обычный газовый резак не подходит? С резаком для плавления и нагревания разной фигни ещё можно проделать замену местами шлангов чтобы по центру вместо кислорода газ запускать.

 >>/15012/
> Контакт от троллейбуса?
Только понял, что на картинке непонятен размер. Сама спираль сантиметров 13 в диаметре.
Просто взял кругляк графита, отпилил диск и выфрезировал. Чтобы не сильно пылило, разводил болотце на поверхности.

 >>/15021/
> И чем обычный газовый резак не подходит?
Резаком, горелкой или чем-то ещё на открытом воздухе нельзя разогреть большое кол-во металла. Кроме того, газ это топливо, которое нужно покупать или производить. А вот электричество это очень универсальная вещь, которое тоже нужно покупать или производить, но это легче. А если делать газовую печь, тот тут тоже есть разные нюансы. Надо же, чтобы сопло не расплавилось; газ должен куда-то выходить, соответственно, печь будет негерметичная; в газе могут быть вредные вещества, которые потом по мне же ударят; излишки кислорода будут палить графитовый тигель. Да и вообще, к сожалению, сейчас у меня такие жизненные обстоятельства, которые не позволяют заниматься химией. Даже добыть ацетилен из карбида кальция это мне очень проблематично.
Когда-то пытался переплавить горелкой оловянную мачмалу с маслом, почти не получилось (из-за масла же). А алюминиевая стружка просто имеет оксидную плёнку, которая даже в расплавленном  состоянии алюминия мешает металлу вытечь. Вывод — такие металлические жижи надо помешивать, чтобы разбивать шлак и соединять капли металла воедино. С открытым огнём это будет сложно.

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

 >>/15025/
> Просто взял кругляк графита
Где ты взял такой кругляк графита, если не секрет?
> Вместо этого можно было бы наделать таких графитовых спиралей
Что тебе мешает намотать проволоку нихрома и его сплавов на что либо и уложить в стенки?
Вот тут https://youtube.com/watch?v=mnYJsk041so мужик делает очень крутые печи самостоятельно, на его канале показан весь процесс изготовления.

Есть и готовые советские печи, они не так дорого стоят.

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

 >>/15025/
> Резаком, горелкой или чем-то ещё на открытом воздухе нельзя разогреть большое кол-во металла
Утепли тигель. Мощнее горелку. Забели поверхность для уменьшения потерь излучением.

>  А вот электричество это очень универсальная вещь
Сотня киловатт вытянутая из сети обесточит весь падик а то и весь дом. Мощность газовой колонки около 25 киловатт, газовый резак примерно столько даёт только на поверхность размером с пятак.

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



> А алюминиевая стружка просто имеет оксидную плёнку, которая даже в расплавленном состоянии алюминия мешает металлу вытечь. Вывод — такие металлические жижи надо помешивать, чтобы разбивать шлак и соединять капли металла воедино. С открытым огнём это будет сложно.
Не бери мелкоту для плавления, бери например куски кабеля с палец толщиной.
Отливал запчасть к машине-крыльчатку помпы. Плавил резаком в консервной банке. Перед заливом грел форму, после залива грел и тряс. Раковинка была но не очень критичная, грешу что газил сам материал формы.

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

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

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

Если уж очень надо то могу посоветовать ещё вариант-солнечный свет и приличноепараболическое зеркало. Нечто маленькое и тугоплавкое можно расплавить.

 >>/15026/
> намотать проволоку нихрома
Говно. Реально даже железяку не расплавить или расплавить вместе со спиралью.


 >>/15026/
> Где ты взял такой кругляк графита, если не секрет?
Можно просто зайти на пром юа, ввести "графит МПГ-7"/"графит блок" и появятся несколько компаний, продающие блоки или кругляки. Правда для получения придётся находиться на территории Украины.

> Что тебе мешает намотать проволоку нихрома и его сплавов на что либо и уложить в стенки?
А я так и сделал, только вместо нихрома взял фехраль и уложил в шамотный кирпич. Только вот, что фехраль, что нихром это легкоплавкие материалы, корунд ими не расплавишь. А графит может выдерживать и под 3000°C.
Есть конечно всякие тугоплавкие материалы — вольфрам, молибден. Только оксид вольфрама испаряется быстрее, чем сам вольфрам плавится. С молибденом наверное такая же ситуация, не нашёл инфы.
Хотя, если так размышлять, то и графит будет потихоньку выгорать в среде воздуха. Их надо, может быть, заливать чем-то?

Цели у меня разные. Если в малых масштабах, то хочу научиться плавить кремний, корунд, оксид циркония (всего около 2800°C). Если в больших, то алюминий, а также, возможно, сталь. Хотя я пока не знаю куда их применить. В будущем можно было бы вытокарить+выфрезировать из графита литейные машины и машину для экструзии металла (надеюсь это так работает).

 >>/15030/
> Сотня киловатт вытянутая из сети обесточит весь падик а то и весь дом
Да, с мощностью тут не густо. Но насколько я понимаю, температура зависит от степени утепления и времени, затраченного на разогрев. Наверное, и двухкиловаттной печью можно расплавить сталь за 2 дня.
> Грей дугой
Кстати, это был один из вариантов. Но я пока не представляют как можно сконструировать дуговую печь и как она вообще работает. Но я хотел бы научиться выращивать кристаллы кремния и, может быть, корунда. Это значит, что сверху ничего не должно мешать. То есть, если дугой можно нагревать графитовый тигель, то идея живая, всё-равно для кремния придётся инертную камеру создавать, иначе оксиды всё попортят.

 >>/15037/
> С молибденом наверное такая же ситуация, не нашёл инфы.
Возьми усики которые держат середину спирали в лампе накаливания, они практически чистый молибден. На практике так они при попадании воздуха в колбу отгорают чуть слабее чем окислилась спираль, но они и греются не непосредственно а от спирали.

 >>/15035/
> Мне для закалки металла надо. А там большинство до 900 градусов.
Мелкое закаливал грея на газовой плите сняв крышку конфорки. Для совсем мелкоты типа иголок, мелких рыболовных крючков и деталей часового механизма такое не подойдёт по причине окисления и выгорания углерода с поверхности вне защитной атмосферы. А болт на 10 или даже кусок водопроводной трубы или зубило закалить самое то. Проблема только что в масло или масляную эмульсию дома совать не вариант а вода не совсем то.

 >>/15037/
> плавить кремний, корунд, оксид циркония
Дуга, плазмотрон с инертным газом, лазер, конденсированный солнечный свет, электронным пучком в ваккууме.

> Наверное, и двухкиловаттной печью можно расплавить сталь за 2 дня.
Вроде намного быстрее. ТЭН до красна прогревается за минуты. Если утеплить например асбестом, слюдой или чем подобным то думаю минут через 5 сплавится в калышку из смеси нихрома, изолятора и стальной оболочки. Кипятильник на воздухе почти мгновенно в подобное превращается и стекает на пол.

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

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

 >>/15037/
> как можно сконструировать дуговую печь
Самая простейшая это угольный стержень от батарейки или щётка с высверленной на торце ямкой и грифель от простого карандаша. Всё это включается в разрыв цепи электроплитки или утюга.
 РАБОТАТЬ В ОЧКАХ В ПРОВЕТРИВАЕМОМ ПОМЕЩЕНИИ!!! И не лезть под напряжение с голыми руками и ногами!
В ямку засыпается плавимое содержимое, подносится пассатижами центральный электрод, дрочится об щётку до зажигания дуги и несколько отдаляется. После нескольких попыток опыт удержания дуги придёт сам собой. Плавил так борную кислоту со всякой сранью для получения люминофоров. Получалось но светили крайне мало потому что не добавлял висмут в качестве активатора, просто не знал что он тогда был в любой аптеке в желудочных таблетках а сплава вуда его содержащего под рукой не нашлось.

 >>/15045/
> Дуга, плазмотрон с инертным газом, лазер, конденсированный солнечный свет, электронным пучком в ваккууме.

Подумал и выделил для себя 3 наиболее перспективных способа: сопротивление, электрическая дуга, индукция.
> лазер
Для большого кол-ва металла точно не подойдёт, где я возьму лазер на 2 кВт?
> конденсированный солнечный свет
Думал когда-то над вариантом взять много мощных светодиодов и сконцентрировать пучёк света на одной точке. Сложнова-то, надо подводить охлаждение. Зато, потенциально, можно с далёкого расстояния плавить (¬‿¬ ) ... ━━━★

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

> И графит всё попортит. Получится карбид кремния.
А об этом я не подумал. Ну, тогда, керамический тигель понадобится, мб из того же корунда.

 >>/15060/
> Как я понял, для дуги нужен т.н. осциллятор, устройство, которое как раз высоким напряжением зажигает, но поддерживает низким.
Не обязателен. Загорается дуга при старании и от 12 вольт, от 24 уже вполне уверенно.
 >>/15060/
> не понял зачем электрод в середину, он же замкнёт через расплавленное вещество
Да пусть замыкает. Расплавленное вещество не сверхпроводник, прохождение тока его и греет. 
> сработает автомат
Так через сопротивление, например спираль утюга или плитки короткого замыкания быть не может.
> Лучше сделать новую, но с меньшим шагом спирали
Отъебись от спиралей. Возьми здоровенную графитовую щётку, сточи середину на половину и в ней сделай ложбину. Останется там четверть сечения, основное тепло будет выделяться где наибольшее сопротивление. Запитай от сварочника или от автомобильного аккума-его достаточно чтобы гаечный ключ которым его завкоротили расплавить а утеплённое корытце на пару куб см прогреет точно до овер 2000 градусов на минуту.

 >>/15060/
> керамический тигель понадобится, мб из того же корунда.
Рассмотри вариант с трубкой от днат, она там из довольно тугоплавкого. Для корунда не пойдёт но для менее тугоплавкого вполне годно.

 >>/15061/
Взял я кусочек графита, выфрезировал гравером середину настолько, что чуть ли не ломается. Всё-равно сопротивление >>/rus/15062@1331
Похоже, внутрення колба как раз из корунда и состоит. Для кремния или стали должно хватить, но мне легче просто корундовый тигель купить.

 >>/15045/
> грея на газовой плите
Это всё колхоз и не подходит. Надо калить определённые марки стали, при определённой точно выставленной температуре. А потом ещё проводить отпуск. И надо чтобы при закалке изделия не слишком сильно вело в размерах. После закалки проверка твёрдости на твердомере. Все мастера так делают. Это просто печки для другой цели.

 >>/15065/
> колхоз и не подходит.
Смотря для чего. Сделать из болта метчик или из гайки плашку и закалить или согнуть из шинки лезвие для плоскореза вполне нормально. А например крючки для мормышек если подойти к вопросу с наукой тебе и японские спецы на лучшем оборудовании с нужным извратом(переменные закалка, цементация и отжиг по профилю и длине) не закалят.

thumbnail of code0.png
thumbnail of code0.png
code0 png
(13.54 KB, 456x258)
thumbnail of code1.png
thumbnail of code1.png
code1 png
(7.16 KB, 320x210)
thumbnail of OMORI OST - 081 Splintered Sweets In The Castle-HLHvRifRS9U.webm
thumbnail of OMORI OST - 081 Splintered Sweets In The Castle-HLHvRifRS9U.webm
OMORI OST... webm
(1.41 MB, 0x0)
thumbnail of zamazan10topsecretwarbase.png
thumbnail of zamazan10topsecretwarbase.png
zamazan10t... png
(1.44 MB, 384x4224)
Я зашёл в тупик. Ввёл недавно iterexpr перечисления ((x:y:z)) в некоторой степени, но когда начал reduce, всё пошло как не надо.
Почему часть Лайси я раскрываю через другой Лайси, а часть компилирую в LLVM IR? Желательно побольше раскрывать через сам Лайси. Вот for у меня сейчас компилируется в LLVM IR, но почему бы не в лайсишный while? И вот редюс тоже надо было раскрывать через Лайси, а не пытаться комплиировать. Это же как тензорные операции, вообще-то.
Мне надо пересмотреть архитектуру компилятора. Хоть я уже много раз и разрисовывал схему работы Иколайси, как коды преобразуются, препроцессируются и компилируются, многие нюансы я не учёл и теперь у меня лапша в коде, причём отдельные макаронины расслаиваются на две в середине.
И вообще, мне уже надоедает заниматься Лайси. Я-то собираюсь доделать, это нельзя бросать. Ну, допустим до версии 0.8 + few либрариес, а потом бросить на полгодика-год, пока интерес не вернётся.
Жизненные обстоятельства не те, чтобы заниматься написанием не очень полезного софта. Я задолжал одной организации некоторую сумму денег. Правда, в тот же день вернул забыл из дома достаточно paper-бумажек взять. Но если просмотреть дальше, то видно, как миллионы людей по всему миру развиваются, пока я тукдуюсь в Лайси. Особенно, те кто родились раньше меня. Например, Илон Маск, родился очень давно и теперь в топе самых богатых миллиардеров, ещё и с ракетами что-то там интересное делает. С другой стороны, миллионы маленьких, бедных вась пупкиных даже и не осознаёт положение дел, вместо этого с кубиками какими-нибудь играют.
А я развиваюсь очень медленно, ни наук нормально не знаю, почти ничего не умею, даже собственным разумом пользуюсь неэффективно.
Вот действительно, с Иколайси надо заканчивать в этом месяце!

А если по теме смелтерсайда: я попробовал сделать устройство для дуги, в итоге чуть не взорвал аккумуляторы. Похоже, действительно для неё крайне желательна инертная атмосфера и побольше вольт. До такого мне далеко, так что индукционка или графитовый тэн ближе. Я попробовал выфрезировать новую спиральку, но из-за нескольких ошибок запорол заготовку. Хотя, даже если я сделаю такой тенчик, хотя бы на 3 Ома, к 220 вольтам его подключать нельзя. И тут выходит, что пора возвращаться к тому, что я сначала хотел сделать — линейный блок питания для индукционки. Для него мне надо только научиться наматывать трансформаторы, а для этого нужен сердечник! И за всё это время я его не добыл...

 >>/15080/
>  Для него мне надо только научиться наматывать трансформаторы
Я с этого начинал, хотя сгоревший паяльник починил и начал паять в 5 лет, раньше чем попробовал написать первую букву.

> А я развиваюсь очень медленно
А нахуя оно надо в этой ёбнутой стране? Развивался до ремонта всяких электронных йоб и монтажа кип газокомпрессорных станций. Потом послал это дело нахуй. Дауншифнулся до земледелия но и это послал нахуй и вернулся к первобытному собирательству, после  перестал использовать и орудия труда- скребки. Денег и свободного времени стало больше.

 >>/15083/
> вернулся к первобытному собирательству
Все люди нужны, все люди важны. Ты маленький человек, но бывают люди и большие или потенциально большие. Им нужно разиваться в разных направлениях, чтобы заполучить желаемое.
Вот, захочет человек насинтезировать пару тонн азотной кислоты для хобби и вдруг окажется, что наилегчайший способ — купить уже готовое оборудование, а не собирать из... грязи? Финансовый бекенд поможет.

> хотя сгоревший паяльник починил и начал паять в 5 лет
Круто, а я только программированием начал заниматься в подростковом возрасте. А учить всякие точные и не очень точные науки чуть раньше, но даже не в раннем возрасте, а за год до начала в самих учебных заведениях.
Вместо этого я в детстве мечтал о чём-то, рисовал планету, которую хочу создать в будущем (я подразумевал срок лет 100-300 на развитие до такого уровня) и играл в комплюктер. Ещё и был терпилоидом. Думал, что не могу уйти от родителей до 18 лет, так как их могут посадить в тюрьму, лишить чего-то по закону или что-то типа того. В итоге сбегал несколько раз. В последний раз зимой в лес, так и осознал свои реальные возможности. Как минимум то, что я не справляюсь с собственной психикой и, даже, почти не планирую собственные действия. Стал более приземлённым и осознал, что отстаю в развитии лет на 8 (по моим личным меркам).

Наверное, люди по началу развития в своей основной деятельности делятся на 4 группы — нормальный ([0;10) лет), подростковый ([10;20) лет), поздний ([20;30) лет) и дегродский (30+ лет) благо, если человек хоть в дегродскую группу попадёт, на старости лет повеселится. И я вот-вот начинаю заниматься своей основной деятельностью и попал в позднюю группу. За свою жизнь я не сконструировал ни одного робота, разве что одну робоподобную сущность (и то в поздей группе). Помню в моей школе когда-то происходила выставка чего-то там в актовом зале. Одним из лотов был мальчик, который тяжело дыша, но гордо говорил "Я винахідник" (Я изобретатель), хотел показать своего робота. Я заинтересовался, чего он там сделал со своим конструктором, но был слегка разочарован. Его робот представлял из себя консервную банку с прикрученными фломастерами и вибромоторчиком. Моторчик включается — банка крутится и робот типа рисует круг. В первый раз он ещё разлетелся.
Несмотря на такой результат, этот человек вполне мог попасть в подростковую группу (если робототехника это его основная деятельность), а то и в раннюю.

В раннюю группу ребёнок может попасть под строгим патронажем. Если родитель богатый, щедрый и не пытается нацепить на ребёнка свои комплексы, то есть большой шанс, что ребёнок попадёт в раннюю группу.
Примерами является манга Doctor Stone. Там ГГ Сенку в детстве подарили десятки научных штуковин и в итоге во взрослом возрасте он объединил человечество, откатившееся в каменные века, дал ему интернет, компьютеры на параметронах и всякую всячину.
Ну ладно, это выдуманный пример. Если посмотреть на реальные, то вроде бы автором http://sam.zeloof.xyz/ является очень молодой парень, но там не всё чисто может это рекламная кампания?, этот пример тоже на грани выдуманного. Но я прикидывал, если ребёнок начнёт учить высшую математику лет в 5 и не будет тратить время на ерунду типа обязательного конкурса бальных танцев в первом классе, то почему бы и нет? Хотя и денег понадобится изрядно.

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

 >>/15302/
> Вот, захочет человек насинтезировать пару тонн азотной кислоты для хобби и вдруг окажется, что наилегчайший способ — купить уже готовое оборудование, а не собирать из... грязи?
Так проще купить саму кислоту или прекурсоры. Или ты предлагаешь самому из болотной руды добыть железяку, выковать прооволоку и сердечники, собрать из чурбаков и железяк гидро или ветрогенератор, намотать высоковольтный преобразователь изолируя мхом и еловой смолой, запалить дугу в неком подобии трубы из глины и продувать мехами воздух через дугу в раствор золы ради получения нитрата?

thumbnail of z.png
thumbnail of z.png
z png
(80.7 KB, 1034x860)
thumbnail of buambula.jpg
thumbnail of buambula.jpg
buambula jpg
(6.35 KB, 256x256)
Ух, ну вы и понаписали.

Мои психические проблемы плавают. Только в последние несколько дней я смог заставить себя позаниматься Иколайси. Наверное, это бич поздней разработки Иколайси. Я почти опоздал. Скорость моих действий не поспевает за возрастом. В частности, я до сих пор пишу некоторые проекты на C/C++, так как Лайси не готов. Из-за этого приходится перебрасывать бойлерблейты из пустого в порожнее. А если бы я был умным, то уже бы давно ускорился везде.
Или может у меня на самом деле депрессия, вызванная снижением социальных контактов, а я на последних каплях держусь, так как я на самом деле сверхчеловек и просто могу.

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

Так ладно, если по смелтерсайду, то намотал какой-то трансформатор. Додолбал бывший МОТ за один день, а потом сидел наматывал проволоку. В итоге, как мне показалось, закоротило между обмоткой и сердечником (что?). Я его не разбирал и оставил на потом. Я короч решил купить в КНР блок питания, надеюсь не обманут.

Ладно, хватит писать ахинею, пора действительно закрывать браузер.

thumbnail of aarr.png
thumbnail of aarr.png
aarr png
(20.77 KB, 500x400)
thumbnail of noita.mp4
thumbnail of noita.mp4
noita mp4
(11.45 MB, 1280x720 h264)
thumbnail of tongue.jpg
thumbnail of tongue.jpg
tongue jpg
(23.34 KB, 360x360)
Я до сих пор не сделал Иколайси v1.0 и Laisi v0.8. Некоторый прогресс есть, но я ещё даже не полностью перешёл на новые архитектурные нововведения. Хотя я просто перебросил обработку кода из компиляции в обработку. И ещё с Named-типами что-то там.
Я взял больше работы и теперь мне не хочется делать ни работу, ни свои проекты. Ненавижу, когда ТЗ нечёткое. Иногда бывает, что раз сделал — получил. Всё за один день. Бывает, что задание чёткое и не сложное, но растягивается на дни-недели. А бывает, что и не чёткое, и растягивается. Ещё иногда приходится использовать еретические маздай или громоздкие линукс иксы, малинка технологии.

 >>/14998/
> Может уже пора выпускать в этом месяце Laisi v0.8 и Иколайси 
Ахахаха, а я смотрю, ты до сих пор не научился ни планировать, ни предсказывать, ни проявлять волю в нужных концентрациях.
Вангую, что Иколайси v1.0 не выйдет даже в этом году.

 >>/15371/
> Мои психические проблемы плавают
Ану пусть уплывают вниз. УСПОКОЙСЯ. Почему бы тебе просто не заткнуться? Тебе мозги даже не полоскали, а вона как спаялись.

thumbnail of checklist.png
thumbnail of checklist.png
checklist png
(21.73 KB, 309x615)
thumbnail of what.png
thumbnail of what.png
what png
(10.13 KB, 400x189)
thumbnail of noita2.mp4
thumbnail of noita2.mp4
noita2 mp4
(5.87 MB, 640x360 h264)
thumbnail of reg v kostyume faputy.jpg
thumbnail of reg v kostyume faputy.jpg
reg v... jpg
(900.43 KB, 850x1266)
Так-с. Я сделал чеклист, который надо выполнить перед выходом Иколайси в v0.8 Laisi.
Жаль, что Лайси проект не монетизируемый...
Несмотря на то, что я немного поменял архитектуру, в некоторых местах стало сложнее, особенно если заново. Но в некоторых полегче.
Кстати, посмотрите на what.png, вот кому придёт в голову (abc var1).b писать код таким образом? А мне приходится поддерживать даже такое написание.

Что я хотел написать в том посте, когда решил закрыть браузер, так это то, что почему в электронике ламеры? Нельзя нормально изучить электронику по книгам или гайдам, книги и гайды это просто дополнительная литература. Электронику надо изучать подробно, по полочкам, понять зависимость между током, заряжаемым конденсатор и его зарядом, как он своим напряжением отнимается от напряжения питания. Как транзисторы работают, если поля это электродинамика, то в электронике хотя бы просто зависимости смотреть надо.
Но вместо этого везде какие-то слабенькие гайды и книжечки "смарите какая схема". Та же хвалёная книга "Искусство схемотехники" это просто чушь. В первый раз пытался прочитать и мне показалось, что там чуть ли не обман написан или бред или чушь. Во второй раз понял, что имел ввиду автор, но я всё-равно бросил эту книгу. Надо подробные законы для каждого элемента понять. И не будет тогда никаких проблем, мол шум от резистора уничтожил полезный сигнал или что там бывает. Не нужно быть сверхразумом, чтобы в глазами пережигать лишние перемычки. Это как пытаться учить программирование по ответам из stackoverflow.
Гадость, короче. Науки лучше учить по методичкам, таков мой опыт. Мне надо изучить все разделы физики, чтобы лучше понять устройство этого мира на низком уровне. Только когда следует этого делать, если я сейчас пишу этот пост? Наверное, как допишу, пойду учить физику.

А чтобы понять мир на высоком уровне, надо понять главных игроков — людей. И научиться планировать. Я не понимаю, как люди планируют и высокий интеллект? Я видел в аниме, как персонаж очень легко уворачивается от ударов, которые ему пытаются нанести. Наверняка, в реальности тоже так можно с некоторыми нюансами. Есть т.н. Теория Игр, раздел математики. Хотел почитать книгу по ней, но нарвался на научпоп, где обговаривались просто несколько интересных случаев, где следует мыслить стратегически. Но этого же недостаточно! По-хорошему человек должен всё время осознавать все объекты, находящиеся вокруг него и строить планы исходя из них. Ограничения будут разве что по вычислительным мощностям. Но нет, вместо этого люди действуют по совершенно неясным паттернам, их логика не понятна, что они вообще делают, как они существуют? Как люди мыслят, что мне нужно делать, чтобы предсказать их поведение? Я даже своё поведение не предсказываю.
Тем не менее, я уже получил немного опыта и могу сказать, что чтобы доделать Иколайси, по-хорошему мне надо по 2-3 теста в чеклистах исполнять. Но я понимаю, что я этого не сделаю в связи с измененим настроения. Поэтому хорошим выбором будет до конца этого месяца в каждом из нескольких дней ввести по 10 тестов! Шаг уже неплохой, непонятно только как это исполнить.
Когда я в детстве был, то всё время делал тупо — раз и сделано. В шахматы почти всё время проигрывал.

Кстати, вы можете сдеанонить меня, но не надо пока этого делать. Чем позже — тем лучше.

На самом деле не стоило мне писать этот поток сознания. Ну, я хотя бы тред не перепутал.


thumbnail of skeleton-down.jpg
thumbnail of skeleton-down.jpg
skeleton-down jpg
(447.4 KB, 1698x2181)
 >>/15832/
> Зачем? Зачем вы продолжаете, лик-кун-сан? Это всё бессмысленно, всё-равно ты не доделаешь свой Лайси и его компилятор-интерпретатор Иколайси. Даже при достижении 99.9%-го прогресса всё-равно бросишь. В самый последний момент. Ты забыл, что стало с твоим ивсворкос? Такая же судьба ждёт и твой проект.
> Человек не должен производить продукты, которые ему нравятся. Всех уравняет смерть. Лучше бы метом закинулся, хоть какое-то удовольствие получишь. Мог бы пойти на днищеработу за $10000 в месяц и жить не дуя в ус.
> Нет смысла бороться в этой стране. Никто не сможет победить пынепидора. Рано или поздно силовик прийдёт в твой дом, лишит зрения и слуха, а ты даже не успел собрать устройство для взаимодействия с миром посредством осязания. И всё из-за лени. Разве ты сможешь побороть лень? Смертный грех, против которого ничья воля не сильна. Не белая лень, позволяющая автоматизировать процессы и снизить уровень рутины, а чёрная лень, уничтожающая и так несущественную суть бытия человека.
> Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние. Отчаяние.
> 10xОтчаяние = Уныние. Все люди унывают, и ты заунъёшь. А часики-то тикают. Ещё пара лет и твой сознание полностю отключится. Будешь жить как все. Сначала алкоголь, потом армия, затем рабство и в конце смерть.

thumbnail of a.png
thumbnail of a.png
a png
(28.87 KB, 461x662)
thumbnail of b.png
thumbnail of b.png
b png
(60.72 KB, 1299x707)
thumbnail of yumeriska.png
thumbnail of yumeriska.png
yumeriska png
(1.42 MB, 1600x1600)
Аааа, скоро Новый Год. Это один из немногих праздников, которые я признаю.
Успею ли я доделать Иколайси до конца этого года? Спойлер: нет
Мне осталось ввести ещё 20 тестов. Если считать в фичах, то недавно добавил одну: enum (хотя я её уже добавлял в питоновской версии Иколайси).
Несмотря на то, что тесты уже использовали готовый функционал, всё-равно пришлось кое-где допиливать. Там не работало то, там сё.
Вот, только что доделал тест test_index.lic. Хотя мне пришлось стейт-машину в одной функции сделать лолчто?. Мне стоит поучиться производству архитектур из книжек.

Ну ладно, позравляю с наступаящим Новым Годом, надеюсь у меня всё станет получше и не немного, а сильно.
Недавно я подпонял планирование, в частности, когда 2 стороны пытаются предсказать действия друг-друга.
Например X и W играют в камень-ножницы-бумага:
X: Хмм, W недавно видел камни, а его психика проста, значит он загадает камни. Я загадаю бумагу, чтобы выиграть.
W: X подумал, что я загадаю камень, значит он загадает бумагу. Тогда я — ножницы.
X: А, так W и об этом подумал, Ок, я выбираю камень.
W: Конечно же, X это предсказал. Бумага.
...
В конечно счёте, всё сводится к бесконечным итерациям, но чем дальше, тем сложнее предсказать действия противника, вероятности дробятся. Одни из выгодных шагов это начать действовать случайно, так как собьёт мысль противника.
Конечно, это и так было всем не глупым людям понятно, но мне нужно описывать знания словами, чтобы превратить в мышлебельную форму.
Так-то планирование заключается в выгодному противостоянию оппоненту, а для этого надо знать, по каким правилам оппонент существует. Если это алюминий, то ясно, что он расплавится при ~660°C нормальном давлении. Погода посложнее, нужна метеорология. А вот разум отдельного человека может стать охохох.


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

thumbnail of coude.png
thumbnail of coude.png
coude png
(45.21 KB, 565x1231)
thumbnail of ahhh.png
thumbnail of ahhh.png
ahhh png
(219.38 KB, 600x1000)
thumbnail of whenyouforgetwhatisgoingon.mp4
thumbnail of whenyouforgetwhatisgoingon.mp4
whenyouforgetwhatisgo... mp4
(3.99 MB, 680x440 h264)
thumbnail of OMORI OST - 055 High Fructose Headache-O3jZEHAEIDA.webm
thumbnail of OMORI OST - 055 High Fructose Headache-O3jZEHAEIDA.webm
OMORI OST... webm
(1.36 MB, 0x0)
Только недавно осознал, что надо бы классы обозвать wrapper (или wrap, wrapped) Так как это и не классы вовсе
Но это уже дело будущего. Я всё ещё не знаю, как сделать нормальную архитекутуру Иколайси. Пописал кода из башки и ещё один тестик заработал.

Ну ладно-ладно, это просто процесс написания Иколайси и дизайна его языка программирования Лайси. А если обернуться насквозь, то можно обнаружить, что:
Нярнонки уже давно умеют рисовать изображение по контурам и на имagебордe ████ач я увидел видео, где рисуют аниме-персонажей. Ну в принципе и что тут думать? Можно было бы обучить нейронку обводить контуры, добавить немного своей заливки цвета (надо погадать с обучением) и можно генерировать высококачественные рисунки даже просто из 3D-сцен. Персонажей нейронками, а окружение просто тун-шейдером. Кстати, тун-шейдерное тоже можно обработать нейронкой pix2pix, чтобы придать мультяшный вид.
Буду ли я этим заниматься? Было бы интересно попробовать, но у меня так много дел...
С современными технологиями и школьник может нарисовать своё аниме мультфильм. Ну, или если он японец, то даже аниме. Главное — правильно написать программу.
И вообще, что там ████████ с этим ИИ? Я предполагаю, что и человек может получить perk lol ███████████████████. Конечно, способ мышления может и значительно отличаться, но если с логикой всё в порядке, то скорость получения знаний зависит от вычислительных мощностей. В случае человека и от его индивидуального поведения

Кстати, насчёт нейронок. Ну сделал недавно я классификатор, в будущем, потенциально, лишивший нескольких людей работы или просто переведя их в другой отдел. Передал главному инженеру (?) .img-файл со всеми этими линуксами и весами. А он взял и попробовал ОТВЕРНИСЬ НЕТОВАРИЩ СИЛОВИК запустить его на десктопе! Загрузочную флешку для ARM-компьютера на обычном ПК? Чтооооо? Вот так всегда, не надо верить стериотипам. Если человек разбирается в одной узкой области (например, настройке нановолновок LazerGANson X542-L0Z2 в чётные дни весны), то это не значит, что он будет разбираться и в других областях (например в настройке любых нановолновок). Даже если вы встретите бога (!), то не удивляйтесь, если он не сможет запечь картошку. А может быть божественность это как раз наоборот узости?777? Ну да, условный бог проклятий, бог дождя, бог золота или бог нефритового стержня, но это не значит, что их сила ограничена титулом.
Что насчёт божественности и The Perk, то я как раз недавно поиграл в логическую игру Escape Simulator и вывел 3 важных урока:
0. Если меняется какая-то определённая часть в разных объектах, то не всегда надо смотреть на изменённые части, так как изменение лишь части меняет некоторые свойства всего объекта. Очень сложная загадка была Спойлер: Это где надо искать разницу между тремя молекулами
1. Иногда надо включать "детский разум". Подразумевается, что надо понизить уровень абстракции, чтобы найти фичи на другом уровне. Помните ту загадку типа 8x + 8 = 4, 2x + 0 = 1, где надо было тупо посчитать кол-во кружочков в циферках? Вот про это и оно. Это, конечно, слабенький урок, скорее напоминание, но важность тоже велика. Спойлер: Это где надо было цифры из названий химических элементов собрать
2. Не всегда надо логические операции применять, но и арифметические! На этой загадке я прям сдался и пришлось подсказку клянчить. Спойлер: Это когда надо было цены на еду сложить, а не первые цифры выбирать
Хотя арифметическая операция это очень сложная логическая, но помните же про контекст! Деньги, это то что складывается и отнимается. Арифметика!

thumbnail of gg.png
thumbnail of gg.png
gg png
(28.9 KB, 388x396)
thumbnail of outimg.png
thumbnail of outimg.png
outimg png
(1.98 MB, 1920x1080)
Когда-то я тут писал, что незнаю как бы в Лайси была бы реализована свёртка в одну строчку. А это и не надо.
Есть 2 варианта:

float[10][10] convolved;
float[12][12] input;
float[3][3] kernel;

0. Через each:
x,y in each (0:10),(0:10) {
	convolved[y][x] = (input[y:y+3][x:x+3]*kernel[:][:]){+};
}

1. Через лямбда-функцию (?):
convolved[:][:] = lambda (float,[usize x,usize y]) {return (input[y:y+3][x:x+3]*kernel[:][:]){+}} ((0:10),(0:10));

Ни того, ни другого в грядущей версии 0.8 не планируется.
Но как видно, each неплох, но анонимные функции полезны и в других местах коллбеки для ГУИ-элементов

thumbnail of checklist.png
thumbnail of checklist.png
checklist png
(63.69 KB, 1329x762)
thumbnail of import.png
thumbnail of import.png
import png
(26.08 KB, 552x446)
thumbnail of kak ni stranno, horoshyye kabluki.gif
thumbnail of kak ni stranno, horoshyye kabluki.gif
kak ni stranno,... gif
(5.57 MB, 600x450)
thumbnail of wtfanimation.gif
thumbnail of wtfanimation.gif
wtfanimation gif
(6.43 MB, 800x450)
2 дня пытался ввести test_import.lic, но до сих пор до конца не сделал.
Осталось только define LST import path. Это тогда, заимпортятся все библиотеки из path, а в LST будет список имён этих библиотек. Это нужно для модулей. Например, у библиотеки графического движка может быть несколько библиотек-модулей бекендов рендеров.
К тому же, у меня сломалось 2 теста. Придётся смотреть что там исправить.

Когда же я уже доделаю этот Иколайси? Сколько я его делаю, больше трёх лет?
Мне даже без вывода ошибок достаточно, мой-то язык программирования. Мне надо написать все нужные библиотеки: и ядро, и математику, и графический движок перенести и ГУИ-движок, ещё неплохо было бы спрограммировать всякие физические движки, чтобы симуляции смотреть.
Вроде и немного осталась, а вроде и половина тестов. При этом фич несколько, а работы многовато.

Кстати, недавно я снова тронул свою заготовку для графитового тэна. Написал ПО, для управления станком прямо с пайнфона! Хотя оно багованное, команды копятся быстрее, чем исполняются, так как моё ПО для управления станком медленноватое. Придётся исправлять, если понадобится ещё. Всё-равно пыль всё заслоняла и нафрезировал кружочек чего-то бесформенного и хрупкого в одном месте. Легче чисто для моей заготовки нарисовать путь вручную и отправить его на фрезировку автоматически режимом.
Ещё моя концетрация была расфокусирована и мне в голову пришол образ как я в отладочном режиме управляю станком с компа далеко и что-то с бумком ломается. Да... страшновато. Может быть, в будущем я так взорву что-нибудь водород или ДВС. Но это лучше, чем себя.

А пайнфоновское ПО KDE Plasma для мобильных устройств продолжает удивлять. Недавно был тупо чёрный экран после введения пароля и входа в графическую сессию.
Я думаю, дело было так: Сверху есть выдвигающая менюшка как обычно в андроид-смартфонах и там можно изменить яркость экрана. Но её можно изменить до полностью чёрного! При этом там и само по себе иногда меняется яркость экрана (какой-то умный ночной режим?). Наверное, что-то такое и случилось до чёрного цвета.
Но это же линукс, так что я просто подлкючил клавиатуру и удалил .config

 >>/16312/
> заготовку для графитового тэна
А ТВЧ ты пробовал? Или индуктивность не даст нужной температуры? Там ведь внутри спирали, в медных каналах идёт охлаждение водой.

 >>/16313/
Ну, сталь как минимум плавит. Этого должно хватить на первое время...
Вот-вот должен прийти из КНР блок питания для индукционного нагревателя.

Но я боюсь вот чего: он создаёт сильные магнитные поля и расплавленный материал двигается по ним. Не помешает ли это, например, выращиванию кристаллов методом Чохральского? Хотя, может это поможет перемешивать материал.
В любом случае, хорошо иметь 2 варианта. К тому же, лучше пораньше научиться и графитовые тэны производить, может понадобится в будущем для больших печей (маленький тэн компактнее чем шкаф с кондесаторами).

thumbnail of c0.png
thumbnail of c0.png
c0 png
(62.38 KB, 1282x712)
thumbnail of c1.png
thumbnail of c1.png
c1 png
(25.09 KB, 539x559)
thumbnail of c2.png
thumbnail of c2.png
c2 png
(87 KB, 922x922)
thumbnail of eto sonic?.jpg
thumbnail of eto sonic?.jpg
eto sonic? jpg
(90.4 KB, 1280x720)
Недавно я осознал, в моей же архитектуре Иколайси слои абстрации перемешаны!
Слой парсинга напрямую обращается к слою препроцессинга (когда именованый тип или темплейты там).
Я уже где-то 5 лет программирую (поздно вошёл), а архитектуры нормальные так и не научился выдумывать. Теперь перед каждой разработкой ПО было бы неплохо сидеть, на бумажке писать. Надо научиться нормальные архитектуры, а то что я как дурак сижу?

Но в новой архитектуре, которую я придумал, тоже есть странности. Получается, и препроцессинг и большая часть парсинга находится на одном слое. Там они вызывают друг друга при темплейтировании/именованых типов и варят единый токенокод. Затем идёт второй слой абстракции, который берёт токенокод и преобразовывает снова в токенокод! Ну, ещё ошибка всякие выискивает... А надо заново преобразовывать, так как перед компиляцией всякие forы и тензорные операции (z[:][:] = x[:][:] + y[:][:]) преобразуются в while-цикл. Надо будет сделать возможность указывать, какие штуки преобразовывать в другие. То есть, векторные операции для условных интов и флоатов в вайл не надо, его можно через LLVM IR векторными операциями принять. Это когда операция большей размерности или это неэлементарный тип и каждый раз вызывается перегруженная функция.
Ну а третий слой абстракции просто компилирует токенокод в LLVM IR, а оттуда ELF, EXE, etcFF или в процесс (что я называет интерпретированием кода в процесс. Поэтому Иколайси — интерпретер-компилер оф лайси)

Ввёл почти ничего. typeof, например. Ради него и проивзодился прошлый переход на новую часть архитектуры. Когда, чтобы получить результирующий тип операнда, не его компилировать в LLVM IR.
Но всё-равно, выглядит странно. Чтобы получить тип члена, надо декларировать переменную. Бзе тайпофа не получится нормальные темплейты делать (даже liblaisiшные функции max, min, argmax, argmin).
С import я повременил. Начал писать плохой код, мотивация пропала и я перестал писать плохой код.
Чего-то там с тензорными операциями сделал. Снова ввёл, пару часов пытался решить баг, которого не существует.

thumbnail of sample.png
thumbnail of sample.png
sample png
(6.62 KB, 322x195)
thumbnail of compiled.png
thumbnail of compiled.png
compiled png
(40.6 KB, 773x448)
thumbnail of checklist.png
thumbnail of checklist.png
checklist png
(55.35 KB, 590x669)
И это всё, чего я добился за 3 года полудействия? Хорошо, хоть типы компилируется. Даже если без методов...

Новую архитектуру я, конечно же, сейчас вводить не собираюсь.
Но лучше бы начать программировать нормально уже сейчас. UnfoldTensorExpr следует редизайнить, учтя все необходимости. У меня, допустим, реализованы поэлементные операции между "тензорами", но это происходит только для переменных с индексами. А кроме них есть ещё SSS/iterexpr и списки. Надо заредизайнить и описать алгоритм. Ещё и анфолдинг фора заредизайнить.

У меня есть 2 основные цели — маленькая и большая. Создать Иколайси — маленькая. Не вижу в ближайшее время никаких преград для разработки Иколайси, так что это время — наилучшее. Когда я вырасту, времени на софт будет поменьше.

thumbnail of test_tensor.png
thumbnail of test_tensor.png
test_tensor png
(41.35 KB, 597x763)
thumbnail of OMORI OST - 053 I Prefer My Pizza 90% Grease-PzH1RNhS57w.webm
thumbnail of OMORI OST - 053 I Prefer My Pizza 90% Grease-PzH1RNhS57w.webm
OMORI OST... webm
(901.44 KB, 0x0)
Я зашёл в тупик.
Похоже, надо снова переписывать Иколайси. Но на этот раз постепенно. Придётся новую архитектуру вводить, иначе у меня просто не получается сделать это. Вроде, из сложного остались только темплейты и тензорные вычисления, но не катит.

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

Зато, если понять собственный разум, то можно сделать и ██████████. Если он будет успешен, ██████ и вычислительно не сильно дорогой, то можно будет размножить ███ и поставить зарабатывать ██████. Пусть всякие ████████ рисует или картинки. Может по меньшей цене, но за риск. А потом писать ███ по моей архитектуре. А потом и саму архитектуру придумывать. Это звучит страшно, но выглядит неизбежно.



thumbnail of how.jpeg
thumbnail of how.jpeg
how jpeg
(220.87 KB, 1600x1091)
thumbnail of skala i les.jpg
thumbnail of skala i les.jpg
skala i les jpg
(417.5 KB, 1920x1080)
thumbnail of gravyura flammariona.jpg
thumbnail of gravyura flammariona.jpg
gravyura flammariona jpg
(224.52 KB, 770x600)
thumbnail of shar vnutri.jpeg
thumbnail of shar vnutri.jpeg
shar vnutri jpeg
(318.64 KB, 846x1200)
Недавно я пытался разработать ██████, а в итоге одна баночка вдребезги.
Разрабатывать это так сложно, но я кажется понял кое-что.
Очень маленькие проекты (простые скрипты, литой попрыгнучик, ручка для ящика) можно делать и в автоматическом порядке, мозг сам как-нибудь итеративно найдёт результат.
В то время как для больших проектов надо придумывать архитектуру, чертёж, темплейт, 3D-модель, XD-модель, абстрактную модель. В случае сложного ПО это архитектура, надо продумать её досконально, добавить путей для расширения и изменения. В случае машины надо сделать что-то типа чертежа, где указан список взаимозаменяемых деталей и как их характеристики влияют на характеристики других деталей. То есть, если нам нужен вал диаметром 5 мм, но в некоторых нетрущихся местах он может быть и до 10 мм, то зачем выбрасывать уже существующий ресурс, подходящий таким характеристикам? Единственное, что, машины разрабатывать лучше в специальном ПО, чтобы оно автоматически расчитывало массу, тензор/моменты инерций, габариты отдельных секций. Они могут повлиять на характеристики других деталей, например, минимальный момент сил, который может развиваться двигатель. Также в случае машин следует предусмотреть пути для дебаггинга, чтобы дебаггинг был лёгок и доступен. Пути для расширения могут понадобиться разве что в очень больших машинах или целых зданиях. В случае пректирования в общем смысле физических предметов надо ещё учитывать то, как он будет создаваться. Если надо спаять что-то в узком месте, то надо просчитать порядок действий так, чтобы паяльник поместился.
За свою жизнь я сделал где-то ноль ███████. Ноль это всё-равно, что нольдесят ноль. Нольдесят ноль это всё-равно, что нольсот нольдесят ноль. Нольсот нольдесят ноль это всё-равно, что ноль тысяч нольсот нольдесят ноль. Ноль тысяч нольсот нольдесят ноль это всё-равно, что нольдесят ноль тысяч нольсот нольдесят ноль. Нольдесят ноль тысяч нольсот нольдесят ноль это всё-равно, что нольсот нольдесят ноль тысяч нольсот нольдесят ноль. Нольсот нольдесят ноль тысяч нольсот нольдесят ноль это всё-равно, что ноль миллионов нольсот нольдесят ноль тысяч нольсот нольдесят ноль. Если X ∈ множество созданных мною ███████, то X ∈ ∅, то есть X ∈ {}, потому что это пустое множество, потому-что его количетсво элементов равно нулю или, например, нулю миллионов нольста нольдесяти нулю тысяч нольста нольдесяти нулю.

И вообще, может мне Лайси полностью исполосовать и преобразовать во что-то другое? Вот пишу это и чувствуют, что это неверное решение. Мне понравился хаскелль, но я его тольком не попробовал. Функциональный язык, красиво всё выглядит. Вряд ли Лайси смог бы стать функциональным языком. Но что в нём делает метапрограммирование? Серьёзно, почему темплейты обозначаются специальной конструкцией с кейвордом template? Почему нельзя просто взять и сделать в аргументах выбор из допустимых типов? Это было бы красивее. Но я не знаю, стоит ли избавляться от метапрограммирования. Не хочу.
Кстати, Лайси вообще нужен больше для LDI — Laisi Default Libs — набор библиотек разного назначения. Почему бы ту же math нельзя было бы сгенерировать на произвольный язык программирования условным скриптом на питоне? Взял бы, указал допустимые типы и сгенерировались бы функции max_int_int, max_int_float, max_float_int, max_float_float и все-все-все. А для C++ создался бы сразу template. Но если так уходить, то со временем эти скрипты переписывались бы и переписывались бы, образовалась бы библиотека с типами для ЯП, там операнды, типы, экспрешионы, инструкции. И получился бы просто новый ЯП. Который транслировался бы просто в LLVM IR.

 >>/16442/
...

Вот и подхожу я к тому, а как же правильно разрабатывать. Я ещё не знаю как правильно планировать и познавать и к письменной форме изложения ещё не притрагивался. Насчёт познания... Помните я писал, что надо бы изучить всю известную физику? Я почти её не изучал. Притронулся только к механике. Решил понять, а что же такое тензор инерции. Посмотрел как он считается. Мне нужно доказательство. Думаю сам — так, нормализовать вектор, 2 раза сделать кросс-операцию и будет расстояние до оси... Стоп, это похоже на просто вычисление момента инерции относительно произвольной оси. А как к матричной форме прийти? Открываю статьи на хабре 2015 по тензорной алгебре и почти ничего не понимаю. Первую же статью пока не осилил, заходов где-то 3 было. Но постепенно понимается...
В чём есть проблема, так это в математических символах. В одних источникх × это умножение, в других кросс-операция. · это тоже умножение, либо дот-операция. [] () — просто скобки или не просто скобки? А эта шизофреническая сумма, где первый элемент обозначается индексом 1!!!
Ну не удивляйтесь, что школьничкам по 7-по 8 лет, а они не то что простые интегралы или диффуры решать не умеют, они даже умножают еле-еле. (на самом деле я и сам такой, до сих пор почти не знаю интегралы или диффуры. Буду изучать электронику — придётся понять)
Я так понимаю, что сама по себе физика это не сложно, сложно это её математическая основа. Не нужно много знать, чтобы понять физику, поняв математику уже. Как я понял:
switch (раздел) {
	механика материальной точки { основы линейной алгебры, операции с векторами }
	механика абсолютно твёрдого тела { тензорная алгебра }
	электродинамика, термодинамика, гидродинамика, аэродинамика { теория поля }
	электроника { диффуры, интегралы, дифференцирование, интегрирование, но для разработки серьёзных проектов надо и электродинамику знать }
	химия { арифметика, алгебра }
	квантовая физика { какая-то там странная математика или что там }
	биология { логика }
	лохотрон { софт скиллы }
}

Ну ладно, по-хорошему надо разрабатывать, разрабатывать и ещё раз разрабатывать. А не посты на imageборды писать.

 >>/16357/
Анон, совсем недавно заинтересовался твоей уже выходит многолетней разработкой.
Ты вроде пару раз упоминал таки спецификацию и документацию Лайси, но реально ли увидеть где-то в текстовом виде?
Почему бы, к примеру, не завести отдельный репозиторий рядышком с Иколайси, и время от времени вносить правки в текстовое описание, пусть даже и не шибко структурированное на первое время.



 >>/17185/
И правда, поставил.

Кстати, только узнал, что по-дефолту в линуксах символ из кода можно ввести́ Ctrl+Shift+U и номер кода (0301). До этого, приходилось только компос-кеем и копированием символа из википедии пользоваться.

Потихоньку выхожу из периода бездействия. Надеюсь, на следующей или послеследующей итерации доделаю уже Иколайси этот

Похоже, я частично понял ФП и что же я на самом деле хотел сделать в Лайси.

Я изначально хотел попробовать ФП на практике используя Хаскелль, но не получилось установить его систему. В любом случае, как я понял, есть функции. И эти функции могут иметь допустимные аргументы, в зависимости от которых будет разное поведение функции.
Например, факториал от нуля это один, а факториал от N (где N это натуральное число > 0) это N*факториал(N - 1). Вот это функции. И если мы переслать в факториал дробное число или комплексное, например, то ничего не получится, так как функции для такого типа аргумента не существует и будет ошибка компиляции/исполнения.
Тогда получается, что все или почти все языки программирования как минимум немного функциональные. Тот же Си в аргументах своих функций требует указывать тип. А в питоне можно сделать функцию, где тип не важен, но есть строго определённое кол-во аргументов (то есть обычная функция без звёздочка args и звёздочка звёздочка kvargs).

И вот в Лайси я подсознательно хотел сделать подобный функциональный стиль. Например, template with M0(mat!H!x!W!), M1(mat!W!x!N!), который показывает, что кол-во столбцов одной матрицы и кол-во строк другой должно совпадать (или наоборот, не помню).
И это, допустим, работает на стадии комплияции, так как у меня статическая типизация. А для рантайма пришлось бы использовать assert. Например, если бы были матрицы с произвольными размерами, то пришлось бы его вызывать. В то время как в ФП это надо было бы показать каким-нибудь тождеством, наверное.

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

Я так понимаю, проблемы людей в том, что им приходится угадывать, о чём думает другой. Например, чтобы на работе поставить нейросетевую штуковину, не надо напрягать мозг и самостоятельно разрабатывать. Вместо этого достаточно скопипастить код уже готовой нейросети, взять готовый датасет, собрать всё вместе. Осталось только найти облачный сервис по машинному обучения, но это не просто молодому поколению как я. Я так много смотрел веб-страницы, что весь контент, хоть немного похожий на мусор/рекламу сразу отлетает, а большая часть проверяется просто на наличие кода, ключевых слов (особенно в заголовках) и полезных изображений. Сегодня я искал видео "как сделать в XXX бла-бла-бла" и нашёл ответ в первых секундах видео. Прощай автор, больше мне твой контент не нужен.
Наверное, большая часть человеческой экономики это просто распил бабла. Не сказал бы, что это плохо, но и не сказал бы, что хорошо.
Если бы все стали такими как я, то мировая экономика обвалилась бы, могли начаться кровопролитные войны. О судьба ядерного оружия можно только гадать, 50/50.

Например, зачем человеку покупать лекарство, если он может сам его синтезировать? Варианта 2 — не смог разобраться с химией и оборудованием, либо ему просто не интересно. Мне тоже не очень интересно рисование, поэтому я не смогу нарисовать то, что сейчас считается шедевром.
Рассмотрим первый вариант. Почему человек не разобрался с химией или другой наукой, даже если ему это было интересно? Его неправильно обучали. Ему приходилось угадывать, а что же имел ввиду учитель или автор учебника. Особенно, если он пропустил пару занятий из-за болезни и весь процесс обучения пошёл наперекосяк.
Особенно такая неопределённость существует в математике. Один автор пишет так, другой другим шрифтом обозначает некоторый математический объект. И эти индексы зачем-то начинают с единицы.
Я не верю, что у многих людей нет математических способностей. Я считаю, что ребёнку впору решать те же интегралы и диффуры, ну максимум лет в 9-10 (если ориентироваться на особей с низким интеллектом). Только вчера я узнал, что же такое дифференциал. Внезапно, видео с https://youtube.com/watch?v=QKlOmT2cy6E ютуба помогло. Хотя я уже часто видел дифференциал, но хорошее видео расставило всё по местам.
Математику нужно изучать, иначе всё будет плохо. Не будешь понимать как работает твоя электронная схема, не поймёшь как вращаются предметы, и то же лекарство будет сложнова-то ссинтезировать хотя основные сложности в покупке оборудования для самого синтеза и экспериментов

Что же до Иколайси, я его не делал это время. Прошлые мысли, связанные с ФП побудили меня снова переделать Лайси. Ещё поварится, но на этот раз версия будет не 0.8, а 0.9. Напоминаю, что изначально я выпустил шизофреническую версию v0.7 Назовём её v0.7 UNIMPLEMENTED. Версия 0.8, тогда, будет не IMPLEMENTED или UNSTABLE, а вообще промежуточной. А v0.9 UNSTABLE.
Я подумываю, что Лайси следует как бы совмещать ФП и Императивное Программирование. Я планиую убрать assert и вместо этого сделать, чтобы в функции в свойствах аргумента указывалась другая функция, которая проверяет аргумент на валидность. То есть, если подаётся в vector.pop пустой вектор, то это недопустимый аргумент. И компилятор должен по каждой из "перегруженных" функций указать, что не так с аргументом, что функция его не принимает. Так можно будет сделать идеальное программирование, без исключений. И темплейты убрать, вместо этого разрешить любой функции принимать аргументы с неизвестным типом, проверка будет происходить по мере вызова функций. Правда, придётся сделать некоторые ограничение, что строку имени для нейм-манглинга можно будет указать только функциям, принимающим строго определённые, как в Си, типы аргументов. Ровно и указатель на тип такой функции сделать, но не для неопределённой.
Ну и сразу можно ввести всякие умные типы как динамический массив/вектор (T[]), мапу (T{K}), arbitary-precision числа int и rat.

Долбанный Хуйло сначала отобрал у меня детство, где я мог плавить, резать, варить, фрезировать в подростковом возрасте. А теперь пытается отобрать пожитки и, возможно, жизнь.
Лайси ещё не скоро выйдет.
Надо было мне не бесполезными индустриворксами компьютерными заниматься, а идти работать проргаммистом. Заработал бы больше.


 >>/17689/
Спасибо за поддержку. Скорее всего и придётся выезжать в ЕС, если действия обретут большие обороты. К счастью возможность есть.
Жаль, что я не могу своими силами прикончить хотя бы пару враждебных элементов при помощи █████████████. Но идти в армию и подчиняться приказам я тоже не собираюсь.
Хотя я предполагаю, что есть некоторые "технологии", позволяющие убить почти любого "маленького" человека на Земле удалённо. Но мне не на ком это отрабатывать.
Сегодня утром просыпаюсь в стандартном режиме. Слишком рано, можно ещё поспать, но услышал, что-то немного прогремело. Думаю "Ну может это не военные действия...". После второго решил уже вставать.

Кстати, а знаете почему я не делал Лайси? Потому что у меня появилась игрозависимость. Я играл в CDDA. Почти каждый день по много часов в день. А мог бы учиться, развиваться. разрабатывать свои проекты. Я уже давно был знаком с CDDA, но в первой поре мне было неприятно играть в него из-за графики. Тайлсет фуватый был с травой цвета говна. Потом увидел тайлест RetroDays/NeoDays и стало приятно играть. И управление хорошее, интуитивное. Не как в DF.
Вот бы прекратить себя так вести... Хотя, когда я вижу, как персонаж в CDDA учится, создаёт предметы, то есть за 2 недели довести уровень электроники до мастера!, то я завидую ему, а почему мне так не сделать?

Если по сайду, то я недавно сделал свой первый коллекторный электродвигатель. К сожалению, не хочу фотографировать видео, слишком стрессовая ситуация. У него коллектор некачественный, сделан из латунного диска, разрезанного на 3 части, подсоеденно 2 проводка. Искрит, но вращается. Кстати, я понял почему энджин так сложно прокручивается в состоянии покоя. Во-первых, кол-во полюсов статора и ротора не кратны, это позволяет быть двигателю не в равновесии во время включения, но одним из полюсов феррмагнитного вещества (электротехнической стали) он притягивается к ближайшему магнитном полюсу и там получается это сила...

Я в довольно безопасном месте, жив, здоров, в рабство меня не выкрали, в Сибирь не сослали, не убили, не разбомбили и не расстреляли как большое количество других сограждан. И даже не ограбили попробуют ограбить — это может означать конец.
Но Лайси почти не делаю. Что-то воля опустилась сильно, но недавно начала подниматься. Трачу на Лайси очень немного в день.
Я понял, что надо изменить в Лайси. В общем, теперь все функции это темплейты (но если там определены типы сразу, то ясно что это те же обычные функции); глобальные мутабельные стейты не нужны, а соответственно глобальные переменные — вон. У меня есть и дефайны.; также я решил ввести типы:
int — arbitary-precision инт. Может принимать макросные аргументы int. uN и sN являются частными случаями int, где uN это int<0,2N - 1> и sN это int. То есть, int может иметь ограничения. Таким образом, если он закрыт с обоих сторон, то можно закодировать конечным числом битов. В другом случае, будет исользоваться отдельная структура.
rat — рационально число, состоит из int нумератора и int деноминатора.
С суффиксами типов:
T[] — теперь это будет "список", который можно расширять, ну как в том же питоне или C++ std::vector
T{K} — ассоциативный массив с ключами типа K и значениями типа T.
T{} — сет из T.
T& — шейред-поинтер для T.

Пока я переписываю в некоторых частях Иколайси [spoiler]И почему мне так нравится всё начинать заново, делать одно и то же?.

Если по сайду, а нет доступа у меня к сайду. Но пока есть бумага и писчие инструменты, могу кое-что разрабатывать. Так, я раздумывал над линией по производству бесколлекторных электродвигателей. Получилась интересная вещь. Рассмотрим 2 узла — один это лазерный станок, разрезающий листики электротехнической стали по определённной форме. А второй — узел, в котором происходит их сборка в сердечник. И вот между ними сначала я придумал довольно сложный и громоздкий манипулятор. Ну сам он обычный, но его конец непростой.
Вот вырезанные формы они, наверное, будут из себя предствлять кругляши с вырезанной серединой и гребнями, вокруг которых будет катушка. И чтобы их подбирать и можно было подбирать формы в разном диапазоне размеров я подумал о кулачковом патроне, который сдвигает-раздвигает инструменты для поднятия кругляшов. Сначала я думал о том, что эти инструменты должны быть просто палочками с электромагнитами на концах. Но потом представил картину как электромагниты хватают кругляшок, манипулятор перемещает головку во второй узел, электромагниты отключаются и кругляш не падает. Электротехническая сталь это хоть и магнитомягкий, но фероомагнитный материал. Поэтому я решил, что в палочках должны быть постоянные магниты, а рядом с ними другие палочки-рейки, которые бы ездили вниз и отталкивали кругляш, чтобы он упал в специальную зону второго узел. Можно каждую из вторых палочек-реечек обеспечить своими двигателем, а можно одним по середине. Но для этого надо подсоеденить двигатель к палочкам-реечкам через телескопические валы!
МДа, без картинок сложно объsнять.
кстати, пока перечитывал, понял что идея с электромагнитами жизнеспособна. Надо корпус вокруг немагнитный и дать возможность менять полярность электромагнитов

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

Я прикидывал, что вложений для моей установки понадобится где-то $4000, но сейчас кажется, что и $7000. Для этого мне надо развиваться в финансовом плане, а я так медленно развиваюсь! В нормальном случае такую сумму можно было бы заработать за 2-3 дня...
[СТЁРТО] А если x1.5...x2, то сильно не жалел бы о всём этом случившемся...

Эх, ну почему же я себе волю в плане программирования убил? Не знаю когда и как это случилось. Может быть это потому что я хочу делать сразу идеальное, а как я буду делать идеальные библиотеки, ПО на ненравящихся языках программирования? А свой сделать несколько сложно.
Вот, вроде бы почти весь код для Иколайси готов, валяется где-то и надо только собрать воедино. Ну ещё там парочку функций для матча типов сделать, ещё реализовать вектора, хешмапы, сеты, шейред поинтеры. Добавить ещё кое-чего, проверить досконально и будет готово.
Но вот я хоть и могу делать Иколайси, но уделяю по 10-30 минут, решая микрозадачи. Почему-то решённую задачу я воспринимаю как победу и дальше не делаю. Может это потому что я свою компьютерную игру когда-то писал и там всё было в плачевном состоянии.
Это всё как карма. То есть карма это как бы не то, что наказывает, а прямое следствие своих поступков. Вот я медленно развивался или выбрал ошибочные пути — и вот, война началась продолжилась. Не прошёл урок. В следующий раз может быть жосче. Вдруг лет через 20 будет вообще апокалипсис? И потом буду в посмертии аки персонаж из Могилы светлячков прокручивать свою жизнь и кричать "Нееет!!1" на плохих поступках? Надеюсь ядерный огонь протух и подобное не случится в ближайшее время


 >>/18167/
Ахахах фу
Ещё и чай этот пить, мне не нравится чай!

Я думаю, что моя проблема заключается в двух вещах:
0. У меня мало положительных социальных контактов. Одобрение от других людей создаёт стимул для действий. Вот была бы у меня тянощка, которая иногда била бы за лень...
Но вместо этого, даже когда я просто иду по улице, чувствую что-то волнующее и стыдливое, моя психика так и видит в чужих глазах неодобрение, хотя умом я знаю, что им пофиг в большинстве случаев, а может даже и заинтересуются мной. Вот в лесу норм, там ни беспокойно, ни успокаивающе. Нейтрал. И пахнет хорошо, а однажды алюминия нашёл
1. Мой ОКР всё ещё иногда стирает мои эмоции. Вот, например, начну я грустить и вдруг вспомню, а что если сабж грусти это что-то Xное. Но нет, это ни Xное, ни Yовое, это ни Xное, ни Yовое, ни Xное, ни Yовое, ни Xное, ни Yовое. Никак ни с Xным, ни с Yвым, ни с Xным, ни с Yвым, ни с Xным, ни с Yвым, ни с Xным, ни с Yвым, ни с Xным, ни с Yвым это не связано. Xное запрещено, а Yовое не очень запрещено. И потом мысленно сжигаю всеуничтожающим, или уничтожающим чужеродное, огнём то, что наплодил данными мыслями в пространстве рядом со мной. А в итоге эмоция, которая должна была быть высвобождена просто блокируется внутри. Кстати, когда-то от повторяющихся фраз у меня заболела голова и я редуцировал их до одного слога. Удобно
Вот. Когда одни эмоции блокируются, а другие сковывающие, получается нездоровое развитие, отсутствие стимула.

Хотя, насчёт первого можно и другой социальный контакт — соперник. Который будет говорить "Что? Даже долбанные насекомые в уме просчитывают электродинамику микроэлектронных схем, а ты даже тензорную алгебру выучить не можешь? Иди и дальше деградируй в свой интернетик". Хотя у меня соперник и это ██. И я претендую на некоторые ███████, подконтрольные ему. Но это ██████, а не человек.

 >>/18170/
> фу

Что фу то? По любому злоупотребляешь этим, как и большинство тех кто за компом живёт.
> Вот была бы у меня тянощка, которая иногда била бы за лень...

Я бы тоже от такой не отказался. Но думаю со временем доставать начнёт. Это я послушав от тех кто живёт с тяночками слушаю.
> Хотя у меня соперник и это ██. И я претендую на некоторые ███████, подконтрольные ему. Но это ██████, а не человек.

Шиза явно.

thumbnail of img.png
thumbnail of img.png
img png
(26.44 KB, 295x523)
сцук))00) опять не получается спрограммировать Иколайси.
Я уже понял как надо разрабатывать и как надо познавать, но этого не делал. Вроде набросал на бумажке архитектуру Иколайси, а по факту просто использовал старый код, интуитивно перебрасывая из пустого в порожнее. Опять упал на именованных типах.
Это карма. То есть я не стал по-настоящему разрабатывать архитектуру. по-настоящему было бы слишком энергозатратно в ближайшей перспективе, но не в далёкой. Теперь пожинаю плоды. И так будет до тех пор, пока я не исправлюсь Или не исправлю законы Вселенной, логики, собственного мозга, но я вообще не против законов Вселенной

Может, лучше было 3 года назад отменить Иколайси и изучить раст какой-нибудь или хаскелль и на нём программировать. Но теперь так не получится.

Возможно, скоро я пойму в лучшем математическом плане как я на самом деле хочу программировать. Тогда название Лайси потеряет свой смысл. Хотя оно уже потеряло.
Жаль, что когда я учился в школе, нас математике толком не учили. Зато пичкали литературой, историей, физкультурой и ещё бредом каким-то. Бальные танцы, хореография долбанная. А в начальной школе одна одноклассница возмущалась, ей сестра или кто-то сказал, что математика в жизни не понадобится. Вот же сумасшедшие. Из-за таких потом и в школе не преподают математику. Некоторые люди действительно думают, что можно и без математики нормально прожить То же умножение и деление, вроде только во втором классе проходили. В 7 лет пора матан учить, а не цифрами жонглировать.
До меня только недавно начали доходить основы тензорной алгебры, возможно скоро пойму почему волчок не падает и эффект Джанибекова и вообще вращение.

Кстати, где-то год назад я понял, что на самом деле я отстаю в развитии на 8 лет. Так что умом я сейчс подросток. Может из-за этого я живу как лох и тот же Иколайси написать не могу. Что характерно, 8 лет прошло между двумя вторжениями, а я всё-равно не решил этот вопрос

thumbnail of a.png
thumbnail of a.png
a png
(50.88 KB, 487x636)
Новая Пасха наступила, а я до сих пор не доделал Иколайси!
В тот раз я писал, что яичками с кетчупом можно помянуть перемолотых цыплят, но теперь я говорю: представьте, что это русский солдат умер, а вы милый собакомальчик или собакодевочка, доедающий трупы, избавляющий землю от трупных ядов. Не зря желток зеленеет, когда остыл. Надеюсь, это не богохульство. Если оное, то можете представлять данный мыслеобраз вне Пасхи.
Но у меня кетчупа теперь нет.

Насчёт прошлой проблемы с именованными типами, то я решил приблизительно таким же методом, как и было раньше.
И я подумал, что раз не получается применить новую архитектуру на Иколайси, можно же изучить уже существующую! Изучить код, который я писал эти годы, расставить в блок-схемы, а потом менять части. Но это потом.
Осталось ввести ещё штук 15 тестов (учитывая, что некоторые не поменялись — вводятся на раз-два).

Кстати, я вот раздумывал и понял, что библиотека ГУИ, которую я писал — на самом деле не очень полезна. Когда я познакомился с 3D-пакетом Гудини, то так и понял, что всё должно быть функциональным, и ГУИ в том числе. То есть нужна не просто библиотека, а язык или ноды, который функционально будут брать данные из одного места и применять их на элементы ГУИ. Можно, например, красивую анимацию сделать.
Анимация это тоже функциональная вещь. Если анимаируется положение вертекса, то его положение это функция от времени t. Но можно сделать не только от времени. Например, от окружения и времени (инверсная кинематика) или физических свойств или от чего угодно.
У меня возникают вопросы как реализовать это программно универсально. То есть это значение, которое может быть функцией. Как в математике, x(x) = x, а y(x) это другая функция.

Но вообще я чувствую себя тупым. Почему почти ничего не сделал?

 >>/18327/
Э, слыш, не ты первый придумал лохотрорны, а ну пшёл отсюда.
Жаркий огонь уничтожит твои сайтики, стерев и записи в DNS-серверах.

thumbnail of code.png
thumbnail of code.png
code png
(7.07 KB, 364x156)
thumbnail of lib.png
thumbnail of lib.png
lib png
(9.03 KB, 397x202)
thumbnail of checklist.png
thumbnail of checklist.png
checklist png
(51.88 KB, 533x682)
Я сделал два (2!) теста.
Медленно, конеш. Вот как в CDDA, ты даёшь персонажу задание "крафть предмет" и он будет часами кортеть над ним, несмотря почти ни на что. Если только мораль сильно упадёт или ещё какие-нибудь крайности. Хотя, недавно в нестабильной-свежей версии добавили баг, из-за которого он может бандажить себя (несколько минут), даже если его будут атаковать или вообще доведут до смерти, а остановиться нельзя. На самом деле я уже давно не играю этот рогалик, дошёл до мутаций и надоело

Вообще, мои проблемы заключаются в изоляционизме. Как пошёл в школу, так в некоторый момент и определил, что все те люди — мои враги. Они были слишком "неправильные". Не только одноклассники, но и взрослые. Я помню их эйджизм. Как некоторые могут накричать на ребёнка за небольшую оплошность и даже не объяснить свою позицию. Теперь они просто так на меня не накричат, боятся или уважают. Дети слабые, взрослые сильные. Но это ладно, меня больше пугала угроза наказания от большой силы. Когда сверстники угрожают психушкой (почти что тюрьма), а взрослые тюрьмой, это ужас. Потом помню как увидел в фильме "Шестое чувство" как родителей вызывают в школу за рисунок убийства отвёрткой и понял, что в школе лучше не выражать своё мнение, а то отправят в психушку-тюрьму. Только спустя очень много лет я узнал что закон исполняется только по надобности, очень многих щадят и все эти угрозы это для тех, кто не воспринимает их всерьёз.
Если бы я был смелее и пробовал закон на зуб, то развитие могло бы пойти гораздо быстрее. Не пришлось бы ждать всяких юридических совершеннолетий. И можно было бы людей понять лучше, как может мирный гопник вася быть мне врагом? Лол. Он даже войны испугается.
Что же по изоляционизму, то помню как я не хотел начинать программировать, так как считал что в будущем сам создам свои компьютеры со своим программированием по факту я до сих пор кремний не умею выделять, хотя нормальный человек такое смог бы и лет в 5-14. Ещё этот виндовс ограничивал мои взгляды. Когда я поставил линукс, перестал считать первый ОСью. Это не нормальное ПО, а просто прокладка какая-то.

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

Ладно, а если по сайду, то я вот подумываю сделать hotplate с ИИ дисплеем и контролем температуры. Я взял гипсовый диск и вложил в него тен от старого фена. Выковырял подходящий транзистор из испорченного ИБП ухудшение финансового потока даёт возможности собирательству. Экспериментами понял, что там на где-то 12 вольт надо на гейт подавать. Но я собирался юзать 5-вольтовый ИБП от телефона для МК и для транзистора На тен электричество из сети через диодный мост и транзистор. Можно взять много транзисторов-ключей и с помощью МК сначала зарядить N конденсаторов параллельно, а потом переподключить их последовательно. Если я не ошибаюсь, то так можно умножить напряжение. И вообще, транзисторами можно управлять электричеством как хочешь (?). Зачем тебе трансформатор, если можно просто от 220 x sqrt(2) вольт заряжать кондёр только до нужного напряжения То ли компаратор вставить, то ли просто время RC-цепи отмерять? И так переключать выход между конденсаторами, чтобы напряжение не падали ниже предела. ИБП просто более простые, дешёвые и надёжные как я понимаю.

thumbnail of s0.png
thumbnail of s0.png
s0 png
(28.9 KB, 374x671)
thumbnail of s1.png
thumbnail of s1.png
s1 png
(7.79 KB, 238x252)
thumbnail of sob.png
thumbnail of sob.png
sob png
(103.64 KB, 497x399)
thumbnail of n.mp4
thumbnail of n.mp4
n mp4
(19.72 MB, 640x360 h264)
Дед победы пришёл, подарочки нам принёс. Ураааа! ( D: )

А если серьёзно, то я хотел бы доделать Иколайси до конца Мая. Но разве я сделаю это? Для этого надо просто взять и сделать.
Ладно. Смотрите, я изменил хип так, что как в C++. Там есть new, delete, а вместо реаллока std::vector. И в Лайси я хочу сделать new, del и T[].

Наверное, пора ещё урезать фич, оставляя на будущее.

Мне надоело программировать. В начале программерского пути я изучал как там на низких уровнях работает, чтобы понимать всю структуру. Но теперь я хочу, чтобы компьютер просто исполнял мои желания. А у меня не хвататет инструментов. Ни данные с веб-страницы соскрапить нормально, ни вспомнить как называется функция X из фреймворка Y. Или просто карты, например, нет.
Хорошо, хоть есть Блендер-3D пакет, Питон-калькулятор и Кура-Слайсер.

thumbnail of tststs.jpg
thumbnail of tststs.jpg
tststs jpg
(109.85 KB, 1060x720)
Смотрите, я паял схему навесным монтажём Зачем?, а она не работает. Перепаял, навесил на макетную плату, а она всё-равно не работает. А всё потому что я не знаю электронику. Как там транзисторы между собой передают напряжения, почему повышающий преобразователь как-то не развязан и ток идёт не туда...
Я так понимаю, электроника это ад нечто очень сложное и не очень гибкое. То эти диоды, потребляющие N напряжения, то полевые транзисторы с тремя выводами, а не четырьмя. И вообще, как я думаю, электронную схему можно представить как конструкцию из полей, где внутри материи (проводников) поля меньше затухают и надо как-то там искать всё это чтоб не конфликтовало.
И как же мне теперь сделать хотплейт? Изначально я хотел очень сложный вариант — с регулировкой температуры, магнитной мешалкой только пожалуйста, не на двигатели с привязанным магнитом, а нормальным электромагнитом. Можно выфрезировать из электротехнической стали полосочки, сложить, намотать эмальпровод и готово, дисплеем. Но потом понял, что многие проекты не завершены по причине их сложности и это ударит по моей психике. Решил остановиться на варианте с просто управляемым duty ШИМа. Я хотел с 5-вольтового МКУ управлять транизстором передающим 14-вольтовое напряжение на транзистор, управляющий 311-вольтовым напряжением. Что-то пошло не так.

И какое это имеет отношение к Лайси? А такое, что мне можно временно отказаться от таких фич как SSS-операнд (start:stop:step) и reduce operand{operator}. Да и вообще, я подумывал о том, чтобы, например, индексы записывать как operand'index, где index это [5:12:1), (5:3:-1.2), [65:21:3] и подобное. То есть как в математике, включает-не включает. Но вряд ли это прям полезно.
В Лайси сейчас мне надо доделать темплейтирование функций (что у меня почти было) и имена правильно подбирать из массива дефайнов. То есть, чтобы можно задефанить vec!N! как он есть и, например, просто vec А он будет vec4, например. Чтобы в компилере была функция, говорящая матчит ли имя дефайн или нет. Или как ещё это объяснить.


 >>/18417/
Я ввёл ещё пару тестов, добавил один. Возможно, скоро выпущу компилтор к версии Лайси 0.pre.0.9 И можно будет забыть о нём шётка или что-то типа того. Казалось бы, можно просто взять и ввести все тесты, но я делаю это очень медленно.

Мне сегодня как раз снилось, что я в Казахстанской степи около границы. Я мог бы просто пройти по подземному тоннелю, но если бы уже построил буровую установку в виде ОКТАЭДРА ездит по сразу укладываемым рельсам и выедает огромный тоннель. А так пришлось идти через мутную разрушающуюся лабораторию, оставленную ещё США лол что.

В детстве мне часто говорили "умный человек", хлопали на вручении грамоты по занятию места на олимпиадах хотя я даже не готовился лол и всё такое. А по факту в данный момент упадок воли + лёгкое безумие. А ещё не знаю электронику.

Эх, вот если бы случился зомби-апокалипсис как в CDDA, то, опустив все грустности связанные с социальными потерями, это обозначало бы получение наследства от всего человечества очень небольшому количеству людей. По своей природе я, наверное, лутер. Только не такой как русский оккупант, я бы не хотел заходить в чужие дома против воли их владельцев, даже если бы у меня было военное преимущество. Когда-то я в лесу нашёл алюминиевый провод и спустя некоторое количество месяцев он стал переплавленным в металлические заготовки. Также электродвигатель, который я когда-то выдернул из чего-то, теперь используется в другом моём месте. Это прямое использование добываемых ресурсов.
Аналогично и ресурсы из чужих домов можно использовать по-разному. Столовые приборы сделаны в основном из нержавейки, значит их можно все смешать и отлить заготовку/изделие для целей, где не важен точный состав сплава, но нужны свойства нержавейки.
Не смотря на то что CDDA это Cataclysm: Dark Days Ahead, на самом деле там нет никаких тёмных дней Кроме когда солнце тухнет во время портальных штормов. Многие зомбари убиваются просто каскадом несложных ловушек, а сами они медлючие. А то что мои персонажи обычно быстро умирают — это потому что у меня нет желания их держать живыми. Это же они, а не я. Ещё там есть такие мобы как feral human, то есть одичавшие люди. По сюжету на Вселенную напал "блоб" и из-за этого большая часть людей одичали, а трупы начали восставать и развиваться. Инопланетяне из других миров нагрянули, из этого мира МиГо приехали. В общем, дичь всякая. Но я это к тому, что может дикость это не потому что людям стало плохо, а потому освободилась их истинная сущность, но у почти всех людей она не очень зрелая.

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

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

мимо дед-программист

thumbnail of accddqqz.png
thumbnail of accddqqz.png
accddqqz png
(19.26 KB, 327x476)
thumbnail of ddaz11.mp4
thumbnail of ddaz11.mp4
ddaz11 mp4
(3.5 MB, 1480x880 h264)
thumbnail of scr.png
thumbnail of scr.png
scr png
(1.53 MB, 1500x900)
Я решил, что надо менять жизнь и теперь мне придётся каждый день хотя бы полчаса разрабатывать свои программные проекта иначе придётся самоубитьсяшутка

Ввёл callerror. Если функция перегружена только по принимаемому значению, то придётся разложить операнд в инструкции. Раньше у меня был функционал по раскладыванию инструкции в инструкцию (например, раньше for раскладывался в while), а тут операнд. То есть это перед инструкцией, в которой используется вызов перегружнной функции, вставить 2 новые инструкции: аллокацию переменной типа возврата функции и ifcond (if-elif-else), где проверяется каждый из аргументов, и если проходит — вызов функции, возврат значения в прошлую аллокированную переменную. Если никакая функция не подходит — аборт. по-хорошему надо вывести сообщение об ошибке, но это потом

 >>/18419/
Было бы хорошо, если бы я был маньяком. Так бы и разрабатывал Иколайси всё свободное время и он был бы готов года 1-2 назад. И перешёл бы к другим проектам.

thumbnail of acc.png
thumbnail of acc.png
acc png
(36.41 KB, 438x698)
thumbnail of img0.jpg
thumbnail of img0.jpg
img0 jpg
(89.53 KB, 1000x790)
thumbnail of img1.jpg
thumbnail of img1.jpg
img1 jpg
(30.96 KB, 800x600)
 >>/18510/
> теперь мне придётся каждый день хотя бы полчаса разрабатывать
Ахахаха нет на самом деле я продержался только 4 дня. Там кроме разработки программных проектов ещё было по 4 дела. Итого 2.5 часа. Вот не представляю что чувствовали мои персонажи в CDDA, когда я их заставлял 2ое суток подряд шить хитиновый шлем с перерывами только на пищу и сон.
Тем не менее, это было полезно, я кое-что осознал+узнал.

За всё это время я почти ничего не ввёл, но тестов осталось доделать ещё немножжко.

Вообще, всё это программирование какое-то неправильное. По-хорошему, надо чтобы ОС и программы состояли из отдельных компонентов, из которых можно очень легко вычленить и передать данные в разных форматах. Как в графических нодах во всяких блендерах, гудини, юнити. Открываю графический редактор — и чтоб из другой программы можно было в него передать изображение, а из графического редактора в свою какую-нибудь программку. И всё это на лету. Без обязательного сохранения в файл или написания НО СИПЛЮПЛЮС с подключением библиотек через #include .::method #define AABBCOORD standard_library::pointer> variable_five.

И при этом не надо, чтобы было всё в ФП-виде. Где надо — ФП, где надо — императивная машина состояний или что-то там.
Кстати, насчёт машин или по сайду. Недавно я доделал хотплейт; теперь можно варить СУП. На фотографиях пришлось замазать пол, чтобы не отследили, но я на самом деле не скрываю своё имя.
И что насчёт хотплейта, то он работает по такой схеме: есть дьюти, есть тик, есть МАКС_ТИК. Если тик%МАКС_ТИК меньше чем, дьюти, то включается реле полупроводники я не осилил. Ну там ещё кнопочки, термопара. И в каждом тике ещё проверяется состояние кнопок, записывается тик включения. Машина состояний, в общем. Если я не напутал термины.
Но вообще исполнение таксебешное. Я опять неправильно понял, что такое навесный монтаж. По-хорошему мне надо было сделать суррогат платы из пластика, в него вставить модули, а их соединить проводками. Чтобы не на соплях стояло.
До 400 °C тэн можно нагреть, но незнаю как долго оно может простоять в таком виде. И остаётся насущный вопрос: почему 10+-летнему человеку нужно столько дней, чтобы сделать простейший хотплейт?

thumbnail of aaz.png
thumbnail of aaz.png
aaz png
(30.12 KB, 520x608)
thumbnail of checklist.png
thumbnail of checklist.png
checklist png
(55.71 KB, 487x673)
thumbnail of out0.mp4
thumbnail of out0.mp4
out0 mp4
(971.33 KB, 160x160 h264)
thumbnail of muzh.png
thumbnail of muzh.png
muzh png
(137.88 KB, 383x344)
Что-то я совсем свою жизнь запустил не туда. Иколайси почти не делал в этом месяце, вместо этого я в компьютерные игры играл. Хотя часок-другой попрограммировать и + одна фича будет введена без учёта всё наростающих багов
Представляете, то есть психика как работает. Я нахожу волю к тому, чтобы сделать что-то полезное — психика обучается и в следующий раз держит такие мысли поглубже, чтобы больше не выскочили в реальность. Зато повторящиюеся ОКР мысли она с радостью выпустит
Но на самом деле это не очень плохо — меньше вероятность быть порабощённым ложными, неествесственными ценностями.
В чём естество человека? С древности человек собирал, охотился, социально взаимодействовал. Я бы хотел собирать, но боюсь социума, из-за этого сложно. А если охотиться, то точно не на животных — это не спортивно.

И как же мне всё это компьютерное бродило надоело. На самом деле я очень нищий и это плохо. Я живу в маленькой квартирке и у меня всего лишь один нормальной стол, и тот очень маленький. Комфортное расстояние от глаз до монитора — чуть больше метра, а из-за малого размера монитор слишком близко, глаза устают, а чтобы хоть как-то отдалиться — приходится сидеть сгорбившись. То есть руки становятся в горизонтальное положение — чуть больше длины. И на этом же столе мне приходится писать на бумаге — постоянно клавиатуру туда-сюда дёргать.
В то же время паять или заниматься сборкой чего-то приходится вообще на полу потом проекты загрязняются. Всё это очень деморализует.
И Линукс этот, не понимаю как его кастомизировать. Я так понимаю, ЦА линды предполагает, что это многопользовательская система. То есть рут, чтобы пакетный менеджер "чё-то там делал с системными файлами" и имя_пользователя, от которого запускаются все остальные программы, и обычные программки, и потенциальные зонды и вирусы под виндовс через вайн.
На протяжении нескольких лет я наблюдал как одно ПО ухудшается, другое иногда улучшается. Но ухудшения могут быть такими, что дополнительны деморализуют всё. Я так и не понял как заставить gedit не перетягивать файлы из прошлого активного окна в другом воркспейсе хфце4 в нынешний. Раньше всё работало само по себе, теперь то ли дбас изучать, фридексктоп, системд или ещё какую-то макаронину. Сорсы редактировать?
Ненавижу это всё. Да и вообще, современное программирование и ОСы мне не нравятся. Надо, чтобы была командная оболочка, но не в виде текста, а в виде окна с нодами. Перетягивать инпуты-оутпуты; иметь список с категориями и команд, а не пытаться вспомнить имя; реактивное "программирование", императивное исполнение нод. Да, и не только не придётся названия команд запоминать, но и названия аргументов. Вместо них — менюшки.
Но я не хочу это делать, на самом деле мне не очень нравится вся эта виртуальная шушера, это я начинаю постепенно понимать.
В любом случае, я не могу бросить Лайси, я его уже давно делаю. И это было одним из моих лучиков. Когда я не мог даже сходить в туалет из-за криков и присутствия других людей, я вспоминал о Лайси и сразу же успокаивался.

 >>/18653/
А в чём идея этого твоего лаизи, почему, собственно, начал заниматься? Как могу догадываться, что-то тебя не устраивало в языках готовых.

thumbnail of tank bashnya cherep T-72B3.jpg
thumbnail of tank bashnya cherep T-72B3.jpg
tank bashnya cherep... jpg
(1.82 MB, 2048x1152)
 >>/18671/
Уже точно и не помню, точно, что меня не устраивали другие языки программирования. Хотя я не удосужился даже Хаскелль посмотреть.
Более важная причина — я захотел свой ЯП в подростковом возрасте, где-то спустя 2 года как вообще начал программировать. Тогда я был очень самоуверенным, думал, что щас начну сотни софта разрабатывать, а в итоге не справился даже с майнкрафто-подобной игрухой, и сейчас Иколайси еле выношу.
Но если по правде, то мне скорее всего не нравятся все эти виртуальные технологические штуки, мне больше нравятся реальные. И если бы хуйло не напал на Донбасс, то я мог бы в подростковом возрасте не быть скованным в физическом плане и Лайси тоже, может, не было бы. Хотя я его понимаю, человек просто хотел захватить территории. Но он напал на меня таким образом, так что я желаю ему сдохнуть.


thumbnail of ddddd.png
thumbnail of ddddd.png
ddddd png
(22.73 KB, 564x528)
thumbnail of scr.png
thumbnail of scr.png
scr png
(316.73 KB, 1280x720)
Мне осталось:
ə Доделать операторы для всех типов (плюс, минус, степень).
ə Ввести мем-типы (список, мапа)
ə Дописать либлайси с min, max, clamp и так далее.

Что вне Лайси, то я наконец сделал свою новую компьютерную игру, спустя очень много времени. Где-то 20 раз начинал делать новую игру, но не завершал до конца. На этот раз я всё упростил так, что можно сделать за пару дней, но я делал 17. Программирование на C++ моими методами даёт дебафф морали.
Но так как я компилю на велосипедах, мне приходится следить за виндовс-версией. Мне надо её проверить на настоящем виндовсе, но я не помню пароль от чужой машины с швидосом. Теперь только гадать как можно выпустить свою игру.
А если бы я был социально адаптированным, то можно было бы попросить у ближайшего друга потестить быстро с флешки. Но непонятно как можно терпеть чувства до и после общения

thumbnail of screen.png
thumbnail of screen.png
screen png
(360.29 KB, 1280x720)
thumbnail of ccccccc.png
thumbnail of ccccccc.png
ccccccc png
(35.34 KB, 374x670)
Выпустил страничку в стиме: https://store.steampowered.com/app/2078600/Afterslave/
https://youtube.com/watch?v=igOeuAMs52s
Я делал эту игру очень много времени и хочу за неё $100000
Сюжет про мужчину, которого призвали в военкомат в тоталитаристической стране, но что-то пошло не так.
Кстати, очень подозрительно, что и билд и страничку в стиме заппрувили сразу. До этого в двух моих играх были всё-время ошибки в виндовс- и линукс- билдах. А сейчас нет. Хотя я после отправки вспомнил, что линукс-версию забыл потестить на SteamOS, а виндовс-версию у меня не получилось полноценно протестировать, так как у меня рядом только виндовс-сервер, на котором, видимо, нет опенгла.
Года 2 прошло, может у них поменялась политика и они решили сбросить проблему вероятной нерабочести билдов на разработчика (((((((

А что же по лайси, я типа ввёл одипн текст, но на самом деле я временно отменил возможность перегрузки индексирования (\_\_index\_\_, \_\_get\_\_, \_\_set\_\_), потому что мне надо будет только потом изучить архитектуру мешанины, что я наложил и исправить её.

 >>/18673/
> Тогда я был очень самоуверенным

У тебя и сейсчас с самоуверенностью все в порядке. Развел тут, понимаешь, собственный блог - дневник мегаломана.
 >>/18671/
Вангую он не знает вычислительных архитектур. Язык создается всегда с учетом аппаратных особеннойстей вычислительной архитектуры.

Снесите тред-затычку от поехавшого


thumbnail of aitext.png
thumbnail of aitext.png
aitext png
(77.1 KB, 1863x182)
 >>/18748/
> собственный блог - дневник мегаломана
Или просто блог в среде микроломанов.

> он не знает вычислительных архитектур
Это троллинг такой? Я слышал что на мейлаче иногда заходят в разделы тематики и с видом проффесорра выдают ответы на вопросы от ньюбаев, те им верят и просят добавки, а настоящих профессионалов посылают.

 >>/18756/
> Жрут много ресурсов
Я, конечно, понимаю, хочется не нейронковый интеллект, а нормальный, работающий на чистой логике. Но как быть если это сложно, а нейросети уже практически готовые лежат?

> Палишься мусор тупорылый.
Что уже купил? Не надо персонажа обзывать, какой получился — такой есть. Хотя шучу, игра ещё не вышла, иди в вишлист добавлять, коля хочешь поскорее пройти.

thumbnail of accsdtr.png
thumbnail of accsdtr.png
accsdtr png
(56.99 KB, 185x820)
Всё.
Я решил отменить Лайси и его компилятор Иколайси. Дело в том, что мне на самом деле не нравится программировать вот это всё и не получать никакого вменяемого результата. Особеено, программировая на таком дизморалящем ЯП как C++. Ну и тут уже ясно, я почти не могу сконцентрироваться на Иколайси на больше часа в день, соответственно, и доделать уже не получится.
В последний раз я попробовал переписать Иколайси так, чтобы распределить всё в своих файлах, сделать код более функциональным, а не мусорным.
И начал я делать Лайси до совершеннолетия, когда был очень фрустрированным, боялся многих вещей, был подавлен под натиском эйджизма. Естесственно, что пришлось делать что-то в комплюктере, где у меня была свобода (когда научился ставить линукс).
Ещё это свойство человеческой психики, которое не даёт бросить дело, на которое уже затрачены ресурсы...
Конец.

"Я бью два раза: один раз себе по лицу, второй раз по крышке гроба"



thumbnail of uix.png
thumbnail of uix.png
uix png
(11.25 KB, 530x176)
Вот, за суммарно 2-3 часа написал небольшой процессор математических выражений. Просто записываешь функции, выражения и выдаёт результат. Без всяких лишних компиляций хоть и с возможностью реализовать, типов и прочих трудностей. И зачем же тогда было делать лайси, если можно сделать пикрилейтед?
Ещё 2-3 часа позаниматься и можно ввести вектора, комплексные числа, рациональные (вместо флоатов) и кучу всего нужного и полезного.

Недавно я много делал моделек в такой программе как OpenSCAD. Его суть в том, что вычисления производятся в ФП-стиле, а примитивы моделек устанавливаются в императивном стиле.

Вот так же можно было бы и околоматематические выражения как в пике приделать хоть к 3D-моделькам, хоть к 2D-растровым изображениям и вообще к разным данным. Вплоть до того, что создать игру или ГУИ программы описывая такими функциональными выражениями + примитивами. А компилятор сам оптимизирует.

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

 >>/18837/
Это вряд ли. Ну сделол бы я ЯП и что? Никому кроме меня он не нужен был бы.

thumbnail of vulkan.mp4
thumbnail of vulkan.mp4
vulkan mp4
(4.71 MB, 1280x720 h264)
Как же я ненавижу своё программирование и скудоумие.
Недавно вышла моя игра Afterslave: https://store.steampowered.com/app/2078600/Afterslave/
Хотя я заметил, что кто-то даже положительный отзыв оставил, °настрUP° но придётся дописать пост
Мне было слишком стыдно рекламировать эту игру в больших реддит-сообществах, а маленьких я так и не искал. Как итог, не факт что игра даже окупится.
Ну и понял, что надо сделать новую игру, побольше. Иначе как ещё заработать много денег? Не думаю, что можно просто взять и устроиться на работу. Не представляю, как это возможно. А моего пассивного ██████ очень мало. Чтобы увеличить до нормальных сумм, надо года 4 хардворкингом заниматься. Или 8 лет полухардворкингом. Сразу встаёт вопрос — а зачем я ходил в школу и просиживал там чтаны, если мог всё это время создавать ███████ы и сейчас бы зарабатывал как миддл-программист? Неэффективное использование общества.
А игру пошаговую, чтобы не страдать от флоатов, с простой пиксельной графикой и без обязательной возможности сохранения. Что же выбрать? Сразу подумал, что эту игру надо сделать в Годоте. Но потом я открыл туториал, вспомнил как ущербно всё это выглядит и закрыл. Открыл один уже свой начатый рогалик, чтобы его редактировать. Ествесственно, версия кода моего графического унтердвижка другая и надо было поменять кое-что. С некоторым трудом сделал это, но как же C++-ный бойлерблейт дизморалит.
И тут и предстаёт человек перед выбором — потратить больше сил на создание удобного, стандартизированного, уже продуманного инструмента или потенциально потратить меньше времени, натяпляпав одно на другие. Я не умею ни планировать, ни разрабатывать. Но познавать, возможно, умею

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

thumbnail of out.png
thumbnail of out.png
out png
(205.44 KB, 1857x750)
Смотрите, тут другой ai text. Переделал систему. У неё есть некоторый параметр, который я назвал maxn. Если maxn будет достаточно большим (бексконечным), то система просто запомнит весь текст из обучающей выборки. А с меньшими значениями результат на пикрилейтед. Видите, каждый кусочек начинается с буквы C? Потому что толька она идёт после пустоты в обучающем тексте.
По-хорошему, надо такой системой изображения генерировать, но надо добавить больше когнитивных функций.
Это просто генерация без какого-либо инпута, тем не менее, пока неясно преимущество █████сетей перед ████истикой. Может какие-то книги и подсказали бы, но я не знаю книг.

А представьте альтернативную историю. Недавно, вроде бы, учёные из Японии научились почти любую клетку человеческого тела возвращать в состояние стволовой (используются какие-то 4 белка). Кроме того, научились выращивать человеческие мозги (в виде небольшой плёночки) и даже чему-то их обучили. И вот случилось бы такое до массового развития электроники. Большие дяди сказали бы "на поток" и были бы чипы под управлением мозгов-гомункулов, которые приходилось бы каждый раз заново обучать, а надёжность оставляла бы желать лучшего. Ахахахаха.

 >>/18866/
>  Не думаю, что можно просто взять и устроиться на работу. Не представляю, как это возможно. 
Берёшь вакансию для ньюфага и идёшь на собеседование.
Или раскладывать товары в магазе.

 >>/18897/
Нет, не могу логично мыслить в такой сфере.
Если мыслить как я, то нельзя просто взять вакансию. Их либо нет, либо зарыты они очень глубоко. И не факт, что возьмут, особенно если быть честным. Я, вообще, офигеваю с историй про собеседования. Особенно вопросы "Кем вы видите себя в нашей компании через 5 лет?". Они реально считают себя достойными, чтобы сотрудник так долго них работал? Нанимаемые тоже хороши. Получают over $5000 в месяц, но не сливаются ни через полгода, ни через год. Непонятно на что они тратят столько денег. Или они все больны раком или у них налоги 90% или они решают родить детей, дав им такую же ущербную жизнь как и у себя. И вряд ли они скупают всю недвижимость, которую видят, и в казино не играют.
> Или раскладывать товары в магазе.
Нет, я стараюсь избегать стрессовой работы, иначе в итоге буду меньше работать и заработаю меньше. У фасовщиков зарплата за час в несколько раз меньше, а работы много. Тоже неправильно.

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

thumbnail of diff-less.gif
thumbnail of diff-less.gif
diff-less gif
(205.92 KB, 1500x1927)
 >>/18898/
Я, конечно, всего лишь очередной мимокрок и едва ли это моё дело, но в некоторые моменты трудно промолчать: бессребренником-энтузиастом ты мне больше нравился, вот-с...

Уже где-то месяц как я не держу в голове, что мне надо доделать лайси.

Ну что тут можно сказать, я решил перейти на другой, уже существующий, ЯП. Rust кажется мне хорошим выбором. В нём есть некоторые свойства, которые я хотел реализовать в лайси (особенно, связанные с дженериками). Когда-то я плевался от него, так как увидел, что там переменные объявляются через let, ещё и надо указывать mut, если они изменяемы. Ахаха, но это же хорошо что так и есть! Тогда у меня было императивное мышление головного мозга. Теперь же я знаю про ФП и желательно писать в функциональном стиле большую часть кода.
Хотя код на Rust мне кажется громоздким, но может это я не научился с ним управляться.

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

У меня почти все личные проекты нереализованные. Почти весь рабочий код, который я написал, был по работе. А проекты нереализованы, в частности от того, что я пытался использовать велосипеды. Свою ГУИ-библиотеку, свой графический движок. В которых, в итоге, нереализованные фичи. Я хотел когда-то написать много юзер-спейс графического ПО, но не написал ни единого нормального.
И Ивс я мог бы сделать полноценной игрой, если бы, либо, использовал уже готовый графический движок, либо делал его рогаликом.
В общем, всё не хорошо, но и не ужасно.

Хотя нет, самое страшное это то, что пока я развиваюсь со скоростью ×1, человечество развивается со скоростью ×25-×100, скоро придёт тот же ИИ и всё обесценит. Искусство, кодинг, наука. Это означает закрытие путей по получению ресурсов посредством межчеловеческого взаимодействия, победят те, кто к нужному времени насобирал достаточно. И ресурсы эти самые разные — деньги, связи, популярность, инструменты ааааа

 >>/18991/
Ничего не знаю, я и так хотел много денег и собирался использовать тот же лайси для разработки ПО для последующей продажи (как? Легче использовать готовые инструменты хотя я всё ещё думаю так по отношению к людям — что мне не надо нанимать их [spoiler]мне и эту часть психику надо переобуть? [spoiler]всё это бичи капиталистичего общества, вот если бы у нас был деспотизм абсолютной монархии со мной в самой верхушке, всё у меня было бы по-другому[/spoiler][/spoiler]).

thumbnail of cube.png
thumbnail of cube.png
cube png
(141.04 KB, 908x902)
thumbnail of uvsphere.png
thumbnail of uvsphere.png
uvsphere png
(226.72 KB, 1227x1497)
Пиксрелейтед моего знакомства с растом. Этот язык не очень удобный, но лучше, чем C++.
Я стараюсь писать в функциональном стиле. Только я не нашёл как итерировать все комбинации чисел от и до (например, x: 0..2, y:0..5, чтобы получить [(0,0),(1,0),(0,1),(1,1),(0,2)...]), и мне пришлось самому написать. ih::IterVec2i. В императивном стиле.

Это функции для генерации куба и uvsphere как блендере (я ещё себе эдджи генерирую отдельно).
Но, конечно, очень страшно, что я не могу просто взять и преобразовать isize в f64 через ::from. Только через as. Типа точность теряется и для безопасности они не позволяют.

Конечно, плоховато, что я только сейчас до него дошёл.

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

 >>/19012/
О! Помню тебя. Приятно видеть, что ты жив. Держись и не сдавайся. 

Насчёт практики отказа от невостребованных фич - тут всё просто. Есть три стула: сделать в срок, сделать чтобы работало и сделать хорошо. Одновременно сесть можно не более чем на два из них. Это относится не только к программированию. Плюс свои издержки вносят гибкие методологии, когда хотелки заказчика добавляются по мере разработки и приходится бросать силы туда, где жопа горит сильнее всего.











Post(s) action:


Moderation Help
Scope:
Duration: Days

Ban Type:


334 replies | 175 file
New Reply on thread #1331
Max 20 files0 B total