الطريق للبرمجة
الكثير منا تستهويه البرامج الإلكترونية أو التطبيقات الذكية ومواقع الانترنت أو حتى الألعاب التي اكتسحت جميع أنواع التكنولوجيا، ويتمنى لو يمتلك المهارة لصنع برنامجه الخاص به. فبالتالي يسأل عن الطريق للدخول لعالم البرمجة. أو كيف أكون مبرمجاً؟ وأي اللغات البرمجية أختارها؟ على قصر السؤال لكن اجابته تستدعي الكثير من التفاصيل. وتستدعي الكثير من القرارات التي قد تأخذك الى جهة لم تكن لتفكر بها قبل الدخول لمعترك البرمجة.
البرمجة هي لغات تعتمد على الشيفرات (أكواد) لإملاء الأوامر على الحواسيب لجعلها تقوم بالمهام المطلوبة منها. جميع التطبيقات، جميع برامج الحاسوب، جميع أنظمة التشغيل، جميع مواقع الإنترنت، جميع تطبيقات الهواتف الذكية، جميع الألعاب الإلكترونية وغيرها هي ثمار البرمجة واللغات البرمجية.
لعل أشهر اللغات البرمجية المعروفة عالمياً هي Java، C#، VB.net، Python، C، C++، PHP، Ruby، Objective-C، Swift وغيرها من لغات برمجية. لكن كمبتدئ في هذا العالم، ولكي تشق طريقك لصناعة البرمجيات والإنتاج.. فإن تعلم كل ذلك أشبه بالعقبة الكبيرة. ولا يكاد من الراجح عقلاً تعلم كل اللغات. فأنا أؤمن بالتخصص. فأحياناً تتعلم لغة واحدة وتنتج بها وتبدع خيراً من أن تتعلم كثير من اللغات ولا تفلح في انتاج برنامج احترافي متقدم واحد.
لكن ليست جميع تلك اللغات تخدمك في صناعة البرامج التي تستهويك. فقبل الاختيار عليك أن تحدد هدفك من البرمجة بالضبط. وهذا يعني مثلا البرمجة لإنتاج تطبيق هاتف يختلف طريقه عن انتاج تطبيق للحاسوب. بل أن حتى تطبيقات الحواسيب تختلف كذلك.. فعليك أن تحدد هل تريد لها أن تعمل على نظام التشغيل ويندوز، أم الماك أم اللينكس أم جميعهم. فتوجد لغات مخصصة للعمل على الويندوز. ومع أن الويندوز هو الأكثر شعبية في العالم، لكن قد يكون هذا المبتدئ يستهدف إنتاج برنامج للماك. عادة يتجه المبرمجون على الويندوز لاختيار لغات البرمجة المنتجة من قبل شركة المايكروسوفت نفسها (C#, Vb.net,..etc) بينما يتجه المبرمجون على الماك لاختيار لغات من انتاج شركة أبل نفسها مثل Objective C و Swift. وكذلك الحال للهواتف… فمن يريد أن ينتج تطبيق للأندرويد فانه يختار الجافا. ويختار اللغات التابعة لأبل المذكورة أعلاه إذا ما أراد أن ينتج تطبيق للـ iOS. واقعا المسألة معقدة أكثر من هذا.. فللهواتف أيضا لغات برمجية أخرى.. فاذا أراد تصميم ألعاباً لها فالأفضل أن يتجه للغات مخصصة للألعاب. وهي أيضا متشعبة.. فتوجد لغات برمجية خاصة للألعاب 2D وأخرى للألعاب 3D (Cocos2D، Unity، وغيرهم). كما أن في الهواتف نفسها لو أراد أن ينشئ تطبيقاً هجيناً يجمع بين كونه تطبيق على الهاتف ويرتبط بالإنترنت فعليه اختيار لغات مخصصة لذلك تعمل على معظم أنواع الهواتف الذكية مثل phonegap، Titanium وغيرهم.
لا تنتهي الحكاية هنا، فأحيانا تحتاج لتتعلم أكثر من لغة برمجية وتجمع بينهم فقط لانتاج منتج واحد. فانتاج موقع إلكتروني مثلا يتطلب أن تتعلم HTML، JavaScript، CSS ولغة للسيرفر (أشهرها php asp.net(vb.net,C#), python) وقد يتطلب أحيانا دراسة بيئات عمل frameworks ولغات أكثر. فقط لإنتاج موقع إلكتروني واحد.
لا تقف حدود المسارات البرمجية على هذه الاتجاهات. فأحيانا يستهدف المبرمج التعامل مع أنظمة تشغيل وبرمجة أجهزة دقيقة أو آلات أو روبوتات… وهنا لا يمكن التغاضي عن لغات C، C++ والجافا. فهم يدخلون في انتاج معظم أجهزة التلفزيونات والرسيفرات ومشغلات الصوت والفيديو والأجهزة الطبية والصناعية والكثير الكثير. وتستخدم في منتجات انترنت الأشياء التي هي مجال نشط جداً.
بعض اللغات البرمجية فيها نوع من الشمولية.. فمثلا لغة C# والجافا وحتى C وC++ هي لغات متعددة الاستخدامات. فهي تستخدم لإنتاج تطبيقات للحاسوب بشتى أنواعها وتستخدم للإنترنت وكذلك للهواتف وغيرها. طبعاً مع انتاج كل نوع من أنواع البرامج سيكتشف أنه يستخدم نفس بنية جمل الأوامر والشفرات في اللغة لكنه سيتعامل مع تقنيات مختلفة ومكتبات برمجية متعددة تكسبه القوة في الإنتاج والمعرفة والخبرة. وحتى لا يتيه المبتدئ في خضم هذه اللغات البرمجية فليحدد أية لغة شاملة ليستطيع كسب المفاهيم تلك. ومن ثم يستطيع هو رسم مساره بنفسه دون أن يخسر المفاهيم التي اكتسبها.
*يمكنك الاستعانة بموقع http://www.bestprogramminglanguagefor.me لتحديد اللغة البرمجية المناسبة لك.