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

تعلم البرمجة


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

لماذا نتعلم البرمجة؟

هناك عدة أسباب ممكن أن يمثلوا الدافع والحافز لتعلم البرمجة، أولها وأهمها طبعاً هو أن تعلم البرمجة من الممكن أن يوفر لك مسار مهني جيد، من حيث العائد المادي وفرص التطور.

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

 سبب آخر قد يدعوك لتعلم البرمجة هو أن تتعلمها لكي تعلم لأبنائك، أو الاطفال عموماً، فتعلم الصغار للبرمجة من الممكن أن يساعدهم بشكل كبير في تطور قدراتهم في التفكير والتحليل وحل المشكلات.

فبعض الدول مثل بريطانيا بدأت في تدريس البرمجة للتلاميذ من المرحلة الابتدائية، نحن لن نتكلم الآن عن تعليم الاطفال، لأن أدوات و خطوات التعلم ستكون مختلفة، بل سنركز على تعلم البرمجة بحثاً عن مسار مهني أو علمي، وهذا الذي يهم النسبة الأكبر من المتابعين.

ما هي البرمجة أصلاً؟

 البرمجة ببساطة هي عملية كتابة تعليمات لجهاز كمبيوتر لتنفيذ مهمه معينه، ففي عصرنا الحالي هناك أشكال مختلفة ومتنوعة لأجهزة الكمبيوتر، من أول جهاز الحاسب الشخصي التقليدي إلى الموبايل إلى أجهزة الألعاب إلى الساعات الذكية لمئات الأجهزة الذكية الأخرى التي بدأت في الظهور والانتشار.

ما هي لغة البرمجة؟

هي اللغة التي تستخدم في كتابة التعليمات التي سينفذها الكمبيوتر، لكي يقوم بالمهام المطلوبة،

والخطوة الأولى التي من المفروض تخطوها كشخص يرغب في تعلم البرمجة  تعلم البرمجة، هي اختيار لغة برمجة معينة، ثم البدء في تعلمها من المصادر المتاحة.

وتلك الخطوة تستلزم منك قدر من المعرفة عادة هي غير موجودة لدى الأشخاص الذين لم يتعلموا البرمجة، لذلك دعونا نتعرف على بعض الاشياء التي ستسهل عليك هذه الخطوة.

لو بحثت عن لغات البرمجة المتاحة ستجد أن هناك العديد من لغات البرمجة، تعدد لغات البرمجة له عدة أسباب، أهمها سببان:

السبب الأول تعدد الاستخدامات

فليست كل لغات البرمجة تستخدم لبرمجة نفس النوع من البرامج، فعمل تطبيق للموبايل يختلف عن عمل موقع انترنت ويختلف عن عمل لعبه للإكس بوكس مثلاً.

السبب الثاني التطور التقني

فمع التطور القني فإن جهة معينة مثل شركة تقنية كبيرة مثلاً، ترى أنها تستطيع أن تقوم بعمل برمجة جديدة بمميزات تناسب التطور أو حتى تناسب نوعية معينة من البرامج الشركة مهتمة بها.

 فتصنع لغة جديدة مع الأدوات اللازمة لاستخدام هذه اللغة، وتنشرها بين الناس لكي يتعلموها وتوفر لنفسها مجتمع من المبرمجين مهتم بأدواتها وتقنياتها.

أياً كانت الأسباب ففي النهاية هناك أكثر من لغة برمجة، وهذا طبعاً محير ومزعج لأي مبتدئ، لكن الشيء الجيد لتعلم لغات البرمجة، هو أن أول لغة برمجة ستتعلمها، عادة تشارك في 80% وأكثر من مفاهيمها مع باقي لغات البرمجة.

وبالتالي بمجرد تعلمك لأي لغة برمجة، سيكون من السهل عليك الانتقال إلى أي لغة أخرى لاحقاً.

 مثلاً لو استغرقت سنة في تعلم لغة جافا سكريبت، ووصلت بها لمستوى معين، ولكي تصل لنفس المستوى في لغة أخرى، مثل السيشارب، غالباً لن تحتاج أكثر من شهر واحد.

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

 وهذا لا يعني أن تتعلم أي لغة وإنتهى الأمر، فمن الطبيعي أن تنظر إلى نوعية البرمجيات التي تحب انتاجها وبعد ذلك تختار واحدة من لغات البرمجة المشهورة في إنتاج نوعية البرمجيات هذه.

 والذي سنفعله الآن هو أننا سنعرض المجالات المعروفة، ونرشح لك في كل منها لغة برمجة معينة، لكن قبل ذلك هناك نقطة مهمة يجب توضيحها.

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

