بيت تطوير استجابة سريعة: تصحيح الأخطاء في قاعدة البيانات والتوصيف إلى الإنقاذ

استجابة سريعة: تصحيح الأخطاء في قاعدة البيانات والتوصيف إلى الإنقاذ

Anonim

بواسطة Techopedia Staff ، 15 مارس 2017

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

أنت لم تسجل الدخول حاليًا. يرجى تسجيل الدخول أو التسجيل لمشاهدة الفيديو.

إريك كافانا: حسنًا ، سيداتي سادتي ، الساعة 4:00 بالتوقيت الشرقي يوم الأربعاء ، وهذا يعني بالطبع.

روبن بلور: لا أستطيع أن أسمعك يا إريك.

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

هناك بقعة عنك حقًا ، أذهلني على Twitter ،eric_kavanagh بالطبع.

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

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

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

فيما يلي قائمة بالأخطاء الشهيرة ، ومعظمها يدخل في قائمة أي شخص ، بشكل أساسي ، كل ما عدا الأخيرين بتكلفة لا تقل عن 100 مليون دولار. أولها كان كوكب المريخ المداري ، فقد تضيع في الفضاء وكان ذلك بسبب مشكلة الترميز ، حيث خلط الناس بين الوحدات المترية والقدمين (الضحك) والبوصات. كانت طائرة Ariane Five Flight 501 غير متطابقة بين محرك تم تشغيله وأجهزة الكمبيوتر التي كان من المفترض أن تشغل الصاروخ عندما تم إطلاقه. أعطال كمبيوتر متعددة ، انفجار صاروخ ، عناوين الأخبار. خط أنابيب الغاز السوفيتي في عام 1982 ، قيل إنه أكبر انفجار في تاريخ الكوكب ؛ لست متأكدا ما إذا كان كذلك. سرق الروس بعض برامج التحكم الآلي ، وأدركت وكالة المخابرات المركزية أنهم سيفعلون ذلك ويضعون الخلل فيه ، وقام السوفيت بتطبيقه دون اختبار. لذلك ، فجر خط أنابيب يصل ، ويعتقد أن كان مسليا.

كانت دودة موريس بمثابة تجربة تشفير ، والتي أصبحت فجأة دودة عنيفة تدور حول الجميع - لقد تسببت على ما يبدو في خسائر بقيمة 100 مليون دولار ؛ هذا تقدير بالطبع. لقد ارتكبت Intel خطأً مشهورًا في شريحة الرياضيات - تعليمة رياضية في رقاقة Pentium في عام 1993 - كان من المفترض أن تكلف أكثر من 100 مليون دولار. ربما يكون برنامج خرائط Apple هو الأسوأ والأكثر كارثة لإطلاق أي شيء قامت به Apple على الإطلاق. الأشخاص الذين حاولوا استخدامه ، أقصد أن هناك شخصًا كان يقود سيارته على طول 101 ، واكتشفوا أن خريطة أبل قد ذكرت أنهم كانوا في منتصف خليج سان فرانسيسكو. لذلك ، بدأ الناس بالإشارة إلى تطبيق خرائط أبل باسم iLost. - أطول فترة انقطاع لدينا في عام 1990 - من المثير للاهتمام من وجهة نظر تكلفة شيء من هذا القبيل - AT&T كانت خارج لمدة تسع ساعات وتكلف حوالي 60 مليون دولار في المكالمات الهاتفية بعيدة المدى.

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

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

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

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

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

على أي حال ، سأنتقل إلى Dez ، الذي من المحتمل أن يقول كلمات حكمة أكثر مما خرجت به. أنا لا أعرف كيف أمسك الكرة ، Dez.

إريك كافانا: سوف أمررها ، إلى جانب الانتظار ، أمسك بها.

الصوت الآلي: كتم خطوط المشاركين.

إريك كافانا: حسنًا ، تشبث ثانية واحدة ، اسمح لي بإعطاء الكرة لـ Dez.

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

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

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

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

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

(ضحك)

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

