عادة ما يكون السؤال "لماذا نحتاج إلى الرياضيات؟" أجب عن شيء مثل "الجمباز للعقل". في رأيي ، هذا التفسير لا يكفي. عندما يقوم شخص ما بتمارين بدنية ، فإنه يعرف الاسم الدقيق لمجموعات العضلات التي تنمو. ولكن الحديث عن الرياضيات لا يزال مجردا جدا. ما هي "عضلات العقل" المحددة المدربة في علم الجبر بالمدرسة؟ بعد كل شيء ، لا يبدو على الإطلاق مثل الرياضيات الحقيقية ، التي يتم فيها اكتشافات عظيمة. ما الذي يعطي القدرة على البحث عن مشتق بعض الوظائف المحيرة؟
أدى تدريس البرمجة للطلاب الضعفاء إلى إجابة أكثر دقة على السؤال "لماذا؟". في المقالة سأحاول نقلها إليك.
في المدرسة ، يخصص الكثير من الوقت لتحويل التعبيرات وتبسيطها. على سبيل المثال: 81x
2 + 126xy + 49y
2 تحتاج إلى تحويل كـ (9x + 7y)
2 .
في هذا المثال ، من المتوقع أن يتذكر الطالب الصيغة التربيعية المربعة

في الحالات الأكثر تعقيدًا ، يمكن استخدام التعبير الناتج للتحولات الأخرى. على سبيل المثال:

تحويل أولا إلى

وبعد ذلك ، مع التحسين (a + 2b)! = 0 ، اتضح مثل هذا

لتحقيق هذه النتيجة ، يحتاج الطالب إلى التعرف في التعبير الأصلي ثم تطبيق ثلاث صيغ:
- المبلغ التربيعي
- فرق مربع
- تقليل العوامل المضاعفة
في مدرسة عادية في الجبر ، كنا نشارك طوال الوقت تقريبًا في مثل هذا التحول من التعبيرات. في الجامعة في الرياضيات العليا ، لم يتغير شيء بشكل كبير. قيل لنا كيف نأخذ المشتقات (التكاملات ، إلخ) وتم إعطاؤنا الكثير من المهام. هل كان هذا مفيدًا؟ في رأيي ، نعم. نتيجة لهذه التمارين:
- تم تحسين مهارة تحويل التعبيرات.
- تطور الاهتمام بالتفاصيل.
- تم تشكيل المثل الأعلى - تعبير موجز يمكن للمرء أن يسعى ل.
في رأيي ، فإن وجود مثل هذه المثالية والجودة والمهارة مفيد جدًا في العمل اليومي للمطور. في الواقع ، إن تبسيط التعبير ، في جوهره ، يعني تغيير بنيته من أجل تسهيل الفهم ، دون التأثير على المعنى. هل هذا يذكرك بأي شيء؟
هذا هو عمليا تعريف إعادة بيع المباني من كتاب يحمل نفس الاسم من قبل مارتن فاولر.
في أعماله ، يصوغها المؤلف على النحو التالي:
Refactoring (n): تغيير في الهيكل الداخلي للبرنامج بهدف تسهيل فهم تشغيله وتبسيط التعديل دون التأثير على السلوك الملاحظ.
أداء Refactor (فعل): تغيير هيكل البرنامج من خلال تطبيق سلسلة من إعادة بيع الأراضي دون التأثير على سلوكها.
يعطي الكتاب "الصيغ" التي يجب الاعتراف بها في التعليمات البرمجية المصدر وقواعد تحويلها.
كمثال بسيط ، سأذكر "إدخال متغير توضيحي" من الكتاب:
if ( (platform.toUpperCase().indexOf(“MAC”) > -1 ) &&
(browser.toUpperCase().indexOf(“IE”) > -1 )&&
wasInitialized() && resize > 0 ) {
// do something
}
, .
final boolean isMacOS = platform.toUpperCase().indexOf(“MAC”) > -1;
final boolean isIEBrowser = browser.toUpperCase().indexOf(“IE”) > -1;
final boolean isResized = resize > 0;
if(isMacOS && isIEBrowser && wasInitialized() && isResized) {
// do something
}
, .
, ?
, ? — .
, . ? . : , .
().
, «» . «» , . , . , .
, , .
, , . , …
, ? , . , . , «», .
, , .
:
1
2
3
4
5
6
7
:
static void Main(string[] args)
{
Console.WriteLine("");
Console.WriteLine(" 1");
Console.WriteLine(" 2");
Console.WriteLine(" 3");
Console.WriteLine(" 4");
Console.WriteLine(" 5");
Console.WriteLine(" 6");
Console.WriteLine(" 7");
Console.WriteLine("");
}
. . :
static void Main(string[] args)
{
Console.WriteLine("");
for (int i = 1; i <= 7; i++)
{
Console.WriteLine(" " + i);
}
Console.WriteLine("");
}
, . . — .
. , . , . . .
:
- , , .
- , — . 9 .