/rus/ - Russian

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

Posting mode: Reply

Check to confirm you're not a robot
Email
Subject
Comment
Password
Drawing x size canvas
File(s)

Remember to follow the rules

Max file size: 350.00 MB

Max files: 5

Max message length: 4096

Manage Board | Moderate Thread

Return | Catalog | Bottom


Bypass

Expand All Images


(27.78 KB 1075x316 a.png)
Anonymous 05/30/2019 (Thu) 13:57:47 [Preview] No. 1331
Я сделал свой язык программирования под названием 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 посмотрите. Если вы задонатите немного, то я найму себя, чтобы их развивать, а если много, то найму и других людей.


Anonymous 05/30/2019 (Thu) 14:01:42 [Preview] No.1332 del
(88.41 KB 600x600 1288029248201.jpg)
Я нихуя не понял, но искренне желаю тебе удачи.


Anonymous 05/30/2019 (Thu) 15:06:47 [Preview] No.1334 del
>>1332
Спасибо, удача это хорошо, ещё бы воли и было бы прекрасно.
Сейчас Laisi версии 0.7, следующая скорее всего будет 0.7.1 и туда я добавлю новое слово для препроцессинга. @for. Например, есть функция repr, которая в ОП-пике, на самом деле это не функция, а темплейт. Темплейт это препроцессинговая штучка для callable объекта, при вызове его внутри кода, генерируется объект (функция в частности) в зависимости от типов пересылаемых аргументов. В версии 0.7 нельзя сделать так, чтобы темплейт орудовал переменным количеством аргументов, но с @for можно будет. Например:
[code]
@template func (text,[... data,codec := DEFAULT_CODEC.decode,int base := 10]) repr := {
@for N in data
@iftype N is int
#TODO
@end
};
[/code]
Мой ЯП статичски типизован и не поддерживает изменение/получения типа во время исполнения, но во время компиляции. Полиморфизм в метапрограммировании.
Я всё время слышал про ООП и не понимал его. Когда я осознал, что 3 основные вещи в ООП это полиморфизм, инкапсуляция и наследование, я был разочарованно удивлён. Может быть я чего-то не понял, но "Полиморфизм, инкапсуляция, наследование" звучит как "секс, наркотики, рок-н-ролл". Если секс и наркотики можно связать, то рок-н-ролл is out of topic. Так же в ООПной строке. При чём тут полиморфизм? Ладно инкапсуляция и наследование, это увязывается, но полиморфизм? Когда-то я хотел в свой ЯП добавить возможность получения и изменения типа переменной во время исполнения, но понял, что это очень сложно для компиляции и не подходит для моего низкоуровневого ЯП.


Anonymous 05/30/2019 (Thu) 17:22:25 [Preview] No.1352 del
Как же досадно! Я джва часа пытался поставить хидден сервис на дебиане и в итоге я решил сделать это на арчлинуксе. Но я незнаю как enable сервис системд, не включая компьютер. А мне надо не включать его.
Вы можете сказать, что я не читал документацию, но я скажу, что просто и Дебиан и системд не ориентированы на пользователей. Системд это, наверное, один из самых бичей экосистемы программного обеспечения линукс-дистрибутивов.


Anonymous 05/30/2019 (Thu) 18:26:20 [Preview] No.1374 del
(271.02 KB 1280x720 c.png)
Мжа, пытаюсь поменять систему координат.
(Это не гиперболоид, а конусы)


Anonymous 05/31/2019 (Fri) 03:56:10 [Preview] No.1416 del
(225.23 KB 1280x720 a.png)
Мои знания геометрии оставляют желать лучшего. Сначала я перепутал тригонометрические фунции, из-за чего получался двойной конус, а теперь уголок X-Y-Z (X — красный, Y — зелёный, Z — синий) смотрит не туда. Он должен смотреть на Европу, где нулевой меридиан.


Anonymous 05/31/2019 (Fri) 05:40:37 [Preview] No.1419 del
(12.89 MB 1280x720 out.webm)
Я добавил немного измерения расстояния, но точки ставятся под камерой, а не куда курсор указывает.
Расстояние вроде бы правильно меряет, экватор правильно показывает. Расстояния пишутся в терминале из nnaamap, я считаю разницу лонгтитуды и латтитуды двух точек, возвожу каждый в квадрат и беру корень из суммы, чтобы получить дугу. Ну а потом через радиус получается расстояние.


Anonymous 05/31/2019 (Fri) 06:20:00 [Preview] No.1420 del
Кроме Laisi, я собираюсь сделать ещё один язык проограммирования. Если Laisi это язык для машин, то новый будет скриптовым язык программирования. Он будет синтаксически похож на Laisi, но сам будет как питон и при он будет шелл-языком с возможностью вызова программ всяких. С динамической типизацией, классами, интепретируемый и параллельными потоками средствами языка.


Anonymous 05/31/2019 (Fri) 10:41:45 [Preview] No.1438 del
Я так же хотел написать свой 3D-растерайзер. Писать я его буду на лайси, а он-то позволяет очень хорошо распараллелить вычисление, в т. ч. и на ГПУ. И у лайси будет библиотека math, которая будет включать в себя очень много математики. И тригонометрия, и комбинации, наверное, и геометрия всякая, в том числе пересечение фигур и всё такое. Я ещё хотел добавить уравнения, то есть y = sin(x), y = x^2 и подобное и по табличным данным находить от них производные и первичные, где получится, а это даст возможность производить расчёты с фигурами, созданными данными уравнениями. Но я не уверен насколько это нужно.


Anonymous 05/31/2019 (Fri) 10:51:16 [Preview] No.1439 del
(22.62 KB 290x293 1411766971523.jpg)
Я нихуя не понял. Я наверное тупой и должен убить себя.


Anonymous 05/31/2019 (Fri) 13:52:55 [Preview] No.1455 del
>>1439
Нет, лучше заработай денег и задонать мне на развитие nnaamapeiko или jdavabrav. Ещё, когда создам сайт для laisi, там тоже будут контакты для доната. Я принимаю XMR (монеро), но ты можешь на bestchange.ru найти обменник даже для банковских денег, будь то гривны, доллары, евро или рубли.
Даже если ты зарабатываешь 4000 рублей в месяц и половину будешь мне донатить, мой денежный поток вырастет более чем в 100 раз.


Anonymous 05/31/2019 (Fri) 15:47:27 [Preview] No.1457 del
Ты конечно молодец. Но нахуя ты это делаешь?


Anonymous 05/31/2019 (Fri) 16:37:28 [Preview] No.1462 del
>>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а.


Anonymous 05/31/2019 (Fri) 18:29:03 [Preview] No.1471 del
Кстати, за несколько дней до удаления лолифокса, у меня было ощущение, что скоро что-то плохое произойдёт, что-то по типу апокалипсиса. А оказалось, просто лолифокс умер. И ещё одна борда закрылась, но наверное нет, она обновилась что-ли, сейчас работает. Филиалы моего блога были только на лолифоксе и на той борде.


Anonymous 05/31/2019 (Fri) 21:51:39 [Preview] No.1474 del
>>1471
Какие у тебя психические заболевания?


Anonymous 06/01/2019 (Sat) 04:31:13 [Preview] No.1476 del
>>1474
0.
Довольно часто людей называют психически больными, потому что они не обычные. А ведь на самом деле психические заболевания это шизофрения и ещё парочка.


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


Anonymous 06/01/2019 (Sat) 06:37:42 [Preview] No.1480 del
Вот такой пример как хандлить сегфаулт в линуксе:

#include <signal.h>
#include <stdio.h>
#include <setjmp.h>

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 для дебаггинга, а также будет использовать оптимизации для фич хостового процессора, в случае компиляции в файл изначально неизвестно какие фичи нужны и программист сам должен их включать.


Anonymous 06/01/2019 (Sat) 07:39:19 [Preview] No.1483 del
>>1476
Я понял. Ну ты держись. Не привлекай внимания и не ходит к психиатру


Anonymous 06/01/2019 (Sat) 07:59:42 [Preview] No.1484 del
Ухх, как же мне надоел этот си и питон! А особенно стандартные, обычные библиотеки. Хочу программировать на laisi, но для этого надо написать компилятор.

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


Anonymous 06/01/2019 (Sat) 09:14:59 [Preview] No.1488 del
>>1471
Это нормально. Я на лолифокс зашёл как раз в момент, когда в мод был создан тред о том что лолифокс всё. Я как чувствовал что нужно на лолифокс идти(небыл больше месяца).

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


Anonymous 06/01/2019 (Sat) 09:17:52 [Preview] No.1489 del
Тесла то тоже был шизиком, страдал от ОКР, не пил таблетки и пилил изобретения. ОП может ты такойже.


Anonymous 06/01/2019 (Sat) 10:11:41 [Preview] No.1491 del
Лолифокс теперь здесь:
http://2ch.rip/b/


Anonymous 06/01/2019 (Sat) 10:30:47 [Preview] No.1494 del
(190.72 KB 650x1000 15593840870380.png)
>>1491
нахуй эту борду


Anonymous 06/01/2019 (Sat) 10:35:08 [Preview] No.1495 del
>>1491
Никто не пойдет на твою ментовскую парашу!


Anonymous 06/01/2019 (Sat) 16:21:41 [Preview] No.1510 del
Как же плохо! Дебиан не может поставить тор новой версии, арчлинукс не подключается к вайфаю автоматически. Не получается у меня сделать сайт для laisi. Наверное нет дистрибутивов, сделанных для людей. Разве что LFS, но он не дистрибутив и очень сложный.


Anonymous 06/01/2019 (Sat) 16:26:04 [Preview] No.1512 del
>>1510
>дебиан
Зачем тебе тор новой версии? Там какие-то уязвимости?
Пробовал тор из backports ставить? Там должна быть свежая версия.


Anonymous 06/01/2019 (Sat) 16:33:20 [Preview] No.1514 del
И у тора вроде есть свой репозиторий для дебиана.


Anonymous 06/01/2019 (Sat) 16:49:27 [Preview] No.1517 del
>>1510
Генту