في الواقع ، كانت تجربتي الأولى في محطة طرفية ، والتي كانت في الواقع طابعة فعلية مكونة من 132 عمودًا. في الأساس ، فكر في مثل آلة كاتبة قديمة للغاية بها ورقة تم تمريرها من خلالها ، لأنهم لم يكن لديهم أنبوب CRT. وكان تصحيح أخطاء التعليمات البرمجية على ذلك مشكلة غير تافهة للغاية ، لذلك كنت تنوي كتابة كل التعليمات البرمجية الخاصة بك يدويًا ، ثم تتصرف كطابعة ، وتبذل قصارى جهدك لعدم الحصول على أخطاء للتسلل إليها ، لأنه أمر محبط للغاية أن تضطر إلى معرفة يقوم محرر سطر واحد بالانتقال إلى سطر معين ثم طباعة السطر ثم كتابته مرة أخرى. ولكن ذات مرة ، كانت هذه هي الطريقة التي كتبنا بها الكود وهذه هي الطريقة التي قمنا بتصحيحها ، وحصلنا عليها جيدًا جدًا. وفي الواقع ، لقد أجبرنا على أن يكون لدينا تقنيات برمجة جيدة للغاية ، لأنها كانت مشكلة حقيقية لإصلاحها. لكن الرحلة مرت بعد ذلك - وكلنا على دراية بذلك - انتقلت من التجربة الطرفية 3270 في عالمي ، إلى Digital Equipment VT220 حيث يمكنك رؤية الأشياء على الشاشة ، لكن مرة أخرى ، كنت تفعل الشيء نفسه قمت به على الشريط الورقي من التنسيق المطبوع فقط على CRT ، لكنك تمكنت من الحذف بسهولة أكبر ولم يكن لديك صوت "dit dit dit dit".

ومن ثم ، فإن محطات Wyse - مثل Wyse 150 ، ربما تكون الواجهة المفضلة لجهاز الكمبيوتر الخاص بي على الإطلاق - ثم الكمبيوتر الشخصي ثم Mac ، ثم في هذه الأيام معرفات واجهة المستخدم الرسومية الحديثة والمعرفات القائمة على الويب. ومجموعة من البرامج من خلال ذلك ، البرمجة في واحد وتجميع و PILOT والشعار و Lisp و Fortran و Pascal واللغات التي قد تجعل الناس تذلل. ولكن هذه هي اللغات التي أجبرتك على كتابة رمز جيد ؛ لم يسمحوا لك بالابتعاد عن الممارسات السيئة. C و C ++ و Java و Ruby و Python - ونستكمل مرحلة البرمجة هذه ونصبح أكثر شبهاً بالبرنامج النصي ونقترب أكثر فأكثر من لغة الاستعلام الهيكلية ولغات مثل PHP التي تستخدم بالفعل لاستدعاء SQL. الهدف من إخبارك أنه ، من خلفيتي ، تعلمت نفسي بطرق عديدة وتلك التي ساعدتني في التعلم ، وعلمتني ممارسات برمجة جيدة جدًا وممارسات جيدة جدًا حول التصميم والعمليات للتأكد من أنني لم أعرض رمز عربات التي تجرها الدواب.

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

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

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

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

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

مرة أخرى ، الهدف من ذلك كله هو أنه إذا لم يكن لديك الأدوات الصحيحة ، وإذا لم يكن لديك المنصات والبيئات الصحيحة لتتمكن من التقاط هذه الأشياء ، فإنها تدخل في الإنتاج ، ثم يكون لديك 100،000 شخص. ضرب نظام كل يوم أو ساعة أو دقيقة ، سينتهي بك المطاف بتجربة تشيرنوبيل حيث يبدأ الحديد الكبير في الذوبان ودفن نفسه في قلب الكوكب ، لأن هذه الشفرة يجب ألا تدخل أبدًا في الإنتاج. عذرًا ، يجب أن تلتقط أنظمتك وأدواتك ذلك قبل أن تذهب إلى أي مكان بالقرب من - حتى من خلال عملية الاختبار ، حتى من خلال UAT وتكامل الأنظمة ، يجب التقاط تلك الشفرة وتسليط الضوء عليها ويجب وضع شخص ما جانباً و قائلًا ، "انظر ، هذا رمز جميل حقًا ، ولكن دعنا نحصل على DBA لمساعدتك في بناء هذا الاستعلام المنظم بشكل صحيح ، لأنه بصراحة ، هذا أمر سيئ للغاية." وعنوان URL هناك ، يمكنك الذهاب وإلقاء نظرة - يشار إليها باسم استعلام SQL الأكثر تعقيدا كتبته من أي وقت مضى. 'السبب صدقني ، وهذا في الواقع لا ترجمة ، فإنه يعمل. وإذا قمت بقصها ولصقها وسخرت من قاعدة البيانات ، فهذا شيء يجب مشاهدته ؛ إذا كانت لديك الأدوات اللازمة لمشاهدة قاعدة البيانات ، فحاول فقط الإذابة على مدار ثلاث إلى خمس دقائق ، لإعادة الاتصال ما هو سطر واحد من النص.

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

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