ولتبسيط الموضوع دعونا نوضحه بمثال، لو شبهنا الموبايل بالكاتب، فالكاتب ليك يكتب مقالاً يجب أن يكون على علم بلغة معينة يكتب بها، والأدوات التي سيستخدمها في الكتابة والمراجعة، مثل برنامج الوورد مثلاً وما يحتويه من أدوات، كتصحيح الكلمات أو تصدير المقال بشكل PDF.

كذلك في البرمجة، فأنت تحتاج أن تعرف لغة معينة وبيئة برمجية تستخدمها مع لغة البرمجة، والفكرة هنا أن بعض لغات البرمجة ممكن أن يكون لها استخدامات مختلفة، أي تنتج أنواع مختلفة من البرمجيات إذا استخدمتها مع بيئات برمجية مختلفة.

ممكن أن تستخدم نفس اللغة مع بيئة برمجية معينة لعمل تطبيق موبايل، أو مع بيئة برمجية أخرى لعمل لعبة للاكس بوكس مثلاً.

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

طبعاً المصدر الذي ستتعلم من خلاله لغة البرمجة، عادة ما يكون يستخدم بيئة برمجية معينة، ويشرح لك  استخدامها أثناء تعلم اللغة، فلا تقلق وتفهم من الكلام أنك ستحتاج أن تتعلم شيئين بشكل منفصل عن بعض، نحن فقط نوضح لك لهذ النقطة لكي لا يختلط عليك الأمر بين لغة البرمجة نفسها وبين البيئات البرمجية التي من الممكن أن تستخدمها مع لغة هذه البرمجة.

وكذلك لكي تكون مطمئناً أن تعلمك للغة برمجة واحدة ممكن أن يمكنك من عمل أنواع مختلفة من البرمجيات، سنعود الآن للسؤال الأساسي:

 كيف تختار لغة البرمجة التي تريد أن تبدأ في تعلمها؟

هناك عاملين يساعدوك على اختيار لغة البرمجة الأفضل والأنسب لك

العامل الأول بناء نوعية البرمجيات التي ترغب في إنتاجها

أي أنك تريد أن تنتج برمجيات الويب، أو تطبيقات الموبايل، أو تحب الألعاب مثلاً، فكل نوع من هذه البرمجيات له لغات وبيئات برمجية مفضلة ومشهورة.

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

ويعني أيضاً أن فرصة أن تجد حلول على الانترنت للمشاكل التي ستواجهها ستكون أكبر، وأيضاً معناه توفر عدد أكبر من المكتبات البرمجية وأطر العمل الجاهزة التي ستسهل عليك العمل وتساعدك لتصل لنتائج أفضل.

ويمكن أن أهم نقطة هي معناها توفر فرص عمل أكثر لمستخدمي هذه اللغة، لأن الشركات تفضل استخدام التقنيات المشهورة، لكي تستطيع أن تجد بديلاً للمبرمجين الذين من الممكن أن تركوا الشركة لشركات اخرى.

وبالتالي العمل على المشاريع لا يتوقف بترك موظف معين للشركة، وبما أن هدف من أهداف تعلمنا للمبرمجة والتي حددناها في أول حديثنا، هو تعلم البرمجة بحثاً عن المسار المهني في البرمجة، فبالتالي شهرة لغة البرمجة هي عامل مهم جداً عند اختيارك للغة البرمجة التي ستبدأ في تعلمها.

سنعود للعامل الأول والذي هو نوعية البرمجيات التي تحب أن تنتجها، ونتكلم عنها بالتفصيل، الذي سنفعله أننا سنعرض لك أهم مجالات البرمجة التي توفر فرص عمل جيدة، وسنرشح لك في كل واحدة منها لغة برمجة معينة.

مجالات البرمجة

سنتحدث عن ثلاث مجالات الويب و تطبيقات الموبايل وبرمجة الألعاب:

طبعاً هناك مجالات برمجة أخرى غير هذه مثل تطوير برامج سطح المكتب إن كان مؤخراً سوق برامج سطح المكتب تراجع بشكل كبير، لأن معظم الأشياء التي كنا نعمل لها برامج لسطح المكتب أصبح من الفضل عملها كتطبيقات ويب تصل إليها من المتصفح، أو كتطبيقات الموبايل.

وهناك مجالات واستخدامات أخرى عديدة للبرمجة، فنحن نحتاج البرمجة في صناعة صواريخ الفضاء، في السيارات ذاتية القيادة، وغيرها من عشرات الاستخدامات العسكرية والطبية.