Anonymous 06/01/2019 (Sat) 17:04:22 [Preview] No.1519 del
Мне до сих пор никто не задонатил :(. Мне нужны деньги, чтобы нормально жить. Нужны трансформаторы, генераторы, насосы, сосуды, кремний, электроды, электричество, солнечные батареи, микроконтроллеры, сервоприводы и шаговые двигатели, ещё бы цирконий, чтобы красиво было. Хотя да, всё это вторично. Был бы у меня токарный станок, было бы супер. Много токарей берут индивидуальные заказы на детали. Я бы мог научиться токарить, чтобы зарабатывать деньги такими заказами. Или делать собственные детали и продавать на интернет площадках, если будет окупабельно. Но чтобы купить станок, мне нужно, наверное, где-то 20 XMR.

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


Anonymous 06/01/2019 (Sat) 17:19:33 [Preview] No.1520 del
deb tor+http://vwakviie2ienjx6t.onion/debian/ stretch-backports main
добавь в /etc/apt/sources.list
Там версия 0.3.5


Anonymous 06/01/2019 (Sat) 17:33:46 [Preview] No.1522 del
>>1519
>Мне до сих пор никто не задонатил :(. Мне нужны деньги, чтобы нормально жить.
Тебе сколько лет? Мышление 13-летней девочки.


Anonymous 06/01/2019 (Sat) 18:18:29 [Preview] No.1526 del
>>1522
Возраст секретен. Ну да, я негодую, что мне не задонатили. Я понимаю, что вероятность очень маленькая, что мне задонатят. Но как ещё получать деньги? Идти работать? Нет.


Anonymous 06/01/2019 (Sat) 18:24:01 [Preview] No.1527 del
>>1526
>Идти работать? Нет.
Ну дохни от голода тогда.


Anonymous 06/01/2019 (Sat) 18:48:39 [Preview] No.1528 del
>>1527
Голод, в отличие от станка легко удовлетворяется.
Кроме того, есть возможность заработка денег не работая. Например, если кто-то задонатит. Вообще деньги только так и можно честно получить, надо чтобы кто-то их дал. Обычно дают за некоторые услуги или вещи. Я мог бы попробовать производить lathegened вещи и продавать их, но для этого мне нужен lathe. Ещё можно производить электронные предметы из компьютера. Это могут быть программное обеспечение, видеоигры, картинки, видео. Я не представляю как бы я производил не открытое ПО. Несвободное можно, но не всё. Все эти дждавабравы и ннаамапейко я просто не могу делать несвободными, ведь они несут часть меня в мир. Какие-нибудь нейросети с обученными весами я мог бы продавать, но у меня нет аппаратного обеспечения для быстрого обучения и датасеты кому-то надо создавать. Картинки я мог бы рисовать, это не так уж и сложно, но разве на этом можно заработать? Через видео скорее можно добыть власть над вниманием людей, как поступают блоггеры всякие и аниматионмейкеры. После этого можно рекламировать что-то за деньги, например. Но делать видео сложновато. А делать видеоигры очень сложно, это и рисование, и программирование, и маркетинг (?) и много чего ещё. Кроме того, придётся заняться юриспруденцией, чтобы меня не посадили в тюрьму за это.
Видишь, ничего из этого мне не подходит, так же как и работа, так как указание к работе исходят из чужих уст.


Anonymous 06/01/2019 (Sat) 19:29:45 [Preview] No.1531 del
>>1528
>есть возможность заработка денег не работая. Например, если кто-то задонатит.
Что, правда есть, ты не ошибся?
>Я мог бы попробовать производить lathegened вещи и продавать их, но для этого мне нужен lathe.
Когда люди начинают бизнес они берут кредит или ты боишься, что не сможешь ПРОИЗВОДИТЬ и ПРОДАВАТЬ?
>Видишь, ничего из этого мне не подходит, так же как и работа, так как указание к работе исходят из чужих уст.
Повзрослеешь -- подойдет. Жаль на пожрат хватает, иначе бы быстрее повзрослел, а то потом больнее будет.


Anonymous 06/01/2019 (Sat) 21:10:10 [Preview] No.1537 del
ОП, сколько зарабатываешь на основной работе?


Anonymous 06/02/2019 (Sun) 12:01:19 [Preview] No.1580 del
>>1531
Вообще-то кредиты созданы для богатых, у которых мало свободных денег, но много продаваемого капитала.
Сколько людей взяли ипотеку и кредиты и в итоге стали их рабами. Всегда есть риск просчитаться.


Anonymous 06/02/2019 (Sun) 15:29:25 [Preview] No.1608 del
(87.01 KB 1280x720 0.png)
Я сделал интерактивную https://icchimarin-raspitrik.itch.io/money-bottler сцену про человека, который хотел токарный станок, но вместо этого родители отвели его в школу.
Я хотел скомпилировать и под виндовс, но у меня, на арчлинуксе, не поставился mingw, а clang пишет, что ему нужна какая-то visual studio инсталяция. Я не понял, что это такое. Ясно, что там скорее всего хедеры и библиотеки, но где мне их взять и куда положить — неясно.


Anonymous 06/03/2019 (Mon) 10:29:14 [Preview] No.1706 del
Эх, вот бы доделать icolaisi.


Anonymous 06/03/2019 (Mon) 13:29:29 [Preview] No.1736 del
>>1706
Эх, вот бы тяночку


Anonymous 06/03/2019 (Mon) 14:57:09 [Preview] No.1762 del
куда скинуть деньги на лечение?


Anonymous 06/03/2019 (Mon) 15:01:04 [Preview] No.1765 del
>>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/


Anonymous 06/03/2019 (Mon) 16:21:08 [Preview] No.1778 del
>>1765
братан, тебе нужна пересадка мозга, лучше дай номер банковского счёта


Anonymous 06/03/2019 (Mon) 17:14:28 [Preview] No.1782 del
>>1778
Но тогда вы меня сдеаноните!
Кстати, правильно говорить "пересадка тела"


Anonymous 06/03/2019 (Mon) 17:32:10 [Preview] No.1785 del
Я наверное выпилю из лайси возможность подключения модулей к компилятору, импортируя библиотеки. Не нравится мне это. Тогда я введу новый тип — proc, который обозначает функцию, не поддерживающую исключения и тогда это будет аналогично C-функции.


Anonymous 06/03/2019 (Mon) 18:08:11 [Preview] No.1787 del
Метапрограммирование это моё всё. Хоть icolaisi не готов, я пишу библиотеки на laisi и они состоят из метапрограммирования чуть более чем на половину. Вон в math почти все функции являются темплейтами, а в dapa темплейты от дженериков. Джереники — типы, генерируемые макросами.
Но и байткод мне надо сделать. С байткодом будет легче.


Anonymous 06/03/2019 (Mon) 18:17:59 [Preview] No.1789 del
Тут на сайте одни художники и программисты с радиолюбителями чтоле сидят?


Anonymous 06/03/2019 (Mon) 18:19:17 [Preview] No.1790 del
>>1789
>Тут на сайте одни художники и программисты с радиолюбителями чтоле сидят?
Как что-то плохое. На том Дваче сидел тот же контингент.


Anonymous 06/03/2019 (Mon) 18:30:50 [Preview] No.1792 del
>>1790
Так это же хорошо.
Поехавшие двигают технический и культурный прогресс.


Anonymous 06/03/2019 (Mon) 20:13:06 [Preview] No.1810 del
>>1789
Да. И это один и тот же человек.


Anonymous 06/03/2019 (Mon) 20:16:19 [Preview] No.1811 del
Я всё-же начал делать байткод для лайси.
Например код
u8 a := 5;

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


Anonymous 06/04/2019 (Tue) 12:59:54 [Preview] No.1854 del
(30.58 KB 498x433 a.png)
Пора переделывать anekdot.py и добавить возможность генерации числительных, даже если на 1000e(1 + 37) будет отсебятина.


Anonymous 06/04/2019 (Tue) 13:16:22 [Preview] No.1855 del
(34.09 KB 500x400 136656945316.jpg)
>>1810
>Да. И это один и тот же человек.
Как говорится сам себя не....


Anonymous 06/04/2019 (Tue) 13:58:03 [Preview] No.1860 del
(62.96 KB 809x374 b.png)
Кстати, библиотека 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, который даст мне лучше понимать мир.


Anonymous 06/04/2019 (Tue) 16:15:25 [Preview] No.1864 del
(19.41 KB 498x433 fon.png)
смени фон анончик


Anonymous 06/04/2019 (Tue) 16:47:19 [Preview] No.1866 del
>>1864
На уродливый синий? Фу. Ужасное сочетание цвета. Мне нравится либо белое на чёрном, либо зелёное на чёрном, как в ретрохакерских фильмах. Но второй вариант подходит только для бесцветного текста. Так что только белый на чёрном 12-й шрифт. А в текстовом редакторе у меня 11-й моноширный.

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


Anonymous 06/04/2019 (Tue) 17:42:44 [Preview] No.1893 del
>>1864
скорее сине-зеленый. Синий из паскаля нинужен, а так глаза отдыхают. От черного потом бед трипы ловишь на стене


Anonymous 06/04/2019 (Tue) 18:33:19 [Preview] No.1916 del
>>1866
> потому что все страницы в интернете заняты C++, когда я ищу C
Страниц по C ровно одна, находится по адресу https://en.cppreference.com/w/c .


Anonymous 06/04/2019 (Tue) 19:01:17 [Preview] No.1927 del
>>1893
Ты там что, в темноте сидишь и на 30 см от монитора?


Anonymous 06/05/2019 (Wed) 06:43:53 [Preview] No.1963 del
(15.36 KB 628x180 x.png)
Питоновский map удобный, но в моём ЯП можно было бы сделать:
funcname(args), где args это больше аргументов, чем принимается. Но я ещё не подумал над правилами размножения аргументов или как это назвать. Может быть придётся изменить и делать dup(funcname)(args), а может быть тоже добавить map и делать map(funcname,args)


Anonymous 06/05/2019 (Wed) 07:57:33 [Preview] No.1965 del
Есть небольшой прогресс.
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-код файлов, лучше бы узнать о уже готовых стандартах для пересылки данных для вычислений.


Anonymous 06/05/2019 (Wed) 10:46:36 [Preview] No.1976 del
Вот http://ngphe4occygdwuirh4jqw2bbwqktm2ewhlcniygjylez3vrrxyj2sfid.onion/ сайт для Laisi. Он может упасть. Надеюсь не пробьёт защиту, вы можете пробить защиту? А сдеанонить меня?


Anonymous 06/05/2019 (Wed) 16:12:41 [Preview] No.1996 del
(77.68 KB 1280x720 redwitch.jpg)
у ОПа конечно своя атмосфера, и мне не хочется ее портить, но почему знак ":=" в качестве присвоения? Почему не Сишный "=", почему не ФПшный и псевдокодовый "<-"?

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


Anonymous 06/05/2019 (Wed) 16:36:48 [Preview] No.1997 del
Я посмотрел, что такое GLSL и мало что понял, есть вертекс-шейдеры и фрагментные шейдеры. Что это такое — неясно, но я думаю, что свой 3D-растерайзер начну писать раньше чем свой hypertext markdown language, так что рендерить буду не опенглом, а растерайзером. Это может быть полезно, так как не все системы поддерживают опенгл, например MCU.
В растеризации 3D-объектов ничего сложного нет. Трассировка лучей, нормали, пересечения. Но главное это сделать в icolaisi поддержку OpenCL, иначе одна картинка будет рендериться несколько минут.
Я думаю, пусть будет целостная сцена, в которой расположены объекты, они имеют координаты, вращение и дочерние объекты. Рендеринг представляет собой помещение "камеры" в некоторое место и трассировку лучей. Камера может быть изометрическая, перспективная, рыбий глаз (?), точка и какая угодно. Но рендеринг отдельных объектов может быть переопределён и тогда будет подобие шейдеров.

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


Anonymous 06/06/2019 (Thu) 04:13:22 [Preview] No.2029 del
Ой, я ошибся с генераторами, что ж вы меня не предупредили?
Описанный мною способ реализации с глобальными переменными не thread-safe.
Подумав, я пришёл к выводу, что можно применять такие способы реализации:
В любом случае просто пересылать все локальные переменные функции в функцию, а так же адрес или номер метки, где был последний yield. Но этот способ, вероятно, будет медленным.
В случае если таргет не имеет потоков (большинство bare metal микроконтроллеров), тот тут можно локальные переменные сделать глобальными, если функция не рекурсивная.
В случае елси таргет имеет потоки и в компиляторе включена соответствующая оптимизация для генераторов, то нужно функцию обернуть, создать на ней поток и чтобы она останавливалась после каждого yield (с помощью мьютексов, например) а результат клала по некоторому адресу.

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


Anonymous 06/06/2019 (Thu) 17:51:45 [Preview] No.2068 del
Ух, ну и сложности с icolaisi. Я очень неэффективно генерирую байткод, придётся всё переписывать. У меня, получается, компиляция будет идти в целую кучу стадий:
Препроцессирование кода
|
V
Импортирование библиотек и проделка всех операций с ними
|
V
Парсинг
|
V
Когда встречается макрос или темплейт, то генерация кода для него, препроцессирование и парсинг.
|
V
превращение в байткод
|
V
превращение в LLVM-биткод
|
V
Создание исполняемого файла.

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


Anonymous 06/06/2019 (Thu) 19:12:20 [Preview] No.2078 del
Нет, я не могу просто взять и поменять то, что я уже напрограл. Я хочу просто быть аморфным и лепить костыли.
Чтобы нормально программировать, надо придумывать структуру данных сначала и понормальнее это делать. Но уже позно. Буду переписывать на laisi, может и подумаю. Хорошо у меня в nnaamapeiko хоть более-менее в порядке. Но это потому что, там ничего сложного нет, пока что. Мне надо туда ввести 2 важные структуры — контекст и виртуальную FS. Контекст будет хранить данные о модулях, о слоях и всяких линий, положения и такого. Это по сути замена глобальным переменным и позволяет использовать 2 разных набора данных nnaamapeiko в одном фронтенде. Хотя не уверен, насколько это полезно. Но что точно нужно, так это виртуальная ФС, которая будет давать доступ к файлам карт для модулей. А файлы карт это могут быть директории, могут быть архивы или что-то ещё и для модулей через функции будет одно API.


Anonymous 06/07/2019 (Fri) 05:13:15 [Preview] No.2089 del
Из-за того что люди не умеют считать я заражаюсь от них и допускаю очень глупые ошибки. Почему люди не знают что такое номер? Ведь номер это не число, номером может быть как число, так и слово, адрес другими словами. Часто в зданиях этажи нумеруют так: -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, говоря о том, что номер это не математика, номер это просто обозначение.
Из-за этого я часто могу ошибаться в результате на единицу.
Хотя что там, многие люди не знают что такое число. Они наверняка думают, что это набор циферек, лол.


Anonymous 06/07/2019 (Fri) 08:29:41 [Preview] No.2094 del
Изначально laisi задумывался как замена C, но со временем я понял, что не выйдет так и не нужно.
Чтобы laisi стал заменой С, пришлось бы выпилить динамические массивы, string, int, float, запретить переопределять функции, убрать исключения и генераторы.


Anonymous 06/07/2019 (Fri) 09:18:20 [Preview] No.2098 del
>>2089
>1989
Что с этим числом не так? Я не знаю, объясни.


Anonymous 06/07/2019 (Fri) 11:18:29 [Preview] No.2106 del
Я добавил байткодеризацию для 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/События_на_площади_Тяньаньмэнь_(1989)


Anonymous 06/07/2019 (Fri) 18:00:05 [Preview] No.2139 del
На сайте для Laisi пока не работают lib и examples, пересылают на домашнюю страницу. Когда-нибудь добавлю. И в lib будут зарезервированные названия библиотек и их иконки.
Зачем я добавляю байткод? Чтобы можно было писать игры с закрытыми исходниками. Я считаю, что у игр должны быть закрытые исходные коды. А так как лайси имеет встроенную поддержку параллелизации, то вполне можно подключить какую-нибудь библиотеку для нейросетей, скомпилировать с библиотекой OpenCL или запустить байткод интерпретатором и будет параллельно на видеокарте вычисляться.
Возьмём к примеру майнкрафт и майнтест. Майнкрафт проприетарен, закрыт и на джаве. Но сколько для него модов, а сам он хорош и красив. Может быть и деньги тому причиной, но мне кажется, что в моджанге им почти не занимаются. Обновления выходят раз в полгода, да?
А в майнтесте всё уныло и некрасиво, хоть он и открыт, и документация есть.
Вот закрытый софт это то, что ненужно. Какой же это софт, если он закрыт?


Anonymous 06/08/2019 (Sat) 12:57:00 [Preview] No.2168 del
Jdavabrav update v0.3.3 https://gitlab.com/Ninikaita/jdavabrav/

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


Anonymous 06/08/2019 (Sat) 19:38:47 [Preview] No.2179 del
Байткодеризация 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;
}

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


Anonymous 06/09/2019 (Sun) 11:14:18 [Preview] No.2234 del
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 сделать.


Anonymous 06/09/2019 (Sun) 12:29:43 [Preview] No.2240 del
>>1331
Что тебя подтолкнуло делать свой язык программирования?


Anonymous 06/09/2019 (Sun) 14:44:44 [Preview] No.2251 del
>>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) это перебор.


