ومرة أخرى ، اليوم ال 256 من السنة

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


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



أي نوع من لغة البرمجة في الصورة؟

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


يوم سعيد مبرمج في كوبول يشبه ذلك تماما. (شكرا لك على الرحلة ورمز pik4ez ).


ما هو هذا المنصب؟


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


الأسطر الأولى من التعليمات البرمجية


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


Dev 1: اعتقدت أن كل شخص لديه السطر الأول من التعليمات البرمجية شيء مثل:


!#/bin/bash echo "Hello World" 

ديف 2: في منطقتنا كان عاجلاً: MsgBox "Hello World" . لأنه لا يزال يتعين عليك محاولة العثور على قرص باستخدام Linux.


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


صورة

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

كان هذا عصر نهاية DOS. كتبت برنامج التجميع الذي استولت على الشاشة في الوضع الرسومي. علاوة على ذلك ، على عكس كل ما كان موجودًا في "السوق" ، تعاملت مع جميع أوضاع الفيديو بشكل عام ، بما في ذلك تلك المتسللة المجنونة تمامًا. على سبيل المثال ، إذا كان وضع VGA القياسي للتشغيل هو 320 × 200 و 256 لونًا ، فإن الأشخاص الذين يستخدمون نوعًا ما من الاختراقات الخادعة وإعادة برمجة وحدة التحكم ، التي تدفع الأشعة عبر أنبوب MDG ، حققوا 360 × 240. تمكنت من كتابة برنامج تعامل مع كل هذا ، واستولت على الشاشة (ذاكرة الفيديو) ، وقمت بحفظه في ملف ، ثم من هذا التفريغ ، يمكنك حفظه .bmp بحفظه كأداة مساعدة منفصلة دون اتصال بالإنترنت. أحضرت هذا البرنامج إلى النهاية ، ونشرته على الإنترنت ونسيت بنجاح.

لقد مر ما يقرب من 12-15 سنة منذ تلك اللحظة. تلقيت بريدًا إلكترونيًا مثل هذه الورقة ، كما لو كتب ليو تولستوي ، على ثلاث أوراق - وهذه هي العبارة الأولى فقط. "مرحباً ، أنا سائق شاحنة من كندا. مستخدم نشط للبرنامج الخاص بك. ليس لدي نقود ، لكن لدي خمسة أطفال. لقد عثرت على جهاز الكمبيوتر رقم 486 في مكب النفايات ، بالإضافة إلى سرقة بعض الألعاب القديمة على الإنترنت ، والآن يلعب أطفالي ألعابًا مختلفة على هذا الكمبيوتر. في الوقت نفسه ، لا تستطيع لعبتهم المفضلة حفظ أي شيء: من المستحيل حفظ لوحة شرف مشتركة ، ولا حتى درجة واحدة عالية ، ولا يمكن التقاط لقطة شاشة ، لأن نوعًا من وضع إدمان المخدرات يستخدم. وتقوم الأداة الخاصة بك بعمل ممتاز في هذا ، ويستخدمها الأطفال باستمرار. نعم ، أنا نفسي ، يحدث ذلك ، بين الرحلات الجوية ... لذا ، نظرًا لأننا مستخدمين نشطين لبرنامجك القديم ، فقد قررت تشجيعك. إليك رمز تحويل Western Union بقيمة 20 دولارًا. " لقد بكيت عمليًا وقررت أنه في أحلك يوم ، عندما يصل أخيرًا وسأعاني من الجوع ، سأحضر هنا MTCN (رمز التحويل) ، وصرف النقود والمدخل. لسوء الحظ ، مرت العديد من السنوات منذ ذلك الحين ، لذلك ليس من المعروف أين MTCN الآن. ربما يوجد في أرشيفات البريد القديمة ، إذا لم أفقدها خلال هذا الوقت. أنا أدرك في أحلك يوم ".

صورة

