ينبغي .صافي المطورين حقا ** أن تنفق الوقت في التعلم ج ل انخفاض مستوى التعرض ؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

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

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

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

ربما أنا عالقة مع غير عادية مجموعة من الزملاء, لا أعرف, ولكن يبدو لي أن الكثير من الناس لا تبقي الوعي واعية أن C# أو VB البرمجية برمجيا في IL أولا قبل JIT يأتي يجعل الخام رمز الجهاز.معظمهم لا يعرفون IL, وليس لها مصلحة في كيفية بالضبط CLR مقابض رمز يكتبون.القراءة جيفري ريختر CLR عن طريق C# كانت صدمة بالنسبة لي في العديد من المجالات ؛ سعيد قرأتها على الرغم من الزملاء وصفته بأنه "مستوى منخفض جدا".أنا لست خبيرا في IL ولكن مع معرفة الأساسيات ، وجدت نفسي بعد النص أسهل كما كنت بالفعل على دراية مع كومة سلوك IL.أجد نفسي تفكيك الجمعيات إلى إلقاء نظرة على كيفية IL اتضح عندما أكتب بعض التعليمات البرمجية.

لقد تعلم CLR و MSIL لأنني أعرف أن مباشرة طبقة أدناه لي.الطبقة التي يسمح لي القيام بلدي طبقة من العمل.ج ، هو في الواقع مزيد من الانخفاض.أقرب إلى "الواقع" هو CLR و MSIL.هذا هو السبب في أنني أوصي الآخرين أن يكون الذهاب في تلك لأنني لا أرى ما يكفي من الناس الخوض في تلك الطبقة.أو هو فريقك بالفعل كل ملما MSIL?

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

المحلول

أنا أعرف بالفعل C و التي ساعدتني خلال 1.1 أيام حيث هناك الكثير من الأشياء التي ليست في .صافي قاعدة المكتبات و يجب أن P/استدعاء شيء من Platform SDK.

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

نصائح أخرى

بالطبع يجب أن.أعظم وسيلة لتصبح بشكل مفرط المتخصصة واحدة في التفكير (وبالتالي حدت من المهارات القابلة للتسويق) هو أن تعمل فقط مع نوع واحد من اللغة و نبذ كل الآخرين مثل "لا علاقة المهمة الحالية الخاصة بك."

كل مبرمج يجب أن يكون لديك بعض الخبرة الحديثة JIT ان OO لغة (C#/Java), انخفاض مستوى أبسط لغة (C, FORTRAN, الخ), مستوى عال جدا تفسير لغة (Python, Ruby, الخ), و وظيفية اللغة (مخطط, Lisp, هاسكل, الخ).حتى إذا كنت لا تستخدم كل منهم في يوم إلى يوم الاساس توسيع عملية التفكير بك أن مثل هذه المعرفة المنح مفيد جدا.

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

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

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

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

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

أن تكون أكثر تحديدا -- أعتقد أن أي جيد/مبرمج عظيم يجب أن تعرف هذه الأشياء من خلال الخبرة المباشرة:

  • ما هو الفرق بين التسجيل و متغير ؟
  • ما هو DMA ؟
  • كيف بكسل على الشاشة (في مستوى منخفض)?
  • ما هي المقاطعات?
  • ...

معرفة هذه الأمور هو الفرق بين العمل مع النظام فهم و أن كل ما تعرفه يعمل عن طريق السحر.:)

لمعالجة بعض التعليقات

كنت في نهاية المطاف وجود اثنين من أنواع مختلفة من المطورين:

  • الناس يمكن أن تفعل شيئا واحدا في 10 طرق في واحد أو اثنين من اللغات
  • الناس يمكن أن تفعل شيئا واحدا في واحد أو اثنين من الطرق في 10 لغات مختلفة

أنا أعتقد بقوة أن المجموعة الثانية هي أفضل المطورين بشكل عام.

أنا أعتقد أنه من مثل هذا:

  1. المبرمجين ربما ينبغي أن يكون في الواقع العمل في أعلى مستوى اللغة المناسبة.ما هو المناسب يعتمد على السيناريو الخاص بك.برنامج تشغيل جهاز أو جزءا لا يتجزأ من النظام في فئة مختلفة من الخام سطح المكتب التطبيق أو صفحة ويب.
  2. كنت تريد الخاص بك المبرمجين لدينا الكثير من الممارسة ممكن في اللغة التي كانوا يعملون.
  3. لأن معظم المبرمجين ينتهي العمل في عام سطح المكتب و تطبيقات الويب ، تريد برمجة الطلاب على الانتقال إلى لغات المستوى العالي في أقرب وقت ممكن خلال المدرسة.
  4. ومع ذلك ، فإن ارتفاع مستوى اللغات obfuscate بضع الأساسية مشاكل البرمجة مثل المؤشرات.إذا كنا تطبيق مبدأ استخدام ما هو مناسب للطلاب وكذلك تلك أعلى مستوى اللغات قد لا تكون مناسبة طلاب السنة الأولى.التي يلقي بها Java, .صافي, الثعبان, وغيرها الكثير.
  5. لذلك يجب على الطلاب استخدام C (أو الأفضل من ذلك:C++ لأنه "مستوى أعلى" و يغطي أكثر من نفس مفاهيم) السنة الأولى أو الثانية من المدرسة إلى تغطية المفاهيم الأساسية ، ولكن التحرك بسرعة تصل إلى مستوى أعلى من لغة إلى تمكين أكثر صعوبة برامج في وقت سابق.

