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

StackOverflow https://stackoverflow.com/questions/2399471

  •  25-09-2019
  •  | 
  •  

سؤال

الآن أنا أعاني من مقدمة معهد ماساتشوستس للتكنولوجيا إلى دورة علوم الكمبيوتر عبر OpenCourseware. كجزء من هذه الدورة ، أتعلم لغة بيثون.

لقد قرأت الكثير من الأشياء حول فوائد التعلم C. قبل أن أحفر أي أعمق في Python ، أتساءل عما إذا كنت سأعوق أو ساعد في تعلم Python أولاً.

هل تعتقد أنني سأطور أي عادات سيئة أو أي شيء من هذا القبيل من بيثون؟

تحرير: تم تغييره إلى مجتمع ويكي ، بسبب الطبيعة الذاتية للسؤال.

أنا أقدر كل الإجابات الرائعة على سؤالي الأول. أنا في الواقع في مهب من صدق الإجابات/التعليقات. شكرا جزيلا الجميع!

هل كانت مفيدة؟

المحلول

متحدثًا من 37 عامًا من العمل في الله يعرف عدد اللغات ، يمكنني أن أخبرك أن العمل في بيثون يسمح لك بالتركيز بالكامل تقريبًا على تصحيح الخوارزمية ولا تقلق تفاصيل. لقد كتبت على الأرجح 300-400،000 سطر من C في حياتي والطريقة الوحيدة التي كان يمكن تحملها في الأساس لإنشاء بيئة OO الخاصة بي.

C لها استخداماتها ، لكن في هذه الأيام تميل إلى أن تكون إما إلى أ) تتيح لك الاقتراب من قطعة من الأجهزة ، أو ب) التعامل مع حلقة ضيقة حقًا. إذا وجدت حاجة إليها ، فابحث عن أداة مثل Swig أو SIP لدمج C في Python.

نصائح أخرى

لأسباب تاريخية ، كانت C هي اللغات الأولى التي تعلمها العديد من المبرمجين ، ولا سيما هؤلاء من الجيل السابق. ومع ذلك ، فقد تعلم الكثير منهم (بما في ذلك هذا الجيل الأكبر) لأول مرة لغات أو عدة لغات أخرى ، عادةً ما يكون لها مستوى أعلى من التجريد (الأساسي ، lisp ، pascal ، على سبيل المثال لا الحصر) قبل التعلم C.

كنت من النوع الأخير (أي لم تكن لغتي "الأم" ، رغم أنني أتقنت التجميع في وقت مبكر جدًا) ، وأنا مقتنع تمامًا بـ العديد من الفوائد المرتبطة بـ "جولة" جادة في لغة C., ، على الرغم من أنه على الرغم من عدم التطبيق العملي ، فإن الكثير منا لن يقوم أبدًا برمجة الكثير من أي نتيجة في هذه اللغة. وقال هذا، لا أرى أي سبب مقنع لجعل c يكون لك أول اللغة ، أو أي inkling التي يتقن بيثون (أو مقدمة أو ...) بطريقة أو بأخرى من شأنها أن تضعف قدرات البرمجة على أساس العقد القادم ...

لذلك نصيحتي: استمتع بايثون ، خذها!
عندما تشعر بالبرمجة ، قم بعمل نقطة لتعلم C في وقت ما. إنه ذو صلة بشكل خاص في المناهج الدراسية التي تتضمن أنظمة كتابة و/أو تشغيل برنامج التحويل البرمجي ، وكما قيل ، ذات الصلة بطرق عديدة أخرى. سترى ذلك بخلاف "السطح"/القولات النحوية المحتملة (هذه تحدث طوال الوقت ، على الأقل بالنسبة لي ، عند تعلم لغة جديدة أو العودة إلى لغة قديمة ، بعد تعرضها لشيء آخر ل بينما) ، لا ينبغي أن تواجه أي مشاكل مع C ، على الأقل لا توجد مشاكل مرتبطة بتعلم اللغات الأخرى.

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

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

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

أعتقد أن آلام الانتقال من Python إلى C ستكون أشبه "لماذا يجب علي فعل كل هذا؟ في Python سأقوم في خط واحد!"

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

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

بالإضافة إلى ذلك ، فإن كتابة خدمة متعددة الخيوط من نوع ما في C ستجعلك حقًا نقدر فقط كيف بيثون المحمولة حقا.

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

إخلاء المسئولية: أنا في الغالب أستخدم C.

يجب أن تبدأ في مكان ما ، والبيثون هو خيار جيد لمبرمج البداية: لا تحتاج إلى استخدام برنامج التحويل البرمجي (-> سهل الاستخدام) ، يحتوي على مكتبة غنية (-> يمكنك إنجاز الكثير) ، وهو موجه نحو الكائن (الدفق الرئيسي هذه الأيام). لذلك يتم تقليل الإحباط الذي يمكن تجنبه في هذا الصدد. ولكن ضع في اعتبارك دائمًا أن هناك الكثير من اللغات الأخرى هناك ، وأنه يجب عليك تعلمها أيضًا. إذا كنت ترغب في أن تصبح مبرمجًا وكسب المال ، فأنت بحاجة إلى (على الأقل) التقاط C ++ أو Java أو C# بعد Python.