أرتيوم رازينوف ، مطور رائد لنظام iOS: "في الصف الخامس ، كتبت الكود بمفردي في برنامج Logo Mira للأطفال ، بينما لعب جميع اللاعبين الناجحين الآخرين الألعاب. أنا خلقت برنامج وأنها عملت. في ذلك اليوم قررت أن أصبح مبرمجًا ".



صورة

دانييل بوبوف ، مطور برامج أندرويد: s := width * height; كان خطًا على باسكال يحسب مساحة المستطيل. كان الحال في دورات البرمجة للطلاب في الصف الثامن. أكثر ما أثار إعجابي هو أنني أستطيع إعطاء أوامر الكمبيوتر ، وينفذها ضمنيًا. وهناك نوع من سيد الآلات. منذ ذلك الحين ، أحبها حقًا عندما تؤدي السلسلة المتراكمة من الإجراءات (الخوارزمية) إلى النتيجة. "

صورة

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

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

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

صورة

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

 static void main(String[] args) { System.out.println("!"); } 


العواطف: ما هي سلسلة [] يجادل ؟؟؟ ".

صورة

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

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

كانت صفحاتي الأولى مشابهة لصفحاته. فعلت واحدا تلو الآخر ، حاول الترويج لها. لذلك أنا صداقات مع فريق واحد. كان هناك مصمم دعاني لكتابة الكود ، والتقط الصور على نفسه. لقد بدأنا في إنشاء صفحات MySpace لجميع فنانينا الراب الروس. ثم دعيت للعمل في مكتب MySpace St. Petersburg للعمل.
ثم كتبت الكثير من أسطر التعليمات البرمجية هناك - من نفس النوع ، جدولي: كان CSS والتخطيط ، لا شيء معقد. الآن أي صغار سوف الرقم بها وجعلها أكثر برودة. ولكن بعد ذلك كان "نجاح باهر" ، لأننا عملنا مع IE5 والمتصفحات الأخرى ، والتي كان علينا أن نفعل الكثير من السحر.

إذا لم تكن متعلقة بهذه القصة ، فلن أتناول البرمجة ، ولن أبدأ التصميم ، ولن أفهم ما هي عليه. "

صورة

كونستانتين سيليزنيف ، مطور الواجهة الخلفية: "زميلي في الصف" أعلقني على البرمجة مرة أخرى في الصف السابع (حقًا ، مثل المخدرات):
- Pss ، رجل ، هل تريد بعض البرمجة؟ - أخبرني شيئًا كهذا ، سلم لي أسطوانة مع Borland Development Studio ومجموعة ضخمة من المقالات حول دلفي.

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

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

 procedure TForm1.Button1Click(Sender: TObject); begin MessageDlg(' .   .     !', mtInformation, [mbOk], 0); SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0); end; 



وهنا قصص من البودكاست الرائدة بودلودكا.


صورة

ستاس تسيجانوف ، رئيس قسم تطوير الأجهزة المحمولة ، Tutu.ru: “عملت والدتي كمدرس لعلوم الكمبيوتر ، وحصلت على أجهزة الكمبيوتر في وقت مبكر للغاية. وكانت أول تجربة برمجة لدي هي Cucaracha for MS-DOS. تعلمت باهتمام أنها لا تزال على قيد الحياة وحتى يتم نقلها إلى Windows.

    5   


وكان الكود الأول الذي كنت أستخدمه مثل هذا. "

صورة

إيجور تولستوي ، مدير تطوير النظام الأساسي للتطبيقات ، Avito: "منذ حوالي عشر سنوات جئت لزيارة أخي الأكبر ، الذي كان عنده أول جهاز كمبيوتر له ، مرة أخرى على MS-DOS. بالإضافة إلى النكات المتفشية في GTA الأولى (في الترجمة الروسية كان يطلق عليها اسم جميل "Avtovor") و Duke Nukem اكتشفنا البرمجة لأنفسنا. الرياضيات لم تجذبني كثيرًا ، لكن التفوق المنطقي والرسم كانا على حق! لذلك كان البرنامج الأول هو توليد مؤلفات تفوق من الدوائر والخطوط: CIRCLE(10, 10), 50 ".