Anonymous 06/09/2019 (Sun) 15:18:30 [Preview] No.2255 del
>>1531
>Повзрослеешь -- подойдет. Жаль на пожрат хватает, иначе бы быстрее повзрослел, а то потом больнее будет.
Как мне противно стало от твоей реплики, сразу повеяло запахом пивасика, водочки, шашлыка, жизненных планов, обсуждения чьей-то судьбы, хихикания полупьяных дурнораскрашенных женщин, золотых крестиков на шеях, среднерусского леса, мусора на опушке, березок, ухающей 50-ти летней женщины, застольных разговоров, мобильных телефонов, метро, детей в яркой китайской одежде, загадочно-дебиловатых улыбок молодых матерей в парках спальных районов, следа от самолёта в небе над подмосковным городком, первых наркотиков шустрых светловолосых детей, молящих о еде собаками у перехода.


Anonymous 06/09/2019 (Sun) 16:31:29 [Preview] No.2260 del
>>2255
На пикче защита от радиации?


Anonymous 06/09/2019 (Sun) 17:40:24 [Preview] No.2269 del
Сделать поддержку 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};


Anonymous 06/09/2019 (Sun) 17:42:55 [Preview] No.2270 del
>>2260
Может мраморный домик?


Anonymous 06/09/2019 (Sun) 17:45:26 [Preview] No.2271 del
Чем мне ещё не нравится тор-браузер, так это тем, что когда endchan говорит, что флуд детектед, мне нужно меняться на new identity, закрывая все вкладки. В jdavaбраве я мог бы ничего не делать, просто пезагрузить тор.
Уже второй раз приходится перезагружать, чтобы отправить данный пост.


Anonymous 06/09/2019 (Sun) 19:02:02 [Preview] No.2278 del
Пожалуй, в следующем обновлении Дждавабрава я решу вопрос с файловыми POST-операциями, куками и попробую добавить возможность перевода текста, так как это классно и нужно. Мне бы найти программку для перевода или побольше словарей.


Anonymous 06/10/2019 (Mon) 05:42:55 [Preview] No.2286 del
Незнаю, куда я смотрел, но реквеств принимает bytes в post(). Но я не проверил картинки. Не получается запостить, так как все известные мне имиджборды запрещают постить не через тор-браузер, а какие у него хедера я незнаю.


Anonymous 06/10/2019 (Mon) 13:10:05 [Preview] No.2300 del
Нет, всё. Мне надоело, я ухожу с эндчана. Слишком забаговання борда.


Anonymous 06/10/2019 (Mon) 13:50:22 [Preview] No.2301 del
>>2300
Лол.


Anonymous 06/10/2019 (Mon) 15:30:24 [Preview] No.2304 del
>>2301
Нет, не так. Нужно просто разработать Jdavabrav так, чтобы я мог постить сюда. Я же браузердельник. Этот пост еле-еле запощен через Jdavabrav. Их... *New Reply*...
Нет, не получилось. Незнаю что нашаманили тут, но мне приходится отправлять через какнутый тор-браузер. Кто вообще пользуется этим говном? Если все польлзовались Jdavabrавом, то на эту борду никто не ходил бы и проблему исправили бы и на эту борду ходили бы. Но почему-то все используют firefox, google chrome, даже qutebrowser.
Это означает только одно. Мне нужно создать свой WEB, с laisi и приватностью, как я уже писал. Тогда я смогу создать монополичный веб-браузер, так как модульный и свободный.
Тем не менее, в обычном вебе очень много данных остаётся и бросать Jdavabrav нельзя.

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


Anonymous 06/10/2019 (Mon) 15:46:21 [Preview] No.2306 del
(78.65 KB 800x600 1530181909_igry.jpg)
>>2304
Запиши экран что ты там делаешь, а то я все равно не понимаю, что ты пишешь.


Anonymous 06/10/2019 (Mon) 16:14:48 [Preview] No.2308 del
Короче, проблема скорее всего в пост-операциях. Ни на одном сайте с POST ничего не постится, если запрос с boundary, а тутовская капча с boundary зачем-то. Скорее всего проблема в хеадерах, которые реквестс шлёт. Я мог бы доверить пересылку pyqt5, а не костылить, хоть WEB это сам по себе костыль. И знаете, что ещё? Вероятно сайт моего банка будет использовать boundary в пост операциях, из-за чего я не буду иметь доступ к деньгам и мне придётся перевести всё в криптовалюты и драгоценные металлы. Так что я вас призываю использовать криптовалюты, монеро, биткоины, создавать магазины, принимающие их, оружейно захватывать магазины и внедрять системы, чтобы можно было купить вещи за криптовалюты. Монеро, вроде бы, имеет такую фишку, что можно сделать один ID платежа и с лёгкостью оплатить его. Так же торговля с использование золота, серебра, алюмния и других металлов хороша.

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


Anonymous 06/10/2019 (Mon) 18:53:58 [Preview] No.2317 del
В бездну Jdavabrav! Завтра или когда-нибудь удалю проект. Один анон на лолифоксе советовал мне luakit, а я уже начал делать Jdavabrav.
Сначала я попробую разобраться с луакитом, а потом приму решение. Не всё так просто тут. Вместо дждавабрава наверное конфиг свой выложу.


Anonymous 06/10/2019 (Mon) 19:56:05 [Preview] No.2318 del
Хуита этот ваш веб, HTML, CSS, JS, HTTP, как и браузеры для них. Нет таких, чтобы были и лёгкие в использовании, и для людей.
Свой сайт для laisi http://ngphe4occygdwuirh4jqw2bbwqktm2ewhlcniygjylez3vrrxyj2sfid.onion/ я перевёл в text/plain вид кроме /doc/completed


Anonymous 06/11/2019 (Tue) 10:58:44 [Preview] No.2354 del
В icolaisi я добавляю поддержку for. Выяснил, что for будет разно реализуемый для разных случаев, ведь итерируемым могут быть: статические массивы, динамические массивы, ассоциативные массивы, генераторы, экземляры классов.

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


