برمجة الأولمبياد - هل تساعد في العمل الحقيقي؟ مسار الأبطال: لماذا البرمجة رياضة من القرن الحادي والعشرين .. الأولمبياد في البرمجة الرياضية.

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

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

لم يفت الأوان لبدء الدراسة في الصف 11. مثال رائع هو الشخص الذي لعبنا معه في نهائيات ACM ICPC معًا في العام الماضي. بدأ الانخراط بنشاط في الأولمبياد في الدورة الثانية (!) وحقق نتائج جيدة للغاية.

تعزيز أقل

يعتمد الكثير على المشروع. ترتبط معظم المشاريع (95٪) بأتمتة عمليات الأعمال والرسومات وما إلى ذلك. في مثل هذه المشاريع ، لا تلعب مهارات الأولمبياد أي دور عمليًا.

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

لذلك كل هذا يتوقف على نوع المشاريع التي لديك. لا يتعين على الغالبية العظمى من المبرمجين التعامل مع مثل هذه المشاريع.

تعزيز أقل

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

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

تعزيز أقل

, مبشر تكنولوجيا مايكروسوفت ، أستاذ مشارك في معهد موسكو للفيزياء والتكنولوجيا ، معهد موسكو للطيران ، مدرس في معسكر الأطفال JUNIO-R

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

هناك مثل هذا المفهوم - التأهيل الزائد. إذا كان لديك معرفة نظرية جيدة جدًا بعلوم الكمبيوتر ، فسوف تشعر بالملل من حل المشكلات اليومية ، ويمكنك فقط تحقيق إمكاناتك الكاملة في الشركات الكبيرة مثل Yandex أو Mail.ru أو Microsoft نفسها. لذلك ، ستكون دائرة أصحاب العمل الذين تهتم بهم أضيق إلى حد ما ، ولكن المهام التي يتم حلها ستكون أكثر إثارة للاهتمام وعالمية.

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

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

تعزيز أقل

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

تعزيز أقل

يجيب ستانيسلاف ، مقتطفًا منا ، على السؤال "هل صحيح أن النجاح في البرمجة (الرياضيات) الأولمبية يرتبط سلبًا بالعمل في الشركة؟ هل لديك الكثير من الأولمبياد في فريقك؟ "

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

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

تعزيز أقل

"لن نذهب إلى Facebook و Google": لماذا يعيش ويعمل بعض أفضل المبرمجين في العالم في يكاترينبورغ

مقابلة مثيرة مع الفائزين ببطولة البرمجة العالمية من جامعة الأورال الفيدرالية.

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

يتم شرح جزء من هذه الشعبية من خلال بعض سطور هذه المقابلة ، في رأيي:

"ولماذا بالضبط هذه المرة أظهرت UrFU أفضل نتيجة؟ هل اجتمعت النجوم معًا؟"

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

"ما هو أقرب إليك؟ شركة ناشئة أم شركة كبيرة؟"

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

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

"لنتحدث قليلاً عن البطولة نفسها. ثلاثة أشخاص في الفريق. كمبيوتر واحد. لماذا واحد؟ لماذا لا ثلاثة؟"

ميخائيل روبينشيك: قررت لجنة التحكيم ذلك. كان هذا قبل ثلاثين سنة.

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

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

حسنًا ، لا أفهم كيف يمكن أن تكون جذابة للغاية. البرمجة نشاط إبداعي. لم يكن هناك برنامج ، والآن هو كذلك. لا يمكنك أن تفعل شيئًا مع الكمبيوتر ، والآن يمكنك ذلك. هل يهم إذا استغرقت 20 دقيقة أو 40؟ هذا مجرد نوع من الجانب غير المثير للاهتمام.

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

بشكل عام ، هذا نوع من عالم غريب. لا تلوم أولئك الذين تم جرهم منه. لكني لم أفهم ولم أفهم.

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

  • شارك في نهائيات ACM ICPC ؛
  • تحدث نيابة عن الجامعة البيلاروسية ؛
  • أنهى دراسته بالفعل في الجامعة ؛

قام باختيار. والنتيجة هي قائمة تضم واحد وعشرون من المتأهلين النهائيين لـ ACM ICPC من روسيا البيضاء. تمكنا من الاتصال بمعظمهم وطرح ثلاثة أسئلة بسيطة:

  1. ما هو مكان عملك الحالي وما هو موقع / طبيعة العمل المنجز؟
  2. لماذا هذه الشركة / الاحتلال بالتحديد؟
  3. ما هي خططك للمستقبل ، كيف تراها بنفسك؟ إلى أين تريد أن تنتقل؟