صورة

كانت كاتيا بتروفا ، رئيس قسم التطوير في Frontend Architecture ، Avito: "إجبار سلحفاة في عالم الشعار على رسم الدوائر وكتابة" Hello world "في باسكال في دروس علوم الكمبيوتر ، بالطبع مسلية وغنية بالمعلومات. لكن الأمر كان أكثر متعة في الصف الثامن في قيادة الزعماء في WoW Classic (لم يكن بعد ذلك غير سائد). إذن ها هي أسطر التعليمات البرمجية المفيدة الخاصة بي حقًا ".

 #showtooltip Regrowth /cast [@mouseover,exists,help][@player] Regrowth(Rank 5) 



صورة

Zhenya Catella ، رئيس قسم تطوير الأجهزة المحمولة في Yandex.Transport: "في مكان ما في الصف الثامن أو التاسع ، أصبحت مهتمة بالبرمجة ، لذلك اشترى لي والداي كتابًا عن Turbo Pascal. ما زلت أتذكر أنها كانت حمراء. وفي البداية كانت هناك أشياء بسيطة ، مثل الدورات والظروف. وبعد ذلك ، على ما يبدو ، انتهى الفصل الأول بقصة حول ماهية العودية. وكان من الضروري حل اللغز حول برج هانوي. لذلك ، باستثناء برنامج Hello Worlds ، يمكن اعتباره أول برنامج لي. "

السطر الأكثر تميزا من التعليمات البرمجية


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


صورة

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

  Listing 5. #define POW c3 // c3.b=B, c3.a=A, for m=2. see [Beaudoin02] dp3_sat r1.rgb, t1_bx2, t2_bx2 // (1) (NH) dp3_sat r0.rgb, t1_bx2, v1_bx2 // (2) (NL) +mad_x4_sat r0.a, r1.b, POW.a, POW.b // (2) (NH)*A+B mul_x4_sat r1.rgb, r0.a, r0.a // (3) (NH)^n +mad r1.a, t0.b, SPECK.b, SPECK.a // (3) specshadow mul_sat r0.rgb, r0, r1_bx2.a // (4) (NL)*diffshadow +mul_sat r0.a, r1.b, r1.a // (4) ((NH)^n)*specshadow mad_sat r0.rgb, r0, DIFF, v0 // (5) (NL)*shadow*diffcol+ambi +mul_sat r0.a, r0.a, t1.a // (5) ((NH)^n)*shadow*specmap mul_sat r0.rgb, r0, t3 // (6) diffmap*difflighting mad_sat r0.rgb, r0.a, SPEC, r0 // (7) result +mov r0.a, t3.a // (7) diffuse map alpha 



صورة

دانييل بوبوف ، مطور أندرويد كبير:

 i = 0x5f3759df - ( i >> 1 ); // what the fuck? 


هذا مقتطف لوظيفة يحسب الجذر العكسي السريع لـ x. هناك حاجة إلى مثل هذه الحسابات في محركات اللعبة لحساب إضاءة المسرح. أصبح هذا الرمز غير المقروء معروفًا على نطاق واسع بعد إصدار Quake III: Arena.

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

صورة

ايليا جريبوف ، مطور الواجهة الأمامية: "أتذكر هذا الرمز. فكرت: "كيف بسيطة وموجزة!)".
 >>> comp_list = [x ** 2 for x in range(7) if x % 2 == 0] >>> print(comp_list) // [4, 16, 36] 



صورة

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

 if (this == null) 



صورة

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

 const foo = Function.prototype.call.bind(Array.prototype.slice) 


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

وليس فقط الرمز


أريد أن أنهي هذا المقال عن طريق اقتباس من زميل أندريه شودان أكسيونوف:


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

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


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

Source: https://habr.com/ru/post/ar467339/


All Articles