در اینجا یک دستهبندی از انواع زبانهای برنامهنویسی ارائه شده است که عبارتنداز:
۱. بر اساس سطح انتزاع (Abstraction Level)
این دستهبندی میزان نزدیکی زبان به زبان انسان (سطح بالا) در مقابل نزدیکی به زبان ماشین (سطح پایین) را نشان میدهد.
الف) زبانهای سطح پایین (Low-Level Languages)
این زبانها به سختافزار نزدیکتر بوده و انتزاع کمتری دارند. اجرای آنها بسیار سریع است، اما یادگیری و کدنویسی با آنها دشوارتر است.
- زبان ماشین (Machine Language): تنها زبانی که مستقیماً توسط CPU درک میشود. از کدهای باینری (صفر و یک) تشکیل شده است.
- زبان اسمبلی (Assembly Language): از کدهای عددی (Machine Code) یک قدم بالاتر است و به جای اعداد از نمادها (مانند ADD, MOV) استفاده میکند. این زبان اغلب برای برنامهنویسی سیستمهای توکار یا کارهایی که نیاز به عملکرد فوقالعاده بالا دارند، استفاده میشود.
ب) زبانهای سطح بالا (High-Level Languages)
این زبانها به زبان انسان نزدیکتر بوده و خواندن و نوشتن آنها آسانتر است. آنها برای اجرا باید توسط مفسر (Interpreter) یا کامپایلر (Compiler) به زبان ماشین ترجمه شوند.
- مثالها: Python, Java, C#, JavaScript
- مزیت: سادگی کدنویسی، قابل حمل بودن (Portable) بین سیستمعاملهای مختلف و بهرهوری بالاتر توسعهدهنده.
۲. بر اساس نوع پیادهسازی (Execution Type)
نحوه تبدیل کد منبع به دستورالعملهای قابل اجرا توسط ماشین، زبانها را به دو گروه اصلی تقسیم میکند:
- زبانهای کامپایلری (Compiled Languages):
- کل کد منبع پیش از اجرا، یکجا توسط کامپایلر به زبان ماشین تبدیل شده و در یک فایل اجرایی (مانند .exeذخیره میشود.
- مزیت: اجرای بسیار سریع.
- مثالها: C, C++, Go, Swift
- زبانهای تفسیری (Interpreted Languages):
- کد منبع خط به خط توسط مفسر خوانده و همزمان اجرا میشود.
- مزیت: توسعه سریعتر، قابلیت حمل بالا.
- مثالها: Python, JavaScript, Ruby, PHP
نکته: بسیاری از زبانهای مدرن مانند Java و C# از یک رویکرد ترکیبی استفاده میکنند؛ ابتدا به یک کد میانی مانند Bytecode کامپایل شده و سپس توسط یک ماشین مجازی (Virtual Machine) تفسیر میشوند.
۳. بر اساس پارادایم برنامهنویسی (Programming Paradigm)
پارادایم، در واقع سبک یا روشی است که یک زبان برای سازماندهی و حل مسائل استفاده میکند.
الف) پارادایم دستوری/امری (Imperative Paradigm)
بر روی چگونگی انجام یک کار (دنبالهای از دستورات) تمرکز دارد.
- برنامهنویسی رویهای (Procedural): سازماندهی کد در قالب توابع (Functions) یا رویهها (Procedures). مثال: C, Pascal)
- برنامهنویسی شیءگرا (Object-Oriented - OOP): سازماندهی کد حول اشیاء (Objects) که شامل دادهها (Data) و متدها (Methods) هستند. تمرکز بر مفاهیمی مانند وراثت (Inheritance) و کپسولهسازی (Encapsulation). (مثال: Java, C++, Python, C#)
ب) پارادایم اعلانی (Declarative Paradigm)
بر روی چه چیزی باید به دست آید (به جای چگونگی) تمرکز دارد.
- برنامهنویسی تابعی (Functional): برخلاف OOP، بر ارزیابی توابع ریاضی تأکید دارد و از تغییر حالت (State) و دادههای قابل تغییر (Mutable Data) دوری میکند. (مثال: Haskell, Lisp, Scala)
- برنامهنویسی منطقی (Logical): بر اساس منطق صوری و قواعد نوشته میشود. (مثال: Prolog)
- زبانهای پرسوجو (Query Languages): مانند SQL که تعریف میکنند چه دادههایی مورد نیاز است. (مثال: SQL