Anonymous 06/11/2019 (Tue) 18:02:45 [Preview] No.2372 del
(9.10 KB 348x222 in.png)
(23.68 KB 436x461 out.png)
Байткодирование for.
В общем-то осталось немного для байткодирования. each, вызов функций, raise и yield. Ну ещё структуры всякие, типы, классы, переопределения операторов. Ссылание, получение элементов объектов. И парочка мелочей.
И это совсем не всё. Ведь есть ещё препроцессирование — condition compilation, импорт библиотек, темплейты, макросы.


Anonymous 06/12/2019 (Wed) 03:38:11 [Preview] No.2400 del
>>2372
Какова вероятность, что это всё твои фантазии и на самом деле твой язык не работает, а в репозитории лежит нагенерированный тобой мусор, который не скомпилируется?


Anonymous 06/12/2019 (Wed) 03:54:50 [Preview] No.2401 del
Странный какой-то чел.
Его браузер это вроде просто поделка на pyqt, но приэтом он как-то смог запилить яп.
Хуй знает короче.


Anonymous 06/12/2019 (Wed) 04:12:22 [Preview] No.2402 del
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters


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


Anonymous 06/12/2019 (Wed) 12:10:13 [Preview] No.2419 del
Что можно сказать про luakit?
Раньше я некоторое время использовал qutebrowser, но он меня выбесил своими сообщениями о том, что не получается что-то загрузить в стране, в которой часть соединений блокируется, а сконфигурировать не получалось.
Как я понимаю, luakit и qutebrowser унаследовали cli-интерфейс от какого-то друго бразуера. Благодаря этому порог вхождения для меня оказался ниже. Luakit имеет хороший дизайн по-дефолту, но насчёт юзабилити я не уверен. В дждавабрав на каждой вкладке была кнопка повзоляющая отключить JS, также я хотел добавить кнопку для отключаения коммуникаций (если джаваскрипт пытается, например). Незнаю, можно ли тут такое добавить.
Luakit очень highly конфигурэйбл и флексибл. Есть модуль mpv позвляющий открыть ссылку в оном, но я не уверен. Это очень хорошо.
Есть модуль adblock, я адблоком в жизни не пользовался, но возможно оно будет мне полезно, потому что иногда сайты прикрываюбт свой текст сообщением на разрешение сбора данных. Я не хочу тратить на это время, так как всё-равно периодически удаляю кукисы. Было бы хорошо, если бы он позволял убирать данное сообщение и давать мне прочесть текст.


Anonymous 06/12/2019 (Wed) 13:57:50 [Preview] No.2431 del
Оп, это не ты Наноборду зазрабатывал?


Anonymous 06/12/2019 (Wed) 16:23:06 [Preview] No.2445 del
Я добавил в icolaisi лучше юзер-френдли и опции. Теперь и вы можете посмотреть на репрезентованный laisi-байткод через ./icolaisi t.lic -S -o -
>>2431
Нет, не я.


Anonymous 06/12/2019 (Wed) 18:55:38 [Preview] No.2446 del
У луакита очень мало документации, приходится код исследовать. Я хотел бы написать сначала модуль, позволяющий открывать ссылки в экстернальных программах. Есть сигнал populate-popup, вроде бы через него можно добавлять элементы для контекстного меню, открываемого через ПКМ. Но как это делать, я незнаю. Если бы мне запринтили структуру, то я бы понял, но функция print не работает.
После этого можно браться за модуль, реализующий функционал dataflow, который был в дждавабраве, пока тот не умер. Хотя не уверен, хватает ли API для этого. Надеюсь хватает.
Ещё мне не нравится, что гифы перематывать нельзя стандартными средствами веб-движков. Что за мода? Нет, всё нормально, это просто пользователи используют гиф не для того. Гиф это для анимаций, когда неважно какой кадр сейчас. Например, Земля крутится. А когда вебм конвертируют в гиф это фу. Может быть можно сделать какой-нибудь джаваскриптовый кадр, который загрузит все кадры гифа и даст возможность перематывать?
Также было бы хорош перевод выделенного текста.


Anonymous 06/13/2019 (Thu) 13:14:13 [Preview] No.2476 del
liblaisi.so — библиотека для лайси для реализации всяких типов.


Anonymous 06/13/2019 (Thu) 16:32:08 [Preview] No.2496 del
(45.13 KB 703x431 zlo.png)
Еле написал модуль для луакита чтобы открывать ссылки в других программах. Луакит хоть лагучее и багучее, но модули.
А луа это вообще бешеная дичь. Там индексы начинаются с единицы. ИНДЕСЫ С ЕДИНИЦЫ


Anonymous 06/14/2019 (Fri) 07:59:29 [Preview] No.2543 del
Ну вот. Оказалось с луакита картинки не постятся!


Anonymous 06/15/2019 (Sat) 07:31:49 [Preview] No.2610 del
Меня только что осенило! Исключения надо объявлять в аргументах функции 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.


Anonymous 06/15/2019 (Sat) 07:45:58 [Preview] No.2611 del
(4.71 KB 258x94 b.png)
Собираюсь добавить компиляцию пикрелейтеда в реально работающий шейред обджект, а потом можно препроцессирование заняться.
У меня есть баг с выражениями в скобках.


Anonymous 06/15/2019 (Sat) 09:44:00 [Preview] No.2619 del
>>2611
По описанию-то ты Лев Толстой, генераторы туда-сюда добавляешь, при том, что это довольно сложная фича, исключения там доделываешь, всё заебца.

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


Anonymous 06/15/2019 (Sat) 09:58:04 [Preview] No.2620 del
>>2619
Ну да. На странице проекта есть компилятор. Можешь запустить его с t.lic (пример кода, который там же) ./icolaisi t.lic -S -o - и получишь репрезентованный лайси-байткод.
Что насчёт компилирования в машинный код, я только сейчас это делаю. Я и раньше компилировал, но отпарсенный код, а теперь буду переделывать под байткод.
А генератор я убрал из лайси, в смысле стандарта лайси. То есть просто убрал несколько строк описания. Из документации к laisi v0.7.1, которая ещё не вышла.


Anonymous 06/15/2019 (Sat) 10:06:18 [Preview] No.2622 del
>>2617
Это бред. Если враг хочет захватить твои земли, то он будет пресекать твои попытки подружиться с ним.


Anonymous 06/15/2019 (Sat) 10:07:59 [Preview] No.2623 del
>>2622
Ну как я так промахнулся. Багованный эндчан!


Anonymous 06/15/2019 (Sat) 10:17:34 [Preview] No.2624 del
>>2620
>и получишь репрезентованный лайси-байткод
И его никак не запустить?

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

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

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


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


Anonymous 06/15/2019 (Sat) 14:17:28 [Preview] No.2643 del
>>2638
>Да, никак не запустить сейчас.
Вся суть. То есть ты хуяришь код на своём языке, но запустить его не можешь и не можешь даже проверить, работает ли он? Ты фантазированием занимаешься. ты фантазируешь, как твоя программа, написанная на выдуманном языке, запускается и выполняется без единой ошибки с первого раза, и всё в твоём выдуманном мире идеально и работает как ты хочешь. Только в реальности этого ничего нет.

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

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

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


Anonymous 06/15/2019 (Sat) 14:35:43 [Preview] No.2646 del
>>2643
Писать код на лайси, даже не спрограммировав его приносит пользу тоже. Потом надо будет меньше разрабатывать, просто проверить на баги.
>Ни next, ни send, ни throw, ни yield from, ни возврата значения в финальном return
Видимо я очень мало разбираюсь в генераторах. Надо будет почитать.
>Где, кстати? В байткоде?
Да, в байткоде. И raise (бросить исключение), и return, и yield были бы почти одним и тем же.


Anonymous 06/15/2019 (Sat) 14:47:19 [Preview] No.2647 del
>>2646
>Потом надо будет меньше разрабатывать, просто проверить на баги.
Ты когда-нибудь писал программы? Оно так не работает. Если не корректировать баги в процессе написания, то может оказаться, что у тебя половина кода полагается на неправильно тобою предположенное поведение языка в одной из строчек, которую ты написал неделю назад.

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

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

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

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


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


Anonymous 06/15/2019 (Sat) 18:00:43 [Preview] No.2653 del
Выпущен icolaisi v0.1.3
Добавлено немного компиляции в LLVM IR ассемблер.
В шейред обджект.
Теперь можно исполнять функции шейред обджекта, которые используют ABI laisi.
Там есть файл t.lic. Можно скомпилировать через ./icolaisi t.lic -o out.so, а потом запустить через ./icolaisi out.so -f fac
Чтобы убедиться в правильности результата, придётся править код файла icolaisi, раскомментировать принтинг retval.


Anonymous 06/16/2019 (Sun) 04:58:37 [Preview] No.2673 del
>>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.
То есть на данный момент по-прежнему ничего не работает?


Anonymous 06/16/2019 (Sun) 05:04:45 [Preview] No.2674 del
>>2673
range это, вообще говоря, не генератор даже в третьем Питоне. Но вместо него в моём примере можешь любой генератор подставить.


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

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


Anonymous 06/16/2019 (Sun) 07:31:49 [Preview] No.2679 del
Мне всё ещё кажется, что стоит убрать динамические типы из чистого Laisi. Но я не уверен. Надо решать сейчас, пока всё болтается.
Тогда не придётся полагаться на heap.
Ну же, у меня же есть препроцессировальное метапрограммирование, стоит попробовать через него и дополнительные библиотеки реализовать динамические типы. Это сделает всё легче. И название будет оправдано.


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


Anonymous 06/16/2019 (Sun) 09:49:20 [Preview] No.2689 del
(30.83 KB 1920x1560 1.png)
Выпущен laisi v0.7.1
Убраны генераторы.
Переделаны исключения (??????????).
Добавлено документирования кода в комментариях.
Добавлен @for
Добавлен @ifhas

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


Anonymous 06/23/2019 (Sun) 18:16:33 [Preview] No.3250 del
Жидкий дискомфорт очень плотный.

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


Anonymous 06/26/2019 (Wed) 08:47:44 [Preview] No.3388 del
Laisi-m — модифицированный лайси, приближённый к машинам. Нет динамических типов и исключений, proc нельзя изменить во время исполнения.
Embedded laisi — встроенный лайси. Может быть запрет на экстернирование символов или ещё каких-то действий. Может быть предопределённый набор импортов, дефайнов, экстерновых символов. Такой laisi будет использоваться в моём вебе.
Ща, доделаю эти динамические массивы + ещё 8 базовых типов + ассоциативные массивы + встроенные функции + ещё кое-что.


Anonymous 06/26/2019 (Wed) 21:21:49 [Preview] No.3404 del
*You talk like a fag and your shit's all retarded*


Anonymous 06/27/2019 (Thu) 05:27:52 [Preview] No.3411 del
>>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*


Anonymous 06/29/2019 (Sat) 04:13:15 [Preview] No.3509 del
Ой, можно же, получается, написать 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.


Anonymous 06/29/2019 (Sat) 14:27:35 [Preview] No.3542 del
На си нельзя написать хороший код. Средств языка не хватает.