أي منهم اختار مهنة إدارية ، ظل مخلصًا للبرامج الرياضية ، ومن طور خوارزميات البحث ، ستتعلم من "الكلام المباشر"المتأهلون البيلاروسيون في ACM ICPC.

إيفان ميكنيفيتش (ACM ICPC 2000)

  1. Wargaming Public Company Limited ، مدير.
  2. هذا هو نتيجة النمو في مجموعة الشركات منذ بداية حياتهم المهنية.
  3. في الواقع ، كل هذا متعب بالفعل وحان الوقت لبدء مهنة جديدة ، في مكان جديد ، في مجال جديد (على الأرجح ، وليس تكنولوجيا المعلومات).

سيرجي ستيبانتسوف (ACM ICPC 2000)

  1. أعمل حاليًا نائبًا للرئيس لتطوير الأعمال في شركة Intetics Co.
  2. ترتبط معظم حياتي المهنية بهذه الشركة بالذات ، وهنا تمكنت من تجربة نفسي في مجموعة متنوعة من الأدوار: لقد بدأت كأخصائي اختبار ، وعملت أيضًا كمبرمج ، ومدير مشروع ، ورئيس وحدة الإنتاج. ونتيجة لذلك ، تخصص في تطوير الأعمال.
  3. ما زلت لا أشعر بالعمر الكافي للتوقف عن تطوير نفسي :). أعتقد أن مستقبل الجزء التجاري من حياتي سيبهجك بالعديد من التقلبات المثيرة.

فلاديمير تانكوفيتش (ACM ICPC 2000، 2003)

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

أليكسي كيركوفسكي (ACM ICPC 2002، 2005)

  1. NT LLC "LuxSoft" ، مهندس برمجيات من الفئة الثانية.
  2. كنت أرغب حقًا في الذهاب إلى متجر موسكو الشهير لوكسوفت ، منذ أن حلمت منذ طفولتي بأتمتة الفتحة ، لكنني لم ألاحظ رسالة واحدة وانتهت في LuxSoft البيلاروسية. هناك ، دون النظر ، وقعت بعض قطع الورق ، وأعمل الآن على عقد لمدة 20 عامًا براتب ثابت بالروبل البيلاروسي ، وهو ما يكفي فقط للبنزين.
  3. أخطط لتلبية معيار عدد الخطوط لكل دقيقة وأصبح مهندس برمجيات من الفئة الأولى. ثم سأستلم CCM للبرمجة ، والتي سيتم تعيينها هنا ، إذا لم يكن هناك تأخير واحد للعمل طوال مدة العقد.

أليكسي دانشينكو (ACM ICPC 2002، 2005)

  1. NT LLC "LuxSoft". مهندس برمجيات. لقد قمت مؤخرًا بتطوير لغة برمجة خاصة بالمجال لمنتجنا.
  2. فرصة للعمل مع الأصدقاء على فكرة مثيرة للاهتمام.
  3. استمر في الاستمتاع بالحياة.

إيفجيني جونشار (ACM ICPC 2003)

  1. Google Switzerland (زيورخ) ، مهندس برمجيات أول. أنا أعمل على أحد مشاريع البنية التحتية للبحث على شبكة الإنترنت.
  2. منذ الطفولة كان يحب البرمجة.
  3. أود أن أتقدم في العزف على الغيتار الكهربائي وأذهب مرة أخرى إلى نيوزيلندا.

إيفان ميتلسكي (ACM ICPC 2003، 2004)

  1. TopCoder، Inc. ، منسق مشاكل الماراثون / الخوارزمية. إطلاق مسابقات Marathon و Algorithm على TopCoder.
  2. بمعنى ما ، حدث ذلك للتو. الأكثر جدية - دخل جيد ، وظيفة مثيرة للاهتمام نسبياً ، من الصعب العثور على بديل أفضل.
  3. خطط للمستقبل - لا يهم حقًا أين ، ولكن في مكان ما باتجاه عمل أقل إلى حد ما والمزيد من حرية العمل. ربما نوع من عملك الخاص ، وليس بالضرورة في مجال تكنولوجيا المعلومات.

