Без оператора Новый: Указатели будут удалены из встроенного языка 1C

Без оператора Новый: Указатели будут удалены из встроенного языка 1C

Комитет по стандартизации встроенного ЯП 1С


Две недели назад на Дмитровском шоссе  встречался комитет стандартизации языка 1C. 

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

Комитет по стандартизации языка принял решение о том, что оператор Новый будет объявлен устаревшим в 1C 9.0 и с большой долей вероятности будет удален из 1C 10.0

Откровенно говоря, то, что кажется революционном, — всего лишь последний шаг длинной эволюции, начатой в 2003-м году удалением функции СоздатьОбъект

Указатели существуют в 1C с самого начала. Мы получили их из Бейсика. Но с самого начала развития 1C всегда была тенденция сделать управление указателями более удобными без значительных потерь. 

В 1C 8.2 мы получили СтандартныйАвтоУказатель для выражения исключительного владения. Но СтандартныйАвтоУказатель имел большой изъян. Когда вы копируете СтандартныйАвтоУказатель, владение ресурсом передавалось копии. Копирование выглядело как перемещение. 

Это было очень плохо, приводило к множеству серьёзных багов. Поэтому мы получили СтандартныйУникальныйУказатель в 1C 8.3, и объявили СтандартныйАвтоУказатель устаревшим в 1C 8.3, и окончательно удалили из 1C 8.4. 

Дополнительно мы получили СтандартныйРазделяемыйУказатель и СтандартныйСлабыйУказатель в 1С 8.4 для управления владением. Вы не можете копировать, но можете перемещать  СтандартныйУникальныйыйУказатель и если копируете или присваиваете СтандартныйРазделяемыйУказатель, счётчик ссылающихся указателей увеличивается

Дополнительно мы получили и СтандартныйРазделяемыйУказатель в 1C 8.4 для управления владением. Вы не можете копировать, но можете перемещать  СтандартныйУникальныйыйУказатель, и если копируете или присваиваете  СтандартныйРазделяемыйУказатель, счётчик ссылающихся указателей увеличивается. 

Новая семантика владения. 

Честно говоря, мы используем указатели и, в частности, обычные указатели очень часто. Вопрос, должны ли вы использовать указатель, сводится к следующему: Кто владелец? К счастью, с помощью кода мы можем чётко выразить это. 

Локальные объекты

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

Ссылки: я не владелец. Я только обеспечиваю, что ресурс не может быть пустым. 

Обычные указатели: я не владелец. Я только ссылаюсь на ресурс, если он есть. Я не должен удалять ресурс. 

СтандартныйУникальныйУказатель: я исключительный владелец ресурса. Я могу явно освободить мой ресурс. 

СтантартныйУникальныйУказатель: я разделяю ресурс с другим СтантартныйУникальныйУказатель-ем. Я могу явно удалить мой разделяемый ресурс, если он больше никому не нужен. 

СтантартныйСлабыйУказатель: я не владелец ресурса, но я могу временно разделять ресурс при вызове моего метода СтантартныйСлабыйУказатель::Заблокировать

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

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

Report Page