هل أستطيع تعلم البرمجة ؟ أو هل أنا مؤهل لأصبح مبرمجًا ؟
سؤال لا يزال يسئل مراراً وتكرارً لكل من دخل جديداً في عالم البرمجة , وبالمقابل نوجه سؤالاً لكل متعلم جديد لماذا تتعلم البرمجة؟ هل لديك الحافز الحقيقي لتعلم البرمجة ؟ هل يكمن في قلبك الحب والصبر والشوق للغوص في هذا العالم الواسع ؟ ان قلت نعم , فمرحباً بك للغوص من دون غرق لنبدأ بداية صحيحة لتعلم البرمجة ابتداءاً من اساس البرمجة وعملها :
تعريف البرمجة
البرمجة هي عبارة عن كتابة شيفرة او ما يسمى بمصطلح كود برمجي أي مجموعة من الأوامر يتم ترجمتها وتنفيذها من قِبَل جهاز الحاسوب أو أي جهازٍ إلكتروني آخر و يجري كتابة هذه الأوامر والتعليمات بإحدى لغات البرمجة التي تعتبر الوسيط بين المبرمج و الحاسوب .
لو أردنا أن نقول للحاسوب “اطبع كلمة Hello World واعرضها على شاشة الحاسوب” فسنحتاج هنا إلى لغةٍ مشتركةٍ بيننا وبينه ليفهم ما نبتغيه وهنا يأتي دور لغات البرمجة .
لغة البرمجة
وسيلة للتخاطب بين المبرمج و الحاسوب وهي مجموعة من الأوامر تكتب وفق قواعد معينة تحددها نوع لغة البرمجة ومن ثُمَّ تمر هذه الأوامر بعدة مراحل إلى أن تنفذ على جهاز الحاسوب .
كل لغة برمجة لها خصائصها التي تميزها عن الأخرى وتجعلها مناسبة بدرجات متفاوتة لكل نوع من أنواع البرامج والمهمة المطلوبة من هذا البرنامج كما أن للغات البرمجة أيضاً خصائص مشتركة وحدود مشتركة بحكم أن كل هذه اللغات صممت للتعامل مع الحاسوب .
مستويات لغات البرمجة
قد تتسأل يوماُ لماذا هناك العديد من لغات البرمجة ؟ لماذا لا توجد لغة واحدة للتعامل بين المبرمج والحاسوب وللأجابة في الحقيقة ان هناك لغة واحدة يفهمها الحاسوب او معالج الحاسوب وهي الاحاد والاصفار 11100101010 وتسمى هذه اللغة بلغة الآلة وهي التي توجه الاوامر بشكل مباشر الى الحاسوب ليتم تنفيذها .
ولغة الآلة لغة صعبة في كتابتها ليفهمها البشر وحتى لو تم كتابة امر بسيط (كما في بداية اختراع الحاسوب) فسيكون عبارة عن مجموعة ضخمة من الاحاد والاصفار ولن يفهمه غيرك ولا يستطيع احد التعديل عى الشفرة او تطويرها .
وعلى مرور الزمن ونظراً للتطور وسعياً لايجاد لغة يفهمها البشر لتكون الوسيط بينه وبين الحاسوب تم تقسيم لغات البرمجة بناء على قربها من اللغات الإنسانية إلى :
- لغة عالية المستوى (اقرب الى اللغة التي يفهمها البشر) مثل : السي شارب c#، البايثون python والجافا java.
- لغة منخفضة المستوى (قريبة من لغة الآلة) مثل : لغة التجميع assembly .
وهذه صورة توضيحية للاكواد التي يتم كتابتها حسب مستوى كل لغة .
كيف يعمل الكود البرمجي
مثلما عرفنا في السابق ان الحاسوب لا يفهم المبرمج او لغات البرمجة عالية المستوى مثلا لا يفهم الكود البرمجي (“print(“hello world ,وانما يفهم فقط لغة الآلة التي هي عبارة عن احاد واصفار , في اللغات البشرية الاعتيادية ( الانكليزية , العربية , الاسبانية … ) هناك مترجم واحد يقوم بالترجمة بين اللغات البشرية للتواصل , اما في لغات البرمجة هناك نوعان من المترجمات بين اللغات :
- المترجم (compiler) : من خلال اسمه يتضح جليا أنه يقوم بعملية الترجمة، فهو يقوم بفحص البرنامج المكتوب بلغة البرمجة كاملا، ثم يقوم بترجمته إلى برنامج مكتوب بلغة الآلة لكي تتمكن وحدة معالجة البيانات CPU من تنفيذه و لا يظهر الأخطاء الموجودة في البرنامج المصدري إلا بعد الانتهاء من عملية تحويله إلى لغة الآلة.
- المفسر (interpreter) : يقوم تقريبا بنفس الدور الذي يقوم به المترجم مع اختلاف بسيط، يتجلى في أن المفسر لا يقوم بتحويل الكود المصدري إلى كود الآلة مباشرة وإنما يقوم بتحويله إلى لغة وسيطة intermediate code، بعد ذلك يتم تحويل كل جزء من أجزاء الكود الناتج إلى لغة الآلة، ثم يتم تنفيذ هذه الأجزاء أمرا بأمر سطر بسطر ، وأي أمر يضم خطأً يؤدي إلى توقيف عملية تحويل الأجزاء المتبقية.
كيف اختار لغة البرمجة التي تناسبني
يعتمد اختيار لغة البرمجة المناسبة على المجال الذي ترغب العمل فيه , وهنا وصف مبسط لمجموعة من المجالات الرئيسية في وقتنا الحالي :
- مجال الويب او تطوير المواقع : ويهتم هذا المجال بتصميم صفحات المواقع وبرمجتها , واشهر اللغات المستخدمة html,css,javascript,php,asp.net
- مجال تطبيقات الهواتف : وهذا المجال متخصص ببرمجة وتطوير تطبيقات الاندرويد و الios كل مجال على انفراد او التخصص بتطبيقات الFlutter التي تعمل على كل النظامين ,اشهر اللغات المستخدمة kotlin -java للاندرويد , Swift للios, وdart للFlutter .
- مجال تطبيقات سطح المكتب : ويتخصص هذا المجال ببناء تطبيقات وبرامج سطح المكتب لكل النظامين windows و لينكس , اشهر اللغات البرمجة المستخدمة java – #c -python-visual basic .
- مجال تطوير الالعاب : مجال متخصص ببرمجة الالعاب الالكترونية واشهر محركين للبرمجة وتصميم الالعاب هما Unity و Unreal واشهر اللغات المستخدمة للبرمجة C# , javascript .
وهناك مجالات وتخصصات مختلفة مثل تخصص قواعد البيانات والذكاء الاصطناعي والحماية والاختراق الاخلاقي ,يمكنك قراءة مقالة متخصصة بانواع المجالات والتخصصات ضمن قسم مقالات كوداتي .
الخوارزميات والبرمجة
قد يخيف مصطلح “الخوارزميات Algorithms” لبعض الاشخاص والمتحيرين هل ابدء بالخوارزميات ثم البرمجة او البرمجة ثم الخوارزميات وهنا سنضع مختصر بسيط للخوارزميات في نقاط :
تعريف الخوارزميات بالشكل العام : هي مجموعة من الخطوات الرياضية والمنطقية والمتسلسلة اللازمة لحل مشكلة ما, وسميت الخوارزمية بهذا الاسم نسبة إلى العالم أبو جعفر محمد بن موسى الخوارزمي الذي ابتكرها في القرن التاسع الميلادي.
الخوارزميات في البرمجة : هي طرق التحليل و التفكير التي عليك اتباعها حتى تتمكن من كتابة الكود بشكل صحيح , والذي عليك ان تعرفه ان الخوارزميات ليست بلغة برمجة .
الهدف الرئيسي من الخوارزميات في البرمجة هو التفكير بكتابة الكود الصحيح قبل البدء بكتابته بأي لغة برمجة للوصول الى كود نظيف خالي من المشاكل .
والخوارزميات يمكن تمثيلها شكلاً (مخطط انسيابي ) قبل البدء بكتابة الخوارزمية لتبسيط مرحلة كتابة الخوارزمية , وهنا مثال بسيط (عبارة عن ادخال ثلاث ارقام وطباعة المعدل) يوضح الفرق بين الطريقتين :
هل الخوارزميات مهمة لتعلم البرمجة ؟
نعم قد تكون مهمة للمبتدئين قبل البدء بتعلم البرمجة , فتعلم الخوارزمية وطريقة تمثيلها وتجربة اكثر من مثال يسهل لك البداية في تعلم البرمجة عن طريق فهم الكود بصورة صحيحة , ولكن هذا لا يعني انها مهمة لدرجة انك لا تستطيع تعلم البرمجة من دونها .
أنا لا أجيد الرياضيات هل أستطيع تعلم البرمجة ؟ في الحقيقة سؤال لا يزال يطرح كثيراً وللتوضيح البرمجة بشكل عام لا تحتاج إلا لأساسيات الرياضيات (جمع-طرح-ضرب-قسمة) وبشكل بسيط وقليل الاستخدام ،وبعض الاحيان تحتاج الى استخدام الرياضيات واحياناً لا تستخدمها بحيث يعتمد على المشروع الخاص بك فمثلا في برمجة الالعاب قد تستخدم الرياضيات بكثرة وفي تطوير المواقع وتطبيقات الموبايل قد تستخدمها بقلة , ولتسهيل الامر عليك دون تعقيد يمكنك البدء في البرمجة حتى اذا كنت ضعيف جداً في الرياضيات فهناك اشخاص اكفاء في البرمجة وفاشلين في الرياضيات , فاستمر في تعلم .
ماهي اسهل واصعب لغة برمجة ؟
في الحقيقة لا يعتمد تعلمك للبرمجة على مطرح هكذا اسئلة وانما يعتمد على المجال الذي ترغب في السير فيه او المشروع الذي ترغب في عمله وبعد تحديد المجال او المشروع ستتعرف على اللغات التي يتم برمجة المشروع بها او تتعامل مع هكذا مجال , فمثلاً انا احب ان صمم موقعاً ففي هذه الحالة انت مجبر لان تبدء بتعلم لغات المواقع Html css js php mysql
Hello connect
وفي نهاية هذه المقالة سنوضح لكم كود لطباعة كلمة “Hello connect” باشهر لغات البرمجة والترميز :
kotlin
fun main(args: Array<String>) {
println(“Hello connect”)
}
java
class HelloWorldApp {
public static void main(String[] args) {
System.out.println(“Hello connect!”);
}
}
C#
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Hello, connect!”);
}
}
C++
#include <iostream>
int main()
{
std::cout << “Hello, connect!\n”;
return 0;
}
C
#include <stdio.h>
int main(void)
{
printf(“hello, connect\n”);
}
JavaScript
console.log(“Hello connect!”);
MATLAB
classdef hello
methods
function greet(this)
disp(‘Hello, connect’)
end
end
end
php
<?php
echo ‘Hello, connect!’;
?>
Python
print(“Hello connect”)
Swift
println(“Hello, connect!”)
Dart
main() {
print(‘Hello connect!’);
}