Вот тут где-то советовали начинающим программистам пользоваться языком без сборки мусора. А что, это его (начинающего) главная цель? Освоить ручное управление памятью.
Конечно не главная. Но иметь представление важно для понимания других вещей. Во всяком случае если речь идет о чем-то более углубленном, нежели школьный курс информатики.
Что значит углублённая? Специализированная, не фундаментальная. И где-то это нужно, конечно, но не везде. И не навсегда. Где теперь перфокарты?
Конечно, для обучения очень хорошая задачка. Не сложная, допускающая разные решения и понятная. Но в производственном (production) коде использовать для ее решения что-то кроме стандартного sort - просто невежество.
А я не уверен пока, что задачка хорошая. Перефразируя то, что я говорил про обучение выше, можно сказать так: если будущий программист получил ответ в виде кода, то это ещё не решение. Решением будет ответ не в виде кода, а в виде чего-то в голове, что можно преобразовать в код.
Схему кода можно запомнить и использовать бездумно, значит, нет гарантии, что имея код, начинающий
действительно понимает, что же всё-таки за задача у него была.
А если предоставить решение задачи хотя бы самому себе (и если она довольн сложная, то визуализировать её в коде или графом), то потом не опасно воспользоваться функцией сортировки из стандартной библиотеки: мы убедились, что задача действительно заключена в сортировке.
Пример с сортировкой в реальной задаче несколько надуман, но я постоянно встречаю в нашей команде код, который можно было бы переписасть со стандартных библиотечных вызовов на стандартные же. Причём, неплохо всё бы упростил. Вот, что важно. Почему рождается запутанный код? Маловероятно, что из-за недостаточной сообразительности. Скорее, из-за не до конца решённой подзадачи. Их и вправду не так-то просто решать. Я, например, довольно часто прихожу в последствии к выводу, что и сам не решив задачи бросился её кодировать. И библиотеки не помогут решить задачи, потому что решение появляется не на экране, а в голове. А раз библиотеки не помогают в решении, то и в обучении
программированию место найти для их использования проблематично.
Но если Вы всё же найдёте причину использовать библиотеки для
решения, то подскажите библиотеку, занимающуюся сбором мусора и таким образом избавляющую программиста от
решения этой задачи : ).