Расширение - это и не упорядочивание, и не визуализация. Это метаданные. Причем на 99% устройств единственные доступные.
Естественно, можно было бы сделать (и в некоторых ОС, как у вас в примере, частично сделано) гораздо лучше. Но вот только в реальном мире - сейчас - без расширений никак не обойтись. (если, конечно, ваша работа на компьютере не ограничена фотками и еще десятком типов файлов)
Рекомендую также подумать о том, что есть типы файлов, о которых Система С Графическим Интерфейсом не знает. Кроме того, типов файлов настолько огромное множество, что проще написать *.xxx;*.yyy чем выбирать 2 типа файлов в списке из сотен (тысяч) элементов.
Есть множество тип файлов, для которых единственный способ отличить файл одного типа от другого - это расширение (ага, несколько букв после точки). И это и есть "маркирование" файла, да, может устаревшее, но, тем не менее, простое и наиболее универсальное.
В некоторых частных случаях может и делает. Например, только для типов файлов, известных системе.
Или просто прячет от вас расширения файлов, чтоб вы их не видели. Что не говорит о том, что их нет и они не нужны.
Предположим, мне в проекте надо найти нечто в исходниках, а в других текстовых файлах искать не нужно. Как система отличит исходник от другого текстового файла?
Естественно, можно было бы сделать (и в некоторых ОС, как у вас в примере, частично сделано) гораздо лучше. Но вот только в реальном мире - сейчас - без расширений никак не обойтись. (если, конечно, ваша работа на компьютере не ограничена фотками и еще десятком типов файлов)
Система, по-хорошему, просто не найдет разницу между .c и .cpp файлом.
Или просто прячет от вас расширения файлов, чтоб вы их не видели. Что не говорит о том, что их нет и они не нужны.