زبان‌های برنامه نویسی شی گرا زبان‌هایی هستند که بر اساس مفهوم شیء و کلاس ساخته شده اند. در این زبان‌ها، داده‌ها و رفتارها به صورت شیء سازماندهی می‌شوند و ارتباطات بین شیء‌ها با استفاده از پیام‌ها انجام می‌شود. زبان‌های برنامه نویسی تابعی زبان‌هایی هستند که بر اساس مفهوم تابع و لیست ساخته شده اند. در این زبان‌ها، داده‌ها و رفتارها به صورت تابع سازماندهی می‌شوند و ارتباطات بین تابع‌ها با استفاده از ترکیب و توسعه انجام می‌شود. زبان‌های شی گرا معمولا قابل فهم تر، قابل توسعه‌تر و قابل باز استفاده‌تر هستند، اما زبان‌های تابعی معمولا ساده تر، کارآمدتر و قابل اطمینان‌تر هستند.