Anonymous 07/04/2019 (Thu) 16:58:26 [Preview] No.4122 del
Моя быстрота уменьшилась, а медленность повысилась из-за другого проекта.
Тем не менее, потихоньку программирую иколайси.
Возможно, я изменю стандарт Laisi так, что laisi будет laisi-m и будет стандарт laisi-h, как laisi heap. В laisi не будет доступны динамические массивы. Но статические массивы с динамическим размером будет доступен, правда я не уверен в какой степени. И функции нельзя будет переопределить. Тем не менее, параллельность всё так же будет поддерживаться.


Anonymous 07/05/2019 (Fri) 10:49:50 [Preview] No.4159 del
Я потерял ключи от сайта.
Теперь новый адрес для лайси — x6pptowh4vo743wsg6llb3vxglhzk5k7zk35aoxlyuvk32yfewbsr5id.onion
Теперь я забекапил.


Anonymous 07/09/2019 (Tue) 13:00:43 [Preview] No.4560 del
Я случайно повредил блокчейн монеро и теперь не могу посмотреть есть ли пожертвования. Хоть вероятность того, что мне на софт пожертвовали очень мала, мне надо проверить.


Anonymous 07/14/2019 (Sun) 16:07:43 [Preview] No.4963 del
Я обновил Laisi до v0.7.2.
Удалён тип rNdM, вместо встроенных методов в типах теперь встроенные функции, добавлены ассоциативные массивы со статическим размером.
Что насчёт реализации компилятора, icolaisi, то я пробовал что-то там с оператором энумерации и динамическими массивами сделать, но не доделал.


Anonymous 07/14/2019 (Sun) 17:40:36 [Preview] No.4968 del
>>1331
Антоша, я почти ничего не понимаю из того что ты пишешь, но я горжусь тем что нахожусь на одной борде с таким умным человеком!


Anonymous 07/15/2019 (Mon) 09:50:57 [Preview] No.5015 del
(5.83 KB 233x120 a.png)
(78.78 KB 1295x693 b.png)
Смотрите, как у меня реализован тип func. Так как func и proc можно переопределять, надо сделать как-то, чтобы это можно было делать. К функциями можно складывать другие фукнции, то есть, конкатенировать код. Хотя я ещё не со всем разобрался, например, с ретурнами.
Есть переменная functionname.bundle, которая содержит указатель на машинную функцию (процедуру), указатель на такие указатели и пустой int, всмысле, бесконечное целое число. Изначально можно присвоить одни инструкции для этой функции и эти инструкции будут в functionname.bundle. Есть процедура functionname и она исполняет все функции из functionname.bundle.


Anonymous 07/15/2019 (Mon) 19:28:47 [Preview] No.5054 del
(233.09 KB 489x516 15480221180050.png)
https://github.com/SthephanShinkufag/Dollchan-Extension-Tools
Чел, форкни куклоскрипт. Нужно убрать из него весь левый функционал и онлайн слежку.
Упростить скрытие всякого дерьма, поменять интерфейс. Это должна быть удобная помойка, которая бы заменяла отключенные скрипты на аибах.


Anonymous 07/16/2019 (Tue) 04:22:32 [Preview] No.5076 del
>>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,*).
Так вот, можно было бы ввести константу, кото


Anonymous 07/16/2019 (Tue) 04:35:32 [Preview] No.5081 del
рая определяла бы количество предвычисленных элементов. Это может быть полезно для оптимизации.
Что-то типа такого:
@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 < 0) {
исключение
}
elif (i == 0) {
return 1;
}
elif (i < FACRESLEN) {
return facres[i];
}
else {
return facbase(i);
};
};
func (int,[int i]) facbase := {
return sum(1 : i,*)
};
Автоматизация! Метапрограммирование!
Кстати, в моём ЯП 2 вида метапрограммирования — препроцессинговое и генерация кода на лету. Правда в этой версии он не совсем генерируется, а складывается. В новых версиях я хотел добавить более сложную генерацию кода. Но в таком случае, вероятно, придётся компилятор линковать с полученной программой. Можно разделить компиляцию на 3 уровня — машинный (не используется heap, то программист не использует исключения и динамический типы, а функции constant); без компиляции, но с heap; и с компиляцией. В разных случаях компилятор будет знать, что надо линковать. В машинном типе, например, не надо линковать функции для управления памятью из liblaisi malloc32 и другие.
Что насчёт твоего вопроса, то я незнаю джаваскрипт и как устроены эти npm-пакеты.


Anonymous 07/16/2019 (Tue) 06:22:27 [Preview] No.5090 del
>>4968
Чем меньше чел понимает в теме тем скорее он будет восхищаться.
>>5076
Чел, не замахивайся так. Попробуй сначала какой-нибуд, immediate-mode гуй написать хотя бы, на существующем языке.
И то что ты делаешь надо не на бордах показывать, а на hn например.


Anonymous 07/19/2019 (Fri) 18:15:51 [Preview] No.5317 del
Я добавил немного поддержки f32e8 и f64e11, которые по полям аналогичны IEEE 754 Single и IEEE 754 Double соответственно.
Но это малость. Гораздо важнее — динамические массивы, ассоциативные массивы, структуры, юнионы, переопределение операторов, препроцессирование!
На самом деле, создание компилятора для ЯП это не сложно, если на базовом уровне. Даже если без LLVM. Средние проекты, которые чаще встречаются, гораздо сложнее.
>>5090
>immediate mode gui
Ну это да, это ядро для ГУИ. Всякие подключения к SDL2 или Xlib это уже вторичное, дополнительная обёртка.
Главное рендеринг и обработка событий, которые посылается в функцию обработки виджетов.
>hn
Куда? о.o


Anonymous 08/02/2019 (Fri) 13:56:17 [Preview] No.5810 del
Что-то на питоне не получается нормально программировать. Наверное, иколайси стоит писать на си.


Anonymous 08/06/2019 (Tue) 14:22:19 [Preview] No.5865 del
Нет, на питоне уже что-то есть, стоит продолжать использовать его.

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


Anonymous 09/09/2019 (Mon) 07:23:37 [Preview] No.6040 del
Бамп


Anonymous 12/28/2019 (Sat) 02:41:43 [Preview] No.6547 del
Анончик, а куда ты дел jdavabrav? Не могу найти репозиторий, нужны сорцы.


Anonymous 12/28/2019 (Sat) 18:40:24 [Preview] No.6553 del
(27.78 KB 1075x316 a.png)


Anonymous 09/29/2020 (Tue) 17:52:21 [Preview] No.7737 del
(834.61 KB 1039x799 tr.png)
Ого, тред жив, вот это ностальджи (но не как если бы это был почивший лолифокс)

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

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

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


Anonymous 09/29/2020 (Tue) 18:28:51 [Preview] No.7738 del
>>7737
Кто и где рисовал картинку?


Anonymous 09/30/2020 (Wed) 05:37:25 [Preview] No.7739 del
(827.78 KB 1039x799 triedinyi laisi.png)
>>7738
Аноним на тучке! Понравилась? Держи без зипархива.


Anonymous 09/30/2020 (Wed) 10:03:02 [Preview] No.7740 del
>>7739
Да, понравилась. Я не смог точно опознать стиль.
Можешь в двух словах без особого применения технических терминов объяснить не сведущему в программировании человеку, чем создаваемый тобой язык отличается от других? В чём должно быть его превосходство?
Ты действительно делаешь что то новое и важное, и твои разработки могут быть применены другими в реальных работающих проектах? Или ты изобретаешь велосипед как хобби?


Anonymous 09/30/2020 (Wed) 12:09:49 [Preview] No.7741 del
(837.07 KB 1200x800 out.mp4)
>>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++, а потом переписать, но это муторно. Не муторно было писать графический движок и ГУИ-библиотеку. Или, например, вот видос с моим рейтрейсингом. Он поддерживает не всё (отражения, нормальные преломления), но код этого демо-рейтрейсера стал основой для двух из четырёх бекендов моего графического движка.


Anonymous 09/30/2020 (Wed) 13:30:35 [Preview] No.7742 del
>>7741
Я же просил без терминов. Ты наверное столько времени тратил что бы написать этот пост.
Продублируй в остальные треды его что ли.
Просто мне почему то кажется, что то о чём ты говоришь наверняка существует. И может быть ты об этом не знаешь. Желаю тебе удачи с твоим проектом.


Anonymous 11/21/2020 (Sat) 12:40:57 [Preview] No.8114 del
Тучка опять умерла, так что можно тут свой блогек продолжить.
Что я сделал за последнее время?
Добавил частично поддержку списковых данных как тут:
[code]
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[:][:];
};
[/code]

Теперь можно получше взаимодействовать с массивами. Но всё-равно этого мало, на Лайси до сих пор нельзя кодить! Мне надо написать инфраструктуру в виде кучи библиотек.
Думаю, я буду потихоньку выпиливать из стандарта некоторые ещё не реализованные вещи. Такие как 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 следует лучше скомпоновать. Не удивлюсь, если сейчас посмотрю и увижу несколько почти одинаковых функций.


Anonymous 11/21/2020 (Sat) 14:23:48 [Preview] No.8115 del
О, Дваченнел. Помнится, я перестал там сидеть, когда там удалили мой пост, в котором я послал одного ебаного дегенерата нахуй.

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


Anonymous 11/26/2020 (Thu) 19:17:09 [Preview] No.8145 del
>>8115
Очень долго думал над твоим постом. К счастью, имиджборды, как и многие текстовые диалоги позволяют долго думать на ответами. Дни, месяца, года. Разговором вслух можно ляпнуть чего-то или не придумать, что ответить, так ночью через 2 года и понимаешь, что ответить нужно было так-то, а не как-то.
Так вот, если ты думаешь, что этот человек, о котором ты говоришь дегенерат, то это неверно. У тебя либо нарушения памяти, либо нарушение восприятия, либо просто совершенно иное мировозорение. Во втором всмысле в третьем, лол. Уже счёт автоматически с нуля идёт случае это совершенно не плохо. Я считаю, что хорошо, когда люди думают по-разному, даже если их мышление кажется сумасшествием, шизофренией, бредом. Взять, например, виндузятников. Мне не понятно, как они позволяют виндовсу, нет, корпорации владеть их компьютером. Им на самом деле не так уж и нужен компьюетер, наверное. Хотя, среди каких-нибудь радиолюбителей, станочников, даже программистов, то есть технических специальносетй, полно виндовсюзеров. Хоть мне и кажется это безумием, я это принимаю как данность. Окружают меня безумные люди в основном и это нормально. Они тоже имеют право на выражение собственных мыслей.
Что насчёт твоего поста, то тебе следовало бы написать не "дегенерата", а "генерата", "прогенерата", "сверхчеловека", на крайняк "протогенерата". А если тебе просто отвратителен и не нравится этот человек, то "отвратительного человека", "ужасного человека", "врага", "мерзкого червя" или что-то подобное.
А что сказать про модерацию на тучке, то мне она нравилась. Моих постов почти не удаляли. Не знаю, как именно ты послал человека, но если односложно, то это явное серунство. Мне бы не хотелось сидеть на имиджборде, где каждый серунит как на сосаче "пук кек срёньк порвался". Но теперь я не мог постить на тучке, так как постинг с тора запрещали. Наверное, админ на работку пошёл или ещё почему-то не мог модерировать борду. А сейчас я не пробовал на пучку постить. Наверное, пора потихоньку отказываться от имиджборд. Они едят время, а почти ничего интересного там нет. Лучше написать автоматический логгер постов, парсер тем и приблизительного смысла текста, картинок, архивируя и обрабатывая всё. Но не уверен, а интересно ли это мне.
Так же допускаю возможность, что ты назвал человека дегенератом, так как сам являешься сверхразвитым существом, обрёл уже свою божественность или достиг высот в некотором навыке, в частности, в программировании. Но это вряд ли.


