通常、「なぜ数学が必要ですか?」という質問が行われます。 彼らは「心の体操」などと答えます。 私の意見では、この説明では十分ではありません。 人が身体運動を行うとき、発達する筋肉群の正確な名前を知っています。 しかし、数学に関する会話は抽象的すぎるままです。 学校の代数では具体的にどのような「心の筋肉」が鍛えられるのでしょうか? それは偉大な発見がなされる現実の数学とはまったく似ていません。 いくつかの複雑な関数の導関数を探す能力は何をもたらすのでしょうか?
苦手な生徒にプログラミングを教えることで、「なぜ?」という質問に対するより正確な答えが得られました。 この記事ではそれをお伝えしていきたいと思います。
学校では、表現の変形や簡略化にかなりの時間が費やされます。 例: 81×2+126xy+49y2 は (9x+7y)2 として変換する必要があります。
この例では、生徒は和の二乗の公式を覚えることが期待されています。
より複雑な場合には、結果の式を他の変換に使用できます。 例えば:
最初に変換されるのは
そして、(a + 2b) != 0 を明確化すると、次のようになります。
この結果を達成するには、生徒は元の式を認識してから XNUMX つの公式を適用する必要があります。
- 和の二乗
- 平方の差
- 公分数の因数分解
代数学校では、ほとんどすべての時間をこのような式の変換に費やしました。 大学の高等数学では何も大きな変化はありません。 微分(積分など)の取り方を教わり、大量の問題を与えられました。 役に立ちましたか? 私の意見では、そうです。 これらの演習を実行した結果、次のようになります。
- 表現を変えるスキルが磨かれました。
- 細部へのこだわりが発達しました。
- 理想が形成されました - それは人が努力できる簡潔な表現です。
私の考えでは、このような精神、品質、スキルを持つことは、開発者の日常業務に非常に役立ちます。 結局のところ、式を単純化するとは、本質的には、意味に影響を与えることなく理解を容易にするためにその構造を変更することを意味します。 これを聞いて何か思い出しますか?
これは実質的に、Martin Fowler による同名の本にあるリファクタリングの定義です。
著者は著書の中で、それらを次のように定式化しています。
リファクタリング (n): 観察可能な動作に影響を与えることなく、理解しやすく、修正しやすくすることを目的としたソフトウェアの内部構造への変更。
リファクタリング (動詞): 動作に影響を与えることなく、一連のリファクタリングを適用してソフトウェアの構造を変更します。
この本では、ソースコード内で認識する必要がある「公式」と、それを変換するためのルールが説明されています。
簡単な例として、本書の「説明変数の導入」を示します。
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
}
二乗和と二乗差の公式を使用して代数式を簡略化できない人を想像してください。
この人はコードをリファクタリングできると思いますか?
この簡潔さの理想を形成していない場合、彼は他の人が理解できるコードを書くことさえできるでしょうか? 私の意見では、ノーです。
しかし、誰もが学校に通い、プログラマーになる人は少数です。 表現変換スキルは一般人にとっても役に立つのでしょうか? 私はイエスと思う。 スキルのみがより抽象的な形で適用されます。状況を評価し、目標に近づくためにさらなるアクションを選択する必要があります。 教育学ではこの現象をこう呼んでいます
最も顕著な例は、即席の手段である「集団農場」法を使用して家屋を修理しているときに発生します。 その結果、同じ「トリック」やライフハックが登場し、そのうちの XNUMX つが KPDV に描かれています。 このアイデアの作者は、木片、針金、および XNUMX 本のネジを持っていました。 ランプソケットのテンプレートを思い出し、そこから自家製のランプソケットを組み立てました。
車両を運転するときでさえ、ドライバーは常に周囲の世界のパターンを認識し、目的地に到達するために適切な操作を実行することに取り組んでいます。
あなたが死ぬとき、あなたはそれを知りません、それは他の人にとってはただ辛いだけです。 数学が苦手な場合も同様です...
表現の変化をマスターできなかったらどうなるでしょうか? 私は時々、学校で数学が苦手だった生徒に個人レッスンを教えています。 原則として、彼らはサイクルの話題に完全に行き詰まってしまいます。 そのため、プログラミング言語を使用して「代数」を行う必要があります。
これは、ループを作成する際の主な手法が同一の式のグループを変換することであるために発生します。
プログラムの結果が次のようになったとします。
導入
章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