إريك كافانا: حسناً ، بيرت ، خذها بعيداً.

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

حسنا. أردت أن أبدأ بسجل البرمجة ، لأنه في كثير من الأحيان أرى أشخاصًا لا يقومون بتصحيح الأخطاء ، ولا يستخدمون مصحح أخطاء ، فهم فقط يبرمجون بأي لغة يستخدمونها ، وفي كثير من الأحيان سيقولون لي ، "حسنًا ، هذه الأشياء المصححة جديدة ، ولم نبدأ في استخدامها بعد". وهكذا فإن ما أقوم به هو أن أريهم جدول المخطط الزمني هذا ، وهو نوع من ما قبل التاريخ ، والشيخوخة ، والعصور الوسطى ، إنه لطفاء من يقول أين كنا من حيث لغات البرمجة. وكان لدينا لغات قديمة للغاية بدأت في عام 1951 مع رمز التجميع ، و Lisp و FACT و COBOL. ثم ندخل في المجموعة التالية ، Pascals و Cs ثم المجموعة التالية ، C ++ s ، وننظر إلى أين توجد علامة الاستفهام هذه - علامة الاستفهام هذه موجودة تقريباً في الفترة من 1978 إلى 1980 تقريبًا. في مكان ما ضمن هذا النطاق كان لدينا مصححات الأخطاء المتاحة لنا ، وحتى نقول ، "مهلا ، أنا لا أستخدم مصحح أخطاء ،" لأن هذا أحد هذه الأشياء الجديدة "، ثم يجب أن تبدأ البرمجة ، كما تعلمون ، في الخمسينيات من القرن الماضي ، 'السبب هذا هو الطريقة الوحيدة التي تفلت من هذه المطالبة.

الآن الشيء الآخر المضحك في هذا المخطط هو Dez الذي أدلى للتو بتعليق حول Grace Hopper ، لقد عرفت بالفعل Grace ، لذلك نوع من المضحك. ثم الشيء الآخر الذي ضحكت به هو أنه تحدث عن الأنماط التليفزيونية وأنا جالس هناك ، "الرجل ، كان ذلك أكبر قفزة شهدناها في الإنتاجية ، عندما انتقلنا من البطاقات إلى الأنماط التليفزيونية ، كانت تلك أكبر قفزة على الإطلاق. "لذلك ، لقد قمت بالبرمجة بجميع اللغات هنا ، بما في ذلك SNOBOL ، والتي لم يسمع بها أحد من قبل ، لقد كانت مركز CDC ، Control Data Corporation ، لذلك أعتقد أنني أتقدم قليلاً في هذه الصناعة .

ديز بلانشفيلد: كنت سأقول ، لقد كبرتنا سن الرعب هناك.

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

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

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

ظهرت Profilers لأول مرة في عام 1979. لذلك ، كانت هذه موجودة منذ فترة طويلة ، أيضا. كبيرة للعثور على استهلاك الموارد ، أو مشاكل الأداء ، وبعبارة أخرى أن الشيء كفاءة. بشكل عام ، إنها منفصلة ومميزة عن مصحح الأخطاء ، على الرغم من أنني عملت مع مصححات الأخطاء التي تقوم بكليهما في نفس الوقت. وبينما أعتقد أن المحللون هم الأكثر إثارة للاهتمام من الأدوات ، فإذا شعرت أنه لا يوجد عدد كاف من الأشخاص لتصحيح الأخطاء ، فمن المؤكد أنه ليس هناك ما يكفي من الملفات الشخصية للأشخاص ، لأن واحدًا من أصل عشرة مصحح أخطاء سيقوم بالتشكيل الجانبي ، على ما يبدو. وهذا عار ، لأن التوصيف يمكن أن يحدث فرقًا كبيرًا حقًا. الآن ، بلغات قواعد البيانات ، كما تحدثنا في وقت سابق ، لديك SQL - ولقد أجبرنا ربط الوتد المستدير في الفتحة المربعة هنا وأجبرناها على أن تصبح لغة برمجة - و Oracle. إنها PL / SQL - هذه هي اللغة الإجرائية SQL - و SQL Server ، إنها Transact-SQL ، إنها SQL-99 ، إنها SQL / PSM - لأنها ، على ما أعتقد ، وحدة الإجراءات المخزنة. Postgres يعطيها اسمًا آخر ، DB2 ، اسمًا آخر ، Informix ، ولكن النقطة المهمة هي أن الجميع فرضوا تصميمات من نوع 3GL ؛ بمعنى آخر ، بالنسبة إلى الحلقات ، وفي التعريفات المتغيرة وجميع العناصر الأخرى الغريبة على SQL ، أصبحت الآن جزءًا من SQL في تلك اللغات. وهكذا ، يجب أن تكون قادرًا على تصحيح PL / SQL أو Transact-SQL تمامًا مثلما تفعل في برنامج Visual Basic.