لكن كل هذه هي استخدامات خاصة جدً يعمل فيها عدد قليل جداً من الهيئات والشركات، وليس من المفروض أن تنشغل بها وأنت لازلت مبتدئ، مستقبلاً عندما تصبح محترف ممكن تجد فرصة في هذه المجالات الخاصة.

فدعونا نركز على المجالات العامة والشائعة والتي من السهل أن تجد بها فرصة وظيفة أو عمل حر.

مجال الويب

مجال برمجة وتطوير مواقع وتطبيقات الانترنت ينقسم إلى جزأين FRONT-END و BACK-END وسنوضح الفرق بينهما بمثال بسيط.

تخيل مطعم ينقسم إلى جزأين أساسيين، المكان الذي يجلس به الزبائن لتقديم الطعام، وعادة يكون شكله جميل وله ديكور مميز، وتستطيع أن تعتبره FRONT-END ، وهناك المطبخ الذي يتم به إعداد الطعام نفسه، وقد تعتبره BACK-END وكذلك في الويب.

فإن الواجهة التي تتعامل معها كمستخدم، والتي هي العناوين والصور والفيديوهات والروابط هي  FRONT-END بينما ال BACK-END يكون موجود على الخدمة ومهمته معالجة وإدارة وإعداد قاعدة البيانات التي تظهر للمستخدم، أو التي يتم إدخالها من قبل المستخدم.

فأنت ممكن أن تكون مبرمج FRONT-END أو مبرمج BACK-END، طبعاً ليس هناك مانعاً أن تتعلم الأمرين معاً، فمن الممكن أن ينفعك في العمل الحر بعيداً عن الشركات، بأن تتكفل بعمل مشروع كامل لوحدك.

لكن عاد يكون هناك شركات يكون لديها تخصص، فهناك مبرمجين تخصصهم FRONT-END  ومبرمجين تخصصهم BACK-END.

ولكي تصبح مبرمجاً أو مطوراً لواجهات المستخدم، تحتاج أن تتعلم ثلاث لغات:

HTML وCSS وJAVASCRIPT

لكن يجب أن تعلم أن HTML وCSS ليست لغات برمجة، HTML هي لغة توصيف تستخدمها لكي تصف هيكل صفحة الويب، أي من خلالها تحدد أن الصفحة تتكون من عنوان تحته صورة بعدها فقرات نصية وهكذا.

و CSS نسميها لغة التنسيق، وتستخدم لك تنسق عناصر الصفحة، يعني من خلالها تستطيع أن تحدد نوع الخط واللون والعنوان المستخدم، تستطيع من خلالها أن تضع إطار أو ظل للصورة مثلاً وهكذا، HTML وCSS  تنسيقهم بسيط جداً وتستطيع أن تتعلمهم في أسبوع واحد.

أما ثالث حاجة يجب أن تتعلمها لكي تصبح مبرمج هي JAVASCRIPT وهي تعتبر أشهر لغة برمجة، ولها استخدامات أخرى خارج مجال الويب أيضاً.

أما بالنسبة لمصادر التعلم، فالانترنت مليء بالدورات والدروس والمقالات لتعلم ال HTML وCSS وJAVASCRIPT ومنها مصادر عربية على يوتيوب.

ونصيحتنا لك هي أنك عندما تبحث، ابحث عن دورات كاملة، وليس عن مقتطفات ودروس عشوائية، لو وجدت أحداً ما يقدم دورة على يوتيوب تأكد أن الدورة كاملة ومنتهية قبل أن تبدأ.

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

صحيح أن الدورة ليست مجانية، لكنها توفر عليك الكثير جداً من الوقت والجهد، والذي غالباً سيفوق تكلفة الدورة بمراحل لو اعتمدت على المحتوى العربي المجاني الذي معظمه عشوائي بكل أسف، وكثير من مقدميه غير مؤهلين، وإن كانوا مشكورين لجهودهم ومشاركتهم للمعرفة.

أما لو كنت تحب أن تصبح مبرمج BACK-END فإن أشهر لغات البرمجة في PHP وRUBY ولكن لن نتكلم بالتفصيل عن هذا الجزء، لأنك يجب أن تتعلم أساسيات FRONT-END أولاً، وعندما تتعلم أساسيات FRONT-END عندها سيكون لديك المعرفة الكافية التي ستساعدك على الاختيار، لكن عموماً على أي حال ستجد مصادر لتعلم PHP وruby

مجال الموبايل

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

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

