Переменные persistent в Matlab

В Matlab есть одна довольно редко используемая и не очевидная функциональность, заключающаяся в использовании переменных с модификатором persistent. Фактически такие переменные аналогичны статическим переменным в теле метода, например у С++. Одним из наиболее типичных сценариев использования таких переменных является написание функций загрузки большого объема данных либо длительной предварительной обработки. При первом запуске метода, содержащего переменную с модификатором persistent, эта переменная будет пустой. При последующих запусках, если функция не изменялась, значение переменной persistent сохранится. Таким образом можно выполнить длительные вычисления или загрузку данных с диска (десериализация mat-файлов в Matlab работает довольно медленно) только при первом вызове функции.

function DB = LoadDB(DBPath, Reload)
%function DB = LoadDB(DBPath, Reload)
% функция чтения данных по пути DBPath
% Reload — принудительная перезагрузка (по умолчанию — false)

if nargin<2 %если переменная Reload не задана, задаем значение по умолчанию Reload = false; end persistent db; if isempty(db) || Reload %если еще не разу ни запускали чтение или необходимо принудительно повторить загрузку данных % читаем базу в переменную db end Db = db; %копируем в выходную переменную [/sourcecode]

Visual Studio Achievements Beta — или как стать программистом 80 уровня

Появилось шуточное расширение Visual Studio Achievements для Visual Studio, позволяющее прокачивать свои программистские навыки и позволяющее делиться «достижениями». Как только получен соответствующий значок им можно похвастаться в FaceBook и Twitter.

Помимо применения расширения «just for fun» и наличия довольно бессмысленных достижений(«Написать иерархию классов с наследованием в 10 уровней») или даже грустных («Программировать ночью в пятницу или субботу»), расширение может быть вполне полезным при начальном освоении Visual Studio, например, позволяет узнать о функции «Organize Usings». Но пока все-таки список не очень большой, надеюсь, авторы не остановятся на достигнутом.