الآن ، كائنات قاعدة البيانات ، هذا أمر مهم لأن الناس سيقولون ، "حسنًا ، ما الأشياء التي يجب علي تصحيحها في قاعدة بيانات؟" والإجابة هي ، جيدًا ، ما يمكنك تخزينه في قاعدة البيانات كرمز - إذا كنت أقوم بذلك T-SQL أو PL / SQL - وأنا أقوم بتخزين الكائنات في قاعدة البيانات ، ربما يكون هذا الإجراء مخزّنًا أو وظيفة مخزنة. ولكن هناك أيضًا مشغلات: المشغل يشبه الإجراء المخزن ، ولكنه يطلق بعض الأحداث. الآن ، سيضع بعض الأشخاص في مشغلاتهم سطرًا واحدًا من التعليمات البرمجية ويدعوون إلى إجراء مخزن حتى يحتفظوا بكافة التعليمات البرمجية والإجراءات المخزنة الخاصة بهم ، ولكن هذا هو نفس المفهوم: لا يزال المشغل هو ما يبدأ الشيء بأكمله. وبعد ذلك ، مثل Oracle ، لديهم شيء يسمى الحزمة ، وهو يشبه إلى حد ما مكتبة إذا صح التعبير. يمكنك وضع 50 أو 100 عملية مخزنة في مجموعة واحدة ، تسمى الحزمة ، لذا فهي تشبه المكتبة. لذلك ، وهنا المصحح الطريقة القديمة ؛ هذه في الواقع أداة ستدخل في الواقع وتلتزم بكل عبارات التصحيح هذه في الكود لك. لذلك ، في كل مكان تشاهده كتلة التصحيح ، لا تقم بإزالة ، بدء تشغيل مصحح الأخطاء التلقائي والتتبع ، كانت جميعها عالقة في بعض الأدوات. والخطوط الموجودة خارج ذلك ، والتي تمثل أقلية من الكود ، هي طريقة تصحيح الأخطاء غير اليدوية.

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

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

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

حسنًا ، سأتحدث الآن عن أحد الملفات التعريفية ، وفي هذه الحالة ، هذا ملف تعريف يمكنني رؤيته من خلال مصحح أخطاء. تذكر قلت في بعض الأحيان أنهم منفصلون وأحيانا يمكن أن يكونوا معا؟ في هذه الحالة ، ومرة ​​أخرى ، أنا في Rapid SQL ، وأستطيع أن أرى أن هناك هامشًا ، على الجانب الأيسر ، بجانب أرقام الأسطر. والأهم من ذلك ، هو أن هذا هو عدد الثواني أو الثانية التي استغرقتها لتنفيذ كل سطر من التعليمات البرمجية ، وأستطيع أن أرى ذلك بوضوح ، لقد قضيت كل وقتي في هذه الحلقة FOR حيث أقوم باختيار كل شيء من جدول . وهكذا ، أياً كان ما يحدث داخل تلك الحلقة ، فربما كان شيء أحتاج إلى النظر إليه ، وإذا كان بإمكاني تحسينه ، فستدفع أرباحًا. لن أحصل على أي تحسينات من خلال العمل على تلك الخطوط التي لها 0.90 أو 0.86 ؛ ليس هناك الكثير من الوقت الذي يقضيه هناك. الآن ، في هذه الحالة ، ومرة ​​أخرى ، أنا في Rapid SQL ، ترون كيف يمكنني القيام بالتوصيف المختلط مع تصحيح الأخطاء الخاص بي. الآن ، الشيء الجيد هو أن Rapid SQL يتيح لك القيام بذلك بالطريقة الأخرى. يسمح لك SQL السريع بقول ، "هل تعرف ماذا؟ لا أريد أن أكون في مصحح الأخطاء ، أريد فقط تشغيل هذا ومن ثم أريد أن أنظر في نفس النوع من المعلومات بيانياً أو بصريًا. "

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

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