سؤال جيد! تذكر دائمًا أن مهارات البرمجة الخاصة بك يجب ألا تعتمد على اللغة أبدًا. على الرغم من أن C هي لغة مثالية للتعلم عندما يتعلق الأمر بعلوم الكمبيوتر. لديك 4 مستويات عندما يتعلق الأمر بالبرمجة وعادة ما تقدم كل دورة دراسية للطلاب الجامعيين هذه المواضيع:

  1. البرمجة الإجرائية
  2. البرمجة الشيئية
  3. البرمجة مع هياكل البيانات
  4. أنماط التصميم **

عليك أن تذهب خطوة بخطوة. إتقان كل هذه المستويات الأربعة. ثم في نهاية اليوم ، عليك أن تقرر ما تريد فعله حقًا ، وبعد ذلك سيكون لديك معرفة كافية ما هي الميزات التي يجب أن تستخدمها للمشكلة. C هي لغة العديد من أنظمة التشغيل بما في ذلك UNIX و Linux و Windows. لا يمكن مطابقة قوة مؤشرات C بأي لغة حتى الآن. بيثون هي لغة جيدة ولها فوائدها الخاصة. إحدى النصائح المهمة التي يمكنني تقديمها في هذه المرحلة هي "بناء الجملة". في البداية ، يجب أن تتقن لغة C واكتساب معرفة عملية بسيطة من Python أيضًا. عندك تشعر بالراحة مع C ، سيكون من الأسهل عليك أن تقوم برمجة في C ++ و C#و Java و PHP. ولكن إذا بدأت من Python مباشرة ، فقد لا تشعر بالراحة مع اللغات القائمة على C_Syntax. راقب أيضًا اتجاهات الصناعة والتطورات في البرمجة. لكن التمسك بما تعلمك دورات الدراسات الجامعية.

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

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

  • تنفيذ سريع للغاية (Swig ، Cython ، Psyco ، Pypy ، Unladen-Swallow ، إلخ)
  • المنصات التي لا يوجد فيها وقت تشغيل Python (ولكن هذه نادرة)
  • الطلب على التزامن متعدد النواة العالي (يمكن أن يتعامل VMs المختلفة مع هذا) مع هذا)

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

بيثون لديه فوري يجعل من السهل التعلم. بيثون لسهولة ، ج (واللغات ذات الصلة) للسلطة.

كما ذكر السؤال: لا. لا تتعلم C أولاً. تعلم بيثون.

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

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

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

لا أعتقد أنك ستصبح معيبًا بشكل أساسي من خلال تعلم Python أولاً. هناك الكثير من الفوائد لتعلم لغات البرمجة المتعددة ، والبيثون نفسها طريقة مثيرة للاهتمام لاستكشاف ذلك. على سبيل المثال ، إذا كان لديك بعض مشكلات الأداء مع Python ، فيمكنك استكشاف كتابة بعض أجزاء الكود الخاص بك في C (أو Pyrex/Cython أو Fortran وما إلى ذلك) ثم تعبئتها وجعلها قابلة للاستخدام في رمز Python الخاص بك.

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

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

في العالم الآن هناك درجة معينة من بيثون "Fanboysm". يعتقد المزيد والمزيد من المبرمجين (بعضهم محترمين للغاية) أن بيثون هو الحل لجميع مظالمهم. بعد رؤية مدى "Cool" Python ، يبدأون في تبشير اللغة ، بدرجة ذهانية ، وينكرون الحقيقة الواضحة: Python ليس المقصود لكل شيء / الجميع.

إذا كنت ستتبع مسار Python ، فمن المحتمل أن تقوم بتطوير رد فعل إضافي: "دعونا ننظر إلى المكتبات لمعرفة ما إذا لم يتم ذلك بالفعل." ، وبعد فترة من الوقت ، عندما يحين الوقت ، وعليك أن تتعلم C ، ستقول يائسة: "لا أستطيع أن أصدق أنني يجب أن أكتب قراري الخاص باستخدام بعض المؤشرات الفاخرة لعقد بياناتي! ما هي هذه اللغة C على أي حال؟!"

بعد أن تم تدريسه C/C ++ كأول لغة برمجة لي في عام 1996 عبر Borlands Turboc ++ 1.0 (الشاشة الزرقاء والنص الصفراء) يمكنني أن أوصي بجدية بتعلم شيء ما (في هذه الحالة Python) بخلاف C. هل تريد معرفة المزيد عن تفاعل الأجهزة (التطوير المدمج ، وكتابة السائقين ، وما إلى ذلك)

وفقًا لـ HanselMinutes Podcast ، تم كتابة برنامج التحويل البرمجي VB.NET في C بحيث لا يزال لديه استخدامات.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top