Modern technology gives us many things.

كيف تطورت لغات البرمجة من الصفر

0

جمعنا لكم اهم ماورد حول بدايات البرمجة لمن يريد الصعود درجة درجة، ولعل البدء من المفاهيم الاولى أجدر بتعلمها بعمق.

 

مقدمة حول تاريخ لغات البرمجة PDF طباعة أرسل لصديقك
ظهر في النصف الثاني من القرن العشرين العديد من لغات البرمجة. • في البداية كان على المبرمجين كتابة برامجهم بلغة معقدة وصعبة هي لغة الآلة (Machine Language),و هي لغة مرمزة بالخانات الثنائية (0,1) يمكن للحاسوب فهمها و برمجتها دون اللجوء إلى أية عملية تحويل أو ترجمة(Compilation)أو تفسير (Interpretation).

• تمثل الخانات الثنائية فيها رموز العمليات و مواقع الذاكرة وقيم المتحولات , ولكن من العسير جداً كتابة البرامج فيها .

• ظهر بعد ذلك لغات التجميع(Assembly Languages)
التي سمحت للمبرمج بالتعبير عن العمليات برموز محرفية
مثال : ADD للتعبير عن الجمع و SUB للتعبير عن الطرح.

• و على الرغم أن البرمجة بلغات التجميع أبسط بكثير من البرمجة بلغة الآلة إلا أنها بقيت بعيدة عن اللغات الطبيعية
التي يسهل على الإنسان التعامل معها على نحو أفضل , كما أن
كل لغة تجميع ترتبط ارتباطاً وثيقاً بنوع المعالج الصغري (Microprocessor)الذي يميز العتاد المادي لأي حاسوب .

• إذاً هكذا ظهرت لغات البرمجة عالية المستوى (لغات الجيل الثالث) الأقرب إلى اللغات الطبيعية المحكية و المستقلة عن العتاد المادي للحاسوب .

• و بالمناسبة كانت أولى هذه اللغات لغة (FORTRAN)
التي ظهرت في عام 1956 و كانت موجهة نحو البرمجة العلمية و الرياضية , و ما زال العديد من البرامج الرياضية مكتوبة بها حتى الآن , لكنها كانت صعبة الإستخدام في المجالات الأخرى كالبرمجة الإدارية , لذلك ظهرت لغة (COBOL) في عام 1960 وكانت كلماتها و قواعدها قريبة من اللغة الإنكليزية و مناسبة جداً للتطبيقات الإدارية , و لقد استخدمت استخداماً واسعاً
و قد ُمثل التاريخ فيها بخانتين فقط , و كان ذلك من أهم أسباب مشكلة العام 2000.

• و نتيجة لعدة أسباب ذكرت أهمها أعلاه ظهرت لغة
(BASIC)و انتشرت انتشاراً واسعاً في المدارس والمعامل و المنازل و العديد من المجالات بسبب بساطتها الشديدة و سهولة تعلمها .

• و في فترة السبعينات ظهرت لغة (C) الشهيرة ذات المرونة الكبيرة و التي تتركز تطبيقاتها في برمجة نظم التشغيل (Operating Systems) و المترجمات (Compilers) و برمجيات التحكم بالمنظومات الصناعية , بسبب كونها لغة عالية المستوى تتضمن فاعلية لغة التجميع .

• كما ظهرت لغة (PASCAL) التي اشتهرت بكونها لغة تعليمية مهيكلة دقيقة التنميط .

• كما تميزت فترة الثمانينيات بظهور لغات برمجة الموجهة الكائنية المنحى و اللغات الكتلية التي عكست مفاهيم هندسة البرمجيات(Software Engineering) .[/color]

• كانت البداية الفعلية للغات البرمجة الكائنية المنحى مع لغة

(Small Talk 80) , و ترسخت أكثر مع لغة (ADA) ثم حققت انتشارها الواسع مع لغة (C++) التي دعمت لغة (C) الواسعة الإنتشار أصلاً بمفاهيم البرمجة كائنية المنحى .

