Anonymous 10/29/2021 (Fri) 08:25:14 No.14934 del
(42.82 KB 754x665 imgiska.png)
(66.62 KB 920x964 out.jpg)
Я НЕ УМЕЮ ПРОГРАММИРОВАТЬ!

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

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

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

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