Когда я в прошлый раз писал о рекурсии, то намеренно не стал писать о рекурсии шаблонной. Во-первых это огромный пласт метапрограммирования, на трюках основано множество интересных вещей, о которых хочется поговорить отдельно, а во-вторых в тех заметках я акцентировался прежде всего на рекурсии времени исполнения (run-time). Шаблоны же, как всем мы знаем – это артифакты времени компиляции. Читать запись полностью »

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

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

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