Зазвичай питанням «навіщо потрібна математика?» відповідають щось на зразок «гімнастика для розуму». На мою думку, цього пояснення недостатньо. Коли людина виконує фізичні вправи, він знає точну назву груп м'язів, які у своїй розвиваються. Але розмови про математику залишаються надто абстрактними. Які саме «м'язи розуму» тренуються шкільною алгеброю? Адже вона зовсім не схожа на справжню математику, в якій робляться великі відкриття. Що дає вміння шукати похідну якихось заплутаних функцій?
Викладання програмування слабким студентам призвело мене до більш точної відповіді на запитання «навіщо?». У статті я намагатимусь донести його вам.
У школі досить багато часу присвячується перетворенню та спрощенню виразів. Наприклад: 81×2+126xy+49y2 потрібно перетворити як (9x+7y)2.
У цьому прикладі від учня очікують, що згадає формулу квадрата суми
У більш складних випадках отриманий вираз можна використовувати для інших перетворень. Наприклад:
перетворюється спочатку на
а потім, з уточненням (a + 2b)! = 0, виходить так
Щоб досягти такого результату, учневі потрібно розпізнати у вихідному виразі і потім застосувати три формули:
- квадрат суми
- різниця квадратів
- Скорочення множників звичайного дробу
У звичайній школі на алгебрі майже весь час ми займалися таким перетворенням виразів. У ВНЗ на вищій математиці нічого значно не змінилося. Нам розповіли як брати похідні (інтеграли тощо) та видали тонну завдань. Чи це було корисно? На мій погляд, так. В результаті виконання таких вправ:
- Відточилася навичка перетворення виразів.
- Розвинулася уважність до дрібниць.
- Було сформовано ідеал — лаконічний вираз, якого можна прагнути.
На мій погляд, наявність такого ідеалу, якості та навички дуже корисна у щоденній роботі розробника. Адже спростити вираз, по суті, означає змінити його структуру з метою полегшити розуміння, не торкаючись сенсу. Вам це нічого не нагадує?
Це фактично визначення рефакторингу з однойменної книжки Мартіна Фаулера.
У своїй праці автор формулює їх таким чином:
Рефакторинг (Refactoring): зміна у внутрішній структурі програмного забезпечення, що має на меті полегшити розуміння його роботи і спростити модифікацію, не торкаючись спостерігається поведінки.
Проводити рефакторинг (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 класу та нарішіть приклади з нього.
Джерело: habr.com