فيكتوريا ليبيد (ACM ICPC 2004)

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

مكسيم أوسيبوف (ACM ICPC 2004)

  1. مدير VironIT. إدارة الأعمال (لا تعمل بشكل رئيسي ، ولكنها تهدف إلى تغيير عمليات البيع والتطوير وجودة العمل ، وما إلى ذلك)
  2. شركة VironIT ، لأن هذه شركتي ، أنا المالك. هذه مهنة (إدارة غير تشغيلية) ، لأن معرفة كيفية تطوير الأعمال هو الشيء الأكثر إثارة للاهتمام بالنسبة لي.
  3. طوّر شركتك ، وانتقل إلى نموذج المنتج ، ولديك عائلة ، وأطفال. إنني أرى المستقبل مثيرا للاهتمام وصعب ولكنه إيجابي بالتأكيد.

بافيل إيرزافسكي (ACM ICPC 2007، 2008)

  1. مدرس في BSU ، ومبرمج رياضيات في Orientsoft ، ومعلم في ShAD ، طالب دراسات عليا (رسميًا ، هذه دراسة ، لكنها في الواقع أقرب إلى العمل).
  2. لكل درس شيق ومفيد (بالإضافة إلى حقيقة أنهم يدرون جميعًا دخلًا :)) ، وبسيطًا ، مما يسمح لي بالاسترخاء قليلاً ومعقدًا ، مما يسمح لي بالتطوير. يبدو لي أنني أصبحت أقل فعالية بشكل عام عندما أبدأ في فعل الشيء نفسه ، تقريبًا ، لمدة 8 ساعات في اليوم ، والتغيير اليومي في الوظيفة يسمح لي بأن أكون في ذروتي.
  3. لا توجد تغييرات كبيرة في خطط المستقبل :)

فلاديمير كيروس (ACM ICPC 2007، 2008)

  1. EPAM. مهندس برمجيات رائد لقسم التطوير المتنقل. أقوم بتطوير تطبيقات لنظام Android.
  2. أحب أن أتعلم أشياء جديدة ، وفي الشركة الحالية اتضح أن تغيير الملف الشخصي بدون ألم والعثور على الأشخاص المدرسين المناسبين.
  3. لقد زرعت شجرة بالفعل ، وأنا ادخر لبناء منزل ، وأخطط لإنجاب أطفال (من الناحية المثالية ، فرقة برشلونة الخاصة بي).

