OpenLLM-France/wikimedia huggingface dataset:
# تصميم ألعاب الفيديو/أجزاء اللعبة الأساسية

لنعرف الالعاب برمجياً ،عندما نقوم بتشغيل أي لعبة علي الحاسب مثلاً فاننا نمر بحلقة أو دورة غير منتهية أي " تلف تلف " من الاحداث و التي بدورها تقوم برسم الصور و فعل الاحداث . تقوم الالعاب برسم الصور و فعل الاحداث في معدل معين نحن نفرضه و هو 30 و معني 30 أي انه في كل ثانية نجعل اللعبة ترسم 30 اطار و يسمي هذا المعدل بعدد الاطارات لكل ثانية Frames Per Second (FPS) ، بعض الالعاب الحديثة الآن مبنية علي معدل 60 اطار لكل ثانية . تصورها كانك تخرج فيلم .. فالفيلم يتتابع احداثه و لكن بمعدل "بتغير ". ملحوظة: غالباً كلمة " معدل " تدل علي التغير في الشىء و في موضوعنا هذا " احداث اللعبة تتغير ب 30 اطار لكل ثانية و معدل تغير سرعة السيارة مثلاً في لعبة ثنائية الابعاد يعبر عنه بتفاضل دالة المسافة كما سنري في الفيزياء الميكانيكيه الكلاسيكيه . احداث الالعاب هناك عدة احداث يجب ان تمر بها اللعبة و سوف نسردها الان و أى لعبة في الكون تمر بهذه الاحداث . 1. Initiali(s/z)ation حدث الاعداد . هو الحدث الاول التي يحدث بعد الضغط علي الملف التنفيذي و غالباً يشمل التالي 1.حجز ذاكرة كافية للعبة " غالباً النظام يقوم بعمل هذه العملية " . 2. تحميل ملفات اللعبة ( من الممكن ان يكون في أول اللعبة او في وسطها ) 3. شىء تريده يبداً مثلاً تريد ان تسجل مفتاح في ملفات التسجيل register . 4. كشف إن كانت السى دي موجودة في القرص ام لا .... و هناك العديد من الاحداث نعبر عن حداث الاعداد في السى بالدالة Init; . بعد انتهاء هذا الحدث ندخل علي دالةFunction اخري و هي دالة main . 5 Main loop وهنا ما يأتي مجري الاحداث و التفاعل في اللعبة .. فإن كنت برمجت من قبل علي مترجمات الدوس للسى ، السى ++ فستلاحظ ان مجري عمليات البرنامج يدخل في الدالة main ! و هنا نفس الفكرة موضوعة . 3. Releasing غالباً ليس المصطلح العلمي لها Finish و هو الحدث الذي ينتهي في البرنامج " اللعبة " و لكن المصطلح الصحيح هو Release ; لان في هذا الحدث نقوم "بتحرير" كل الذاكرة التي قمنا بحجزها في بداية البرنامج من مثلا تحميل الملفات ففي هذا الحدث نقوم بقفلها و نقوم مثلاً بتحرير جميع المؤشرات pointers التي قمنا بحجز جزء ذاكرة لديها في بداية البرنامج . ملحوظة المؤشرات pointers هي احدي موضوعات السى ، السى ++ التي لها اهمية خاصة و يجب أن تفهما جيداً لكي تكمل المشوار في برمجة الالعاب .
# تصميم ألعاب الفيديو/حلقة اللعبة الأساسية

