Все ОО - это образ мышления и целая куча поддержки компиляторов.
Вы можете достичь почти того же самого благодаря дисциплине, соглашениям о кодировании и передаче структур на большинстве языков.
Например, я имел обыкновение иметь функции / процедуры с префиксом их идентификатора модуля, принимая первый параметр как структуру соответствующего модуля.
// System.h
typedef struct _System
{
struct _System *owner;
LinkedList *elements;
} System;
// System.c
int System_FindName ( System * system, char *name)
{
..
}
и т.д ..
Я действительно серьезно не хотел бы возвращаться к такому кодированию. Я очень рад, что мне не приходилось писать и отлаживать связанный список по крайней мере 18 лет. Тогда было тяжело без интернета и сидеть в одиночестве в углу холодной, ярко освещенной комнаты с зелеными люминофорами, сжигающими вашу сетчатку ...