سيرجي تيخون (ACM ICPC 2009)

  1. أنظمة EPAM ، مهندس برامج رئيسي. مهندس / مطور مشاريع خاصة.
  2. فريق ودود وقوي ومهام مثيرة للاهتمام وفرص جيدة للنمو المهني.
  3. العمل في مجال تكنولوجيا المعلومات ، ولكن على الحدود مع العلم ، والعمل على تنفيذ علوم البيانات في التطبيقات والخدمات الحقيقية (التعلم الآلي ، ومعالجة اللغات الطبيعية ، وتقنيات البحث ، والنمذجة). تعزيز وتوزيع وتنفيذ البرمجة الوظيفية (التدوين حول F #).

أليكسي لوبانوف (ACM ICPC 2010)

  1. شركة Yandex ، مطور في Yandex.Maps. بالتوازي مع هذا ، أدرس في كلية الدراسات العليا بجامعة BSU وأعمل كمساعد في قسم DMA FPMI (أقوم بإجراء دروس عملية في دورة "الخوارزميات وهياكل البيانات").
  2. لماذا Yandex: هناك مهام مثيرة للاهتمام (بما في ذلك المهام المعقدة والكثيفة العلوم والخوارزميات) وظروف العمل المريحة وفريق ممتاز. لماذا FPMI BSU: أعتقد أنه من المهم نقل معرفتك إلى الأجيال القادمة من الطلاب.
  3. خطط للمستقبل: أكمل بنجاح دراساتي العليا وحاول الدفاع عن أطروحة المرشح.

أليكسي تولستيكوف (ACM ICPC 2010)

  1. BSU ، مساعد قسم الرياضيات الحاسوبية ، أكمل دراساته العليا ، بالطبع التدريس« الحوسبة المتوازية والموزعة» (ممارسة). ياندكس ،أمينة البرامج الأكاديمية ، رئيس فرع مينسك لكلية تحليل البيانات (+ معلم فيها) ، مطور بحث.
  2. لا يمكنني فعل ذلك في جملة واحدة ، ولكن لأن: "أنا أحب ذلك!"
  3. ليس الكثير ليقوله. أتحرك في جميع هذه الاتجاهات.

يقولون أنه عندما ولد ، ذهب دونالد كنوث نفسه لرؤيته. يقولون أنه عندما تمت دعوته للعمل في Google ، أعاد كتابة خوارزمية البحث بالكامل 16 مرة في 15 دقيقة. يقولون أنه يراقب تقدم الحوسبة الكمومية بابتسامة ، لأنه عندما يراه ، فإن الأرقام تحسب نفسها بدافع الخوف. لكننا نعرف شيئًا واحدًا مؤكدًا: بيتر هو الإله الحقيقي للبرمجة الرياضية.

حقائق

  • الفائز بطولات عديدة ، فاز بيتر مرتين في TopCoder وحصل على المركز الثاني في ACM ICPC.
  • في وقت فراغه ، يحتفظ بيتر بمدونة حول المسابقات المنتظمة "مشاكل حسابية للدمى": petr-mitrichev.blogspot.ru.
  • يعمل Mitrichev الآن في Google ، حيث يتعامل مع جودة البحث. يساعد بيتر أيضًا في إعداد مسابقات Google Code Jam.

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

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

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

ما اللغة التي كتبت بها حلولاً للمشكلات؟

جافا. في المدرسة كتبت في باسكال لأنني لم أكن أعرف أي شيء آخر بعد ذلك. وبعد ذلك ، عندما كان من الضروري اختيار ما يجب التبديل إليه ، كانت Java أقرب إلى Pascal.

في بيئة تنافسية ، تحتاج إلى كتابة برنامج في 20-30 دقيقة ، ويجب أن يعمل بشكل صحيح على الفور. لذلك ، من المهم للغاية أن اللغة لا تسمح بزراعة البق. يختلف C ++ ، الذي يستخدمه معظم الناس ، في أنه من السهل جدًا كتابة البرنامج الخاطئ فيه. يمكنك نسيان شيء ما عن طريق الخطأ ، وتعيين نوع خاطئ لمتغير ، ولكن كل هذا سيترجم بطريقة ما ويعمل بطريقة أو بأخرى. على الأرجح ليس كما تتوقع.

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

يمكن للجميع اختيار لغة برمجة لأنفسهم ، أليس كذلك؟

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

تستخدم Topcoder و Codeforces و ACM نظامًا قياسيًا حيث تقوم بإرسال رمز المصدر وتشغيله على الخادم الخاص بهم. هنا أنت مقيد بما لديهم على الخادم. معظم المشاركين ، 70-80٪ يستخدمون C ++ ، و 20٪ يستخدمون Java ، وعدد قليل جدًا من اللغات الأخرى. يبدو لي أن هذه دورة - أشخاص جدد يأتون إلى المنافسة ، ويبدأون في التواصل مع المشاركين الآخرين الأكبر سنا ، ويعلمون الوافدين الجدد ما يمكنهم القيام به بأنفسهم. ونتيجة لذلك ، يبدأ الأشخاص الجدد أيضًا في استخدام نفس اللغات. لذا فإن هاتين اللغتين ليستا مناسبتين بشكل خاص للمسابقات ، لقد حدث ذلك تاريخيًا.

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

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

ربما كان لديك قصة خاصة ، كيف ظهرت على Google؟

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

البرمجة الرياضية: إيجابيات وسلبيات

دعني أحاول أن أسألك سؤال غبي :). لماذا تحتاج إلى القيام بالبرمجة الرياضية ، ما رأيك؟

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

وإذا حاولت التوصل إلى سبب يمنعك من إضاعة الوقت في البرمجة الرياضية؟

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

ولكن ماذا تقول الممارسة ، هل من الممكن ، على سبيل المثال ، بناء مهنة حول البرمجة الرياضية؟

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

هل فكرت في ذلك؟ هل سبق لك المشاركة في هيئة المحلفين أو ككاتب مشكلة؟

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

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

هل يمكنني كسب المال في المسابقات؟ بعد كل شيء ، يقدمون جوائز نقدية للنصر.