Anonymous 11/26/2020 (Thu) 19:37:58 [Preview] No.8146 del
Сегодня смог усесться и пописать Иколайси. Теперь есть поддержка вложенных структур, то есть что-то типа такого:
@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}.
Ещё надо бы какой-нибудь аттрибут для таких функций придумать, которые показывают, а можно ли аргументы мешать местами. Если можно, как скалярные числа, то такое вычисление можно будет распараллелить. А если нет и это как умножение матриц, то нельзя. Таким же образом можно будет и одну функцию перегруженного оператора сделать для, например, вектор*скаляр и и скаляр*вектор.

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


Anonymous 11/27/2020 (Fri) 05:43:04 [Preview] No.8149 del
>ops[1:10]{*}
Что это будет возвращать, если массив пустой? Сумма должна вернуть 0, произведение 1, а myfunc?


Anonymous 11/27/2020 (Fri) 08:10:55 [Preview] No.8150 del
>>8149
Массив не может быть пустым, если уже имеет размер. Если ты имеешь ввиду, что массив заполнен нулями, то сумма 0, произведение 0, а myfunc в зависимости от её кода.
Если вместо массива используется mem.vector (почти аналог std::vector из C++) и его размер меньше 10, то будет assert что index out of range.


Anonymous 11/27/2020 (Fri) 10:25:52 [Preview] No.8151 del
>>8150
>Массив не может быть пустым
>Если ты имеешь ввиду, что массив заполнен нулями
Мышление древнего человека, который не понимает, что такое ноль.

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

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

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

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


Anonymous 11/27/2020 (Fri) 11:12:07 [Preview] No.8152 del
>>8145
Ты зря ему отвечаешь. Скорее всего он просто серун и никого никуда не посылал, а ты повёлся, ещё и простыню накатал. Я прочитал её всю, и могу сказать, что тебе вредно писать длинные посты. Лучше не трать время и отвлекись на что нибудь другое. А с борд действительно нужно уходить. Это дно на самом деле. Для продуктивных тематик форумы лучше всего. В том числе форумы в скрыто сетях. Да, там придётся регистрироваться, вероятно делать фейкомыло, но можно аккаунт хоть каждый месяц менять.
Модерация на тучке не правильная. Ладно если бы он тёр просто серунство. Но ведь он вводит цензуру на целые темы. Чем так плохи самоубийств треды на пример? Ах да, вспомнил, ведь они нарушают какой то там закон! При чём это закон отдельно взятой авторитарной страны, а не всего мира, как тоже цп. Нафиг сидеть на таких бордах. Для чего эта анонимность если нельзя обсуждать подобные личные незаконные темы?
По поводу виндовса, какую ОС ты посоветуешь на слабый ПК?


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

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

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


Anonymous 11/27/2020 (Fri) 13:40:19 [Preview] No.8155 del
>>8153
>установщик типа "Далее, далее, установить"
Покупаю!
Вот поэтому виндовс и господствует. Ну и ещё синдром утёнка, ага. Ставил бы я с самого начала линуксы наверное на них и сидел бы. А сейчас софт весь, привычки, прирос.


Anonymous 11/29/2020 (Sun) 14:41:14 [Preview] No.8163 del
(5.77 KB 456x85 goblet.png)
(3.46 KB 249x316 mug.png)
Ох, ну и пасту я написал...

Добавил поддержку мултисравнения.
В Лайси можно сравнивать между собой сразу несколько значений. То есть a < b < c d эквивалентно (a < b) && (b < c) && (c d).

Кстати, у меня в коде компилятора сделаны как бы ленивые вычисления не путайте, это не ленивые вычисления языка. В Лайси инструкции исполняются там, где программист написал. Не вижу смысла в реальных ленивых вычислениях. Он не считает 5 + 3, раз результат некуда записать, но когда он приравнивается в переменную, то начинает проходиться по всему выражению. Это можно увидеть в том, что в "байткоде" сначала вычисляется 3 > 1, а потом 5 > 3, а не наоборот.

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


Anonymous 11/29/2020 (Sun) 14:42:23 [Preview] No.8164 del
Ну вот, здешний движок символы съел

...
В ней есть свой вектор, но называется он vec!N!<T>. Его суть в том, что размер статический а внутри структуры есть псевдонимы x,y,z,w или r,g,b,a. И это псевдонимы можно объединять для получения другого вектора. Например (vec4<float> a).xz это будет vec2<float> со значениями 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-мерном пространстве. Вертексы могут быть физическими, а могут быть управленческими для нурбсов и быть связаны линией, полигоном, объёмом (возможно). Для неё будет сделать ряд модулей для скелетной анимации, булевых операций, различных модификаторов как в блендере, всяких обработок, обсчётов и т.д.


Anonymous 11/29/2020 (Sun) 14:42:54 [Preview] No.8165 del
Почему тут ограничение в 4096 символов? Было б 20000 хотя бы, было б нормально

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

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


Anonymous 11/29/2020 (Sun) 18:14:47 [Preview] No.8169 del
>>8165
>Почему тут ограничение в 4096 символов?
А хз. Не нашёл в настройках где меняется это число. Надо либо админа трясти, либо забить.


Anonymous 12/02/2020 (Wed) 08:42:45 [Preview] No.8212 del
(7.74 KB 299x173 longs.png)
(35.05 KB 735x453 repring.png)
Недавно ввёл поддержку флоатов и их некоторые операторы.
Также я изменил императивную трансформацию типов на декларативную. Теперь у меня просто таблица с лямбда и просто функциями, которые вызываются для соответствующих типов. Надо будет что-то такое и для операторов сделать.

Всё. Пора заниматься серьёзными вещами и вводить репрезентацию как на втором пике.
Это будет сделать непросто. Во-первых, надо значительно переделать препроцессинговую часть, добавить @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.


Anonymous 12/02/2020 (Wed) 17:30:29 [Preview] No.8213 del
>>8212
У меня как у не соображающего есть такой вопрос. А можно ли твой язык учить первым? Или сначала паскаль и бэйсик? Ты закладываешь какие то возможности для обучения твоему языку? И с каких языков легче будет на него переходить?


Anonymous 12/02/2020 (Wed) 19:34:59 [Preview] No.8216 del
>>8213
>А можно ли твой язык учить первым?
Нет!
Ещё не мало времени пройдёт до момента, когда по Лайси появятся готовые учебные пособия. Даже когда я выпущу первую рабочую версию Иколайси+Лайси и запущу сайт, то там может будет только туториал для тех, кто уже программист.
Лучше изучить сначала C (можно в связке с ассемблером) для понимания памяти, C++ для понимания темплейтов и дженериков, а в конце питоном закинуться, чтобы почувствовать [i]удобность[/i]


Anonymous 12/02/2020 (Wed) 20:02:47 [Preview] No.8217 del
>>8216
Ну ладно, спасибо за ответ. Мне он всё равно не светит. Вот ещё один косяк с разметкой надо что то делать...


Anonymous 12/03/2020 (Thu) 13:42:15 [Preview] No.8225 del
Немного оффтопа: во-первых, расскажи подробней о том, как тебе пришла идея собственный язык запилить, и использовал ли ты материалы вроде “драконьей книги” или “crafting interpreters” при создании своего языка? Во-вторых, как ты прокачал логику? Посоветуй, что ли, самый лучший ресурс — желательно книгу, язык может быть как русский, так и английский, — который с нуля научит логически мыслить; неплохо бы, чтобы она могла обучить даже необучаемых кретинов гуманитариев вроде меня. Спасибо.


Anonymous 12/05/2020 (Sat) 00:38:26 [Preview] No.8232 del
>>8225
>гуманитариев вроде меня
http://flibustahezeous3.onion/b/474244
мимо не-ОП


Anonymous 12/30/2020 (Wed) 10:25:17 [Preview] No.8466 del
Часы повернулись на пирадиан и делать Иколайси.
Пора полноценно вводить макросы.

@define macro<A = 2,B = 4> as (A + B);
@define m1 as 5;

func () main {
s32 a = macro<B=12>;
};

...


Anonymous 12/31/2020 (Thu) 16:00:50 [Preview] No.8570 del
(38.99 KB 522x591 ahk.png)
Ввёл фичу 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, распаковка байтовой строки...


Anonymous 01/01/2021 (Fri) 10:34:22 [Preview] No.8633 del
>>1331
>они будто в угол смотришь, а из него оси растут.

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


Anonymous 01/01/2021 (Fri) 10:36:37 [Preview] No.8634 del
>>8633
Coinflip.com


Anonymous 01/01/2021 (Fri) 16:58:09 [Preview] No.8636 del
Я решил убрать из стандарта слайсинг, потому что он немного неявный. Вместо них будет просто индексация. Да и не понятно, зачем нужен мне этот слайсинг. Вообще я планировал сделать это так, чтобы условно был какой-нибудь контейнер с ключами-словами и можно было сделать 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!<T> прописываем псевдонимы:
normalize -> {self = normalize(self)};
normalized -> normalize(self);
length -> length(self);
что-то типа такого. Выглядит немного неряшливо, ещё и члены находятся в тех же скобках, что и псевдонимы, что может сбить с толку, но я не собираюсь вводить какие-нибудь классы с отдельными элементами и псевдонимами или ещё что.

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

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


Anonymous 01/04/2021 (Mon) 08:25:22 [Preview] No.8668 del
(55.43 KB 664x935 bvv.png)
Я начал вводить библиотеку 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 аргументов.


Anonymous 01/04/2021 (Mon) 12:28:27 [Preview] No.8669 del
(102.57 KB 301x302 iq.png)
НАПОМИНАЮ

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

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

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

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


Anonymous 01/15/2021 (Fri) 15:36:54 [Preview] No.8936 del
(48.62 KB 740x864 a.png)
(39.60 KB 507x524 b.png)
Добавил пару поддержек в компилер, в особенности перегрузку функций и посыл аргументов в перемешанном порядке. Но я особо не проверял и работоспособность очень частичная.
Знаете, перегрузка функций и темпелйты это такая фигня! Ведь когда мы хотим вызвать функцию в си-подобном языке, мы на самом деле вызываем адрес. А название функции это просто константная переменная, которая содержит адрес самой функции/процедуры. А когда мы хотим вызвать несуществующую функцию, то есть либо создать её динамически (темплейт) или найти её настоящее название используя мнимное + аргументы, это уже что-то совершенно иное.
Из-за этого часть кода Иколайси сейчас в хаосе.
Но перегрузка функций необходима, чтобы, например, работала функция print. Ведь она будет вызывать функцию repr, которая перегружена для некоторых переменных некоторых библиотек, если автор библиотеки захочет.

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

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



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