فكثير من الشركات لكي تستطيع أن تعمل نفس التطبيق للنظامين، عادة يكون لديها مطورين أندرويد ومطورين أي يو اس لعمل التطبيق، لكن مؤخراً بدأت تظهر تقنيات تمكنك من عمل التطبيق للنظامين مرة واحدة، وبنفس اللغة.

وهنا سنرشح لك أفضل تلك التقنيات من وجهة نظرنا، سنرشح التقنية التي اسمها فلاتر FLUTTER وقد قامت بصناعتها شركة غوغل، وهي ليست اسم لغة البرمجة، بل هو اسم البيئة البرمجية التي هي خليط من المكتبات وأطر العمل.

مع فلاتر تستخدم لغة برمجة اسمها DART وهذه لغة برمجة قامت بصناعتها غوغل أيضاً، وهي ببساطة تعتبر نسخة محسنة من جافا سكريبت.

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

إن كنت تستطيع أن تتابع كورسات باللغة الانكليزية، فهناك كورس على يودي مي ثمنه 13 دولار تقريباً، لكنه أكثر من رائع للمبتدئين.

عموماً إذا كنت تحب تعلم فلاتر ستبدأ أولاً بتعلم أساسيات لغة دارت، كما قلنا سنجد لها دروس عربية، وبعد ذلك تبدأ في تعلم فلاتر لتطوير تطبيقات الموبايل، سواء للأندرويد أو أي او اس.

مجال الألعاب

ثالث مجال سنتكلم عنه هو برمجة الألعاب، وقبل أن نرشح لك تقنية معينة تتعلمها، سنقدم لك نصيحة مهمة عن مجال برمجة الألعاب.

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

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

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

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

أما بالنسبة للتقنية التي سنرشحها لك لكي تستخدمها في برمجة الألعاب في UNITY وهي بيئة برمجية أو منصة لصناعة الألعاب توفر لك الكثير جداً من الأدوات لتصميم وبرمجة مختلف أنواع الألعاب سواء ثنائية أو ثلاثية الأبعاد.

لغة البرمجة التي ستحتاج أن تتعلمها مع UNITY هي لغة اسمها سيشورت، وهي في الأساس لغة من تطوير مايكروسوفت، لغة مشهورة جداً ومتعددة الاستخدامات، فمن الممكن استخدامها مع تقنيات وأدوات من مايكروسوفت لصناعة برامج الديسك توب أو تطبيقات الموبايل.

وهكذا عرضنا لكم ثلاث مسارات مختلفة لأي شخص يريد أن يدخل عالم البرمجة، ورشحنا لغات البرمجة المناسبة في كل مجال.

نصائح مهمة في البرمجة

سنختم الحديث بثلاث نصائح لأي شخص:

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

بعض الأمور كنت تفعلها بدون فهم كامل، كذلك في البرمجة، ففي البداية لن نستطيع أن شرح لك بالتفصيل، لماذا هذا الجزء المعين يكتب بهذا الشكل، لأنك لا تملك المعرفة التي تسمح لك فهم هذه التفاصيل هذه.

والنصيحة الثانية هي أن لا تعتبر عدم فهمك لبعض التفاصيل ضعف في الفهم منك، وتحبط وتتوقف، بل أكمل عملك وبعد فترة ستفهم التفاصيل وكل شيء كنت تكتبه من دون فهم كامل في البداية.

بكل أسف لغات البرمجة لم تنجو من التعصب البشري المعتاد، ستجد البعض يتعصب للغة التي يستخدمها، ويهاجم أي شخص يرشح غيرها، يجب أن تبتعد أن تقع في هذا النوع من التعصب.

مشكلة أن تربط نفسك بلغة معينة، فهو من الممكن أن يحرمك من تطوير نفسك بشكل كبير، فمجال البرمجة يتغير باستمرار، فحتى لو كنت مستقر على لغة معينة، لا تحرم نفسك أن تجرب أي شيء يلفت انتباهك من الوقت للآخر.

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

أنصحك لا تدخل في مجال البرمجة من البداية، فلا يوجد أي مجال يتغير ويحتاج تعلم مستمر مثل مجال البرمجة، طبعاً المبادئ والمفاهيم الأساسية لا تتغير بشكل كبير، ولكن آلية التطبيق والأدوات المستخدمة ممكن أن تتغير كل ستة أشهر أو كل سنة.

فيجب أن تعلم منذ البداية أنك ستكون في رحلة تعلم مستمرة.

 المصدر : يوتيوب

مقالات ذات صلة

زر الذهاب إلى الأعلى