سؤال

ثابت metaprogramming (ويعرف أيضا باسم "قالب metaprogramming") هو عظيم C++ تقنية تسمح بتنفيذ برامج في وقت التحويل البرمجي.مصباح انفجرت في رأسي بمجرد أن قرأت هذا الكنسي metaprogramming سبيل المثال:

#include <iostream>
using namespace std;

template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };

template<>
struct factorial< 0 > { enum { ret = 1 }; };

int main() {
    cout << "7! = " << factorial< 7 >::ret << endl; // 5040
    return 0;
}

إذا كان أحد يرغب في معرفة المزيد عن C++ ثابت metaprogramming, ما هي أفضل مصادر (كتب ، مواقع على الخط المناهج التعليمية ، أيا كان)?

هل كانت مفيدة؟

المحلول

[الرد على سؤالي]

أفضل مقدمات لقد وجدت حتى الآن 10 الفصل "ثابت Metaprogramming في C++" من توليدي البرمجة الأساليب والأدوات والتطبيقات قبل كريستوف Czarnecki و أولريش دبليوEisenecker, ISBN-13:9780201309775;و الفصل 17 ، "Metaprograms" من C++ قوالب:الدليل الكامل ديفيد Vandevoorder و نيكولاي م.Josuttis, ISBN-13:9780201734843.

alt text alt text alt text alt text

تود Veldhuizen وقد تعليمي ممتاز هنا.

موردا جيدا البرمجة C++ في عام الحديث C++ تصميم اندريه Alexandrescu, ISBN-13:9780201704310.هذا الكتاب يمزج القليل من metaprogramming مع قالب آخر التقنيات.بالنسبة metaprogramming على وجه الخصوص ، انظر أقسام 2.1 "تجميع الوقت تأكيدات" ، و 2.4 "رسم الخرائط جزءا لا يتجزأ من الثوابت إلى أنواع" ، و 2.6 من نوع "اختيار" ، 2.7 "الكشف عن تحويل الميراث في تجميع الوقت" 2.9 "NullType و EmptyType"و 2.10 من نوع "الصفات".

أفضل متوسط/متقدم الموارد وجدته هو C++ قالب Metaprogramming ديفيد ابراهامز و ألكسي Gurtovoy, ISBN-13:9780321227256

إذا كنت تفضل كتاب واحد فقط, الحصول على C++ قوالب:الدليل الكامل لأنه هو أيضا نهائي مرجعا قوالب عامة.

نصائح أخرى

اندريه Alexandrescu هو الحديث C++ تصميم الكتاب يغطي الكثير من هذه وغيرها من الحيل سريعة وفعالة الحديثة رمز C++ و هي أساس لوكي المكتبة.

الجدير بالذكر أيضا هو دفعة المكتبات التي بكثافة استخدام هذه التقنيات عادة ما تكون ذات جودة عالية جدا لمعرفة من (على الرغم من أن بعض كثيفة جدا).

الحديث C++ تصميم, كتاب رائع و تصميم نمط الإطار Alexandrescu.كلمة تحذير, بعد قراءة هذا الكتاب توقفت عن C++ و الفكر "ما هيك, أنا يمكن أن مجرد اختيار أفضل لغة الحصول عليه مجانا".

اثنين من الكتب الجيدة التي تتبادر إلى الذهن:

  • الحديث C++ تصميم / اندريه Alexandrescu (هو في الواقع من العمر 7 سنوات على الرغم من الاسم!)
  • C++ قوالب:الدليل الكامل / Vandevoorde & Josuttis

انها تماما في عمق المجال ، لذلك كتاب جيد مثل واحد من هذه هو بالتأكيد الموصى بها على المواقع.بعض من أكثر التقنيات المتقدمة سوف يكون لك دراسة رمز لبعض الوقت لمعرفة كيفية عملها!

الحديث C++ هي واحدة من أفضل المقدمات التي قرأتها.ويغطي الفعلية أمثلة مفيدة من قالب metaprogramming.أيضا أن تأخذ نظرة على رفيق المكتبة لوكي.

لن يكون هناك قائمة كبيرة من الكتب ، قائمة من الناس مع الكثير من الخبرة محدودة.قالب metaprogramming بدأت حقيقي حول أول C++ برمجة القالب حلقة العمل في عام 2000, و العديد من المؤلفين اسمه حتى الآن حضر.(IIRC, اندريه لم.) هؤلاء الرواد أثرت بشكل كبير في هذا المجال ، و أساسا ما ينبغي أن تكون مكتوبة يكتب الآن.شخصيا أود أن المشورة Vandevoorde & Josuttis.Alexandrescu هي صعبة الكتاب إذا كنت جديدا على هذا المجال.

Veldhuizen الأصلي أوراق كانت جيدة.إذا أنت على الكتاب كله, ثم هناك Vandevoorde كتاب "C++ قوالب دليل كامل".وعندما كنت على استعداد للحصول على الماجستير ، في محاولة Alexandrescu الحديث C++ التصميم.

جوجل Alexandrescu الحديثة C++ التصميم:عامة البرمجة و تصميم أنماط تطبيقها

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top