عندما قررت الدخول بمجال البرمجة، واستشرت مجموعة من المختصين البعض رشح لي جافا سكريبت وأنه رغم صعوبتها لكن احترافي لها سيمكنني من العمل بتخصصات برمجية مختلفة، أتذكر مقولة أحد المبرمجين الذين أكن له الكثير من التقدير وهو يقول "لا أتوقع أن يكون المبرمج محترفا دون تعلم الجافاسكريبت"، والبعض الآخر رشح لي بايثون لسهولة تعلمها ويمكن الاعتماد عليها أيضا، لذا أصبت بالحيرة وأريد أن استفيد من معرفتكم وخبراتكم حول الأمر، أي منهما ترشح لي أن ابدأ؟ ولماذا؟ وما هي استخدامات كل منهما، ربما هذا سيساعدني على الاختيار أفضل؟
لغة بايثون Python أم جافا سكريبت Javascript لبدء تعلم البرمجة؟
الاختيار بين البدء بتعلم جافا سكريبت أو بايثون يعتمد على عدّة عوامل، منها أهدافك، ونوع المشاريع التي ترغب في العمل عليها، وأسلوب التعلم الذي يناسبك. وإليك أهم الخصائص والاستخدامات الرئيسية لكل لغة :-
جافا سكريبت
- جافا سكريبت تستخدم أساسا في تطوير تطبيقات الويب. يتيح لك إنشاء واجهات مستخدم تفاعلية وديناميات على صفحات الويب. إضافة إلى ذلك، يمكن استخدام جافا سكريبت لتطوير تطبيقات الجانب الخادم باستخدام إطارات مثل Node.js.
- تعتبر جافا سكريبت لغة متعددة الاستخدامات ولديها مجموعة كبيرة من المكتبات والإطارات التي تساعد في تسهيل عملية التطوير. تستخدم أساسا في بيئات المتصفح، ولذا فهي أمر ضروري إذا كنت ترغب في تطوير تطبيقات ويب.
- البداية في جافا سكريبت قد تكون قليلاً صعبة لبعض الأشخاص بسبب تعقيد بعض المفاهيم والتحديات المرتبطة بأمور مثل نمط تفوق الحدث (Event-driven) وأمور تتعلق بنطاق المتغيرات. ومع ذلك، مع ممارسة جيدة والتعلم المستمر، يمكن التغلب على هذه الصعوبات.
بايثون
- بايثون تستخدم بشكل واسع في مجموعة متنوعة من التطبيقات، بدءًا من تطوير تطبيقات الويب باستخدام إطارات مثل Django و Flask، إلى تطوير تطبيقات سطح المكتب، والحوسبة العلمية، وتطبيقات تحليل البيانات.
- بايثون تعتبر سهلة التعلم والقراءة، وهذا يجعلها خيارًا جيدًا للمبتدئين. توفر لغة بايثون العديد من المكتبات والأدوات المفيدة التي تساعد في تسهيل العملية التطويرية.
- بايثون تعتبر من أسهل لغات البرمجة للتعلم، وهذا يجعلها خيارًا جيدًا للمبتدئين. تجمع بايثون بين قوة اللغات المتقدمة وبين بساطتها في الاستخدام.
إذا كان هدفك الرئيسي هو تطوير تطبيقات ويب وإضافة تفاعلية لصفحات الويب، فجافا سكريبت هي الاختيار الأمثل. أما إذا كنت ترغب في تعلم لغة برمجة تكون سهلة التعلم وتتيح لك التنوع في مجالات التطبيقات مثل تطوير الويب، الحوسبة العلمية، وتحليل البيانات، فبايثون قد يكون الخيار المناسب. لاحظ أنه لا يجب أن تكون اختياراً نهائياً. يمكنك بدءاً من إحدى اللغتين وفيما بعد توسيع مهاراتك إلى اللغة الأخرى إذا احتجت.
أعتقد أن البدء في مسار تعلم البرمجة ينبغي أن نبدأه بتعلم الخوارزميات أساسا فهي المفتاح الرئيسي نحو تعلم أي لغة برمجية، مهما تفاوتت درجة صعوبتها
من المهم أيضا وحسب تجربتي كطالب هندسة برمجيات فإن البدء بلغات برمجة قديمة لفهم الأساسيات من خلالها، ثم التعمق فيما بعد في إحدى اللغات الحديثة والسهلة، على حسب نوع المشروع الذي نعمل عليه وعلى حسب متطلباته، لذلك في الجامعة نبدأ بدراسة لغات ك السي وسي بلس بلس وسي شارب وغيرها من أجل الفهم العميق لكيف بدأت وكيف تتطور هذه اللغات، ثم تأتينا بقية اللغات سهلة وبسيطة من خلال تعلم ال Syntax الخاص بها والممارسة المستمرة عبر إنجاز المشاريع المختلفة.
أرى أن بايثون من خلال شرحك تفوقت على جافاسكريبت من حيث الأهمية ومجالات التطبيق.
لاحظ أنه لا يجب أن تكون اختياراً نهائياً. يمكنك بدءاً من إحدى اللغتين وفيما بعد توسيع مهاراتك إلى اللغة الأخرى إذا احتجت.
نعم، لكن بعد أن بدأت بلغة جافاسكريبت وجدت أنها صعبة نوعا ما لذا نشرت هذه المساهمة، ولفت نظري هذه الجزئية، هل يمكنني أن أكون محترفا بالبرمجة دون جافاسكريبت، أم أنها أساسية، فهي موجودة بتطوير الويب خاصة الواجهات الأمامية، وكذلك التطبيقات، فهل يمكنني الاستغناء عنها والاعتماد على لغات أخرى، أم هي شر لابد منه😊؟
هل يمكنني أن أكون محترفا بالبرمجة دون جافاسكريبت
كطالب هندسة برمجيات أستطيع القول نعم تستطيع أن تحترف البرمجة بدون جافاسكريبت، يوجد الكثير من الاختلافات بين المبرمجين و لكن ما يجب أن تركز عليه هو تحديد هدف واحد، دائما ماكنت أردد "عبارة إذا تعددت الأهداف ضاع الهدف" وهذا ما ينطبق على هذا المجال، مثل إذا كان هدفك تطوير برامج سطح المكتب او تطبيقات الهاتف فلا حاجة لك لتعلم الجافاسكريبت و انما استغلال وقتك في تطوير المجال الذي تريده.
"عبارة إذا تعددت الأهداف ضاع الهدف"
هذا المبدأ ليس محصورا فقط على مجال البرمجة، بل يمكن تعميمه على شتى المجالات التعلمية، كلما كثرت المجالات كلما تشتّت الإنسان وسيضعف مردوده سواء في التعلم أو العمل.
دوما ما كنت أطالع منشورات المبتدئين الراغبين في تعلم مجال البرمجة، وأغلب أسئلتهم تكون حول المقارنة بين اللغات البرمجية، أعتقد أنّ المقارنة خاطئة تماما، فكلّ لغة برمجية لديها عيوبها ومميزاتها، ونقاط القوة ونقاط الضعف الخاصة بها، وكل مجال من مجالات التقنية له لغات برمجية خاصة بها، مثلما ذكرت في تطبيقات الهاتف بحيث سيكون تعلم لغات لا دخل لها بهذا المجال مضيعة للوقت، ربما سيكون زادا إضافيا للمتعلم بحيث يطلع على تلك اللغة وتضاف إلى رصيده المعرفي البرمجي، إلا أن المتخصص في مجاله لن يستفيد منها في تخصصه.
بالتأكيد أخي محمد، حتى أن بعض الأشخاص يراه إنجازا بتعلمه للغات برمجة كثيرة و لكن فالحقيقة هو متعلم الأساسيات فقط من كل لغة و إذا تعمقت معه في أحد اللغات ستجده لا يتقنها أصلا.
لا أحبّذ في الحقيقة البداية في تعلّم البرمجة من جافا سكريبت، ولكن لماذا؟ للعديد من الأمور منها أنّها لغة بسرعة بطيئة، بايثون بطيئة ببطئ مماثل برأيي ل C مثلاً أو ++C وطبعاً هي ليست فعالة مثل بعض اللغات الأخرى، هذا يسبب مشكلة إذا كان المبتدئ حصراً يقوم بتطوير تطبيقات حساسة للأداء ومشاريع معقّدة، أمّا الأهم طبعاً وهو السبب الذي يجعلني أقول بأنّ الأفضل أن يبدأ أي مبتدئ من الجافا سكريبت لا من بايثون هو أن بايثون لا تستخدم على نطاق واسع في الصناعة مثل بعض اللغات الأخرى، لا يتم استخدام لغة بايثون مثل Java أو ++C وهذا يمكن أن يزيد من صعوبة العثور على الوظائف التي تستخدم بايثون، طبعاً هنا مرّةً أخرى أتحدّث عن المبُتدئ.
لإنّ أي محترف برمجة لا يمكن أن يعيقه نهائياً تحصيل أي وظيفة عندما يحيط فعلاً بهذا الأمر، حتى مكتبة بايثون الكبيرة جداً لا تعدّ بالنسبة لهُ مرهقة حتى ويمكنه أن يستوعبها مباشرةً، لذا إذا كان الاختيار والنصيحة التي أقدّمها منّي لشخص مبتدئ، أنصحه بأن يبدأ من جافا سكريبت وأن يدع بايثون لفترة لاحقة مقبلة، على الأقل بعد أن يعرف كيف يتعامل مع لغة برمجية متداولة جداً غير بايثون.
اختيار لغة البرمجة المناسبة للبداية يمكن أن يكون قرارًا مهمًا ومؤثرا على مسار تطويرك في مجال البرمجة. الجوانب المختلفة تلعب دورًا في اختيار اللغة المناسبة، بما في ذلك الصعوبة، وسهولة التعلم، والاستخدامات المتاحة، والفرص الوظيفية، ومجتمع المطورين. إليك نظرة عامة على كل من JavaScript وPython واستخداماتهما:
JavaScript:
- صعوبة التعلم: JavaScript هي لغة برمجة شائعة ومستخدمة على نطاق واسع في تطوير الويب. لهذا السبب، من الممكن أن تواجه بعض التحديات في التعلم، ولكنها ليست مستحيلة. تعتبر أساسية للعمل على الجانب الأمامي (Front-end) والجانب الخلفي (Back-end) في تطوير الويب.
- استخدامات: JavaScript تستخدم بشكل رئيسي في تطوير تطبيقات الويب وتحسين تجربة المستخدم على المتصفحات. يمكنك استخدامها لإنشاء واجهات مستخدم تفاعلية (مع HTML وCSS)، وتطوير تطبيقات الويب الحديثة باستخدام إطارات عمل مثل React وAngular وVue.js.
Python:
- صعوبة التعلم: Python تعتبر من بين أسهل لغات البرمجة للتعلم، حيث تركز على القراءة والكتابة بشكل واضح وبسيط. يعتبر تنظيف الكود وهوية Python الواضحة جزءًا من سحرها.
- استخدامات: Python مستخدمة في العديد من المجالات مثل تطوير تطبيقات الويب باستخدام إطارات مثل Django وFlask، وتطوير تطبيقات سطح المكتب، وتطوير تطبيقات البيانات والذكاء الاصطناعي باستخدام مكتبات مثل NumPy وPandas وTensorFlow، والتحليل الإحصائي، والأتمتة، والعديد من المجالات الأخرى.
ولذلك فإن هدفك من التعلم هو ما يحدد ما تريد أن تتعلمه، انظر ما الذي تريد أن تكونه، ثم قم بإختيار المسار المناسب لذلك.
حينما قرأت مساهمتك للوهلة الأولى تذكرت مناقشتي مع أحد أصدقائي حينما قررت تعلم لغة برمجة بالرغم أنها لا تتعلق أبدًا بحياتي المهنية ولكن حب التجربة والتعلم لذلك كنت أتسائل من أين أبدأ ؟ .. حينها تحدث معي عن دراسته لأسهل لغات البرمجة في السنة الأولى وهي البايثون وفي السنة الثانية يبدأ بدراسة اللغات الآخرى مثل سي شارب أو جافا سكريبت وغيرها حينها قررت تعلم الأسهل في البداية ولكن إذا كان الأمر يتعلق بحياتك المهنية أيضًا فهنالك عدة عوامل بما في ذلك مجالات الإهتمام الخاصة بك، مستوى خبرتك، متطلبات المشاريع التي تعمل عليها فعلى سبيل المثال إذا كان هدفك الأساسي تطوير تطبيقات ويب والعمل على الجانب الأمامي، فجافا سكريبت هو الخيار المناسب. أما إذا كنت تبحث عن لغة سهلة التعلم ومناسبة لتطوير تطبيقات ومشاريع متنوعة، فبايثون قد يكون الخيار الأفضل. برأيي في ظل التأثير الكبير الناجم عن الذكاء الإصطناعي على سوق العمل خصوصًا فيما يتعلق بالبرمجة أرى أن الأفضل إذا كنت مبتدئًا يمكنك أن تبدأ بتعلم البايثون أولاً لأنها الأسهل على الإطلاق سيعطيك ذلك دفعة فيما بعد يمكنك تعلم جافا سكريبت .. تعلم أكثر من لغة يمكن أن يزيد من مرونتك وفرصك في سوق العمل فيما بعد.
آراء المختصين من كلا الجانبين هي آراء ممتازة، ليس من المهم حقًا اللغة التي سوف تبدأ بتعلمها. ولكن برأيي الشخصي، ابدأ بالبايثون.
إذا كان هدفك الرئيسي من تعلم البرمجة هو تطوير الويب والمواقع الإلكترونية، فيمكنك أن تبدأ بالجافاسكريبت. ولكن البايثون بشكل عام هي لغة ممتازة جدًا للبدء في تعلم البرمجة، وهي أسهل من الجافاسكريبت.
الإختيار يعتمد بشكل كبير على احتياجاتك الشخصية والمجال الذي ترغب في العمل به. لذا، يمكنك أن تبدأ بإحدى اللغتين وتتعلم الأخرى في وقت لاحق إذا رغبت في ذلك. كلا الاختيارين لهما فوائد مميزة ويمكن أن يساعدانك في تحقيق أهدافك المهنية.
إذا كنت تهتم بتطوير تطبيقات الويب وتعلم مجال الويب عموماً، فإن JavaScript هي لغة أساسية يجب أن تتعلمها. تستخدم JavaScript على نطاق واسع في تطوير الواجهات الأمامية للمواقع وتطبيقات الويب التفاعلية. إضافة إلى ذلك، يمكن استخدام JavaScript أيضًا على الجانب الخادم باستخدام Node.js لتطوير تطبيقات الخادم. ستجد أيضًا العديد من إطارات العمل المشهورة التي تعتمد على JavaScript مثل React.js وAngular.js وVue.js.
لذلك إذا كنت مهتم بمجال الويب فيعتبر تعلم JavaScript ضرورياً
أما إذا كنت مهتم بمجال الذكاء الإصطناعي أو علم البيانات وغيرها الكثير من الأمور فالأفضل هو بايثون لذلك يفضل تحديد المجال الذي ترغب في العمل به أولاً
اولاً تلك المقولة مع إحترامي الشديد لا تصح والخلاف شيء طبيعي، على أي أساس تصح تلك المقولة ولغة جافاسكريبت لغة عالية المستوى تم عمل تجريد abstraction للكثير من الأشياء بها دون علمك بما يحدث في الخلفية وأمور أخرى لا تستطيع فعلها على عكس لغة متوسطة المستوى مثل C++.
وأقصد بالمستوى هنا قربها من لغة الآلة وتحكمها في الهاردوير.
وستجد هنا شرح لما أقصد فقد تحدثت عن ذلك من قبل:
وإذا أردت تعلم البرمجة فتستطيع تعلمها من خلال أي لغة تريد ولا يقتصر الأمر على لغة واحدة، لكن من الأفضل تعلمها من خلال لغة مستخدمة ومطلوبة حتى لا تهدر وقتك.
والأمر يعتمد على المجال الذي تريد التخصص به.
فإذا كنت لم تحدد المجال بعد، فعليك بتعلم أساسيات البرمجة من خلال C++ وفي حال كانت صعبة عليك ولا مشكلة في ذلك، تستطيع تعلم بايثون وهي من اللغات المطلوبة بشدة حاليًا.
أما إذا كنت قد حددت مجالك وهو تطوير الواجهة الأمامية، فعليك بتعلم جافاسكريبت والتعمق بها، وأيضًا من خلال جافاسكريبت يمكنك تطوير تطبيقات الهاتف عن طريق React Native وأيضًا تطوير الواجهة الخلفية من خلال بيئة عمل node.js.
ولكل لغة استخداماتها وأفضلية لها في شيء معين لأنها مخصصة لذلك الغرض، ومن غير الممكن أن تجد مبرمج محترف حقًا يخبرك أن هناك لغة أفضل من لغة إلا مع ذكر السبب الذي تريد استخدام تلك اللغة من أجله.
إن الاقتصار على إجادة لغة برمجة واحدة أشبه بشخص تقوقع بداخل غرفته؛ فهو يجهل ما يدور في منزله ويفتقر للإحاطة بما يحدث بعالمه من متغيرات وفي النهاية، سيكون أقرب إلى كيان أحادي الخلية؛ فمن ناحية، سيظل هيكله غضا لضعف خبراته وسيبقى بعيدا عن الأعين حتى موته
وفي حال كانت صعبة عليك ولا مشكلة في ذلك، تستطيع تعلم بايثون وهي من اللغات المطلوبة بشدة حاليًا.
لاحظت بتعليقات معظم الزملاء شبه إجماع على سهولة لغة البايثون نسبيا، وها أنت مصطفى تُزيد أنها الأكثر طلبا، فلماذا لا نصرح بأنها الأفضل كبداية، فعن نفسي بعد قراءة إستخدامات ومزايا كل لغة، أميل أكثر لتعلم لغة البايثون.. لكن الميول تختلف بالطبع، وربما يكن إختيار البعض لا يعتمد فقط على السهولة وكثرة الطلب!
معك حق، لكن أنا لا أحب الإجابات المعلبة التي تصلح للجميع، كل شخص له ظروف مختلفة عن الآخر وخبرات وخلفيات مختلفة، لذلك لا يوجد إجابة تصلح للجميع، اشرح لي ظروفك وماذا تريد أقل لك ما الأنسب لك، فالبعض لا يناسبه دراسة بايثون كبداية والبعض الآخر من الأفضل له ذلك.
دراسات الأساسيات لا مشكلة بها لكن التعمق ذلك أمر آخر.
إن لغة Python موجزة وسلسة الاستيعاب ولذلك، فإنها الأفضل بين أواسط المبرمجين المبتدئين. يستخدمها المبرمجون لكتابة برامج نصية كما أنها ملائمة لأغراض عديدة.
مما تمتاز به لغة Python أن لها تعليمات برمجية يستطيع المبتدئون تضمينها عند بداية مشروعاتهم كما أن هناك مكتبات متنوعة أضافت إلى لغة Python الكثير من الوظائف مما جعلها من بين أفضل لغات البرمجة في مجالات علوم البيانات المالية ومعالجة الصور ولذلك، أنصحك بأن تبدأ بها وأدعوك للمشاركة بدوراتها وإذا كنت مجيدا للغة الإنكليزية، أدعوك لمطالعة الرابط أدناه والذي سيبين بيسر مفاهيم البرمجة الأساسية باستخدام إصدار Python الأخير وسيتيح أمامك قراءة كتاب يشتمل على كافة ما تتطلبه لإتمام المسار
هناك فرق بين اللغتين و لكل واحدة استخداماتها
لكن اطار django ممتاز
كنصيحة يمكنك اعتماد بايثون اولا و بعد ذلك تعلم اساسيات جافا سكريبت
لا أعرف صراحةً لماذا رشحوا لك جاڤا سكريب مباشرةً هكذا، الأمر يعتمد على نوع الغرض الذي لأجله تريد تعلم البرمجة، فلو كنت تريد تعلمها لتكون مطور تطبيقات الويب والتفاعلات الأمامية فأجل جافا سكريبت ستكون رائعة قبل بايثون.
وأما إذا كنت تريد برمجة برامج تحليلات بيانية، أو مهتم بالذكاء الاصطناعي فبايثون هي التي تتعلمها قبل جاڤا اسكريبت.
ولا تستمع لمقولة أحد مرة أخرى، فهذه الأقوال المأثورة سطحية للغاية ولا تأخذ في اعتبارها مليارات المتغيرات حولنا.
وآه قبل أن أنسى، لا تبدأ في تعلم لغة برمجة دون أن تفهم أصلًا ما هو الكمبيوتر، وما هو الإنترنت، وما هي الخوارزميات، هذه الأساسيات أهم من لغات البرمجة كلها.
يقول الزيرو في دورته التدريبية وهو أحد أهم أعلام البرمجة في مصر الوطن العربي:
"لغة بايثون يمكنها عمل الكثير والكثير، ولكن يجب أن تعرف أنه ليس الخيار الأمثل بمعنى يمكنك عمل لعبة أندرويد بواسطة لغة Python، ولكن هذا ليس معناه أنها أحسن من أن تقوم بعملها بواسطة لغة Java أو بواسطة أي اطار عمل لعمل ألعاب الموبايل والفكرة هنا هو امكانية اللغة فقط وكذلك الحال في تطبيقات ال Web حيث أنه يمكنك عمل تطبيقات ويب أسرع وأسهل بلغة PHP لكن الفكرة العامة هنا والميزة أنه بتعلمك لغة Python يمكنك بواسطة نفس بنية اللغة أن تقوم بعمل الكثير.
أيضا عند ذكر شركة معينة تستعمل لغة Python فليس معناها أن الشركة اعتمادها الكلي على اللغة فقط ولكن حيث أن لغتنا هي لغة Integrated يمكنك دمجها مع لغات أخرى مثل لغة C فإن الشركات تعتمد عليها بجانب برمجيات أخرى وليس وحدها في أغلب الأحيان."
بناءًا على لك أتفق مع الأصدقاء الذين يرشحون لك بايثون.
بالضبط!
ان تحديد استخدامات هاتين اللغتين واختيارك لمجال معين بعدها، هو ماسيساعدك في الاختيار.
هذا ببساطة لأنك تقارن بين لغتين من أهم لغات البرمجة الموجودة على الساحة اليوم، ومايلي مقارنة بين استخدام كلتا اللغتين:
- لغة الباثيون:
- تطوير الواجهات الخلفية للويب، وذلك باستخدام Django للمشاريع الأكبر، و Flask للمشاريع الأصغر.
- تعلم الالة بواسطة Numpy, Pandas, scikit-learn حيث تعتبر لغة بايثون رائدة في هذا المجال.
- الذكاء الصطناعي، وذلك باستخدام pytorch او tensorflow.
- لغة الجافاسكريبت:
- تطوير الواجهات الامامية بلا منافس يعد اختصاص لغة الجافاسكريبت، وهذا يشمل بناء تطبيقات الصفحة الواحدة (single page application) وغيرها من التطبيقات بواسطة مكاتب هذه اللغة، مثل مكتبة React او Vue او Angular او غيرها.
- تطوير تطبيقات الموبايل على عدة أنظمة، مثل اندرويد و ios سويا بواسطة هذه اللغة باستخدام React-Native او غيرها.
- بناء تطبيقات يتم تحديثها انيا بدون اعادة تحديث للصفحة، مثل تطبيقات المحادثة مثلا. (تخيل عند استلامك لكل رسالى أن تقوم باعادة تحميل الصفحة بأكملها!)
التعليقات