
المهندسين الرفيق ، إنها السنة الرابعة منذ أن بدأت التدريس في معهد كييف بوليتكنيك . خلال هذا الوقت ، جمعت عددًا هائلاً من الأمثلة والمواد البرمجية ، حوالي 90 محاضرة . يجب أن أقول أنه طوال فترة نشاطي المهني (وهذه هي 24 سنة من كتابة التعليمات البرمجية يوميًا تقريبًا) ، لم أرفع أبدًا مستوى البرمجة الخاص بي ، حيث كنت أعمل مع الطلاب في السنوات الأخيرة. إذا بدا لي في وقت سابق أن الكتابة لفترة وجيزة وصعبة وفرضية هي ذروة إتقانها ، فقد أدركت الآن أن الطلاب يجب أن يفهموا رمزي بعد الحد الأدنى من التفسير ، وإلا فلن ينجح. توصلت إلى استنتاج مفاده أن هذه القدرة يمكن ويجب أن تمتد ليس فقط إلى رمز التدريب ، ولكن إلى رمز العمل بأكمله. علاوة على ذلك ، لا يجب أن يختلف رمز التدريب بشكل كبير عن رمز العمل ، لأننا نعلم المهندسين المستقبليين كيفية صنع أنظمة حقيقية ، وليس تدريب أنظمة. وبعد طلبات عديدة ، قررت تسجيل جميع المحاضرات في شكل تسجيلات شاشة ، والتي يتم إرسالها مباشرة بعد المحاضرة إلى موقع يوتيوب. لهذا العام الدراسي ، أخطط لتسجيل 100 محاضرة ، تم نشر 23 منها بالفعل ، ولا تزال المواد لـ 67 محاضرة أخرى و 10 محاضرات جديدة قيد الإعداد.
مفهوم الدورة
تعلمون جميعًا أنه في صناعتنا هناك مشاكل كبيرة في التعليم الهندسي الأساسي:
- غالبًا ما تكون الدورات الجامعية قديمة وتترك الكثير مما هو مرغوب فيه ،
- لا يتم تشكيل المصطلحات المقبولة بشكل عام (في النزاعات غالبًا ما نطلق على نفس الأشياء كلمات مختلفة وأشياء مختلفة بنفس الكلمات) ، نخلط بين هذا ،
- يمكن بسهولة نشر المقالات ومقاطع الفيديو على الإنترنت من قبل أي شخص لديه فكرة أن مؤهلاته كافية لذلك ،
- في البرمجة ، يتم إعاقة تراكم الخبرة من خلال الخروج السريع للأشخاص من التخصص ، وحتى الأفكار الأساسية تتكرر دوريًا ، ولكن أولئك الذين اكتسبوا الخبرة في الجولة السابقة هم على الأرجح لم يعودوا يمارسون ولا يمكنهم إخبار الزملاء الأصغر سنًا بمكان الاختناق والاختناقات.
من المؤكد أن بناء دورة دراسية تعتمد على جافا سكريبت هو مهمة تجريبية ، ولكن هذه اللغة بالتأكيد لن تكون غير ضرورية لأي شخص في تكنولوجيا المعلومات الحديثة. غالبًا ما يكون لدى مطوري جافا سكريبت أنفسهم تدريبًا هندسيًا أساسيًا ضعيفًا ونقصًا في المعرفة الأساسية في هياكل البيانات والخوارزميات والتجريد الأساسي والأنماط والهندسة المعمارية والنماذج وتقنيات البرمجة. يتم التخلص من معظم التعليمات البرمجية المكتوبة الآن في الصناعة بعد وقت قصير من إنشائها ، ثم تتم إعادة كتابتها وإلقاءها مرة أخرى. بشكل عام ، نادراً ما تكون الجودة والمعرفة مطلوبة ، باستثناء المقابلات. من الأفضل إنشاء رمز منخفض الجودة والحفاظ عليه ، أو التخلص من الرمز وبيع المزيد من الوقت لإعادة كتابته. بالإضافة إلى ذلك ، فإن صناعتنا منفصلة تمامًا عن العلوم ، وهناك مزايا كبيرة للمسوقين ، لأننا بالفعل لا نبرمج لغات البرمجة وليس في التجريد ، ولكننا نبرمج في أطر ومكتبات ، والتي "دخلنا فيها" في غلاف جميل. نقوم بتجميع كل شيء من المكعبات ، غالبًا بدون أي فهم علمي ، ونادراً ما يمكننا الإجابة على سؤال لماذا نفعل ذلك وليس العكس. تم كتابة كل شيء في أجزاء بالفعل منذ فترة طويلة ، ويمكن العثور على كل شيء على الإنترنت ، ولكن اتضح أن أحدهم لا يتشكل مع الآخر ، أي أنه في أجزاء ، ولكنه لا يعمل معًا. ربط أجزاء منفصلة من التعليمات البرمجية أصعب بكثير من القيام بها بشكل فردي. يحدث هذا على وجه التحديد بسبب عدم وجود نهج منهجي ، والانقسام المصطلحي وعدم التزامن المفاهيمي للمتخصصين. فقط ما هو متوافق إيديولوجيًا سيعمل معًا ، والذي يعتمد على نظرية عامة ومعايير عامة مستمدة من هذه النظرية. آمل أن أتخذ من خلال هذه الدورة خطوة صغيرة على الأقل نحو الوصول إلى مثل هذا الإجماع المهم للصناعة.
جميع مواد الدورة متاحة مجانًا على github ، والمحاضرات مفتوحة ، ويمكن حضورها مجانًا. كل أسبوع أسجل 4 محاضرات. نعقد المزيد من الندوات وورش العمل ، ولكن لم يتم تسجيلها.
هيكل الدورة
- المفاهيم الأساسية : ملخصات البرمجيات ، المتغيرات ، عوامل التشغيل ، أنواع البيانات ، المصفوفات ، التركيبات ، الأنواع العددية والمرجعية ، الخرائط.
- المفاهيم الأساسية : الوظائف ، السياقات والنطاق ، الفئات والأشياء ، النماذج الأولية ، الطرق ، لامداس ، الوظائف الصرفة ، الآثار الجانبية ، الإغلاق ، الاستخدام الجزئي ، التجريف ، التكوين ، وظائف الترتيب الأعلى ، الاسترجاعات ، الأغلفة ، الديكور ، الشوائب ، الأحداث ، الواجهة ، المفرد ، التكرارات ، الأشياء الوظيفية ، الدوافع ، الموناد ، معالجة الملفات ، الخيوط ، المقابس ، التذكر ، الميراث ، المولدات ، البرمجة غير المتزامنة ، chining ، الوحدات التبعية ، معالجة الأخطاء ، المصانع والمجمعات ، المؤقتات ، التعبيرات العادية ؛
- المواد الداعمة : git ، وأنظمة التحكم في الإصدار ومديري الحزم ، والعمل مع وحدة التحكم ، والاختبار ، والتكامل المستمر ، والتسجيل ، واللنتير ، والتحسين والأداء ، ومكافحة تسرب الذاكرة ، والفصول المخفية ، ووظائف المونومورفيك ، والأدوية ، وجمع القمامة ، وإدارة الذاكرة ؛
- هياكل البيانات : المجموعات ، والمصفوفات ، والمصفوفات المكتوبة ، والمخازن المؤقتة ، والقوائم ، والمكدس ، والطابور ، والديسي ، والأشجار الثنائية والتسلسل الهرمي ، والأشجار متعددة الأبعاد ، والتناوب ، وموازنة الفروع ، والمجموعات ، والتجزئة ، والرسوم البيانية ، والقوائم الموسعة ، وقائمة الانتظار غير المتزامنة ، والأتمتة ، وهياكل البيانات المتكررة والبحث.
- المفاهيم الممتدة : الرموز ، البروكسيات ، الاختلافات ، العقود الآجلة والوعود ، العدسات ، المحولات ، عدم التزامن / الانتظار ، جامعي البيانات ، التركيب غير المتزامن ، المحولات غير المتزامنة ، التكرارات غير المتزامنة ، الاستبطان ، الانعكاس ، السقالات ، التحكم في الانقلاب وحقن التبعية ، صناديق الرمل ، الهندسة المعمارية ذات الطبقات نهج المكون ، طبقة الوصول إلى البيانات ، إسقاط البيانات ، مراقبة نظام الملفات ، خادم العميل والعمارة ثلاثية الروابط ، التجميع والتوازن ، تصميم البروتوكول ، الحمل الزائد للوحدة الديناميكية ، البيانات الوصفية ، الدين الارتباط الميكانيكي ، التفاعل بين العمليات ؛
- أمثلة على التعليمات البرمجية والاستخدام المتكامل للتقنيات: جداول البيانات الحية ، والدردشة على مآخذ الويب ، وتنفيذ لغة الاستعلام بالرسم البياني ، والمكتبة البديلة للتجارب غير المتزامنة metasync ، ومقارنة تنفيذ نفس المهام على نماذج مختلفة ، ومقارنة أنماط البرمجة الوظيفية ، وأمثلة على هيكل التطبيق ، وتوجيه المعالجات في node.js التطبيقات ، وعزل الرمز في صناديق الرمل ، وكائنات المعاملات ؛
- نماذج البرمجة : حتمية ، هيكلية وغير هيكلية ، إجرائية ، كائنية التوجه ، نموذج أولي ، وظيفي ، منطقي ، إعلاني ، غير متزامن ، تفاعلي ، حدث ، تلقائي ، معمم ، برمجة قائمة على البيانات ، متعدد النماذج ، مخطط بياني.
المراجع
تقويم المحاضرات متاح في مجموعتين من اللوحات: HowProgrammingWorks (هذه هي محاضرات حول البرمجة باستخدام أمثلة JavaScript) و NodeUA (هذه محاضرات على Node.js) وأنا أحث كل من يريد حضور المحاضرات للتسجيل شخصيًا. القبول مجاني للجميع ، ولكن أسهل تنظيمًا لتقدير عدد الطلاب. على مر التاريخ ، كان لدي حالات و 600 شخص وشخصان ، والإقبال لا يمكن التنبؤ به.
تظهر جميع مقاطع الفيديو المسجلة في نفس اليوم (10-20 دقيقة بعد المحاضرة) على قناة youtube .
يتم تجميع المحاضرات في قائمتين : البرمجة وجافا سكريبت و Node.js.
أقوم بوضع روابط للمحاضرات والمواد في قناتين برقية: البرمجة وجافا سكريبت و Node.js ومواضيع أخرى أكثر تعقيدًا .
هناك مجموعتان من البرقيات للمناقشة والأسئلة: البرمجة وجافا سكريبت و Node.js.
حسابي على github ، ومستودعات التدريب في HowProgrammingWorks ، ومكتبتنا المجتمعية .
الخلاصة
أنا في انتظار اقتراحات لتكملة الدورة بموضوعات جديدة ، آمل في مقدمة مضادة لأمثلة الكود ، بما في ذلك ترجمة الأمثلة إلى لغات أخرى. ملاحظاتك سوف تساعد على تحسين الدورة.