Dass man in den meisten Programmiersprachen den Speicherbedarf und die konkrete Binärdarstellung von Zahlentypen festlegt ist eine rein praktische Entscheidung.
Bingo! Das heißt, dass numerische Datentypen gar keinen expliziten Serializer brauchen wenn es darum geht, diese in Dateien abzulegen.
Maschinenzahlen könntest du genauso kodieren, wie sie im Hauptspeicher kodiert sind - ja. Das will man aber oft nicht, weil das Format nicht menschenlesbar, nicht speichereffizient und auch nicht platformübergreifend ist. Für bestimmte Anwendungsfälle mag es trotzdem die richtige Wahl sein - Debugging zum Beispiel. Andere Anwendungsfälle verlangen andere Kodierungen.
Und Nicht-Maschinenzahlen haben überhaupt keine feste Repräsentation im Hauptspeicher, sie werden im Programm kodiert. Die natürlichen Zahlen in Church-Kodierung sähen in JavaScript zum Beispiel so aus:
const Zero = x => x;
const Successor = f => x => f(x);
Diesen Fall lässt dein Vorschlag völlig unbeantwortet. Was auch okay ist, denn meistens kommt man mit Maschinenzahlen ja schon aus. Allerdings benutze ich die natürlichen Zahlen hier ja nur als Beispiel, für Datenstrukturen, die im Programm kodiert werden und die keine ablesbare Repräsentation im Hauptspeicher haben. Und dieser Umstand trifft nun mal auf die überwältigende Mehrheit der Datenstrukturen zu, mit denen wir heute täglich arbeiten. Dein Lösungsvorschlag erscheint mir deshalb zu schmalfüßig.
Die c-Philosophie geht sogar noch ein Stück weiter
C ist eine maschinennahe Sprache und als Medium zum Transport menschlicher Gedanken eher ungeeignet. Das Typsystem dient einerseits der Fehlervermeidung und andererseits der Modellierung des Speicherlayouts. Das erste hilft auch dem Menschen beim Verstehen des Programmcodes, das zweite belastet das kognitive Bewusstsein mit maschinellen Details. Du machst es dir unnötig schwer, wenn du versuchst abstrakte Konzepte anhand von C zu verstehen. Gerade im Web sind wir mit viel höheren Programmiersprachen umwöhnt, in denen wir unsere Ideen viel besser ausdrücken können, weil wir irrelevante Dateils (wie das Speicherlayout) ignorieren können.