通常的问题是“为什么我们需要数学?” 回答诸如“头脑锻炼”之类的问题。 我认为,这种解释还不够。 当一个人进行体育锻炼时,他知道正在发育的肌肉群的确切名称。 但是谈论数学仍然太抽象。 在学校代数中训练了哪些特定的“头脑肌肉”? 毕竟,它看起来根本不像是真正的数学,在其中发现了伟大的发现。 是什么赋予了搜索某些令人困惑的函数的导数的能力?
对弱势学生的编程教学使我对“为什么?”这个问题有了更准确的答案。 在本文中,我将尝试将其传达给您。
在学校,很多时间都用于表达的转换和简化。 例如:81x
2 + 126xy + 49y
2需要转换为(9x + 7y)
2 。
在此示例中,学生应回忆起平方平方公式

在更复杂的情况下,结果表达式可以用于其他转换。 例如:

首先转换为

然后,通过细化(a + 2b)!= 0,结果变成这样

为了获得这个结果,学生需要在原始表达式中识别,然后应用三个公式:
在代数的一所普通学校中,几乎所有时候我们都在从事这种表达方式的转换。 在高等数学大学中,没有任何变化。 我们被告知如何取导数(积分等),并被赋予大量任务。 这有帮助吗? 我认为是的。 经过这样的练习:
- 转换表达式的技巧已经完善。
- 对细节的关注已经发展。
- 理想形成了,人们可以争取的简洁表达。
我认为,这种理想,质量和技能的存在对于开发人员的日常工作非常有用。 实际上,简化表达实质上意味着在不影响其含义的情况下改变其结构以便于理解。 这会让您想起什么吗?
这实际上是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
}
, .
, ?
, ? — .
, . ? . : , .
().
, «» . «» , . , . , .
, , .
, , . , …
, ? , . , . , «», .
, , .
:
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 .