أن تكون متقدمة في كتابة C#, تحتاج إلى فهم المفاهيم في C ، حتى لو كنت لا تعلم اللغة المناسبة.

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

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

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

أشعر تعلم C هي لغة جيدة لمعرفة المزيد عن انخفاض مستوى المفاهيم دون ألم الترميز في الجمعية.

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

لذلك أنا أقول أن تتعلم عن CLR و MSIL على وظيفة إذا هذا المجال الخاص بك في وقت فراغك حاول التقاط لغة مختلفة مرة كل ذلك في كثير من الأحيان.إذا كان هذا يحدث أن تكون ج هذه السنة جيدة بالنسبة لك و الاستمتاع باللعب مع مؤشرات ;)

أنا لا أرى أي سبب لماذا ينبغي.لغات مثل جافا و C# تم تصميمها حتى أن كنت لا داعي للقلق حول انخفاض مستوى التفاصيل.هذا هو نفس كمن يسأل ما إذا كان WinForms المطور يجب أن قضاء بعض الوقت في تعلم Win32 API لأن هذا هو ما يحدث تحتها.

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

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

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

و من الجهة الأخرى, أعتقد أن الجميع يجب أن تعرف قليلا من شيء مثل هاسكل أو لثغة للحصول على فكرة عن مستوى أعلى من الاشياء (ونرى بعض الأفكار التي أدخلت في C# 3 في نظافة شكل)

إذا كنت تعتبر نفسك مبرمج, وأود أن أقول نعم ، تعلم C.

كثير من الناس الذين يكتبون رمز لا يعتبرون أنفسهم المبرمجين.أنا أكتب .صافي تطبيقات ربما 3 ساعات يوميا في العمل, ولكن أنا لا أسمي نفسي "مبرمج." أفعل الكثير من الأشياء التي لا علاقة لها مع البرمجة.

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

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

ينبغي .صافي المطورين أن تعلم C ؟ أود أن أقول "ليس بالضرورة" ، ولكن يجب أن يكون دائما تجريب في بعض اللغة خارج لدينا المهنية البيليفية لأن كل لغة يجلب معه طريقة جديدة من التفكير في المشاكل.خلال حياتي المهنية مثل .صافي (و قبل ذلك VB 2-6) المطور كتبت المشاريع الصغيرة في باسكال, LISP, C, C++, PHP, JavaScript, Ruby, و الثعبان و أنا حاليا تجريب في لوا و Perl.

بخلاف C++, لا أذكر أي منهم على السيرة الذاتية الخاصة بي لأنني لا تبحث أن تكون محترف في أي منها.بدلا من ذلك, أحضرت الأفكار المثيرة للاهتمام من كل واحد منهم إلى استخدام في بلدي .صافي القائم على العمل.

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

على CLR هو الظاهري آلة إذا كنت تعلم, إذا كنت تعرف فقط ما يحدث على المستوى الظاهري.

التعلم ج سوف تتعلم المزيد عن المادية آلة بقدر استخدام الذاكرة يذهب ، والتي كما ذكرت هو ما CLR يستخدم تحتها.تعلم كيف CLR يعمل لن تعطي لك الكثير من التبصر في, قول, جمع القمامة, كما تعلم C.مع C ، حقا نقدر ما تشارك في إدارة الذاكرة.

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

مسألة التعلم ج أو MSIL ، أو هو أكثر جوهريا ؟ أود أن أقول أن أكثر المطورين يمكن أن يقف لمعرفة المزيد حول كيفية أجهزة الكمبيوتر, المادية أو الظاهري العمل.يمكن للشخص الحصول على أن يكون إلى حد ما المختصة مبرمج فقط فهم اللغة و API في صندوق.اتخاذ المهنة إلى المستوى التالي ، أشعر أن المطورين حقا بحاجة إلى فهم كامل المكدس.ليس بالضرورة في التفاصيل ، ولكن في الكافي عمومية للمساعدة في حل المشاكل.

الكثير من هذه المهارات هي التي يجري الحديث عنها هنا يمكن الحصول عليها من خلال تعلم المزيد عن المجمعين و تصميم اللغة.ربما كنت بحاجة إلى أن نتعلم ج للقيام بذلك (يصيح ، متستر) لكن المترجم كتابة كبيرة السياق لتعلم C في.ستيف Yegge يتحدث عن هذا على بلوق وأنا إلى حد كبير أتفق معه في هذه النقطة.بلدي مترجم كتابة الحال في جامعة واحدة من الأكثر العين وفتح دورات لقد اتخذت من أي وقت مضى, و أتمنى حقا لو كان مستوى 200 الحال ، بدلا من 400 مستوى واحد.

أنا نشرت هذا في موضوع آخر ولكنه ينطبق هنا:

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

  • تعلم ما يكفي من المجمع إلى إضافة رقمين معا وعرض النتيجة على وحدة التحكم.سيكون لديك فهم أفضل بكثير من ما هو في الواقع يجري مع الكمبيوتر وسوف معنى لماذا نستخدم الثنائية/عرافة.(وهذا يمكن أن يتم في يوم و يمكن القيام به مع التصحيح من cmd.exe).
  • تعلم ما يكفي من C إلى تخصيص بعض الذاكرة واستخدام المؤشرات.بسيطة قائمة مرتبطة كافية.(وهذا يمكن أن يتم في يوم أو يومين).
  • قضاء المزيد من الوقت في تعلم اللغة التي كنت تنوي استخدامها.كنت اسمحوا الخاص بك مصالح توجيه لك إلى أي لغة (C#, Java, Ruby, Python, الخ.).
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top