Dlaczego C zezwolił na funkcje ukryte i deklaracje zmiennych bez typów?

Dlaczego rozsądne jest, aby język zezwalał na niejawne deklaracje funkcji i zmiennych bez typów? Rozumiem, że C jest stary, ale pozwala pominąć deklaracje i domyślnieint() (lubint w przypadku zmiennych) nie wydaje mi się tak rozsądny, nawet wtedy.

Dlaczego więc został pierwotnie wprowadzony? Czy to było naprawdę przydatne? Czy rzeczywiście jest (nadal) używany?

Uwaga: zdaję sobie sprawę, że nowoczesne kompilatory dają ostrzeżenia (w zależności od tego, które flagi im przekazujesz) i możesz wyłączyć tę funkcję. To nie jest pytanie!

Przykład:

int main() {
  static bar = 7; // defaults to "int bar"
  return foo(bar); // defaults to a "int foo()"
}

int foo(int i) {
  return i;
}

questionAnswers(5)

yourAnswerToTheQuestion