الالات محدده الخطوات و الالعاب .
لقد عرفنا في المحاضرات السابقة عدد من الاحداث التي غالباً أي لعبة تمر بها التنقل بين الاحداث هذه له اليه تسمي " ألية الخطوات المعرفه مسبقاً " Finite State Machinery .
هذا النموذج له عدد من الاهميات ، فهو يدرس مثلاً في الرياضيات المجرده Discrete Mathematics في كليات الحاسبات و المعلومات و لكن تطبيقاته عديده ...
علي حد ما استخدمته فيها 1 . الالعاب .. في " التحويل بين الاحداث بين اللعبه " 2. الذكاء الصناعي في " التحويل بين حالات الشخصيات و اساليبهم . 3. الالكترونيات و نظم الاجهزة " استخدمته منذ 5 ايام في التحويل بين حالات الإنسان الالي الروبوت .
لنري كيف علي سبيل المثال نحاكي التحول بين احداث اللعبة فمثلاً تريد اسلوب إخراج مثل هذا 1. قم بتحميل فيديو اللعبة 2. بعد 10 ثوان 3. قم بتحميل صورة لوجو الشركة 4. بعد 30 ثانية 5. قم بالدخول إلي قائمة اللعبة Main Menu 6. إن ضغت علي New_Game 7. إذهب إلي حدث المرحلة الاولي . CODE // A Algorithm For Finite State Machines In Games // States In The Game
* define State_In_Video 0
* define State_In_Logo 1
* define State_In_Menu 2
* define Statet_In_Game 3
int state=State_In_Video;
if (state==State_In_Video) // THAT'S TRUE ! { // then Play the Video play_video("Demo.avi"). Sleep(300); // WAIT SOME SECS state=State_In_Logo; // HEY GO TO LOGO's STATE NOW !!! } else if ( state==State_In_Logo) { draw_my_Logo; ارسم اللوجو حالاً
Sleep(5000) // اظبر بعض الملي ثواني
state=State_In_Menu; // روح علي الحالة اللي بعديها فوراً
else If ( state==State_In_Menu) {
Draw_Buttons; ارسم الزراير // العمليات داخل المنيو في محاضره أخرى }
هذا هو اسلوب اليه التحويل بين احداث اللعبة سوف نقوم بالتطبيق عليه بعد الدخول في الدايركت اكس و علي الأقل نستطع ان نرسم صورة ! .
طبعاً هذا الاسلوب في كتابة الكود للمبتدئين هناك بعض التحسينات له لمن يحب
للمتوسطين :
بدل كتابة الثوابت النصية #defines يمكن استخدام الكلمة enum enum game_state { State_In_Video, State_In_Logo,_State_In_Menu,State_In_Game }; مع العلم أن كلمة المتغيرات المعرفه بداخلها تأخذ ارقام من 0 إلي آخر عدد تلقائياً أي هنا State_In_Video ستكون 0 State_In_Logo هيكون 1 ... الخ
تحسين آخر لدوال If - Else يمكن استخدام الدالة Switch
للمتقدمين
بدل من هذا الكلام يمكن استخدام مكدس Stack يقوم بعمل Push - Pop للاحداث بحيث أن حدث دخل تقوم بعمل Pop له " اي اظهاره " . طبعاً هذا الطريقة احبذها للمتقدمين .
# تصميم ألعاب الفيديو

هنا سيتم وضع الفهرس الرئيسي لكتاب ببرمجة الألعاب الثلاثية الأبعاد :
مقدمة
حول الكتاب
كلمة شكر
بداية عن ألعاب الحاسوب
ما هي الألعاب؟
الألعاب الإستراتيجية Real-Time Strategy
الألعاب الإستراتيجية Turn-Based Strategy
ألعاب الرامي الأول(FPS)أو First-Person Shooters
ألعاب المغامرات Adventure Games
ألعاب الإثارةوالحركة Action Games
ألعاب الألغاز Puzzle Games
الألعاب الرياضية Sports Games
المحاكاة Simulations
الخلاصة
تشريح ألعاب الحاسوب
الغرافيكس
الصوت
دخل المستخدم
أجزاء اللعبة الأساسية
-- التهيئة
-- المقدمة
-- بدء اللعبة
-- حلقة اللعبة الأساسية The Game Loop
-- نهاية اللعبة
-- الإغلاق والخروج
حلقة اللعبة الأساسية The Game Loop
-- معالجة دخل المستخدم
-- معالجة الذكاء الصنعي للعبة (تصرف الشخصيات والبيئة وغيرها)
-- تحديث موقع الأجزاء المختلفة
-- إكتشاف التصادم ومعالجته
-- معالجة المؤثرات الصوتية
-- القيام بتوليد الإطار التالي Render Next Frame
-- اختبار نهاية اللعبة
-- إجراء تأخير زمني
حالات اللعبة
-- العرض التقديمي
-- التشغيل
-- الإيقاف المؤقت
-- إنتهاء اللعبة
الخلاصة
أساسيات برمجة الغرافيكس
عناصر الغرافيكس
-- العنصورة Pixel
-- الخطوط Lines
-- المضلعات Polygons
-- الصور النقطية Bitmaps
أنماط العرض
-- دقة الشاشة Resolution
-- عمق الألوان Color Depth
-- ذاكرة بطاقة الشاشة Video Board Memory
-- عناصر اللون
الخلاصة
دايركت أكس و أوبين جي إل DirectX VS OpenGL
ماهو دايريكت أكس DirectX
ما هو أوبين جيس إل OpenGL
دايركت إكس مقابل أوبين جي إل
محركات الألعاب
دايريكت أكس DirectX
أوبين جي إل OpenGL
تقنيات تحسين الأداء Optimization Techniques
تقنيات الذكاء الصنعي Artificial Intelligence Techniques
-- الحركات العشوائية Random Movement
-- الهجوم والمراوغة Aggression/Evasion
-- آليات الإحتمال Probability Machines
الخلاصة
ملحق
نتائج
نصائح في برمجة الألعاب
المؤلفون
كلمة شكر
# تصوف اسلامي

الصفحة الرئيسية
# تضخم الصدر

تضخم الصدر بعد الولادة

## الخوف من الحالة

خلال يومان إلى ثلاثة بعد الولادة، قد تشعرين بأنّ صدرك متورم، مؤلم، يحوي كتلا، وممتلئ بشكل غير مريح. أحيانا الورم يمدّد طول الطّريق إلى إبطك. قد يصاحب ذلك حمّى منخفضة. لا داعي للقلق، قد يبدو الأمر مخيفا، لا تقلقي، هذه الحالة لا علاقة لها بالأورام الخبيثة. هذه الحالة المؤلمة، مؤقتة.

## ماذا يسبّبه؟

خلال 72 ساعة بعد الولادة، كمية ضخمة من حليب الصدر سوف تصبح متوفرة لغذاء طفلك الرضيع. لتجهيز هذا الحليب، لابد للمزيد من الدم أن يصل إلى صدرك مما يؤدي إلى انتفاخ بعض من النسيج المحيط. النتيجة؟ الصدور الملتهمة المنتفخة الممتلئة. هذه الحالة لا تصادف كلّ أمّ بعد الولادة. بعض صدور النساء تتضخم قليلا، لكن الآخرين يجدون صدورهم نمت بصورة كبيرة وبشدّة. بعض النساء بالكاد تشعر بالألم، بسبب إعياء الولادة الذي يغطي على أحساسهن بالألم.

## كيف أعالجه؟

أولا، تذكّري بأنّ التضخم هو إشارة إيجابية: أنت تنتجين حليب لتغذية طفلك الرضيع، وقريبا، بمساعدة طفلك، سيتعلم صدرك إنتاج الكمية الصحيحة. لكن حتى ذلك الحين:
* تذكري أنك ستجتازين هذه الحالة وتكوني قادرة على التمتّع بعلاقة الرضاعة مع طفلك.
# المفسدون في الأرض/غلاف

رؤية معاصرة للمشاكل البيئية والسكانية
{40} ظَهَرَ الْفَسَادُ فِي الْبَرِّ وَالْبَحْرِ بِمَا كَسَبَتْ أَيْدِي النَّاسِ لِيُذِيقَهُم بَعْضَ الَّذِي عَمِلُوا لَعَلَّهُمْ يَرْجِعُونَ {41}
كتاب المفسدون في الأرض أحمد محمد عوف
# المرونة والدخل

Elasticity of Demand and Elasticity of Supply مرونة الطلب و مرونة العرض
لماذا نرى تخفيضات على أسعار بعض السلع (كالملابس) بينما سلع أخرى لا تشملها التخفيضات؟
إن التغير في سعر السلعة سيؤدي إلى تغير الكمية المطلوبة (و الكمية المعروضة) ، لكن ما هي درجة استجابة الكمية المطلوبة (والكمية المعروضة) للتغير في السعر؟
إن ارتفاع سعر سلعة معينة كالتمر مثلاً لا يعني بالضرورة أن الكمية المعروضة منها ستزداد بنفس نسبة الارتفاع في السعر. لماذا؟
مرونة العرض و مرونة الطلب تساهم في إعطائنا بعض الإجابات على الأسئلة السابقة
أولاً: مرونة الطلب السعرية
مدى استجابة الكمية المطلوبة للتغير في سعر السلعة وذلك عندما يتغير سعر السلعة بنسبة %1
مرونة الطلب السعرية = (النسبة المئوية للتغير في الكمية المطلوبة) \ (النسبة المئوية للتغير النسبي في السعر
أنواع مرونة الطلب
نوع المرونة
طلب مرن Elastic
طلب غير مرن Inelastic
طلب أحادي المرونة
طلب عديم المرونة
طلب لانهائي المرونة
_________________________________________________
- المرونة وميل منحنى الطلب Elasticity and The Slope of The Demand Curve:
ed = {1\(slope)} * {(P) \ (Qd)}
Slope = (ΔP) \ ( ΔQd)
_____________________________________
- علاقة الإيراد الكلي بالمرونة السعرية The Relationship Between Total Revenue and Elasticity:
الإنفاق الكلي = الإيراد الكلي = السعر x الكمية المطلوبة
TE = TR = P. Qd
نوع المرونة
طلب مرن
طلب غير مرن
طلب أحادي المرونة
محددات مرونة الطلب السعرية:
1- وجود بدائل للسلعة. 2- أهمية السلعة في ميزانية المستهلك. 3- السلع الكمالية و الضرورية. 4- المدى الطويل و المدى القصير.
# النسبية العامة/مؤشرات التباين المرافق والتباين المعاكس

الآن بما أننا تَحدثنا عن التينسورات، نَحتاجُ لفَهْم كَيفَية تصنيفهم. أحد أهم خاصيات رتبة التينسور وهي عدد المؤشرات التي نحتاجها لتحديد التينسور . التينسور العادي يكون ذو رتبة 2 ، يمكننا اعتبار الشعاع أو الكمية المتجهة تينسور من الرتبة 1 و الكمية القياسية scalar تينسور من الرتبة 0 .
الخاصية الأخرى للتينسور هي بعد Dimension التينسور و هو عبارة عن قياس كُلّ مؤشر من مؤشرات التينسور.
إنّ الشيءَ المهمَ حول الرتبةِ والبُعدِ أنها ثابتة لامتباينة بالنسبة للتغيرات ضمن النظام الإحداثي. بمعنى أنه يُمْكِنُك أَنْ تُغيّرَ النظامَ الإحداثي كُما تُريدُ، لكن الرتبة والأبعاد للتينسور لا يَتغيّرانِ.
هذا يعْرضُ السؤالَ المهمَ عن كيفية تغيير التينسورات عندما يتُغيّرُ النظامَ الإحداثي. بإمكاننا أن نجد امرا واحدا عندما ننظر لهذا السؤال ألا و هو وجود نوعين من الأشعة vectors في الواقع و ليس نوعا واحدا .
# النسبية العامة

* النسبية العامة: مقدمة
* مقدمة إلى التنسورات
** ما هو التينسور؟
** مؤشرات التباين المرافق والتباين المعاكس
** رمز مجموع اينشتاين
** تعريف أشمل للتنسورات
** الأنظمة الإحداثية والمشتقات
* التينسورات والهندسة
** النسبية العامة:التينسور المتري
** مؤشرات الارتفاع والإنخفاض
** الخطوط الجيوديسية
** الإنحناء
** تينسور ريمان
** الإشتقاق التبايني المرافق
# المونتاج
## المونتاج

المونتاج : هو فن ترتيب المشاهد واللقطات المصورة وتنسيقها ضمن تتابع زمني مدروس ، بحيث تتحول إلى رسالة مترابطة ،جذابة ، محددة المعنى .
فهو بالنهاية وسيلة تعبيرية تعكس رؤية محدده بشكل جذاب ومؤثر.

## وصلات خارجية

موقع لتعليم المونتاج
# برمجة سي

قالب:Featured book
مساهمي ويكي الكتب يقدمون: البرمجة بلغة سي

## قائمة المحتويات

قالب:Reading level
قالب:E-Book Reader PDF version

### المُقدمة

    لماذا تتعلم لغة البرمجة سي؟
    التاريخ
    ما تحتاجه قبل أن تتعلم
    تثبيت المترجم

### Beginning C

    Intro Exercise
    Preliminaries
    Basics of Compilation
    Programming Structure and Style
    Variables
    Simple Input and Output
    Operators and type casting
    Arrays and Strings
    Program Flow Control
    Procedures and Functions
    Standard Libraries
    Exercises

### Intermediate C

    Advanced Data Types
    Pointers and Relationship to Arrays
    Memory Management
    Error Handling
    Stream I/O
    String Manipulation
    Further Math
    Libraries

### Advanced C

    Common Practices
    Preprocessor Directives and Macros
    Sockets and Networking (UNIX)
    Serialization and X-Macros
    Coroutines

### C and Beyond

    Particularities of C
    Low-level I/O
    C Trigraph
    Language Overloading and Extensions
    Combining Languages
    Object Oriented Programming: The GObject System
    Commented Source Code Library

### Computer Science

Some of the following are C adaptations of articles from the Computer programming book.
    Statements
    Side Effects and Sequence Points

### Reference Tables

This section has some tables and lists of C entities.
    Standard Library Reference
    Preprocessor Reference
    Language Reference
      * Table of Keywords
      * Table of Operators
      * Table of Data Types

#### Platform Reference

    POSIX
    GNU C Library
    MS Windows

### Appendices

* C Compilers Reference List
* Index
* Links
* Exercise Solutions

## Related Wikibooks

* A Little C Primer
* GCC Debugging
* GNU C Compiler Internals
# برمجة سي ++/ مقدمة في البرمجة

بسم الله الرحمن الرحيم
تعلم البرمجة يمر بمرحلتين: الأولى تعلم لغة برمجة معينة, ثم تليها تعلم كيفية التفكير كمبرمج, أقصد التفكير في حل المشاكل problem solving. كثير من الناس يركز على الأولى (لغة البرمجة) و يهمل الثانية, أو لا يعطيها القدر الكافي من الاهتمام.
يجب معرفة ان لغة البرمجة ما هي الا وسيلة, و ليست غاية. الغاية هي عمل تطبيقات لحل مشاكل معينة, و هذه الغاية تحتاج إلى وسيلة أخرى بجانب لغة البرمجة: هذه الوسيلة هي العقل! المبرمج يجب أن يتمكن من امتلاك عقلية برمجية تفكر في حل المشاكل.
يخطيء من يظن ان البرمجة هي كتابة بعض الأسطر و استخدام بعض المكتبات و تجميعها لعمل برنامج جديد. المكتبات هي أيضا مجرد وسيلة تبسط حل المشكلة.
هدف هذه السلسلة ليس مجرد تعلم الـ syntax الخاص بلغة الـ ++C, بل هو استخدام خصائص اللغة لحل المشاكل.
# برمجة سي ++/الدرس الثالث

للقراءة يستخدم مجموعة الأوامر التي تقرأ من وسائط الإدخال القياسية، مثلا cin ، ولكن عليك التذكر بأن عند القراءة فأنت تحتاج/ين إلى مكان لتخزين القيمة المقروءة، فمثلا في حال اردت قراءة رقم صحيح يمكنك ان تكتب/ي
الدوال الرياضية لاستخدام الدوال الرياضية يجب تضمين ملف الرياضيات math.h الذي يحتوي الدوال الأساسية لأتمام العمليات والمعادلات الرياضية.
أولاً: الدوال المثلثية
double  acos(double);
double  asin(double);
double  atan(double);
double  cos(double);
double  sin(double);
double  sinh(double);
double  tan(double);
double  tanh(double);
| «الدرس السابق | العودة للصفحة الرئيسية | الدرس التالي» |
# برمجة سي ++/ الدرس الأول

أي برنامج في العالم, عندما يتم ترجمته إلى لغة الآلة, هو مجموعة من الاوامر المتسلسلة بشكل منطقي, و لا بد من نقطة بداية لهذه السلسلة من الأوامر ليبدأ الحاسوب بتنفيذ البرنامج.
في لغة السي و السي بلص بلص, هذه النقطة هي بداية الدالة main :
هناك بعض التفاصيل الغير مهمة في هذه المرحلة , فنحن لا نزال في البداية, ولكن المهم لنا أن أي برنامج نريد كتابته لا بد وأن يحتوي على هذه الدالة (main) ; لأنها تحدد لنا نقطة الدخول في البرنامج , وبإمكاننا اعتبار أن نقطة الدخول هي أول سطر بعد القوس المعقوف } و هو يحدد بداية الدالة main وبالتالي بداية البرنامج.

## ما المقصود بالدالة؟

جرت العادة عند كتابة برامج طويلة الحجم نوعا ما, أن يقسم البرنامج إلى عدة أجزاء صغيرة , يمكن اعتبار كل جزء منها "بريمج" صغير, ينفذ اوامر معينة , فبذلك تسهل عملية البرمجة ، ولحفظ الكثير من الجهد الغير لازم ، وتوفير كتابة أسطر لا حصر لها. عادة هذه البريمجات تسمي functions أو procedures أو subroutines حسب اللغة المستخدمة , في السي و السي بلص بلص فإنها تسمى functions , وعند ترجمتها إلى العربية أصبحت "دالة", رغم انها حسب رأيي لا تعبر عن المعنى الصحيح ، لها معناً آخر بالعربية يُطلق في بعض الأحيان : "تابع".
بهذا المفهوم, فإن البرنامج نفسه ككل, ما هو إلا دالة كبيرة, لذلك فالبرنامج يبدأ عند بداية الـmain و ينتهي عند نهايتها.

## التعليق

بالنسبة للسطر
فهو ليس سوى تعليق comment يتم اهماله عند ترجمة البرنامج, حيث أن أي سطر يبدأ بخطين مائلين // يعتبر تعليقا و هو طريقة مناسبة لكتابة أي شيء داخل البرنامج مثل شرح عن كيفية عمل جزء معين من البرنامج وما إلى ذلك.
فالحد الأدنى لأي برنامج هو هذه الأسطر:
و هذا في الحقيقة هو برنامج صالح للترجمة و التنفيذ, و هو ببساطة لا يفعل شيئا, مجرد برنامج فارغ.

## المكتبات

المكتبات هي مجموعات من دوال سي بلص بلص مجمعة معا في ملفات يمكن استخدامها في برامجك، وتتنوع تلك الدوال في أهدافها، ويندر أن يخلو أي برنامج سي بلص بلص من المكتبات مهما كان بسيطا.

### المكتبات القياسية

| - | العودة للصفحة الرئيسية | الدرس التالي» |
# برمجة سي/التاريخ

بدأ مجال الحوسبة كما نعرفه اليوم في عام 1947 مع ثلاثة علماء في مختبرات بيل للهاتف - ويليام شوكلي ووالتر براتين وجون باردين - واختراعهم الرائد، الترانزستور وذلك في عام 1956، تم الانتهاء من تطوير أول كمبيوتر يعمل بالترانزستور بالكامل والمُسمي تي اكس-0، في معهد ماساتشوستس للتكنولوجيا. تم إنشاء أول دارة متكاملة في عام 1958 بواسطة جاك كيلبي في شركة تكساس إنسترومنتس، ولكن من ناحية أخرى تواجدت أول لغة برمجة عالية المستوى قبل ذلك.
تم تطوير مشروع فورتران أو "نظام آي بي إم لترجمة الصيغ الرياضية" في عام 1954 بواسطة شركة آي بي إم. ((بالإنجليزية: The IBM Mathematical Formula Translating System) = Fortran)، كان الغرض من المشروع هو إنشاء وتبني تطوير لغة برمجة إجرائية إلزامية مناسبة بشكل خاص للحسابات الرقمية والحوسبة العلمية. كانت فورتران طفرة من حيث الإنتاجية وسهولة البرمجة (مقارنة بلغة المُجمع) والسرعة (كانت برامج فورتران تعمل بسرعة تقارب، وفي بعض الحالات، بنفس سرعة البرامج المكتوبة في لغة المُجمع). علاوة على ذلك، تمت كتابة لغة فورتران بمستوى عالٍ بدرجة كافية (وبالتالي كانت مستقلة عن الآلة بدرجة كافية) لتصبح أول لغة برمجة مُعتمدة على نطاق واسع. تم اشتقاق اللغة الخوارزمية (خوارزم 58) من لغة فورتران في عام 1958 وتطورت إلى خوارزم 60 في عام 1960. ثم تم إنشاء لغة البرمجة المدمجة (سي بي إل) من خوارزم 60 في عام 1963. وفي عام 1967، تطورت إلى لغة البرمجة الأساسية المختلطة (بي سي بي إل) ، والتي كانت الأساس للغة البرمجة بي والذي تم تدشينها في عام 1971، حيث كانت بمثابة الأساس للغة سي.
تم إنشاء اللغة بي بواسطة كين تومسن في مختبرات بيل، وكان الإصدار بي عبارة عن نسخة مُجردة من بي سي بي إل والتي كانت أيضًا لغة مُجمعة (انظر الدليل للغة بي) أستخدمت في الإصدارات الداخلية المبكرة من نظام التشغيل يونكس. كما أشار دينيس ريتشي في تطويره للغة سي:
   لم يقم مترجم اللغة بي على بي دي بي-7 بإنشاء أية أكواد الآلة، ولكن بدلاً من ذلك يقوم بإنشاء "أكواد مترابطة"، وهي مخطط توضيحي تتكون فيه مُخرجات المترجم من سلسلة من عناوين أجزاء التعليمات البرمجية التي تؤدي العمليات الأولية. تعمل العمليات عادةً - خاصة بالنسبة للغة بي - على آلة مكدس بسيطة.
قام طومسون وريتشي بتحسين اللغة بي، وأسموا النتيجة "أن بي". الإمتدادات الأخرى المُضافة لـ "أن بي" أنشئت خلف اللغة بي المنطقي اللغة سي. تمت إعادة كتابة معظم نظام يونكس في "أن بي" ثم اللغة سي لاحقًا، مما أدى إلى نظام تشغيل أكثر قابلية للنقل. كانت قابلية نقل يونكس هي السبب الرئيسي للشهرة الأولية لكل من نظام التشغيل يونكس واللغة سي. بدلاً من إنشاء نظام تشغيل جديد لكل جهاز جديد، يمكن لمبرمجي النظام ببساطة كتابة الأجزاء القليلة المعتمدة على النظام المطلوبة للجهاز، ثم كتابة مترجم للغة سي للنظام الجديد، ونظرًا لأن معظم أدوات النظام تمت كتابتها في سي، فمن المنطقي أيضًا كتابة أية أدوات جديدة في نفس اللغة سي.
بدأ المعهد القومي الأمريكي للمعايير العمل على توحيد معايير اللغة سي في عام 1983، وأكمل عمله في عام 1989. كان المعيار المُسمي "ANSI X3.159-1989 - لغة البرمجة سي" ، بمثابة الأساس لجميع مترجمات اللغة سي. تم تحديث المعايير لاحقًا في عامي 1990 و1999، مما سمح بالميزات التي كانت إما شائعة الاستخدام أو كانت تظهر في اللغة سي++.
# النسبية العامة/ما هو التينسور؟

للمزيد من التفاصيل طالع مقالة ويكيبيديا: تينسور.
التينسور كيان مُجرّد بشدة. وهذا التجريد هو ما يَجْعلُه شيء صعب جداً للوَصْف، مع هذا يُمْكِنُنا أَنْ نَبْدأَ بتلمس ملامح التينسور tensor من خلال مثال غير تجريدي .
إذا افترضنا أنك تبحر وإنّ الريحَ تَأتي مِنْ إتّجاه معين ويُمْكِنُ أَنْ تُوْصَفَ ك شعاع ، أو كمية اتجاهية. الآن هناك عدّة أشكال لتَمْثيل هذا الشعاع. على سبيل المثال، يُمْكِنُك أَنْ تُمثّلَه كسرعة ذات إتّجاه معيّن. بدلاً عن ذلك، أنت يُمْكِنُ أَنْ تُحلله إلى المركبات الأساسية له وتَصِفُ الموجهَ كمجموعة مقادير معينة من الريحِ الشرقيةِ والأخرى جنوبية. لكن على الرغم مِنْ الطرقِ المختلفةِ لوَصْف هذا الشعاع (السرعة) ، ما زالَ هناك هذا الشيءِ المُجرّدِ المبطن—سرعة الريح في إتّجاه معيّن .
الآن هناك موجه مهم آخر—القوة التي تُنتجُها الريحَ عندما تَضْربُ الشراعَ. إذا كَانَ إتّجاهِ القوةِ دائماً و تماماً موافقا لإتّجاه الريحِ، يُمْكِنُنا أَنْ نُمثّلَ العلاقةَ بشكل قياسي وذلك بضرب سعاع الريحَ بعامل ثابت للحُصُول على شعاع القوةَ.
على أية حال، الحياة لَيستْ بتلك السهولة التي نفترضها لأن القوةَ لَيستْ دائماً في إتّجاهِ الريحِ. و غالبا ما تكوت الحالة كذلك . لذا لا يمكننا تَمْثيل العلاقةِ بين الريحِ والقوةِ بواسطة عامل تناسب (قياسي) scalar بسيط. لكن, هناك حقيقة مفيدة مهمة واحدة يُمْكِنُنا أَنْ نَستعملَها—العلاقة بين سرعةِ الريحَ والقوةَ على الشراعِ خطيّة . لذلك، إذا تُضاعفت سرعةَ الريحِ، تُضاعفت القوة. الحقيقة بأنّ هذه العلاقة الخطيّة تمكننا من صياغتها بشكل مصفوفة :
$T={\begin{pmatrix}x&y\\z&v\end{pmatrix}}$
لاحظ انه كما يمكنك تغيير طريقة تمثيل و وصف سرعة الريح و القوة التي تنتجها يمكنك تغيير طريقة تمثيل المصفوفة المرتبطة بهذين المقدارين .
في الحقيقة، حينما تُغيّرُ تمثيلات الريحِ والقوى ، عليك مباشرة أَنْ تُغيّرَ تمثيل المصفوفةَ لكي تَتحدّثَ عن نفس الحالةِ . على أية حال، كما أن الشعاع شيءُ مُجرّدُ يُمْكِنُ أَنْ يُمثّلَ الريحَ أَو القوةَ الذي تُنتجُها الريحَ عندما تَضْربُ الشراعَ، فهناك نوع آخر مِنْ الكيانات المُجرّدِة يُمْكِنك أَنْ تَستعملَها لتَمْثيل العلاقةِ بين هذه الأشياءِ. بشكل رمزي يمكن كتابة :
$F=T*w$
الرمز في المنتصفِ، T ، هو مثالُ عن التينسور. و هو شيء مُجرّد جداً، لَكنَّنا الآن يُمْكِنُ أَنْ نَبْدأَ برُؤية قوَّةِ هذا التجريدِ. أولاً يُمْكِنُك أَنْ تصيغ علاقات جبرية باستخدام التينسورات tensors. لذا، إذا كان لديك بدلاً مِنْ شراعِ واحد T ، شراعان T و U . يُمْكِنُنا أَنْ نُمثّلَ القوةَ الكليّةَ :
$F=T*w+U*w$
بما أن مصفوفتين و كلاهما خطيتين يمكننا جمعهما لإنتاج تينسور جديد V :
$F=(T+U)*w$
$F=V*w$ حيث $V=T+U$
يمكننا أيضا ضرب تينسورين مع بعضهما البعض.
لقد حددنا الآن القوة التي تؤثر بها الريح على السفينة لكن ماذا بشأن القوة التي تؤثر بها السفينة على الماء :
$F_{ocean}=W*F_{wind}$
$F_{ocean}=W*V*w$
$F_{ocean}=X*w$
حيث التينسور
$X=W*V=W*(T+U)$
يمثل السفينة و الشراع.
# النسبية العامة/مقدمة

النسبية العامّة امتدادُ لفكرةِ النسبيةِ الخاصّةِ من أجل معالجة الجاذبيةَ. صحيح أن الرياضيات ضمن النسبيةَ العامّةَ يُمْكِنُها ان تخيف المرء،لكن الفكرة الأساسية وراء النسبيةَ العامّةَ بسيطةُ جداً. النسبية العامّة جوهرياً تَربط المادة-طاقة مع الهندسةِ.
في الفضاءِ الثلاثي الأبعادِ العاديِ، تكون صيغة المسافةِ في النظام الديكارتيِ
$ds^{2}=dx^{2}+dy^{2}+dz^{2}$
الآن يُمْكِنُ أَنْ يُغيّرَ الأنظمةَ الإحداثية وفق الحاجات. يمكن لنا تَدُويرُ النظامَ المنسّقَ أَو تمديده أَو تقليصه ، عندئذ فإن القِيَم x ، y، وz قَدْ تتغيّرُ، لكن المسافاتَ لَنْ تتغير بين أي نقطتين من الفراغ. يمكن لنا أيضا احداث تغيرات أكثر جذرية كما في الإحداثيات القطبية :
$ds^{2}=dr^{2}+r^{2}\sin ^{2}{\phi }d\theta ^{2}+r^{2}d\phi ^{2}$
تعلمنا في النسبية الخاصة ان الفيزياء تتعلق بلامتباين آخر :
$ds^{2}=-c^{2}dt^{2}+dx^{2}+dy^{2}+dz^{2}$
هنا أيضا ، نحن أحرار لتَغيير الإحداثيات x ، y, z، و أيضا الإحداثي الزمني t إلى أيّ شئِ نُريدُ، لكن الهندسةَ والمسافاتَ البينية لا تتغيّرانِ.
إنّ الخطوة القادمةَ هي أَنْ ندْمجَ الجاذبيةَ مع هذه الصورةِ. في حين ان التفاصيل الرياضية يُمكنُ أَنْ تَكُونَ معقّدةَ، فإن الفكرة الأساسية بأنّ تأثيراتِ الجاذبيةِ مكافئة إلى مراقبِ متسارع.
مِنْ مبدأِ التكافؤ هذا ، استطاع اينشتاين أن يرى أن ما تفعله المادة ليس سوى تغيير القواعد بالنسبة للمسافات ، فالعلاقة التي في العلى صحيحة فقط عندما لا تكون هناك مادة ، أما عندما توجد المادة فإن قواعد المسافات تتغير ، و هذا التغير هو ما ينتج لنا تأثيرات الثقالة أو الجاذبية الأرضية كما نعرفها .
هذه الصورةِ مِنْ الجاذبيةِ بسيطةُ ورائعةُ بقوة. على أية حال، هناك مشكلة واحدة مَعها؛ لكي تتمكن من استخدامها ، عليك تعلم مجموعة من المصطلحات و الأساليب الرياضية التي لايمكن وصفها بالسهلة .
# رفوف ويكي الكتب/الأقسام

* أقسام رفوف ويكي الكتب
* هذه قائمة بالأقسام، والتي تم تقسيمها إلى أرفف حيث يمكنك العثور على الكتب عليها. أقسامنا الاثنى عشر هي: الحوسبة، والهندسة، والمساعدة، والعلوم الإنسانية، واللغات، والرياضيات، وأشياء متنوعة، والأنشطة الترفيهية، والعلوم والعلوم الاجتماعية، المناهج القياسية، ويكي الأطفال. يوجد أيضًا قسم للمطبوخات.
* تحتوي معظم الأقسام على رفوف عالية المستوى معروضة بالأسفل حيث تكون مرجعًا عامًا، ثم تُعرض الأرفف ذات المستوى الأعلى المُحددة تحتها. يمكنك استكشاف الأرفف كما تشاء!
* الحوسبة
* رف:الحوسبة (مرجع عام)
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:الحوسبةتصنيف:كتاب:رفوف ويكي الكتب/رفوف/عام
* الهندسة
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:الهندسة
* المساعدة
* قسم:مساعدةتصنيف:قسم:مساعدة
* العلوم الإنسانية
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:العلوم الإنسانية
* اللغات
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:اللغات
* الرياضيات
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:الرياضيات
* متفرقات
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:متفرقات
* الأنشطة الترفيهية
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:الأنشطة الترفيهية
* العلوم
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:العلوم
* العلوم الاجتماعية
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:العلوم الاجتماعية
* المناهج القياسية
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:المناهج القياسية
* ويكي الأطفال
* خطأ: ينبغي أن تضمن تصنيفا واحدا على الأقل، أو تحدد نطاقا!تصنيف:قسم:ويكي الأطفال