LINUX.ORG.RU
ФорумTalks

35 лет назад Гвидо ван Россум написал в сети Usenet: «This is Python»...

 


0

2

Python 0.9.1 part 01/21:

Guido van Rossum guido at cwi.nl
Wed Feb 20 04:35:26 AEST 1991
Previous message (by thread): unbatcher out of sync?
Next message (by thread): Python 0.9.1 part 03/21
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

: This is a shell archive.
: Extract with 'sh this_file'.
: Extract this part first since it makes all directories
echo 'Start of pack.out, part 01 out of 21:'
echo -n 'Making directories ... '
err="no"
test -d 'demo' || mkdir 'demo' || err="yes"
test -d 'demo/scripts' || mkdir 'demo/scripts' || err="yes"
test -d 'demo/sgi' || mkdir 'demo/sgi' || err="yes"
test -d 'demo/sgi/audio' || mkdir 'demo/sgi/audio' || err="yes"
test -d 'demo/sgi/audio_stdwin' || mkdir 'demo/sgi/audio_stdwin' || err="yes"
test -d 'demo/sgi/gl' || mkdir 'demo/sgi/gl' || err="yes"
test -d 'demo/sgi/gl_panel' || mkdir 'demo/sgi/gl_panel' || err="yes"
test -d 'demo/sgi/gl_panel/apanel' || mkdir 'demo/sgi/gl_panel/apanel' || err="yes"
test -d 'demo/sgi/gl_panel/flying' || mkdir 'demo/sgi/gl_panel/flying' || err="yes"
test -d 'demo/sgi/gl_panel/nurbs' || mkdir 'demo/sgi/gl_panel/nurbs' || err="yes"
test -d 'demo/sgi/gl_panel/twoview' || mkdir 'demo/sgi/gl_panel/twoview' || err="yes"
test -d 'demo/stdwin' || mkdir 'demo/stdwin' || err="yes"
test -d 'doc' || mkdir 'doc' || err="yes"
test -d 'lib' || mkdir 'lib' || err="yes"
test -d 'src' || mkdir 'src' || err="yes"
echo 'done'
if test "$err" = "yes"
then echo "didn't make it."
fi
if test -s 'README'
then echo '*** I will not over-write existing file README'
else
echo 'x - README'
sed 's/^X//' > 'README' << 'EOF'
This is Python, an extensible interpreted programming language that
combines remarkable power with very clear syntax.

This is version 0.9 (the first beta release), patchlevel 1.

Python can be used instead of shell, Awk or Perl scripts, to write
prototypes of real applications, or as an extension language of large
systems, you name it.  There are built-in modules that interface to
the operating system and to various window systems: X11, the Mac
window system (you need STDWIN for these two), and Silicon Graphics'
GL library.  It runs on most modern versions of UNIX, on the Mac, and
I wouldn't be surprised if it ran on MS-DOS unchanged.  I developed it
mostly on an SGI IRIS workstation (using IRIX 3.1 and 3.2) and on the
Mac, but have tested it also on SunOS (4.1) and BSD 4.3 (tahoe).

Building and installing Python is easy (but do read the Makefile).
A UNIX style manual page and extensive documentation (in LaTeX format)
are provided.  (In the beta release, the documentation is still under
development.)

Please try it out and send me your comments (on anything -- the
language design, implementation, portability, installation,
documentation) and the modules you wrote for it, to make the first
real release better.  If you needed to hack the source to get it to
compile and run on a particular machine, send me the fixes -- I'll try
to incorporate them into the next patch.  If you can't get it to work
at all, send me a *detailed* description of the problem and I may look
into it.

If you want to profit of the X11 or Mac window interface, you'll need
STDWIN.  This is a portable window system interface by the same
author.  The versions of STDWIN floating around on some archives are
not sufficiently up-to-date for use with Python.  I will distribute
the latest and greatest STDWIN version at about the same time as Python.

I am the author of Python:

	Guido van Rossum
	CWI, dept. CST
	Kruislaan 413
	1098 SJ  Amsterdam
	The Netherlands

	E-mail: guido at cwi.nl

The Python source is copyrighted, but you can freely use and copy it
as long as you don't change or remove the copyright:

