May 13th, 2010

flow

мышление и квантификаторы

Человеческая психика очень интересно работает с количествами объектов. Есть понятие числа. Сначала в естественных языках и методах записи, а затем уже в традиционной математической нотации. Но для некоторых количеств существует более базовое дочисловое (и даже доязыковое) восприятие.

0, 1, 2, "много" ("немного", "несколько", ...). Остальные определения требуют числового восприятия, будь то числа в языках или референтные объекты (показать на пальцах). Но существует множество частных случаев, когда включается именно дочисловое восприятие - разница между "один" и "много", попарное сравнение. Это интуитивнее и быстрее для человека, чем переводить в числа.

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

И здесь появляется хорошая возможность отмоделировать навык не от человека к человеку, а сразу в нотацию, восстанавливающую этот навык. Что-то вроде:

views.setOnly(schemeView); // сделать schemeView единственным содержанием views
views.setPair(schemeView, worldView); // сделать пару schemeView и worldView единственным содержанием views
if( views.hasPair() ) ...; // views содержит два элемента?
if( views.hasMany() ) ...; // views содержит более одного элемента?

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

if( views.has(1..2) ) ...; // views содержит от отного до двух элементов включительно?
statictics.resize(views); // сделать размер statistics соответствующим размеру views

В итоге мы имеем дело с очень необычными навыками. Так как:
1) Это не обучение, а восстановление того, что у специалиста может быть скрыто нотациями его области.
2) Но навыки достаточно отмоделировать в саму нотацию, что решает проблему автоматически.

Критика и ссылки на близкие по теме материалы приветствуются.