الاحتمال صغير جدا. جائزة واحدة لعشرة آلاف مشارك .. لن أسميها مكاسب. الاعتماد على هذا كمصدر رئيسي للدخل ... يبدو لي من دون فرصة.

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

مسابقات اليوم

أخبرنا بمزيد من التفصيل ، ما نوع المسابقات الموجودة الآن ، كيف يحدث كل هذا؟

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

TopCoder هو الموقع الأقدم والأكثر شهرة مع المسابقات الأسبوعية. لديهم القواعد التالية. يتم تخصيص ثلاث ساعات لمدة ساعة وخمس عشرة دقيقة.

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

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

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

هناك أيضا موقع ثان ، الروسية ، Codeforces. تختلف قواعدهم قليلاً ، ولكن التنسيق هو نفسه تقريبًا - ساعتان والعديد من المهام. إذا كنت ترغب في ذلك ، يمكن أن يسمى هذا التنسيق مسلٍ ، على عكس الألعاب الأولمبية للطلاب ، والتي تستمر لمدة خمس ساعات.

ولكن هل لا تزال هناك مسابقات سنوية كبيرة؟

نعم ، بالإضافة إلى المسابقتين الموصوفتين الذي يتم أسبوعيًا ، هناك العديد من المسابقات السنوية. عادة ما يتم ترتيبها على هذا النحو: بعض الشركات الكبيرة (Google و Yandex و TopСoder و IBM) تعقد منافسة مع عدة مراحل من الاختيار. تتم المراحل الأولى عبر الإنترنت. والمرحلة النهائية تقام بالفعل في مكان معين ، حيث يتم أخذ جميع المتأهلين للتصفيات النهائية. لا يوجد سوى خمسة إلى عشرة من هذه المسابقات ، لكنها طويلة ، لذلك تحدث واحدة منها طوال الوقت.

هل كل هذه المسابقات فردية؟

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

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

نعم ، في المقام الأول ، Gena Korotkevich ، طالبة ذكية جدًا من Gomel ، يدرس الآن في ITMO. في الآونة الأخيرة ، في Codeforces ، كانت نتيجتي أسوأ ، الآن أنا في السادسة أو الخامسة. هناك أيضا جينا في المقام الأول.

ربما اللعب عبر الإنترنت وغير متصل هو شعور وتجربة مختلفة تمامًا؟

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

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

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

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

هل تتغير المنافسة بمرور الوقت؟ هل تزداد صعوبة أم أنها أسهل؟

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

حول المهام وإعدادها

كيف تتكون مهام المسابقة؟ هل هناك مترجمون ، أناس يعرفون بالفعل كيفية القيام بذلك ، أم أنه نوع من التعهيد الجماعي ، حيث يمكن للجميع تقديم شيء خاص بهم؟

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

إن الخروج بمثل هذه المهام هو مهارة خاصة ، أليس كذلك؟

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

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

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

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

"أفضل" - بمعنى أسرع ، يستهلك ذاكرة أقل ، وما إلى ذلك؟

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

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

من أين نبدأ

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

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

ماذا لو واجهت مشكلة ولم أعرف على الإطلاق أي جانب أقترب منها؟

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

ما الذي عليك القيام به للحصول على قاعدة خوارزمية؟ ليس من الضروري التسرع في قراءة Knut على الفور.

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

إذا كنت تريد أن "تضخ" نفسك بالضبط وفقًا للخوارزميات ، فهل هناك أي كتب أو كتب مدرسية؟

أكثر الكتب القياسية هو Cormen ، Leiserson ، Rivest مع حمار على الغلاف. يسمى "الخوارزميات: البناء والتحليل". لا أدري ، لم أدرس منذ فترة طويلة ، والآن ربما تكون هناك كتب دراسية جديدة يمكن أن تكون أفضل. لكن في وقتي استخدموا Cormen. السوط هو أكثر من كتاب مرجعي. إذا كان هناك حاجة إلى العثور على شيء ما ولم يتم العثور عليه في أي مكان ، فعلى الأرجح أنه سيكون هناك. لكن قراءة Knut على التوالي ... إنه أمر محزن للغاية.

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

الفائزين في ACM ICPC من جامعة ITMO

حان الوقت للتجذر للمبرمجين

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

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

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


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

انتصارات من وإلى

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


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

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

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

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


قضية اقتصادية

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

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

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


منشطات

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