Anonymous 01/23/2021 (Sat) 15:50:40 [Preview] No.9029 del
(8.10 KB 684x47 first i was.png)
(20.80 KB 1078x65 but then i'm.png)
Вот отличие между pyparsing и моим прототипом dapa, написанном на питоне. Парсилась одна и та же строка.
Тут я не уверен, стоит ли как-то ангроупить токены или что вообще с ними делать.


Anonymous 02/05/2021 (Fri) 07:46:46 [Preview] No.9226 del
(156.38 KB 1823x869 aht.png)
В общем, разобрался я с ангроупингом токенов и обработкой вайтспейсов.
Теперь Иколайси крутится не на пипарсинге, а на дапапи (прототип библиотеки dapa для Лайси). Но я очень много функционала сломал, так как надо исправить некоторые конфликты.

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

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


Anonymous 02/05/2021 (Fri) 08:12:23 [Preview] No.9227 del
>>9226
Я ничего в этом не понимаю, но просто поддержу тебя. Продолжай делать по немножку.


Anonymous 02/07/2021 (Sun) 05:34:08 [Preview] No.9271 del
(336.70 KB 919x1024 16108121593220.png)
Нельзя просто взять и вместо тор нодов заюзать рандомные сервера?
Вставил адреса серв с торрент сети.. тор не пускается.
Почему такая несправедливость вжизне?)


Anonymous 02/15/2021 (Mon) 07:19:58 [Preview] No.9390 del
Начал вводить способность преобразования листданных в безымянную структуру типа 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, чтобы лочить мьютексы, если будут вводить свою систему хип-мемори.


Anonymous 02/21/2021 (Sun) 07:33:24 [Preview] No.9423 del
(5.47 KB 1200x800 abc.png)
Вчера делал дюпинг. Толком не проверил, для дебаггинга языка надо сделать библиотеку 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 — для отображения функций двух и трёх аргументов.
А также их модификации — полярный, сферический, цилиндрический графики, что-то с вокселями попробовать.
А кроме графиков и гистограммы самые разнообразные нужны. Очень важны диаграммы (где элементы соединены линиями и важно, чтобы линии были кликабельными).


Anonymous 02/22/2021 (Mon) 10:35:49 [Preview] No.9444 del
Лайси-кун, почитай про Flex и Bison.
http://rus-linux.net/lib.php?name=/MyLDP/algol/lex-yacc-howto.html


Anonymous 02/23/2021 (Tue) 06:59:53 [Preview] No.9448 del
>>9444
Выглядит как старьё примитивного древенего программинга. Не уверен в хорошести данного ПО.
pyparsing из питона мне понравился гораздо больше, всё лакончино, логично, операторы норм перегружены. Но не хватало функционала, я и сделал dapapy:прототип Laisi dapa.
А ещё регеэксы это фуватая техника, по моему-.

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


Anonymous 02/27/2021 (Sat) 07:46:57 [Preview] No.9506 del
Только заметил, что введя 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 дебаггинг можно заделать.


Anonymous 02/27/2021 (Sat) 18:39:13 [Preview] No.9508 del
(2.22 MB 1200x800 out.webm)
Кстати, ещё поделал Graph2D... Оказывается, всё гораздо сложнее. Хотел сделать валуы нотчей (чёрточек на осях) по середине, но они закрывают сам график, перенёс на бока. А ещё их кол-во надо учитывать для разной плотности нотчей, чтобы текст не перекрывался.
Зато я ввёл анимацию функций. Помню когда-то хотел посмотреть, что там с первообразными и производными у функций и их касательными и всем таким, но не смог на матплотлиб сделать это. Теперь могу не на матплотлиб.


Anonymous 03/02/2021 (Tue) 19:00:40 [Preview] No.9527 del
(128.86 KB 1350x850 out.webm)
Какой же сипипи кака!
Накидал тут в свою библиотеке ГУИ прототип виджета TabBox (которая на C++ ещё) для одной задачи. А чтобы написать эту задачу, мне приходится писать десятки строк бойлерблейта, когда тот же код можно было написать на Лайси в пару строк.
Пожалуй, использование фуватых ЯП это один из важнейших деморализаторов в программировании. C++, C, Java!, я не говорю про всякие паскали, бейзики или ады в военных технологиях.
Вот питон это хороший ЯП с хорошей инфраструктурой. Но он слишком скриптовый для меня, не подходит для программирования общего назначения.
А некоторые люди ещё кукарекают, мол неважно какой язык, мол все алгоритмы одинаковые, пиши сиди на брейнфаке. Или про софт говорят, что надо использовать всё что можно в своих задачах. В блендере вертексы перетягивать, в компасе3д твёрдые материи осваивать, в гимпе шумы применять, в крите кисточкой рисовать, в юните игры производить, а для написания нейросетей учить юпитер. А потом появляется веб.


Anonymous 03/12/2021 (Fri) 09:17:27 [Preview] No.9602 del
(65.30 KB 711x968 vector.png)
Писать Иколайси сложно, у меня возникают баги то тут, то там, а я затыкаю их костылями.
Пока не развивал сам Иколайси в -> Иколайси[Лайси], но делаю библиотеку mem.
А в ней планирую очень простой сабмодуль vector, состоящий всего из одного дженерика и штук 15 темплейтов. Еле исправил баги, из-за которых темплейты не парсились. Представляете, в правиле парсинга nestedanyth было записано:
nestedanyth = dapa.forward()

nestedanyth << ((dplit['lrbracket'] + dapa.anything([dplit['rrbracket']],[string,nestedanyth])) | \
(dplit['lqbracket'] + dapa.anything([dplit['rqbracket']],[string,nestedanyth])) | \
(dplit['lcbracket'] + dapa.anything([dplit['rcbracket']],[string,nestedanyth])) | \
(dplit['ltbracket'] + dapa.anything([dplit['rtbracket']],[string,nestedanyth])))

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

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


Anonymous 03/31/2021 (Wed) 08:22:01 [Preview] No.9812 del
Сделал кое-чего в Иколайси, но выход 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 можно сделать более хардкодно и создать просто структуру с хешмапами<string,void*>. И вот берём мы ассет. Ассет это сериализованная (переведённая в байты) сущность, в ней есть хешмапа с сериализованными данными. Тип можно не указывать, так как система сама поймёт, что за тип она использует. Загружаем ассет и программный объект, один компонент — 3D-моделька для графического движка, 3D-моделька-коллайдер для физического движка, несколько вариантов 3D-моделек для LOD (level of detail)-движка, чтоб не покоробило некрасиво, всякие игровые данные (ID, хп, XП, мп, инвентарь) и для каждого типа данных своя система модифицирует и изменяет компоненты.
Поэтому и надо движки разделять. Даже если это движок лейаутинга.

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


Anonymous 03/31/2021 (Wed) 18:42:04 [Preview] No.9816 del
(352.31 KB 1380x880 out.webm)
Вот, видите как чудно лейауты в ГУИ себя ведут? Я сказал библиотеке, пусть правый виджет (это бокс с vert layout) находится на N пикселей от правого края родителя к правому краю виджета и теперь когда ввожу в лайнэдит (я его тока сегодня начал делать) текст, он выходит, но виджет меня продолжает слушаться. Они всегда слушаются, пока у них достаточно пространства.
Для самого лайнэдита/текстэдита надо будет устроить рендеринг во внутреннюю зону, но для этого мне надо ввести в свой графический движок рендеринг в текстуры в большой глубине рекурсии. А то недавно я попытался отрендерить в текстуру внутри другой рендеримой текстуры и понял, у меня же опенгловские фреймбуфферы не FILO! Вместо этого в конце просто берётся нулевой фреймбуффер, который является оконным. Надо будет переделать кое-что...

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


Anonymous 04/16/2021 (Fri) 17:08:14 [Preview] No.9967 del
>>9448
>Выглядит как старьё примитивного древенего программинга. Не уверен в хорошести данного ПО.
Наоборот. lex и yacc - это древние UNIX утилиты, которые как раз предназначены для создания генераторов лексического и синтаксического анализа.
flex и bison - их реализации от GNU.
Лучше ПО в хорошести нет.
На выходе flex код на C.
>pyparsing из питона мне понравился гораздо больше, всё лакончино, логично, операторы норм перегружены.
Он вроде императивный. Мне не понравилось.
>А ещё регеэксы это фуватая техника, по моему-.
Как раз декларативные регексы - это годно.


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


Anonymous 04/16/2021 (Fri) 19:09:30 [Preview] No.9968 del
>>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* в Лайси). И всё без вайтспейсов, так как формат бинарный.
...


Anonymous 04/16/2021 (Fri) 19:10:48 [Preview] No.9969 del
>>9967
...
>Почему бы код не переводить в код С? А потом компилировать произвольным компилятором?
Зачем мне компилировать лайси-байткод или даже просто отпарсенный код в C, то есть генерировать заново дополнительный код, чтобы потом его ещё какой-то неизвестный компилятор пропарсил, потом скомпилировал, а потом они ещё стандартный стандарт C и C++ изменят и придётся правила трансляции кода изменять, это всё ужасно, это отвратительно. Зачем вообще нужно компилировать в другой ЯП? Взял LLVM и скомпилировал в него, а его скомпилировать llvm-as (лучше библиотекой, а не утилитой) в любую доступную архитектуру.
Вообще, хорошо бы компилировать не llvm в машинный код, а сразу лайси-байткод в машинный код, потому что Лайси более широкий, он не зацикливается на интах, он оперирует целыми массивами, я, может, ещё много месяцев или лет буду разрабатывать по каким правилам векторы умножаются с матрицами, с каким шагом и направлением, где можно распараллелить, а где нельзя, компилировать лайси-байткод в SPIRV или код видеокарты нвидии, радеона, интела. Компилировать функциональные участки в Verilog, чтобы прямо в ПЛИСе всё за один такт считалось!

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


Anonymous 04/18/2021 (Sun) 14:20:16 [Preview] No.9981 del
Может быть, потом на всё отвечу.
>>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.

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


Anonymous 04/23/2021 (Fri) 13:18:48 [Preview] No.10041 del
Дошли руки до обновленьца. 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-дата, темплейтированные лист- и дикт-даты, БИТ-ИНДЕКЫ! для копирования и взаимодействия с битами. Не факт что в этом году доведу до конца.


Anonymous 05/03/2021 (Mon) 18:04:59 [Preview] No.10098 del
(71.87 KB 1400x900 abc.png)
Пикрилейтед — софт, которого не хватает в блендаке.
К сожалению, он написан не на Laisi, так как Иколайси не готов ет.

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

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


Anonymous 05/21/2021 (Fri) 08:20:04 [Preview] No.10202 del
На самом деле я в последнее время не занимался Иколайси, много проектов и работы. Зато я придумал крутую вещь!
Поделал что-то там с битовыми индексами, ещё зачатки LDI-либс в код добавил (только я ещё не запушил на гитлаб)
Битовые индексы нужны не только, чтобы взаимодействовать с отдельными битами переменной (которые в лайси являются двоичными), но и для копирования памяти. А то приравнивание по идее должно иметь возможность перегрузки (чтобы копировать mem.vector, например) и без битовых индексов или сторонних функций (memcpy) не обойтись, когда надо именно скопировать (зачем?).

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

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

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


