با احترام به تمام نظرات دوستان ، به نظر من برنامه اصولی باید اینطور باشد:
ما کاری به شی گرا بودن یا نبودن برنامه نداریم هر چند که در اصولی بودن برنامه خیلی کمک می کنند.
ممکن است شما با زبان C که غیر شئ گرایی است برنامه بنویسید مثل ویندوز و برنامه شما اصولی باشد و باز ممکن است با C#‎‎ برنامه بنویسید ولی اصولی نباشد؛ برای شما با مثال ثابت می کنم:

مثال 1: مثلا شما در سی شارپ بیایید پایگاه داده خود را جوری طراحی کنید که مثلا با حذف یک مشتری کالاهای خرید شده توسط مشتری به صورت اتوماتیک ، خذف نشود و بیایید در سی شارپ کد بنویسید که هر رکوردی که در جدول خرید با کد این مشتری است را حذف کند. خوب این یک روش غیر اصولی است.

مثال 2: یا مثلا بعضی ها را دیدم که در برنامه برای رفرش کردن مثلا دیتا گرید برای اینکه اطلاعاتشان همیشه به روز باشد از تایمر استفاده می کنند. که خیلی خنده دار است و شاید شما از این مطلب تعجب کنید ولی من دیدم.

مثال 3: مثلا طرف برنامه ای دارد که گرفتن یکسری اطلاعات از 5 تا 20 متغیر است مثلا یکبار باید 5 نام بگیرد ؛ در شرایط دیگر باید 12 یا در نهایت 20 نام بگیرد. خوب برنامه نویس آماتور 20 تا TextBox در فرم می گذارد و بعد اگر قرار بود 5 نام بگیرد بقیه ی TextBox ها را با خاصیت Visible مخفی می کند. حالا به نظر شما این برنامه اصولی است؟؟ در حالی که می توانست با ساخت یک نمونه در زمان اجرا مشکل را حل کند و اینقدر برنامه را سنگین نکند.

به نظر من منظور دوستمان باید از نشر اصولی بودن یا نبودن این باشد و فرقی ندارد که با کدام زبان کد می نویسید.