[c#] لماذا نتعلم Perl أو Python أو Ruby إذا كانت الشركة تستخدم C ++ أو C # أو Java كلغة للتطبيق؟


14 Answers

اسمحوا لي أن أدير سؤالك على رأسه من خلال سؤال ما هو الاستخدام لمتحدث اللغة الإنجليزية الأمريكية لتعلم لغة أخرى؟

اللغات التي نتحدث بها (وتلك التي نبرمج بها) تخبرنا بالطريقة التي نفكر بها. يمكن أن يحدث هذا على مستوى أساسي ، مثل c ++ مقابل javascript مقابل lisp ، أو على مستوى التنفيذ ، حيث يوفر بناء الياقوت لحظة eureka لحل في "عملك الحقيقي".

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

وأخيرا ، أنت برنامج لقمة العيش لأنك تحب البرمجة ... أليس كذلك؟

Question

أتساءل لماذا تريد C ++ ، C # ، مطور جافا تعلم لغة ديناميكية؟

بافتراض أن الشركة لن تغير لغتها التطويرية الرئيسية من لغة C ++ / C # / Java إلى لغة ديناميكية ، ما هو الاستخدام هناك للغة ديناميكية؟

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

تحديث

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




تحرير: كتبت هذا قبل قراءة التحديث على السؤال الأصلي. انظر إجابتي الأخرى للحصول على إجابة أفضل للسؤال المُحدث. سأترك هذا كما هو بمثابة تحذير من كونه أسرع بندقية في الغرب =)

قبل عقد من الزمان ، عندما كنت أتعلم طرق الكمبيوتر ، أوضح الرجال الحكيمون القديمون مع اللحية كيف أن C و C ++ هي أدوات الصناعة. لم يستخدم أي شخص باسكال ، ولن يخاطر سوى المتهورون بشركاتهم بالمجمّع.

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

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

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

وبالطبع ، ستحصل على المزيد من الأشياء باستخدام لغة عالية المستوى.




في كثير من الأحيان ، يتم تضمين اللغات الديناميكية (خاصة python و lua) في البرامج لإضافة وظائف شبيهة بالمكونات الإضافية ولأنها لغات عالية المستوى تسهل إضافة سلوك معين ، حيث لا تكون هناك حاجة إلى لغة منخفضة / متوسطة المستوى .

ويفتقر Lua بشكل خاص إلى جميع مكالمات النظام ذات المستوى المنخفض نظرًا لأنه تم تصميمه لسهولة الاستخدام لإضافة وظائف داخل البرنامج وليس كبرمجة عامة.




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

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




نظرًا للتركيز المتزايد على تشغيل اللغات الديناميكية (da-vinci vm الخ) على JVM والعدد المتزايد من اللغات الديناميكية التي تعمل عليها (JRuby، Grrovy، Jython) أعتقد أن حالات usecases في تزايد. بعض السيناريوهات التي وجدتها مؤثرة حقًا

  1. استخدام النماذج الأولية - استخدام RoR أو Grails لإنشاء نماذج أولية سريعة مع ميزة القدرة على تشغيلها على خادم التطبيقات القياسي و (ربما) إعادة استخدام الخدمات الحالية وما إلى ذلك.

  2. الاختبار - اختبارات الوحدة اليمنى أسرع بكثير في اللغات الديناميكية

  3. البرمجة النصية لاختبار الأداء / التنفيذ التلقائي - بدأت بعض هذه الأدوات في السماح باستخدام لغة ديناميكية قياسية للاختيار لكتابة النصوص البرمجية للاختبار بدلاً من لغات البرامج النصية الخاصة. قد تكون الفائدة الجانبية هي القدرة على إعادة استخدام بعض كود اختبار الوحدة الذي كتبته بالفعل.




أنا شخصياً أعمل على تطبيق Java ، لكنني لم أتمكن من الحصول عليه بدون بيرل لبعض البرامج النصية الداعمة.

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

بالتأكيد أستطيع أن أفعل كل ذلك مع java ، أو ربما نصوص shell (لقد حصلت على بعض هذه أيضا) ، ولكن من يريد تجميع فصل دراسي (التأكد من أن يتم تعيين classpath بشكل صحيح الخ) عندما تحتاج فقط إلى شيء سريع وقذرة. يمكن معرفة لغة البرمجة النصية إزالة 90٪ من تلك المهام اليدوية المملة / المتكررة.




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

عرض رئيسك في العمل التجريبي مثل "مهلا ، لقد فعلت هذا الشيء ، وهذا يوفر لي الكثير من الوقت [أو الأفضل من ذلك بكثير ، هذا بكثير $$] ، تخيل لو أن كل شخص يمكنه استخدام هذا المبلغ من المال الذي نوفره"

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




إذا كان كل ما لديك هو مطرقة ، تبدأ كل مشكلة تبدو وكأنها مسمار.

هناك أوقات عند وجود مفك أو زوج من كماشة يجعل مشكلة معقدة تافهة.

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

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




أنا أساسا في برنامج جافا وجيم # ولكن استخدام لغات ديناميكية (روبي / بيرل) لدعم نشر أكثر سلاسة ، والشروع في مهام نظام التشغيل ، والإبلاغ الآلي ، وبعض تحليل السجل ، الخ

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

أيضًا ، من المفترض أن تساعدك تجربة مجموعة متنوعة من لغات البرمجة المختلفة في التفكير في طرق جديدة لمعالجة المشكلات في لغات أكثر تنظيماً مثل Java و C ++ و C #.




نشر بول غراهام مقالاً منذ عدة سنوات حول السبب الذي جعل المبرمجين في بيثون أفضل مبرمجين جافا. ( http://www.paulgraham.com/pypar.html )

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

لأقتبس موقع بول:

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

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

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




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

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




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

أما بالنسبة للمهام ، فإن Python / Lua / Ruby / Perl تعتبر رائعة للمهام البسيطة الصغيرة ، مثل البحث عن بعض الملفات وإعادة تسميتها. كما أنها تعمل بشكل رائع عند إقرانها بإطار عمل (مثل Rails، Django، Lua for Windows) لتطوير التطبيقات البسيطة بسرعة. ويستند Hell، 37Signals على إنشاء تطبيقات بسيطة ولكنها مفيدة للغاية في Ruby on Rails.




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




لا تخبر صاحب العمل أنك تريد تعلم روبي. أخبره أنك تريد التعرف على أحدث التقنيات في إطار عمل الويب. يحدث فقط أن الأكثر سخونة هي Django و Ruby on Rails.







Related