┐─ تحليل الملف ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ┌
│ المطور : Bjarne Stroustrup / ISO
│ الفئة : شفرة
│ نوع MIME : text/x-c++src
┘ ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── └
ما هو ملف CPP؟
ملفات .cpp تحتوي على شفرة مصدرية بلغة C++، التي أنشأها Bjarne Stroustrup في مختبرات بيل عام 1979 تحت اسم “C مع كلاسات” قبل أن تُعيد تسميتها C++ عام 1983. صُممت C++ كامتداد لـ C: تضيف البرمجة الكائنية (OOP) والقوالب (Templates) وإدارة الموارد بـ RAII ومكتبة القوالب القياسية (STL) مع الحفاظ على كامل أداء C والتحكم في الذاكرة.
المميز في C++ أنها تتيح كتابة كود عالي المستوى مع الاحتفاظ بإمكانية “الانزلاق” لعمليات منخفضة المستوى — مما يجعلها الخيار الأمثل حيث الأداء غير قابل للتفاوض: محركات الألعاب والمتصفحات وقواعد البيانات وأنظمة التداول المالي.
كيفية فتح ملفات CPP
- Visual Studio (ويندوز) — المعيار الصناعي لـ C++ مع Intellisense وMSVC
- CLion من JetBrains (ويندوز، ماك، لينكس) — بيئة تطوير C++ متكاملة بـ CMake
- VS Code مع إضافة C/C++ أو clangd (ويندوز، ماك، لينكس) — خفيف ومرن
- Xcode (ماك) — لمشاريع Apple مع دعم Metal وObjective-C++
- أي محرر نصوص — ملفات CPP نص عادي قابل للقراءة
المواصفات التقنية
| الخاصية | القيمة |
|---|---|
| نوع MIME | text/x-c++src |
| نظام الأنواع | ثابت وقوي |
| النموذج | متعدد: OOP، إجرائي، وظيفي، عام (Generic) |
| المترجمات | GCC (g++)، Clang++، MSVC، Intel C++ |
| المعيار الحالي | C++23 |
| إدارة الذاكرة | يدوية + RAII + Smart Pointers |
| أداة البناء | CMake، Meson، Bazel |
الاستخدامات الشائعة
- محركات الألعاب: Unreal Engine 5 كتب بـ C++ بالكامل؛ Unity يستخدم C++ للكود الأصلي
- المتصفحات: Chrome وFirefox وSafari كلها مكتوبة أساساً بـ C++
- قواعد البيانات: MySQL وPostgreSQL وSQLite ومحرك RocksDB من Facebook بـ C++
- التداول عالي التردد (HFT): أنظمة التداول الخوارزمي التي تُنفّذ في ميكروثوانٍ
- نظام التشغيل: أجزاء من ويندوز وmacOS وAndroid مكتوبة بـ C++
- رسوميات الحاسوب: محركات رندر مثل RenderMan وV-Ray وArnold بـ C++
مثال كود C++ حديث (C++17)
#include <iostream>
#include <vector>
#include <algorithm>
#include <memory>
// قالب (Template) لفئة عامة
template<typename T>
class Stack {
private:
std::vector<T> data_;
public:
void push(T value) { data_.push_back(std::move(value)); }
void pop() {
if (data_.empty()) throw std::runtime_error("المكدس فارغ!");
data_.pop_back();
}
const T& top() const { return data_.back(); }
bool empty() const { return data_.empty(); }
size_t size() const { return data_.size(); }
};
int main() {
Stack<int> stack;
stack.push(10);
stack.push(20);
stack.push(30);
std::cout << "القمة: " << stack.top() << "\n"; // 30
// Lambda و Range-based for
std::vector<int> numbers = {5, 3, 1, 4, 2};
std::sort(numbers.begin(), numbers.end(), [](int a, int b) {
return a < b;
});
for (const auto& n : numbers) {
std::cout << n << " "; // 1 2 3 4 5
}
return 0;
}
أوامر الترجمة
# ترجمة بـ g++ مع معيار C++17
g++ -std=c++17 -Wall -O2 -o myapp main.cpp
# إنشاء مشروع CMake
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build
# ترجمة بـ Clang
clang++ -std=c++20 -Wall -o myapp main.cpp
C++ مقابل C مقابل Rust
| الميزة | C++ | C | Rust |
|---|---|---|---|
| أمان الذاكرة | جزئي (smart ptr) | ❌ يدوي | ✅ مضمون |
| الأداء | ✅ مرتفع | ✅ مرتفع | ✅ مرتفع |
| البرمجة الكائنية | ✅ | ❌ | جزئي (traits) |
| تعقيد اللغة | صعب | متوسط | صعب |
| الأنظمة المدمجة | ✅ | ✅ الأفضل | ✅ |