• شهدت حقبة التسعينات تطورين بارزين هما :
1-الوسائط المتعددة و الفائقة .
2-شبكة الإنترنت العالمية .

وقد انعكس ذلك على تطور لغات البرمجة , لذلك ظهرت لغات البرمجة المرئية و هي لغات موجودة أصلاً لكنها طعمت بمزايا التعامل مع الواجهات الرسومية و بالإستجابة إلى الأحداث التي يقوم بها المستخدم مثل لغة –(DELPHI) و لغات أخرى كثيرة

• و لعل أهم ما يميز هذه الحقبة هو ظهور لغة (JAVA) التي تحوي دعماً خاصاً لكي تنفذ من خلال الويب و هي لغة كائنية المنحى تشبه كثيراً لغة C++) (لكنها لا تقبل تعليمات هذه اللغة .

أسس البرمجة :

لم اتعود في حياتي تعلم شئ لا ادري او لا اعرف كيف سأستفيد منه و لفهم البرمجة و لغات البرمجة علينا ان نفهم حقيقة ما الفائدة منها و لماذا وجدت و كيف يستطيع المرء الاستفادة منها .
في بداية الحديث اريد ان أضرب مثالا بسيطا و هو السيارة فإن اردنا ان نعرف في ماذا تستخدم لعرفنا أنها وسيلة نقل و إن فكرت اختراعها جاءت تقليدا للحيوانات الأليفة كالحصان و كيف يمكن للمرء الاستفادة منها بكل بساطة من خلال التنقل بسرعة كبيرة و توفير الجهد .
و هنا لابد لي ان اقول لك بان جهاز الكمبيوتر او الحاسب جاء تقليدا للدماغ البشري من حيث الفكرة و لغات البرمجة جاءت تقليدا للثقافة و الشخصية و المعرفة لذلك الانسان أي ان لكل شخص هويته و جنسيته و ثقافته و معرفته الخاصة التي تعلمها خلال حياته و بالتالي له منطقه و موقفه الخاص من أي قضية قد تواجهه و هذا الموقف جاء من مجموع تلك المعارف و المبادئ التي تعلمها خلال مسيرة حياته و هنا يجب ان نفهم بان البرنامج ليس سوى تقليد لكائن له خصائص و مواصفات و سلوكيات و هذا ما ندعوه في علوم الكمبيوتر بالبرمجة غرضية التوجه او البرمجة الكائنية (Object Oriented programming ) أي اننا نقوم ببرمجة كائن له خصائص ( Properties ) و له بيانات ( Data ) و له سلوكيات و نهج و هو ما ندعوه ( Methods ) .
و سأضرب لكم مثالا آخر شائع في بيئتنا و هو سيارة (كيا ريو) ان لهذه السيارة مجموعة من الخصائص مثل حدود السرعة و سعة خزان الوقود و لها نهج مثل (شراء سيارة جديدة – الاقلاع – التوقف )
و لكي يستطيع المرء ان يكون مبرمجا محترفا لابد ان يراعي اهم صفة بالبرمجة و هي التحليل و المنطق السليم أي يجب ان يحدد غرض و هدف الرنامج ثم ان يقوم و بأسلوب منطقي بوضع خصائص و نهج لذلك البرنامج و كل ما سبق ذكره مشترك بين جميع لغات البرمجة .
لكن و بصراحة لا اخفيكم يا اخواني فإن تعلمك للبرمجة دون تعلم اللغة الانكليزية في النهاية يؤدي الى نتيجة تساوي الصفر و السبب بسيط و واضح ليس لان البرمجة و كما يظن البعض تكتب باللغة الانكليزية فقط بل لأنك و بعد تعلم الاساسيات سوف ترغب في الكتابة من تلقاء نفسك و سوف يبداء عقلك بالعمل و هنا تكمن المشكلة لانك لن تستطيع كتابة أي برنامج و لحتى أصغرها الا و طوال الوقت تستعين بمراجع و تحاول البحث عبر الانترنت عن الطريقة المناسبة لتنفيذ ما تفكر به , لذا لابد لك من القراءة باللغة الانكليزية على الاقل حتى تتمكن من الوصول الى مراحل احترافية و مراحل انتاج حقيقي قد تجد الكثير من المواقع العربية التي تحاول جاهدة وضع دورات تدريبية لتعليم لغات البرمجة لمختلف الانظمة لكن يا اخي اسمح لي بأن أخبرك ان كل ما يحتويه أي موقع قد يعجبك منها موجود في كتاب واحد فقط من الكتب الانكليزية التي تعالج الموضوع و الاكثر امتاعا أن لكل مجال من مجالات البرمجة تجد كتابا خاصا به ( برمجة الشبكات – الوب – تطبيقات سطح المكتب – الالعاب ) لذا لابد لك اخي القارئ من تطوير مهاراتك في اللغة الانكليزية و طبعا لا اعني بذلك ( الدروس الخصوصي ) انما ان تتعب نفسك كثيرا في محاولة ترجمة الصفحات و قراءتها و ذلك لن يعود عليك بالنفع و الفائدة فقط على مجال واحد كالبرمجة و انما سوف يثري حياتك لانك سوف ترى العالم من منظار جديد و من خلال لغة اخرى و سوف تستمتع بقدرتك على قراءة المؤلفات الانكليزية و التعاطي مع المنتديات التي تتحدث اللغة الانكليزية و في النهاية لا غنى لنا عن القراءة فهي الوسيلة الوحيدة للتحصيل المعرفي و من يخبرك بان هناك ما يسمى بالوسائط المتعددة كالفيديو و الصوت فكله كلام في الغالب لا قيمة له الا ان كانت المادة المدروسة تخص إحدى تلك الوسائط المتعددة .

اللغات مفتوحة المصدر :

و هي اللغات التي يتم فيها ترجمة النص او الكود البرمجي اثناء التنفيذ و يمكن لاي شخص الاطلاع عليها او التعديل فيها .
مثال عن اللغات مفتوحة المصدر مقتبس من الموسوعة الحرة
http://ar.wikipedia.org/wiki/%D8%A8%D8%A7%D9%8A%D8%AB%D9%88%D9%86

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

نشأت بايثون في مركز CWI (مركز العلوم والحاسب الآلي) بأمستردام على يد جويدو فان رُزوم في أواخر الثمانينات من القرن المنصرم، وكان أول إعلان عنها في عام 1991. تم كتابة نواة اللغة بلغة C. أطلق فان رُزوم اسم “بايثون” على لغته تعبيرًا عن إعجابه بفِرقَة مسرحية هزلية شهيرة من بريطانيا، كانت تطلق على نفسها اسم مونتي بايثون (بالإنجليزية: Monty Python‏).

تتميز بايثون بمجتمعها النشط، كما أن لها الكثير من المكتبات البرمجية ذات الأغراض الخاصة والتي برمجها أشخاص من مجتمع هذه اللغة، مثلاً مكتبة PyGame التي توفر مجموعه من الوظائف من أجل برمجة الألعاب. ويمكن لبايثون التعامل مع العديد من أنواع قواعد البيانات مثل MySQL وغيره”

اللغات المغلقة المصدر :

و هي اللغات التي يتم ترجمة النص او الكود البرمجي فيها بعد الانتهاء من كتابة الكود و لا يعود المبرمج او أي شخص آخر قادرا على رؤية النص البرمجي و مثالي عليها Visual Basic مقتبس من الموسوعة الحرة :
http://ar.wikipedia.org/wiki/%D9%81%D9%8A%D8%AC%D9%88%D8%A7%D9%84_%D8%A8%D9%8A%D8%B3%D9%83

“هي بيئة تطوير ولغة برمجة من مايكروسوفت تستند إلى لغة البيسك الشهيرة. وهي تصنف ضمن لغات البرمجة الشيئية. منذ أن بدأت مايكروسوفت في اصدار الفيجوال بيسك وهي تلاقى نجاحا باهرا وشعبية لا بأس بها بين المبرمجين نظرا لسهولتها الشديدة في مقابل التعقيد الشديد الذي يواجهه أى مبرمج يسعى لبرمجة ويندوز باستخدام السي أو السي++. عموما تناسب الفيجوال بيسك تطبيقات قواعد بيانات والتطبيقات المخصصة للشركات الصغيرة وبرامج الحسابات وهي مريحة وسهلة وتؤدى الغرض بالإضافة إلى أنها تسمح للمبرمج بالتركيز على حل المشكلة فغالباً ما لا يواجه صعوبات فنية أثناء كتابة برنامج بالفيجوال بيسك. و لكن بقى أن نذكر أن برامج الفيجوال بيسك لا تتم ترجمتها كاملة إلى لغة الآلة مثل السي++ أو الدلفي وإنما تترجم إلى كود وسطى يتصل مع مكتبة ربط تسمى ب”Run Time library” واسمها MSVBM??.dll مع استبدال علامات الاستفهام برقم الإصدار.

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

بيئة الدوت نت التي طرحت في السوق عام 2001 :

لقد قررت الشركة المعروفة Microsoft  و بعد طول انتظار من المبرمجين ان تقوم بتلك النقلة النوعية في عالم الحاسب و برمجيات وندوز فقد أطلقت بيئة عمل متكاملة و قد كانت تضم في بدايتها ثلاثة لغات فقط و هي ( c# ,c++,vb.net) و قد انضمت لها حديثا لغة رابعة و هي j#  و قد كان الهدف من انشاء هذه البيئة البرمجية المتكاملة هو امكانية عمل عدد كبير من المبرمجين معا و ضمن نفس المشاريع حتى لو كان هؤلاء المبرمجين يتقنون لغات مختلفة و قد حققت Microsoft ذلك من خلال وضع نظام Assembly  مشترك و موحد بين تلك اللغات المختلفة و قد صممت برنامجا ساهم في تحقيق تلك النقلة و يدعى Net Framework و كان الهدف الرئيس من هذا البرنامج هو قدرته على ترجمة الكود البرمجي لكل لغة على حدا إلى كود وسطي موحد و من ثم الى لغة الآلة (Assembly ) الاسمبلي المشترك ( و فقط للتوضيح فإن الاسمبلي لا تمثل لغة الآلة بشكل مباشر و انما تدعى بلغة التجميع و هي اللغة المتعارف عليها الآن للتعامل مع الآلات بدلا من الطرق القديمة التي نحمد الله انه تم التخلص منها و هي استخدام 10101000111 كما هو معلوم لدى الجميع ) و بعد ان يتم اخرج البرنامج اما على شكل مكاتب مغلقة المصدر (.dll) و هي اختصار ل المصطلح (Dynamic link library)
او اخراجه عن طريق برنامج تنفيذي مباشر (.exe)  و في كلا الحالتين و باي لغة من لغات ال .Net كتبت البرنامج فإن البرنامج سيبقى قابلا للاستخدام عن طريق ربطه كمكتبة Reference  و الى أي لغة من اللغات التي تجيدها و هنا كانت النقلة النوعية الحقيقة التي أدت إلى التطور البرمجي الملحوظ على أنظمت Microsoft و على برمجياتها بشكل عام .

ما اللغة التي يجب علي أن أتعلمها و لماذا ؟

كما رأينا سابقا فإن لغات البرمجة عديدة و حتى يصعب إحصاؤها لذا لابد للراغب في التعلم ان يعلم ما الذي يجب ان يتعلمه و لماذا و هنا اريد ان انصح كل من يرغب في التعلم بأن لغات البرمجة كما سبق و ذكرت تصنف إلى نوعين رئيسيين و هما المفتوحة المصدر و هي مصممة للبرمجة على انظمة لينوكس بشكل رايس و لغات مغلقة المصدر و هي مصممة للبرمجة على أنظمة ويندوز لذا فإن اختيارك يتوقف على أي من النظامين تفضل فإن اخترت الاول أنصحك بالبايثون لسهولتها و سهولة التعامل معها و لانها تعتبر من اللغات التفسيرية هذا عدا عن انها محمولة أي بإمكانك ان تبرمج على المفكرة لو احببت و ان أحببت الوندوز فأنصحك بإحدى اللغتين  vb.net او c# و للمبتدئين انصح بالاولى و للذين سبق و أن تعلموا لغات برمجية أفضل الثانية لأنها أقوى و أسرع  و أقرب إلى C التي صممت عليها 99% من أنظمة التشغيل المعروفة و لا أنصح نهائيا بال c++  لأنه و كما يظهر من كل اصدارت ال .NET ان Microsoft قد خفضت اهتمامها بتلك اللغة أي ربما لن تجد الدعم الكافي لها بعد فترة زمنية على عكس c#  حديثة العهد التي لن تتوقف Microsoft عن دعمها على الأقل لعشر سنوات و كما قلت فهي قريبة للغات الاخرى مثل C أي في حال أردت تعلم أي لغة أخرى و على سبيل المثال JavaScript و هي لغة مصممة لإضافة المؤثرات على مواقع الواب فستجد بأنها شبيهة جدا بال c# .

ما الفائدة من تعلم لغات البرمجة ؟

ان الفائدة المرجوة من تعلم لغات البرمجة هي ذاتها الفائدة المرجوة من اقتناء جهاز الحاسب لانك لن تستطيع يوما فهم ما يدور في حاسبك و لن تستطيع ان تفهم سبب الاخطاء التي تظهر لك او ماهيتها الا من خلال تعلم لغات البرمجة هذا من جهة و من جهة اخرى يا صديقي ان لغات البرمجة اصبحت من لغات العصر تماما مثل اللغة الانكليزية أي بإمكانك الافادة المادية منها من خلال القيام بمشروعات فردية صغيرة مثل برامج المحاسبة او من خلال القيام بمشروعات جماعية كبيرة مثل برامج التصميم و ادراة الشبكات او حتى انشاء مواقع الانترنت و ان البرمجة على صعوبتها الظاهرة فهي سهلة للغاية لاني و كما قلت فإنها تحاكي المنطق البشري و لم تنشئ من فراغ فهي تحول النصوص التي يفهمها البشر الى 101000101 التي يفهماها الحاسب و قد يستهجن البعض استخدامي لكلمة حاسب بدلا من كلمة كمبيوتر او pc و هنا أريد ان اوضح بان من يفهم لغات البرمجة يدرك و بكل سهولة بان الكمبيوتر لا يدرك سوى الارقام الثنائية و كل ما تراه امامك من صور ليست سوى عمليات حسابية تتحول من خلال آلاف العلاقات التي لست مضطرا لكتابتها جميعا ان اردت ان تكون مبرمجا الى صور و فيديو و مواقع انترنت و غيرها لذا فالاسم الصحيح هو الحاسب و ليس الكمبيوتر .

لغات البرمجة العربية :

ان المقصود بلغات البرمجة العربية أي اللغات التي تستخدم اللغة العربية في كتابة نصوصها البرمجية و للأسف ليس هناك سوى لغة واحدة و هي لغة الجيم من تصميم الدكتور عمار سلكه و هي لغة رائعة و كما يقول الدكتور عمار في موقعه تحتوي على جل المميزات الهامة للغات رفيعة المستوى (جزاه الله خيرا)
لمزيد من الاطلاع على لغة الجيم
http://www.jeemlang.com/

النظام العشري و الثنائي و التحويل بينهم شرح مهم ( التحويل بين نظام العد البشري و نظام الآلة )    :

في بداية مشوارنا , من المهم ان نفهم ماهو النظام العشري Decimal system و النظام الثنائي Binary system و حتى النظام الست عشري Hexadecimal system.

النظام العشري

نستخدم النظام هذا يوميا في حياتنا و في اغلب امورنا و هو بكل بساطة نظام الارقام على الاساس العشري و يحتوي على :
0 1 2 3 4 5 6 7 8 9
عدد مكونات النظام العشري هو عشرة ارقام , و هذا هو سبب تسميته بهذا الاسم حيث انه يكبر بعد كل عشرة ارقام, مثل بسيط هو التالي:
0 1 2 3 4 5 6 7 8 9 10 11
لاحظتم الاختلاف بين ال9 و ال10 , حيث انه عندما انتهينا من الارقام ( اخر رقم هو 9) رجعنا للرقم الاول و هو صفر و اضفنا واحد بجواره, و لو واصلنا العد لوصلنا الى ال19 و ثم نرجع الرقم 9 الى صفر و نضيف واحد الى الرقم 1 فيصبح الرقم 20 و هكذا دواليك.
النظام الثنائي  :
كما قلنا ان النظام العشري يعتمد على اساس عشرة ارقام , فارقم الثنائي يعتمد على رقمين فقط و هما صفر وواحد
1 0
و بنفس الطريقة , عند الانتهاء من الارقام نضيف الرقم صفر و نزيد واحد , كما هو الحال
0 1 10 11 100 101 110 111
نلاحظ ان النظام يتكون من رقمين فقط , صفر وواحد نبدا بالصفر ثم واحد ثم نضيف واحد مكان الصفر و نضيف واحد بجوار الرقم عند انتهاء الارقام ( في حالتنا انتهاء الارقام هما صفر وواحد)
ملاحظة مهمة:
الرقم التالي 101100 في النظام الثنائي لا يلفظ ب مئة وعشرة الالاف و مئة! بل يلفظ كالتالي:
واحد صفر واحد واحد صفر صفر
و القاعدة هي : عندما نصل الى رقم صاحب الترتيب الذي يساوي اساس نظام العد ( في حالتنا هنا النظام الثنائي مثلا) نقوم بوضع الرقم صفر في الخانة الحالية و نضيف الرقم واحد في الجهة التالية له.
الآن بعد ان عرفنا ما هو النظام العشري و النظام الثنائي , سنقوم بالتحويل بينهم .
التحويل من النظام الثنائي الى العشري :
سندرس معاً كيفية تحويل الرقم الثنائي الصحيح فقط
اولا, لنتكلم عن النظام العشري, مثلا الرقم 134 يتكون من التالي :
= 10 ^0 ضرب 4 + 10^1 ضرب 3 + 10^2 ضرب 1
= 4 + 30 + 100
= 134
اليست الطريقة صحيحة؟
لاحظتم اننا استخدمنا اساس النظام العشري و هو الرقم عشرة و في المرحلة الاولى رفعناه للأس صفر ثم واحد ثم اثنان و هكذا ثم نضربه في الرقم التالي و نجمعهم في النهاية حتى نحصل على الناتج.
التحويل الى الرقم الثنائي شبيه جدا , و بما أن أساس النظام الثنائي هو 2 فنستبدل الرقم 10 ب 2 , لنأخذ رقما معيناً لنحوله, فليكن الرقم 111 مثلا
111
= 2^0 ضرب 1 + 2^1 ضرب 1 + 2^2 ضرب 1
= 1 + 2 + 4
= 7
جميل! الرقم 111 ( واحد واحد واحد) يساوي 7 في النظام العشري.
لنجرب رقماً اخر و ليكن 1010101
1010101
= 2^0 ضرب 1 + 2^1 ضرب 0 + 2^2 ضرب 1 + 2^3 ضرب صفر + 2^4 ضرب واحد + 2^5 ضرب صفر + 2^6 ضرب واحد
= 1 + 0 + 4 + 0 + 16 + 0 + 64
= 85
اعتقد ان المسألة اصبحت سهلة الآن ، بامكانكم التأكد من الناتج بواسطة الآلة الحاسبة الموجودة في الوندوز مثلا.
start>>programs>>accessories>>calculator
بعد تحويلها الى الالة الحاسبة العلمية طبعا.
التحويل من النظام العشري الى الثنائي
الطريقة اسهل هنا, لنأخذ مثلا الرقم 400 , لتحويله نقسمه على 2 , فاذا كانت الناتج يحتوي على كسور فيكون الرقم الاول من الرقم الثنائي هو 1 و اذا لم يتحوي على كسور فيكون الرقم صفر  تماما كما كنا ناخذ تحليل الارقام في المدارس
يعني :
400 / 2 = 200 , اذن الرقم الاول هو صفر
200 / 2 = 100 , صفر
100 / 2 = 50 , صفر ايضا
50 / 2 = 25 , صفر
25 / 2 = 12 , واحد
12 / 2 = 6 , صفر
6 / 2 = 3 , صفر
3 / 2 = 1 , واحد
1 / 2 = 0 , واحد
يصبح الناتج هو = 110010000
تبدأ من الاسفل و تصعد للاعلى .
هذه باختصار عملية تحويل الرقم العشري الى الثنائي و الثنائي الى العشري .
نظام العد الثنائي  :
طبعا هناك في العالم أنظمة عد مختلفة وأشهرها هو النظام العشري ولكن منذ اختراع الحاسوب (Computer) استخدم نظام عد يناسب الخواص التقنية له وهو النظام الثنائي
يتكون أي نظام للعد من عدد من الرموز وحسب عدد الرموز يطلق على النظام الاسم الموافق ونظام العد العشري سمي عشريا لأنه يستخدم عشرة رموز , والنظام الثنائي يستخدم رمزان فقط هما الصفر والواحد (1,0) ويبين الجدول التالي الخصائص الأساسية للنظامين
اكبر قيمة في المرتبة الواحدة عدد الرموز N أساس نظام العد
9 10 10 النظام العشري
1 2 2 النظام الثنائي
تمثيل الأعداد من 1 إلى 16 في النظام الثنائي
النظام العشري 1116 النظام الثنائي النظام العشري النظام الثنائي
0 0000 8 1000
1 0001 9 1001
2 0010 10 1010
3 0011 11 1011
4 0100 12 1100
5 0101 13 1101
6 0110 14 1110
7 0111 15 1111
تحويل العدد العشري إلى ثنائي
طبعا يوجد أكثر من طريقة ولكن سوف نستخدم طريقة الباقي

مبدأ هذه الطريقة هو القسمة على 2 وتكرار هذه العملية حتى تنتهي العملية مع الاحتفاظ بالباقي . وتشكل البواقي العدد الثنائي المكافئ
مثال : تحويل العدد العشري 15 إلى ثنائي بطريقة الباقي
0 1 3 7 15 العدد
2 2 2 2 المقسوم عليه
1 1 1 1 الباقي
الناتج هو : 1111
مثال : تحويل العدد العشري 25 إلى ثنائي
0 1 3 6 12 25 العدد
2 2 2 2 2 المقسوم عليه
1 1 0 0 1 الباقي
الناتج هو : 11001
تحويل العدد الثنائي إلى عدد عشري  :
سيتم تحويل الأعداد الثنائي إلى أعداد عشرية باستخدام مفهوم قيمة المرتبة حيث نضرب كل رقم من أرقام العدد الثنائي بقيمة المرتبة المقابلة ونجمع الجداءات ونعلم أن قيمة المرتبة الأولى في النظام الثنائي 1 والثانية 2 والمرتبة الثالثة 4 والرابعة 8 وهكذا
مثال : تحويل الرقم الثنائي (1111) إلى عشري باستخدام مفهوم قيمة المرتبة
نكتب : ( 1* 1)+( 1* 2)+( 1* 4)+( 1* 8) = 15
1 + 2 + 4 + 8 = 15
مثال : تحويل الرقم الثنائي (11001) إلى عشري باستخدام مفهوم قيمة المرتبة
نكتب : ( 1 * 1)+( 0 * 2)+( 0 * 4)+(1 * 8) +( 1 * 16 ) = 25
1 + 0 + 0 + 8 + 16 = 25
العمليات المنطقية في النظام الثنائي
AND
القيمة الاولى العملية القيمة الثانية الناتج
0 AND 0 0
0 AND 1 0
1 AND 0 0
1 AND 1 1

NAND
القيمة الاولى العملية القيمة الثانية الناتج
0 NANAD 0 1
0 NANAD 1 1
1 NANAD 0 1
1 NANAD 1 0

OR
القيمة الاولى العملية القيمة الثانية الناتج
0 OR 0 0
0 OR 1 1
1 OR 0 1
1 OR 1 1

XOR
القيمة الاولى العملية القيمة الثانية الناتج
0 XOR 0 0
0 XOR 1 1
1 XOR 0 1
1 XOR 1 0

NOT
القيمة الاولى العملية القيمة الثانية
0 NOT 1
1 NOT 0

مشروعات قيد الإنشاء :

لقد قمت و بحمد الله بإنشاء مشروعات ربما تكون بسيطة و ليست على درجة عالية من الجودة و لكن لم يكن ذلك لقلة القدرة او الكفاءة و انما لانه و كما قال اجدادنا يد واحدة لا يمكن ان تصفق و يد الله مع الجماعة و من خلال هذا المقال أردت أن أدعو كل الشباب المهتمين الراغبين في التعلم او الأكفاء  القادرين على المشاركة الى مساعدتي في هذا المشروع و طبعا رح يكون المشروع جماعي و الفائدة للجميع و ما اعمل عليه حاليا  :
1 – مشروع محرك قواعد بيانات سكربت و هو مشروع جديد و فريد من نوعه و كان الهدف منه امكانية تخزين البيانات النصية و ربطها بواسطة علاقات تماما كما يحدث ببرنامج MS Access او ببرنامج SQL Server مع الاختلاف و هو ان مشروعي سكربت أي ليس Bit Integered كالبرامج آنفة الذكر و هو مشفر ضمن شفرة 32 بت أي لا يمكن لأي إنسان معرفة ما تحويه قاعدة البيانات تلك الا صاحبها و قد راعيت في تصميمها ال Metadata أي بالإمكان صنع واجهات (نوافذ) لإدارة تلك القواعد و الاضافة او الحذف منها  و كل ذلك على أسس تنظيم البيانات الشجرية و لكن الهدف الرأيس من وراء إنشاءها و كما يعلم الجميع فإن أردت عمل برنامج محاسبة لابد لك من قاعدة بيانات و لكي تعمل تلك القاعدة لابد لك من برناج هو الذي يتحكم بها و يشغلها و ان آلية الاتصال هي الآلية المتعارف عليها و هي طبقت ADO.NET لذا صممت هذا المحرك و الذي لا يبلغ حجما 500 كيلو بايت و لا يحتاج لاي برامج مساعدة ليعمل و يحافظ على نفس الاداء حتى حجم 100 ميغا و أنت تعلم كم هذا الحجم هائل بالنسبة للبيانات النصية او الرقمية ( لكي تعمل معظم برامج المحاسبة انت بحاجة الى برنامج Access ) .
2 – مشروع متصفح انترنت مجاني و قد أردت من هذا المشروع ان يكون خاصا ببلدنا الشيخ مسكين و شاهدا على قدرتنا المعرفية و الفكرية و الإبداعية و للعلم فإن المتصفح لا يعتمد إطلاقا على تقنية internet explorer أي انه مستقل تماما و استخدمت فيها نظام mozilla firefox الذي يدعى Gecko .

وقد تم بحمد الله الجزء الأعظم من كلا المشروعين و كان العمل الى الآن فرديا و لم يشاركني فيه احد لذا إن كنت من الراغبين في المشاركة بالأفكار و التطوير و تستطيع البرمجة على إحدى لغات الدوت نت ( برمجة شيئية ) أهلا و سهلا بك للعلم فأنا بحاجة مختص في البرمجة الرياضية و ترييض العلاقات بشكل رأيسي لعلنا نجعل المشروع الاول عالميا و يناهز الاكسس او ال SQL .
معظم المراجع المستخدمة وضعت روابطها ضمن المقالة لكنني اضيف هذا الرابط لمكتبة شاملة باللغة الانكليوية حول لغات البرمجة و علوم الحاسب :
http://www.free-ebooks-download.org/

أخوكم : محمد جهاد الشرع  ولا تنسونا من دعوة صالحة .
Alsharu-linox@hotmail.com

مصادر اخرى داعمة:

http://www.ckfu.org/vb/t374352.html

http://rochdi2013.blogspot.com/2013/07/blog-post_12.html

 

http://www.shorooq.net/programing_langs.php

 

 

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني.