這就是為什麼需要高中代數

通常的問題是“為什麼我們需要數學?” 他們的回答類似「心靈體操」。 在我看來,這個解釋還不夠。 當一個人進行體能訓練時,他知道所發展的肌肉群的確切名稱。 但有關數學的對話仍然過於抽象。 學校代數訓練了哪些具體的「心理肌肉」? 它與真正的數學完全不同,在數學中做出了偉大的發現。 尋找某些複雜函數的導數的能力會帶來什麼?

向弱學生教授程式設計使我對「為什麼?」這個問題有了更準確的答案。 在這篇文章中我將嘗試向您傳達這一點。

這就是為什麼需要高中代數
在學校裡,相當多的時間都花在了表達式的轉換和簡化。 例如:81×2+126xy+49y2需要轉換為(9x+7y)2。

在此範例中,學生需要記住總和平方的公式

這就是為什麼需要高中代數

在更複雜的情況下,產生的表達式可用於其他轉換。 例如:

這就是為什麼需要高中代數

首先被轉換為

這就是為什麼需要高中代數

然後,經過澄清 (a + 2b) != 0,結果是這樣的

這就是為什麼需要高中代數

為了達到這個結果,學生需要辨識原始表達式,然後應用三個公式:

  • 總和的平方
  • 平方差
  • 約簡公分數的因數

在代數學校裡,我們幾乎所有的時間都花在這樣的變換表達式上。 大學的高等數學沒有任何重大變化。 我們被告知如何求導數(積分等)並給出了許多問題。 有幫助嗎? 我認為 - 是的。 執行這些練習的結果是:

  1. 變換表情的技巧得到了磨練。
  2. 對細節的關注得到了發展。
  3. 一種理想形成了──一種人們可以為之奮鬥的簡潔表達。

在我看來,擁有這樣的精神、品質和技能對於開發者的日常工作是非常有用的。 畢竟,簡化表達式本質上就是改變其結構,以便於理解而不影響其意義。 這讓你想起什麼了嗎?

這其實是 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
}

想像一個人無法用平方和和平方差公式來簡化代數表達式。

你認為這個人可以重構程式碼嗎?

如果他沒有形成這種簡潔的理想,他還能寫出別人能理解的程式碼嗎? 我認為,不。

然而,每個人都上學,只有少數人成為程式設計師。 表情轉換技巧對一般人有用嗎? 我想是的。 只是技能以更抽象的形式應用:你需要評估情況並選擇進一步的行動,以便更接近目標。 在教育學中,這種現象稱為 轉移(技能).

最引人注目的例子出現在使用臨時手段「集體農場」方法進行家庭維修時。 結果,同樣的「技巧」和生活小技巧出現了,其中之一在 KPDV 上有所描述。 這個想法的作者有一塊木頭、一根電線和四個螺絲。 記住了燈座模板,他用它們組裝了一個自製的燈座。

即使在駕駛車輛時,駕駛員也會不斷地識別周圍世界的模式並執行適當的操作以到達目的地。

當你死的時候,你不知道,只是對其他人來說很難。 當你沒有掌握數學的時候也是一樣的...

如果一個人不能掌握表情的變換會怎麼樣? 我時不時地給學校裡數學不好的學生單獨上課。 一般來說,他們完全陷入了周期的話題。 如此之多以至於你必須用它們來做“代數”,但是用程式語言。
發生這種情況是因為在編寫循環時,主要技術是轉換一組相同的表達式。

假設程序的結果應如下所示:

介紹
第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("Заключение");
}

如果一個人沒有一次掌握數學,那麼他就無法進行這樣的轉變。 他根本不具備適當的技能。 這就是為什麼循環主題是開發人員培訓的第一個障礙。

類似的問題也出現在其他領域。 如果一個人不知道如何使用手邊的工具,那麼他就無法表現出日常的聰明才智。 邪惡的舌頭會說手是從錯誤的地方長出來的。 在路上,這表現為無法正確評估情況並選擇策略。 這有時會導致悲慘的後果。

結論:

  1. 我們需要學校和大學數學,以便我們能夠利用我們擁有的手段讓世界變得更美好。
  2. 如果您是學生並且在學習週期上遇到困難,請嘗試回到基礎知識 - 學校代數。 拿一本 9 年級的習題冊並解決其中的範例。

來源: www.habr.com

添加評論