Если кто-то пишет программу (модуль, библиотеку) и называет её чёрным ящиком, то как её содержимое автору может быть неизвестно? Он же сам её творец. Всё равно непонятно.
Тут важна концептуальная сторона: абстрагирование от реализации. Один модуль может быть заменен другим, важно лишь его поведение. Программист должен это осознавать.
PS Впрочем, это справедливо для программирования как инженерии, что такое "мат" я не понимаю