Обикновено на въпроса "защо е нужна математиката?" отговарят с нещо от рода на "гимнастика за ума". Според мен, това обяснение е недостатъчно. Когато човек изпълнява физически упражнения, той знае точните имена на мускулните групи, които се развиват. Но разговорите за математиката остават твърде абстрактни. Кои точно "мускули на ума" се тренират с училищната алгебра? Тя изобщо не прилича на истинската математика, в която се правят велики открития. Какво дава умението да търсиш производна на някакви заплетени функции?
Преподаването на програмиране на слаби студенти ме доведе до по-точен отговор на въпроса "защо?". В статията ще се постарая да го предам на вас.

В училище доста време се отделя за преобразуване и опростяване на изрази. Например: 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 ) {
// направи нещо
}Частите на израза трябва да бъдат записани в променлива, чието име обяснява предназначението му.
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) {
// направи нещо
}
Представете си човек, който не може да опрости алгебрични изрази, използвайки формулата за квадрата на сумата и разликата на квадратите.
Как мислите, ще може ли този човек да рефактурира код?
Ще може ли изобщо да напише разбираем код за другите, ако няма сформирано разбиране за тази лаконичност? Според мен — не.
Въпреки това, в училище учат всички, а програмисти стават малцинство. Полезен ли е умението за преобразуване на изрази за обикновените хора? Мисля, че да. Но умението се прилага в по-абстрактна форма: нужна е оценка на ситуацията и избор на следващо действие, така че да се приближите до целта. В педагогиката този феномен се нарича .
Най-ясните примери възникват при домашен ремонт с подръчни средства, "колхозен" начин. В резултат на това се появяват същите тези "трикове" и лайфхаци, един от които е показан на КПДВ. Идеята на автора беше парче дърво, кабел и четири винта. Припомняйки си шаблон за лампа, той си сглоби самоделен патрон.
Дори при шофиране, шофьорът постоянно разпознава шаблони в околния свят и изпълнява съответните маневри, за да стигне до целта.
Когато умреш, ти не знаеш, само на другите им е трудно. Същото е, когато не овладееш математиката…
Какво се случва, ако човекът не успее да овладее преобразуването на изрази? От време на време водя индивидуални занятия със студенти, които са имали проблеми с математиката в училище. Обикновено те напълно се затрудняват с темата за цикли. До такава степен, че трябва да се занимавам с тях с "алгебра", но на езика на програмирането.
Това се случва, защото основният принцип при написването на цикли е именно в преобразуването на група от еднакви изрази.
Да предположим, че резултатът от работата на програмата трябва да изглежда така:
Въведение
Глава 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