/***********************************************************
Copyright 1991 by Stichting Mathematisch Centrum, Amsterdam, The
Netherlands.
# Fancy NURBS demo.  Require Z buffer and Panel Library.

from gl import *
from GL import *
from DEVICE import *
from nurbsdata import *
import panel

#
# flags = trim_f, invis_f, cpvis_f, tpvis_f, axvis_f, freeze_f
#
TRIM	= 0
VIS	= 1
CPVIS	= 2
TPVIS	= 3
AXVIS	= 4
FREEZE	= 5
flags = [0, 1, 0, 0, 0, 0]

def draw_axis () :
	cpack (0x0)
	zero = (0.0, 0.0, 0.0)
	#
	one = (1.0, 0.0, 0.0)
	smallline (zero, one)
	cmov (1.0, 0.0, 0.0)
	charstr ('x')
	#
	one = (0.0, 1.0, 0.0)
	smallline (zero, one)
	cmov (0.0, 1.0, 0.0)
	charstr ('y')
	#
	one = (0.0, 0.0, 1.0)
	smallline (zero, one)
	cmov (0.0, 0.0, 1.0)
	charstr ('z')

DELTA = 0.1

def cross (p) :
	p0 = [p[0], p[1], p[2]]
	p1 = [p[0], p[1], p[2]]
	for i in range (0, 3) :
		p0[i] = p0[i] + DELTA
		p1[i] = p1[i] - DELTA
		smallline (p0, p1)
		p0[i] = p0[i] - DELTA
		p1[i] = p1[i] + DELTA

def smallline (p0, p1) :
	bgnline ()
	v3f (p0)
	v3f (p1)
	endline ()

def draw_pts (pnts, color) :
	linewidth (2)
	cpack (color)
	for i in pnts :
		cross (i)

def init_windows():
	foreground()
	wid = winopen('nurbs')
	wintitle('NURBS Surface')
	doublebuffer()
	RGBmode()
	gconfig()
	lsetdepth(0x000, 0x7fffff)
	zbuffer( TRUE )

def init_view():
	mmode(MPROJECTION)
	ortho( -5., 5., -5., 5., -5., 5. )
	#
	mmode(MVIEWING)
	loadmatrix(idmat)
	#
	lmbind(MATERIAL, 1)

def set_scene(flags):
	#
	lmbind(MATERIAL, 0)
	RGBcolor(150,150,150)
	lmbind(MATERIAL, 1)
	clear()
	zclear()
	#
	if not flags[FREEZE] :
		rotate( 100, 'y' )
		rotate( 100, 'z' )

def draw_trim_surface(flags):
	pnts = ctlpoints
	if flags[VIS] :
		bgnsurface()
		nurbssurface(surfknots,surfknots,pnts,ORDER,ORDER,N_XYZ)
		if flags[TRIM]:
			bgntrim()
			nurbscurve(trimknots,trimpoints,ORDER-1,N_STW)
			endtrim()
		endsurface()
	#
	if flags[CPVIS] :
		for i in pnts :
			draw_pts (i, RED)
	#
	if flags[TPVIS] :
		tpts = trimpoints
		draw_pts (tpts, YELLOW)
	#
	if flags[AXVIS] :
		draw_axis ()
	#
	swapbuffers()

def make_lights():
	lmdef(DEFLMODEL,1,[])
	lmdef(DEFLIGHT,1,[])
	#
	# define material #1
	#
	a = []
	a = a + [EMISSION, 0.0, 0.0, 0.0]
	a = a + [AMBIENT,  0.1, 0.1, 0.1]
	a = a + [DIFFUSE,  0.6, 0.3, 0.3]
	a = a + [SPECULAR,  0.0, 0.6, 0.0]
	a = a + [SHININESS, 2.0]
	a = a + [LMNULL]
	lmdef(DEFMATERIAL, 1, a)
	#
	# turn on lighting
	#
	lmbind(LIGHT0, 1)
	lmbind(LMODEL, 1)

def main():
	init_windows()
	make_lights()
	init_view()
	#
	panel.needredraw()
	panels = panel.defpanellist('nurbs.s')
	p = panels[0]
	#
	def cbtrim (a) :
		flags[TRIM:TRIM+1] = [int (a.val)]
	p.trim.upfunc = cbtrim
	#
	def cbquit (a) :
		import sys
		sys.exit (1)
	p.quit.upfunc = cbquit
	#
	def cbmotion (a) :
		flags[FREEZE:FREEZE+1] = [int (a.val)]
	p.motion.upfunc = cbmotion
	#
	def cbxyzaxis (a) :
		flags[AXVIS:AXVIS+1] = [int (a.val)]
	p.xyzaxis.upfunc = cbxyzaxis
	#
	def cbtrimpnts (a) :
		flags[TPVIS:TPVIS+1] = [int (a.val)]
	p.trimpnts.upfunc = cbtrimpnts
	#
	def cbcntlpnts (a) :
		flags[CPVIS:CPVIS+1] = [int (a.val)]
	p.cntlpnts.upfunc = cbcntlpnts
	#
	def cbnurb (a) :
		flags[VIS:VIS+1] = [int (a.val)]
	p.nurb.upfunc = cbnurb
	#
	set_scene(flags)
	setnurbsproperty( N_ERRORCHECKING, 1.0 )
	setnurbsproperty( N_PIXEL_TOLERANCE, 50.0 )
	draw_trim_surface(flags)
	#
	while 1:
		act = panel.dopanel()
		#
		wid =  panel.userredraw ()
		if wid :
			winset (wid)
			reshapeviewport()
			set_scene(flags)
			draw_trim_surface(flags)
		#
		set_scene(flags)
		draw_trim_surface(flags)

main()
★★★★★
Ответ на: комментарий от LightDiver

Она делает ровно то, что ты попросишь в соответствие со своими возможностями. Нейросеть вообще не понимает, что ты просишь. Поэтому и «сделать то, что попросишь» принципиально не может.

Всё что может LLM - это сгенерить наиболее вероятную комбинацию элементов используя в качестве затравки твою «просьбу» (которая для нейросети вовсе не просьба, а просто набор неких параметров). Никаких других возможностей неёросеть не имеет.

Заметь, я попросил и ты попросил. Мой запрос выполнен идеально и 100% работает, а твой нет.

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

Вот и вся магия. Проблема в том, что нейросеть может генерить только что-то похожее на тренировочный сет. Да и то хреново. Если дать ей набор параметров, рядом с которым вообще не валялось ничего из тренировочного сета - она не сможет генерить ничего кроме абсолютной ахинеи. И надо быть полным идиотом, чтобы доверять результату работы нейросети, если ты не знаком на 100% с её тренировочным сетом.

Stanson ★★★★★
()
Ответ на: комментарий от antonio-an

Потому что Wolfenstein 3D вышел в 1992. А в феврале 1991 еща даже и Catacomb 3D не было, он только в конце года вышел.

Я что помнить должен когда они вышли.
Но играл точно!!

Ну вещества-3D они и в советское время вполне себе присутствовали, так что вполне возможно что и играли «точно!!».

anc ★★★★★
()
Ответ на: комментарий от LightDiver

А ты чтоли дохрена можешь того, чему тебя не учили?

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

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

Давай отберем у тебя все, кроме зрения. Будем показывать тебе текст, а потом ты покажешь чего на основе этого текста ты можешь.

LightDiver ★★★★★
()
Ответ на: комментарий от CrX

Сложно найти человека, который не играл в Doom :)

Вот енто как раз крайне легко.

anc ★★★★★
()
Ответ на: комментарий от LightDiver

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

Да неужели. Это тебе нейросеточка рассказала? Или хозяева нейросеточек? Человек, без всякого предварительного обучения умеет наблюдать, делать выводы, повторять увиденное, анализировать результат, вносить изменения, повторять снова и таким образом развиваться. Детей вообще не учат говорить, или ходить, например. Они самостоятельно этому учатся. Как и очень многому другому.

Давай отберем у тебя все, кроме зрения. Будем показывать тебе текст, а потом ты покажешь чего на основе этого текста ты можешь.

Вот. Я же говорю, что нейросеточки - это искусственно кастрированный по самое нехочу всякими «good programming practices» перцептрон у которого нет ни единого шанса стать хоть чем-то полезным.

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

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

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

LightDiver ★★★★★
()
Ответ на: комментарий от deep-purple

Прошу пример языка без спорных решений

asm

Какой из? Их уже наплодилось...

anc ★★★★★
()
Ответ на: комментарий от Shadow

это довольно странные там утверждения

протокол точно не требует качать всё, есть команды отдельно для получения head/body, при получении списка можно указывать даты и диапазоны

ну мож кто-то этого не умеет и тащит всё

sergej ★★★★★
()
Ответ на: комментарий от sergej

в аутлук экспрессе было

Да, гуля говорит, что было. Спасибо.

anc ★★★★★
()
Ответ на: комментарий от LightDiver

Наблюдать это не обучение?

Внезапно нет, это не обучение. К наблюдению ещё надо осмысление и попытки повторить с анализом результатов. И это всё будет самообучение.

Обучение - это когда тебе чужой дядя рассказывает что-то типа «А вот есть такая хрень как радиоволны». Да и то, про радиоволны нынче можно и самому узнать, без обучения.

Нейросетки не искусственно кастрированны. Чтобы искусственно кастрировать - что то должно быть изначально.

И было. Но было объявлено «bad programming practice». И не стало. Теперь нейросети не могут случайно и совершенно непредсказуемым образом изменить свой алгоритм, например. А без этого ни о каком интеллекте речи быть не может.

Если я тебе дам сейчас файл с кодом и попрошу сказат где именно происходит адаптация окна под размер текста

Да неужели. Код на брейнфаке, что-ли?

а нейросеть скажет.

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

Stanson ★★★★★
()
Ответ на: комментарий от Stanson

Вот я чужой дядя рассказал что то новое нейросетке и она теперь это использует. Это наверное другое.

Код на обычном луа на 12 тысяч строк. Сколько ты будешь в нем копаться чтобы найти нужное мне? Нейросеточка за 2 секунды выбрала нужные фрагменты и выдала все 4 из них мне.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Вот я чужой дядя рассказал что то новое нейросетке и она теперь это использует. Это наверное другое.

В этом-то и дело. Нейросетка ну никак не может сама что-то найти и обработать.

Код на обычном луа на 12 тысяч строк. Сколько ты будешь в нем копаться чтобы найти нужное мне?

А что, текстовый поиск уже отменили?

Нейросеточка за 2 секунды выбрала нужные фрагменты и выдала все 4 из них мне.

Какой-нибудь grep и быстрее справится, с 12kLOC-то. И, кстати, а ты уверен что нейросеточка не пропустила чего-нибудь?

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

А если не сама, а по моему запросу - это уже не считается? Результат будет другим, да?

Текстовый поиск чего? Греп чего? Нейросети я могу своими словами объяснить что хочу найти и она найдет. Ты не найдешь.

А про то что ты там что то сам можешь - знаешь что происходит с детьми-маугли, которые не обучались у людей должным образом?

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

А если не сама, а по моему запросу - это уже не считается? Результат будет другим, да?

Это принципиальное отличие.

Нейросети я могу своими словами объяснить что хочу найти и она найдет. Ты не найдешь.

Ты не можешь ничего объяснить нейросети. У неё нет вообще никакой понималки, чтобы понять то, что ты там ей объясняешь. Совсем нет.

Слушай, а ты не пробовал унитазу чего-нибудь объяснить? Ну своими словами.

А про то что ты там что то сам можешь - знаешь что происходит с детьми-маугли, которые не обучались у людей должным образом?

Наблюдали всякую дичь, вместо наблюдения за людьми, вот и результат.

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

ЗЫ: Кстати, забавно, как «обучение» «программированию» по видосикам на ютубчике было вытеснено «обучением» «программированию» по высерам нейросеточек. :) И ведь все забыли уже про «обучающие» видосики. Так же и про нейросеточки забудут.

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

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

Практика - критерий истины.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

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

У меня плохие новости. Выходит что нейросеть умнее тебя.

Практика - критерий истины.

Потребление нейрослопа практикой не является. Как и нейрослоп истиной.

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

Stanson ★★★★★
()
Ответ на: комментарий от dataman

поютубив, узнал о «Мама сшила мне штаны…».

«Мама сшила мне штаны // из пространственной дыры, // чтобы попу охлаждали // параллельные миры.»

question4 ★★★★★
()
Ответ на: комментарий от Stanson

Практика - результат выполнения действия. При использовании ИИ результат есть, а с тобой нет.

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

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

молодые и умные просто занимаются делом

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

Stanson ★★★★★
()
Ответ на: комментарий от anonymous_incognito

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

question4 ★★★★★
()
Ответ на: комментарий от Stanson

Всё что может LLM - это сгенерить наиболее вероятную комбинацию элементов используя в качестве затравки твою «просьбу»

Получается, LLM пригодна для решения всех задач, которую можно свести к модели с корреляцией элементов? Таких очень много :)

question4 ★★★★★
()
Ответ на: комментарий от question4

Получается, LLM пригодна для решения всех задач, которую можно свести к модели с корреляцией элементов?

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

Таких очень много :)

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

Огромный недостаток нейросети - это необходимость тренировки и объёмы данных необходимые чтобы back-propagation в итоге привела веса к оптимальным значениям.

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

Stanson ★★★★★
()
Ответ на: комментарий от sergej

Ладно, тогда почитаю доки глубоко. Если так, то замучу себе чего домой...

Shadow ★★★★★
()
Ответ на: комментарий от Stanson

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

А вот это в некотором роде даже философский вопрос на тему, что есть слово и что есть смысл. Но на самом деле у совремённых моделей сейчас далеко не просто статистически вероятный вес. После обучения на датасете они ещё проходят стадию обучения с подкреплением (Reinforcement Learning), на которой как раз их и учат логике. В том числе на основе отзывов людей (технология RLHF).

Уверен что любой вменяемый переводчик не будет переводить whiteness как яркость, например.

Может и не будет, а вот разницу между brightness и lightness не всякий поймёт.

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

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

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

anonymous_incognito ★★★★★
()
Ответ на: комментарий от Stanson

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

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

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

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

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

anonymous_incognito ★★★★★
()
Ответ на: комментарий от anonymous_incognito

Что ты имеешь ввиду под параметрами?

если «нейрон» это out = f(Σ(w[i]*in[i])) то речь о w[i]. Какой-то устойчивой терминологии для этого я не заметил, встречается gain, weight, parameter, coefficient и т.п.

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

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

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

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от byko3y

Всё начинает тормозить, смотришь top - там какой-нибудь сервис на go сожрал столько, что вёрстка уехала

Shadow ★★★★★
()
Ответ на: комментарий от Stanson

если «нейрон» это out = f(Σ(w*in)) то речь о w. Какой-то устойчивой терминологии для этого я не заметил, встречается gain, weight, parameter, coefficient и т.п.

То есть, веса модели.

Соответственно, такая система решается только если общее количество w всех «нейронов» больше или равно количеству скрытых факторов влияющих на связь между входными тренировочными данными и выходными.

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

Так что не совсем понятно в чём тут «предъява» нейросеткам?

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

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

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

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

P.S. У меня такое впечатление, что ты где-то лет 20 назад когда изучал программирование, ИТ, изучал и нейросетки и исходя из тех знаний судишь то, что происходит сейчас. Не ты один, кстати, Iron_Bug схожие мысли высказывает. Это не совсем верно, мне кажется. Некая основа осталась таже, но и архитектуры сеток стали более хитрыми и имеет место переход количества в качество с ростом масштаба.

anonymous_incognito ★★★★★
()
Ответ на: комментарий от Shadow

Всё начинает тормозить, смотришь top - там какой-нибудь сервис на go сожрал столько, что вёрстка уехала

И при чём тут Go? Это же даже не старая JVM, где машине отдают фиксированное число памяти на растерзание.

byko3y ★★★★
()
Ответ на: комментарий от anonymous_incognito

Так что не совсем понятно в чём тут «предъява» нейросеткам?

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

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

Может сойтись, а может и не сойтись. Результаты для области где тренировочные данные противоречивы не будут правильными в любом случае.

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

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

У меня такое впечатление, что ты где-то лет 20 назад когда изучал программирование, ИТ, изучал и нейросетки и исходя из тех знаний судишь то, что происходит сейчас.

архитектуры сеток стали более хитрыми

Ты не поверишь, но за последние лет 50 ничего в мякотке нейросетей не поменялось. От того, что ты как-то хитро соединишь «нейроны», ничего не меняется в смысле упаковки данных в веса. А добавление обратной связи (RNN например), только ухудшает дело, т.к. появляется ещё и домен времени, а количество весов при этом остаётся тем же.

имеет место переход количества в качество с ростом масштаба.

Количество в качество переходит крайне редко, включая тоже крайне редкие случаи когда количество само по себе является качеством.

И нет, нейросети это не такой случай.

Да, направления (что с чем соединено) связей тоже в каком-то смысле содержат информацию, но я пока не встречал сколь-нибудь известных и удачных нейросетей которые переделывают саму свою структуру в процессе обучения и/или работы, так что эта информация статична и задана содателем нейросети, и, соответственно, не может быть использована для обхода ограничения количества весов. Впрочем, даже если и сделают нейросеть, которая сможет перестраивать себя из, например, CNN в RNN, добавлять или убирать слои, создавать черезслойные связи или вообще превращаться в непонятно что, то результат разочарует, потому что это будет просто ещё некоторое количество дополнительных к весам переменных что мало поможет если количество скрытых параметров тернировочного сета на порядки больше количества весов и числа связей. Попытки это сделать, насколько я знаю, существуют в виде TNN (Topological NN), но пока что получается херня.

Stanson ★★★★★
()
Ответ на: комментарий от Shadow

Я хз, но говнопрограммы на go почему-то.

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

byko3y ★★★★
()
Ответ на: комментарий от Stanson

Я тут потихонечку слежу за вами и думаю: то ли вы впечатлились моей статьей
https://bykozy.me/blog/the-foundational-flaws-of-modern-language-models/
то ли это реально мнение, похожее на моё. Отсылка к Iron_Bug звучит стрёмно, потому что это уже совсем скатывание в «в наше время ИИ было совсем другое, не то что сейчас... и автокомплит в IDE был лучше, не то что этот».

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

Как я пытался пояснять в уже другой статье
https://bykozy.me/blog/attention-economics-and-software-engineering/
кроме «долбодятлов» в айти почти никого нет, так что пожалуйста аккуратнее высказывайтесь про ваших заказчиков, коллег, клиентов.

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

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

Порядка 95-99% всех параметров LLM — это заученные частности, которые комбинируются разными способами. Насколько мне известно, сейачс мало кто занимается задачей «как заставить нейросеть запоминать суть, а не очень много частных её проявлений» — это тяжело, а вот херануть 600B+ модель намного проще.

Ты не поверишь, но за последние лет 50 ничего в мякотке нейросетей не поменялось.

90-е/нулевые разработана большая часть технологии компьютерного нейрона, в 2010-е оно было адаптировано-масштабировано под имеющиеся на рынке вычислители — я подчёркиваю «имеющиеся на рынке», потому что они далеко не самые оптимальные. И именно для обхода их проблем понадобилось много лет.

Так-то 20-30 лет я бы сказал, а не 50.

byko3y ★★★★
()
Ответ на: комментарий от anonymous_incognito

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

Просто нет. Я отвечал на этот вопрос в контексте статьи:
https://bykozy.me/blog/the-foundational-flaws-of-modern-language-models/

https://arxiv.org/pdf/2405.07987 - The Platonic Representation Hypothesis

где авторы выдвинули теорию, что каким-то магическим образом масштабирование даёт знание мира. Там же у меня в блоге есть контраргументы, которые поясняют весь эффект от масштабирования LLM чисто количественными факторами:

https://arxiv.org/pdf/2504.03635 — Do larger language models generalize better? a scaling law for implicit reasoning at pretraining time
https://arxiv.org/html/2505.13898v2 — Do Language Models Use Their Depth Efficiently?

«Количество даёт новое качество» — это ничем не обоснованный бред, который снова, и снова, и снова, и снова хайпуют в соцсеточках, уже поперёк горла стоит.

byko3y ★★★★
()
Ответ на: комментарий от anonymous_incognito

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

По ресурсам нейросетки всегда проигрывают. Алгоритмы, основанные на SVM и KNN (метод ближайших соседей) обучаются на порядки быстрее и обычно требуют меньших мощностей.

В упомянутом конкурсе нейросетки победили по точности, но тут есть нюансы. SVM и KNN - это не какая-то программа, библиотека или даже алгоритм. Они являются принципами сортировки объектов. Для того, чтобы эти принципы заработали, надо «ручками» выделить какие-то признаки из изображений. Если удачно найдены признаки, то SVM и KNN будут работать не хуже нейросетей. Участники конкурса не смогли найти таких признаков.

Возможно, датасет был слишком сложен. При маленьких датасетов и небольших количествах категорий признаки выделить проще. Например, по данным википедии, для MNIST у SVM ошибка была 0,56 %, а у KNN - 0,52%. Лучший результат нейросети - 0,09 %, но тут уже попахивает влиянием тестовой выборки через эпохи. Я видел MNIST - там много очень плохо написанных цифр, которые нельзя точно отнести к какой-либо категории. Так что слишком хороший процент может указывать на не совсем честный результат.

Kogrom ★★
()
Ответ на: комментарий от Kogrom

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

Например, по данным википедии, для MNIST у SVM ошибка была 0,56 %, а у KNN - 0,52%. Лучший результат нейросети - 0,09 %, но тут уже попахивает влиянием тестовой выборки через эпохи. Я видел MNIST - там много очень плохо написанных цифр, которые нельзя точно отнести к какой-либо категории. Так что слишком хороший процент может указывать на не совсем честный результат.

Кстати, да, я уже недавно отвечал, что цирк с обыгрыванием бенчмарков на самом деле не отображает практической применимости. AlexNet и тому подобные CNN кроме ImageNet и подобных очень специфичных датасетов не могут ничего распознавать. То есть, им нужна картинка ограниченного размера, объект примерно по центру и примерно вертикально, текстуры должны быть естественными — последнее очень важно, потому что, как позднее выяснилось, «топовые» CNN того периода на самом деле распознавали текстуры, а не объекты:
https://arxiv.org/abs/1811.12231 - ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness

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

То, что происходит с LLM — это тоже похожая подгонка под бенчмарки, а не под реальные задачи. Как правило, когда появляется новый бенчмарка, то все топовые LLM показывают ужасные результаты на нём — но это и есть настоящие способности LLM. Как грил Гутхарт:
«Когда метрика становится целью, она перестаёт быть хорошей метрикой»

byko3y ★★★★
()
Ответ на: комментарий от Stanson

И зачем ему для этого понадобилась нейросеть? Просто на bayer.com зайти не судьба? Там шикарный исторический раздел, и даже целую большую и подробную книгу по истории концерна можно даром скачать.
А нейросеть сможет ответить, например, на вопрос, по каким причинам концерн Bayer, который не гнушался ни массового производства героина, ни производства взрывчатки и боевых ОВ, ни ГМО, ни прочих сомнительных авантюр, вдруг не стала участвовать в производстве шмурдяка во время коронабесия, чем занялись все аналогичные концерны? Bayer даже купил фирмочку какую-то, которая на поле mRNA подвизалась, но через некоторое время закрыли её нахрен и прекратили все работы. Даже заявку на вакцину отозвали....

Что это за аргументы? Нейросеть во-первых пролистает кучу сырых документов из веб-поиска, в том числе зайдёт на bayer.com вместо меня, и выберет из просканированного текста то, что меня интересует, указав при этом ссылки на оригиналы — именно в таком режиме я призываю всех использовать нейросеть. Потому что не так давно я спорил с одним историком, так выяснилось, что его «документы» были нагалюцинированы нейросетью. Но найти эти документы, чтобы самостоятельно прочитать, намного проще с нейросетью, чем без неё.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Нейросеть во-первых пролистает кучу сырых документов из веб-поиска, в том числе зайдёт на bayer.com вместо меня, и выберет из просканированного текста то, что меня интересует, указав при этом ссылки на оригиналы

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

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

Да неужели. Мне чтобы найти bayer.com, книгу, исторический справочник и все ответы на вопросы потребовалось секунд 30, старый T440p и сервак bayer.com. Сколько там было просрано ресурсов, в том числе времени на тренировку нейросети, её поддержку, организацию вебморды и генерацию наиболее вероятного ответа на входной раздражитель который некоторые считают «вопросом к нейросети»?

Проще, говоришь? Ну-ну. :)

Это уже становится похоже на EV хайп, когда вся куча говна вокруг генерации и доставки электричества, изготовления дебильных литиевых батареек и пр. напрочь игнорируется адептами электромобильчиков, как будто её вообще не существует. :)

Stanson ★★★★★
()
Последнее исправление: Stanson (всего исправлений: 1)
Ответ на: комментарий от Stanson

Она не «пролистывает кучу сырых документов». Куча сырых документов была «пролистана» при тренировке, и свернулась в относительно ограниченное количество весовых коэффициентов кусочков текста.

То, что я описываю, называет RAG, и сегодня каждый китайский школьник умеет её лепить из готовых кубиков:
https://en.wikipedia.org/wiki/Retrieval-augmented_generation
Пользоваться языковой моделью именно для формирования конечного точного ответа — это путь вникуда, как я уже пояснял.

Более сложные агентные системы умеют в режиме chain-of-thoughts путём вызова внешних инструментов делать поиск, анализировать результат, делать повторные запросы по результатам анализа, выдавать конечный результат. Например, Grok очень хорошо надрессирован на это дело, мне он даже больше нравится, чем Perplexity.

Мне чтобы найти bayer.com, книгу, исторический справочник и все ответы на вопросы потребовалось секунд 30, старый T440p и сервак bayer.com

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

Это уже становится похоже на EV хайп, когда вся куча говна вокруг генерации и доставки электричества

Я потому и решил вмешаться в ваш разговор, потому что он в какой-то треш скатывается. нейросети сильно перехайпаны, но они не настолько убоги, как ты описываешь.

byko3y ★★★★
()
Ответ на: комментарий от seiken

Только альтернативно одаренный человек может всерьез относиться к ЯПу, у которого whitespace является значимым элементом синтаксиса.

Про терминальную тормознутость уже писали, или нужно напомнить отдельно?

quwy
()
Ответ на: комментарий от quwy

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

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

Какие рациональные аргументы ты хочешь предъявить индустрии, которая пишет серверные приложения и ПО для микроконтроллеров на JS? Если уж на то пошло — пробелы в качестве элемента синтаксиса являются далеко не самой худшей фичей.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

CNN того периода на самом деле распознавали текстуры, а не объекты

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

При одинаковой точности я предпочту не пользоваться современными популярными нейросетями. Потому что под них надо мощную видеокарту, драйвер на гигабайт, CUDA на несколько гигабайт, cuDNN на пол гига. Если мы интегрируем обученную модель, например, в C#, то еще onnx добавит. И вот у нас дорогущая система с забитым непонятно чем диском. А если делаешь своё решение через KNN или SVM, то оно будет работать без всяких тяжеловесных драйверов и библиотек, да ещё и на голом процессоре.

Kogrom ★★
()
Ответ на: комментарий от byko3y

Более сложные агентные системы умеют в режиме chain-of-thoughts

chain-of-thoughts™

путём вызова внешних инструментов делать поиск

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

поиск™

анализировать результат,

анализировать™

делать повторные запросы по результатам анализа

И сам анализ™ и поисковые запросы и результаты запросов - результат работы такой же тупой нейросети.

Ты мне хочешь рассказать, что за 30 секунд ты смог найти, что у Bayer до 1912 года не было формального руководителя, но де-факто его роль исполнял Дюсберг, как наиболее уважаемый член совета директоров?

В самом начале https://www.bayer.com/en/history/1881-1914 ссылка на биографию этого самого Дюсберга.

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

Я потому и решил вмешаться в ваш разговор, потому что он в какой-то треш скатывается

Garbage in - garbage out. Почему об этом элементарном принципе все забывают? Куда ещё может скатиться разговор о треше?

нейросети сильно перехайпаны, но они не настолько убоги, как ты описываешь.

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

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

И теперь везде и всюду бегают восторженные использователи ИИ™ и засирают всё нейрослопом.

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

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

Stanson ★★★★★
()
Ответ на: комментарий от Kogrom

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

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

Потому что под них надо мощную видеокарту, драйвер на гигабайт, CUDA на несколько гигабайт, cuDNN на пол гига.

CUDA и cuDNN такие огромные потому, что с ними поставляется дичайшее число предпокомпилированных ядер под кучу аппаратных платформ. Если у тебя конкретная карточка и ты можешь подождать перед стартом (или скомпилировать на месте), то в условиях остаётся только мощная видимокарта.

byko3y ★★★★
()
Ответ на: комментарий от Stanson

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

Ты точно пробовал хотя бы раз пользоваться этим поиском? Я пробовал, потому я вижу серьёзное ускорение для меня в этом плане. Гугл говно, как и другие поисковики, но чисто грубой силой, просматривая много-много страниц, можно рано или поздно найти что-то более релевантное.

В самом начале https://www.bayer.com/en/history/1881-1914 ссылка на биографию этого самого Дюсберга.

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

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

Объяснись, что значит «отсутствие любопытства»?

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

Да, ущерб от нейросетей превысил пользу. Но тут дело не в нейросетях — в ковид ущерб был нанесён безо всяких нейросетей:
https://bykozy.me/blog/attention-economics-and-software-engineering/

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

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

byko3y ★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)