حسنًا ، سأقوم بعرض تجريبي سريع حقيقي هنا. لا أعتزم دفع المنتج ، فأنا أريد فقط أن أوضح لك كيف يبدو مصحح الأخطاء "لأنه كثير من الأحيان سيقول الناس ،" لم أشاهد أحدًا من قبل من قبل. "ويبدو جميلًا في الشرائح المفاجئة للشاشة ، ولكن كيف تبدو عندما يكون في الحركة؟ لذا ، هنا على شاشتي ، أقوم بتشغيل منتج DB Artisan الخاص بنا ؛ لدينا مصحح أخطاء في هناك كذلك. تم تصميم DB Artisan بشكل أكبر بالنسبة لـ DBAs ، و Rapid SQL هي أكثر للمطورين ، لكنني رأيت مطورين يستخدمون DB Artisan ، ورأيت DBAs يستخدمون Rapid. لذلك ، لا ننشغل بهذا المنتج. وهنا ، لدي خيار إجراء تصحيح ، لكن قبل تشغيل التصحيح ، سأقوم باستخراج هذا الرمز لتتمكن من رؤية شكل التعليمات البرمجية قبل أن أبدأ تشغيلها. لذلك ، إليك الرمز نفسه الذي كان موجودًا في لقطة الشاشة ، وهذا هو الاختيار الذي قمت به للتحقق من التكرارات. وأريد تصحيح هذا ، لذلك أنا اضغط التصحيح. والآن ، يستغرق الأمر وقتًا وأنت تقول ، "حسنًا ، لماذا يستغرق الأمر بعض الوقت؟" تذكر تصحيح الأخطاء عن بُعد: لقد حدث التصحيح بالفعل على خادم قاعدة البيانات الخاص بي ، وليس على الكمبيوتر الشخصي. لذلك ، كان عليها الانتقال وإنشاء جلسة هناك ، وإنشاء شيء لتصحيح الأخطاء عن بُعد ، وربط الجلسة بجلسة تصحيح الأخطاء عن بُعد ، وإعداد قناة اتصال.

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

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

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

إريك كافانا: حسنًا ، روبن ، ربما سؤال منك ثم زوجين من ديز؟

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

بيرت سكالزو: أنت تعرف ، هذا سؤال رائع. لنفترض أنني أعمل في Visual Basic ، وأنا داخل Visual Basic الخاص بي سأقوم بالاتصال بـ Transact-SQL أو PL / SQL. اسمحوا لي أن أفعل PL / SQL ، لأن أوراكل لا يعمل بشكل جيد دائمًا مع أدوات Microsoft. قد أقوم بتوصيف رمز Visual Basic الخاص بي ، وقد يقول ملف التعريف هناك ، "مهلا ، لقد اتصلت بهذا الإجراء المخزن واستغرق الأمر وقتًا طويلاً." ولكن بعد ذلك يمكنني أن أذهب إلى الإجراء المخزن وأستطيع عمل ملف تعريف قاعدة بيانات على المخزن الإجراء وقل ، "حسنًا ، من بين 100 عبارة موجودة هنا ، إليك الخمسة التي تسببت في المشكلة." وهكذا ، قد تضطر إلى القيام بفريق علامات ، حيث يتعين عليك استخدام ملفات تعريف متعددة.

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

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

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

روبن بلور: واو.

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

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

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

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

بيرت سكالزو: لا ، حسنا ، تابع.

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

روبن بلور: نعم ، ستكون هذه كارثة. أعني ، كنت فقط سوف تسكع. سحق دائما سيئة.

على أي حال ، سأنتقل إلى Dez ؛ أنا متأكد من أنه لديه بعض الأسئلة المثيرة للاهتمام.

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

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

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

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

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

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

بيرت سكالزو: أوه نعم ، لديّ - سأقوم بتشبيه لك ، وأظهر لك أن غير المبرمجين يفعلون ذلك طوال الوقت. "إذا كنت أقوم بتدريس مصحح أخطاء أو ملف تعريف لجلسة أو جلسة ، فسأطلب من الناس ،" حسنًا ، كم من الأشخاص يذهبون إلى Microsoft Word ولا يستخدمون مطلقًا المدقق الإملائي؟ " لأنه لكتابة المستندات ، نعلم جميعًا أننا قادرون على ارتكاب أخطاء باللغة الإنجليزية ، ولذا يستخدم الجميع مدقق الإملاء. وقلت ، "حسنًا ، كيف يحدث عندما تكتب نصًا في IDE مثل Visual Basic ، فأنت لا تستخدم مصحح الأخطاء؟ إنه نفس الشيء ، إنه يشبه المدقق الإملائي. "

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

بيرت سكالزو: بالضبط.

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

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

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

بيرت سكالزو: بالضبط ، نعم ، يمكنك تشغيل هذا في السحابة.

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

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

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

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

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

استجابة سريعة: تصحيح الأخطاء في قاعدة البيانات والتوصيف إلى الإنقاذ