Anonymous 07/17/2021 (Sat) 12:10:34 [Preview] No.11293 del
Готовлю обновление до конца лета после которого Иколайси начнёт поддерживать непубличный Laisi v0.8. Я решил, что проекты лучше делать последовательно, а не параллельно, а то плохо будет.
На одном из моих трекдов на мейлаче один анон уже пожаловался, что я настоящий мейлачер, ничего не довожу до конца. Я дико извиняюсь, мне надо ещё дописать некоторый код. Я не мейлачер.

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


Anonymous 07/17/2021 (Sat) 14:44:40 [Preview] No.11294 del
>>11293
Забавная мотивация доделывать проекты до конца, лишь бы избежать участи быть названным мейлачером.


Anonymous 08/02/2021 (Mon) 06:52:59 [Preview] No.11791 del
(115.79 KB 1400x900 abc.png)
У меня был канал на DarkVideo, загружал видео со своими ГУИ-софтами. Сейчас зашёл, а там ничего нет http://videonwcswhrqynk.onion/channel/videos/pDVaxIx1i33hGFj2p1uSG5vz
Мочепараша.
То есть глупые видео про наркотики и закладки у них повсюду, а мои видео они потеряли/удалили? Или кто-то взломал аккаунт... Или они удаляются автоматически...
Вот что означает использовать чужие сервисы. Если на каком-нибудь пейспуке или вютубчике запостить запрещёнку или нежелательное мнение, то хотя бы уведомят? Мда...

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

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


Anonymous 08/05/2021 (Thu) 14:20:11 [Preview] No.11859 del
>>11791
>Вот что означает использовать чужие сервисы
Вот что означает не хранить исходники самостоятельно. Более того скажу, на разных физических носителях.


Anonymous 08/05/2021 (Thu) 14:34:51 [Preview] No.11860 del
>>11791
>мои видео они потеряли/удалили
Приняли за спам? Или видео недостаточно запрещенные?
Пиши в техподдержку.


Anonymous 08/17/2021 (Tue) 18:44:56 [Preview] No.12141 del
(256.09 KB 1039x799 codes.png)
(1.00 MB 1400x900 plyazh Beach.png)
(4.22 MB 1420x920 blc.mp4)
(73.49 KB 1000x807 uch.jpg)
А может ну его. Зачем мне в инфраструктуре Лайси слой байткода? Я тут подумал, что он не нужен, лучше сразу компилировать Лайси в LLVM IR. Ведь если и подумать, то лайси-байткод почти полностью был подобен LLVM IR, там разве что тензоные инструкции были, ещё и с указателями.
Кстати, недавно у меня снова чуть не случился приступ высокоуровнезации стандарта Лайси. Я подумал, что обычные поинтеры это так боринг! Каждый раз переудалять их, следить за количеством. С шейред поинтерами всё гораздо легче. Вот тот же питон по сути и состоит из шейдер поинтер PyDecref PyIncref или как там в CPython. Конечно, я планировал, что shared ptr будет в библиотеке mem. Но тогда пользователю придётся всё время писать mem.shr<T> или shr<T>. А если сделать суффикс типа подобные звёздочке? Например &. structname& — shr<structname>. Но это же тогда в глобальных переменных придётся где-то выделять отдельную структуру под них... Не то чтобы это сложно или плохо. Просто если я буду вводить шейред поинтеры прямо в Лайси, то почему не ввести, например, вектор или ассоциативный массив? Всё-равно у меня стандартизировано обращение к куче через 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 используй, поехавший.
Не уверен на его счёт. Думаю, мне придётся генерировать некоторые инструкции вручную.


Anonymous 08/31/2021 (Tue) 09:26:50 [Preview] No.12441 del
(321.90 KB 512x512 dizes.png)
Эх... (-_-*)
Мне стыдно об этом говорить (¬.¬;) но я опять не смог сделать это.
Выполнил я около трети работы труда.
Опять мне не хватило воли.
Я принял несколько неверных решений, которые в итоге привели меня сюда.
Сколько же можно так делать? И ведь мне хватало времени... Пора взрослеть...
В итоге не известно когда Лайси v0.8 + Иколайси v1.0 выйдет. Надеюсь, что в Сентябре. Когда-нибудь. Может быть в первой декаде, может во второй...


Anonymous 08/31/2021 (Tue) 14:25:51 [Preview] No.12443 del
>>12441
Ничего, бывает.
А кто то уже пробовал тестировать твой Лайси у себя? Может тебе стоит найти единомышленников и с ними процесс пойдёт быстрее? Одному вероятность бросить всё куда выше.


Anonymous 08/31/2021 (Tue) 15:59:32 [Preview] No.12444 del
(393.55 KB 800x800 becoming.webm)
(43.96 KB 600x496 ale op.jpg)
>>12443
Незнаю, пробовал ли кто. На гитлабе всё ещё есть старый Иколайси, но у меня возникают бȯльные мысли, если подумать, что кто-то попытается использовать его хотя бы на имеющихся тестах.
Насчёт единомышленников в плане программирования это точно нет. Лайси это проявление меня. Точно не помню, почему я решил создать свой язык программирования 3 года НАЗАД, может из-за изоляционизма, может из-за NIH, а может я считал себя очень всемогущим в плане программирования (камон, работы на месяц-другой, а делаю уже 2-3 года), но скорее всего и то и другое. Но недавно я подумал и решил, что Лайси мне нужен, чтобы складывать в него и им же свои наработки.
Когда я пишу на C/C++-подобном ЯП, я в итоге тупо копирую куски наработанного кода из проекта в проект, а если создаю библиотеку, то выглядит она не лучшим образом (хотя всё-равно это облегчает всё). Кроме того, тех же возможностей C++ мне не хватит, иначе как я напишу define vec!N!<T> as class...?
Если Лайси со временем популяризуется спустя долгое время, то будет неплохо запускать не единомышленников, но фанатов/фанов/последователей.
Когда инфраструктура Лайси стабилизируется, можно будет внедрять чужие разработки на Лайси, если кто-то захочет написать библиотеку. Особенно, если библиотека маленькая или ориентированная на редкий интерфейс. Например, преобразование координат под гексы или API к какому-то редкому формату файлов.

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


Anonymous 09/02/2021 (Thu) 14:18:28 [Preview] No.12476 del
Кстати, это же тред не только по Лайси, но и в принципе по моему софту.

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

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

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

...


Anonymous 09/02/2021 (Thu) 14:18:52 [Preview] No.12477 del
>>12476

...

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

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

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


Anonymous 09/02/2021 (Thu) 16:34:49 [Preview] No.12478 del
>>12476
>+ Если захочу, можно отключить мобильную связь хардварно.
Это как? Прям аналоговый выключатель? А Блютус и прочие вайфаи?
И где фото твоего смартфона?
>Установить аккаунты гугла
Криптотелефон )))
> 2 18650
Оу, у меня у друга обычный смартфон переделан на такие аккумуляторы с приклеенным слотом сзади. Смотрится прикольно. Но это телефон для машины, для путешествий. А не для повседневного ношения в кармане.


Anonymous 09/03/2021 (Fri) 05:58:01 [Preview] No.12492 del
>>12478
>Прям аналоговый выключатель?
Да, рычажки прямо под крышкой. Как я понял, моб. связь + GPS идут одним модулем, другим ВайФай+Блютуз. Другие отключение микрофона, спикеров и камер. Кстати, отключив, вроде, слот для наушников, можно его использовать для передачи по UART.
Тут https://www.pine64.org/pinephone/ в общем написано, никаких фотографий смартфона или со смартфона постить не хочу, слишком личное, отследите ещё по рисунку напольной плитки и форме уличных растений. Могу сказать, что цветопередача таксебешная, если приблизить изображение, то всё в разноцветных шумах. Ну, может фильтры какие-то можно включить, не знаю.


Anonymous 09/04/2021 (Sat) 08:01:06 [Preview] No.12497 del
>>12492
Я пока смартфоном пользуюсь только как фотоаппаратом. Симки в него не вставляю, GPS не включаю.


Anonymous 09/04/2021 (Sat) 11:19:32 [Preview] No.12498 del
>>12497
Звонить можно и без симки, он постоянно с сотами связывается.


Anonymous 09/04/2021 (Sat) 11:58:14 [Preview] No.12499 del
>>12498
Режим полёта всегда включен.


Anonymous 09/06/2021 (Mon) 18:46:25 [Preview] No.12542 del
(112.29 KB 996x560 aaaaaaaa.jpg)
(1.28 MB 1280x1071 pinuxoidy.png)
Представляете, недавно захотел заснять видео Пайнфоном, а оказалось, что дефолтное приложение камеры Megapixels не умеет! ((((9((((999(
Не нашёл ничего лучше, чем начать писать своё приложение-камеру, вот разбираю video4linux https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/open.html
Только знаете, тут немного посложнее, нет просто файла для камеры, есть ещё всякие /dev/mediaX, /dev/v4l-subdevX. В пайнфоне как раз через mediaX делается. Если я правильно понял, то одно "устройство" владеет обеими камерами, то есть нельзя снимать одновременно с двух.
Кстати, незавершение начатых проектов больно бьёт по моей психике и потом я меньше занимаюсь Иколайси-Лайси! Нужно использовать волю для преодоления, ведь именно она расплавляет несуществующие стены.

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


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

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


Anonymous 09/11/2021 (Sat) 14:15:20 [Preview] No.12835 del
(232.59 KB 1400x900 conmortem.png)
Одно слово — СЛА-БА-КИ

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

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


Anonymous 09/15/2021 (Wed) 12:26:00 [Preview] No.12918 del
(31.10 KB 434x756 laisi.png)
(99.32 KB 648x857 llvm ir.png)
Оуфигеть, еле скомпилировал пикрилейтед.
В итоге ввёл большую часть класса, ещё и self-тип. Можете поглядеть на LLVM IR, если поймёте что-то. Что закоментировано тоже работает, проверил.
В классах надо ещё ввести передачу self*. Потом пора будет переходить к перегрузке функций и операторов. В частости, внутри классов можно будет писать методы для перегрузки init, del, index, get, set и другие одноаргументные.
Перегружать операторы сложения, умножения и прочих двуаргументных как-то мне видится некрасивым. Лучше их писать отдельно, к тому же те же вектора math.vec надо иметь возможность складывать, у которых разные подтипы. Например vec3<ssize> и vec3<float> и написать просто template with V0(vec!N!<T0>),V1(vec!N!<T1>) func (V0 out,[V0 in0,V1 in1])...
А в случае именованных классов это же на самом деле макросы, представляющие из себя дженерики и если сделать add методом, то можно, чтобы только один тип самого себя принимался.

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


Anonymous 09/17/2021 (Fri) 18:16:59 [Preview] No.13061 del
>>12542
Щииииит а я так хочу телефон с нормальной ОС. Раз в десять лет и видео записывать приходится. Да и судя по видосам с трубы там и более насущных проблем хватает. А говнокодить не могу. Держи в курсе как этот сосновый огрызок себя ведёт, пожалуйста.


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

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

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



Top | Return | Catalog | Post a reply