精华内容
下载资源
问答
  • 一般我们经常使用round函数,习惯性的会把数字参数写为2,那是因为我们总是需要保留到小数点后两位嘛,但是我们忽略了它的参数,不止有整数,还有负数和0哦,一起学习一下吧:roundround函数:返回某个数字按指定...

    四舍五入这件事情,财务的同事经常做,但是,你这的懂四舍五入的函数round函数吗?

    一般我们经常使用round函数,习惯性的会把数字参数写为2,那是因为我们总是需要保留到小数点后两位嘛,但是我们忽略了它的参数,不止有整数,还有负数和0哦,一起学习一下吧:

    round

    2ef91dff28740692ad3b063512ebba22.gif

    round函数:返回某个数字按指定位数取整后的数字。

    round(数值,小数位数)

    需要注意的是小数位数这个参数,会有三种情况出现:

    参数为正

    执行四舍五入时采用的位数,比如,你想保留小数点后2位,这里小数位数就是2

    参数为负数

    则取整到小数点左边,比如,64.23,如果小数位数为-1,则round的结果为60,如果小数位数为-2,则,round的结果为100?不用怀疑就是这样的,因为-2表示,取整到64.23的小数点左边的两位,也就是到6,6进行四舍五入,向前进一位,64.23变为100。

    参数为0

    则取整到最接近的整数,比如,64.23,如果小数位数为0,则round的结果为64

    实例

    不同数据,参数分别选用2,-2,0,一起来看一下结果吧:

    14131682d299fc00b20cd36baaa6c3cd.gif

    如果对你有帮助,欢迎评论、点赞、转发、收藏!

    关注今日头条号“就是唏哩哗啦”,每天进步一点点,让办公更轻松!

    展开全文
  • 编程同写作,写代码只是在码字

    千次阅读 2014-07-14 20:53:29
    看到一篇文章《We Are Typists First, Programmers Second》,日期是2008年,好早的一篇文章。...或许这是一篇软文编程这件事情实际上一点儿也不难,当我们只是在使用一个工具创造一些东西的时候,

    看到一篇文章《We Are Typists First, Programmers Second》,日期是2008年,好早的一篇文章。当现在打算以一个新人的身份重新进入编程领域,或许是受《重来》的影响,或者只是在重新思考——我们究竟应该如何去编程。(转载保留:编程同写作,写代码只是在码字)

    写代码只相当于写字

    ?或许这是一篇软文

    编程这件事情实际上一点儿也不难,当我们只是在使用一个工具创造一些东西的时候,比如我们拿着电烙铁、芯片、电线等去焊一个电路板的时候,我们学的是如何运用这些工具。虽然最后我们的电路板可以实现相同的功能,但是我们可以一眼看到差距所在。

    换个贴切一点的比喻,比如烧菜做饭,对于一个优秀的厨师和一个像我这样的门外汉而言,就算给我们相同的食材、厨具,一段时间后也许一份是诱人的美食,一份只能喂猪了——即使我模仿着厨师的步骤一步步地来,也许看上去会差不多,但是一吃便吃出差距了。

    我们还做不好饭,还焊不好电路,还写不好代码,很大程度上并不是因为我们比别人笨,而只是别人比我们做了更多。有时候一种机缘巧遇的学习或者bug的出现,对于不同的人的编程人生都会有不一样的影响(ps:说的好像是蝴蝶效应)。我们只是在使用工具,使用的好与坏,在某种程序上决定了我们写出来的质量。

    写字便是如此,给我们同样的纸和笔(ps:减少无关因素),不同的人写出来的字的差距很大,写得好的相比于写得不好的 ,只是因为练习得更多。而编程难道不也是如此么,最后写代码这件事就和写字一样简单了。

    刚开始写字的时候,我们需要去了解一个字的笔划顺序、字体结构,而这些因素相当于语法及其结构。熟悉了之后,写代码也和写字一样是简简单单的事。

    学习编程只是在学造句

    ?多么无聊的一个标题

    计算机语言同人类语言一样,有时候我们也许会感慨一些计算机语言是多么地背离我们的世界,但是他们才是真正的计算机语言。

    计算机语言是模仿人类的语言,从 if 到其他,而这些计算机语言又比人类语言简单。故而一开始学习语言的时候我们只是在学习造句,用一句话来概括一句代码的意思,或者可以称之为函数、方法(method)。

    于是我们开始组词造句,以便最后能拼凑出一整篇文章。

    编程是在写作

    ?编程是在写作,这是一个怎样的玩笑?这是在讽刺那些写不好代码,又写不好文章的么

    代码如诗,又或者代码如散文。总的来说,这是相对于英语而言,对于中文而言可不是如此。如果用一种所谓的中文语言写出来的代码,不能像中文诗一样,那么它就算不上是一种真正的中文语言。

    那些所谓的写作逻辑对编程的影响

    • 早期的代码是以行数算的,文章是以字数算的
    • 代码是写给人看的,文章也是写给人看的
    • 编程同写作一样,都由想法开始
    • 代码同文章一样都可以堆砌出来(ps:如本文)
    • 写出好的文章不容易,需要反复琢磨,写出好的代码不也是如此么
    • 构造一个类,好比是构造一个人物的性格特点,多一点不行,少一点又不全
    • 代码生成,和生成诗一样,没有情感,过于机械化
    • 。。。
    然而好的作家和一般的写作者,区别总是很大,对同一个问题的思考程度也是不同的。从一个作者到一个作家的过程,是一个不断写作不断积累的过程。而从一个普通的程序员到一个优秀的程序员也是如此,需要一个不断编程的过程。

    当我们开始真正去编程的时候,我们还会纠结于"僧推月下门"还是"僧敲月下门"的时候,当我们越来越熟练就容易决定究竟用哪一个。而这样的“推敲”,无论在写作中还是在编程中都是相似的过程。

    写作的过程真的就是一次探索之旅,而且它会贯穿人的一生。

    编程只是在码字

    编程只是在码字,难道不是么?

    真正的想法都在脑子里,而不在纸上,或者IDE里。

    展开全文
  • ... 从千层酥到 iPod我几乎可以确定,我是不会去爬珠穆朗玛峰的,虽然我会乐观地保留一点儿能瞬间移动到那里的可能性。我几乎可以确定,我不会去南极。我不认识任何一个攀登过珠穆...
        
    从千层酥到 iPod

    我几乎可以确定,我是不会去爬珠穆朗玛峰的,虽然我会乐观地保留一点儿能瞬间移动到那里的可能性。我也几乎可以确定,我不会去南极。我不认识任何一个攀登过珠穆朗玛峰的人,但我确实认识一位在南极工作的天体物理学家。我知道到达南极是非常困难的,即使是坐飞机也很困难,但南极和我们之间的距离仍然是有限的。我也知道珠穆朗玛峰的高度是有限的。但是,它们对我来说就像无穷远或无穷高一样,因为我永远也不会去那些地方。

     

    无穷是存在的,但是我们能到达那里吗?如果要做的工作无穷小的话,我们是否能做无穷多的工作?在我们搞清楚这些问题之前,让我们先考虑一些看起来非常大,似乎要接近无穷的事物,以及一些看起来我们几乎是在做着无穷的工作的情况。

     

    有一个关于在国际象棋棋盘上放米粒的古老难题。这个难题的背景是这样的:一个人被要求在国际象棋棋盘的第一个方格里放上一粒米,在第二个方格里放上数量翻一番的米,在第三个方格里,米粒数量再翻一番,以此类推,直到棋盘上的每一个方格都被放满,一旦他完成这项工作,他将得到整张棋盘上的米。问题是,最终他能得到多少粒米?简化版的答案是,非常多。但是准确地说,到底一共有多少粒米呢? 

     

    原则上讲,这不是一个困难的问题。你只要不断乘以2,然后将所有得到的答案加在一起,直到你计算完所有的64 个方格就可以了。然而,如果你尝试这么做,你会发现数字增大的速度快得惊人。在正常情况下,这个数字会比你的计算器甚至普通模式下的计算机所能处理的最大的数字还要大。除非你有一些特殊的计算工具,否则你是无法算出这个数字的。有一些窍门可以帮助你加快计算,但是你最终还是需要处理一个非常非常大的数字——18446744073709551615 粒米。

     

    当然,我们通常不会以粒来计量米,除非在听起来有点儿荒谬的数学问题里。(我第一次在数学课堂里听到这个问题时,曾经试图通过手工计算来得出答案。事实证明,我算错了。)那么上面那个米粒的数量在实际情况中相当于多少米呢?我们仅需要称量出1克重的 米,然后数出粒数——1 克米大概有50 粒左右——然后我们就可以近似地进行下面的计算:


    1克 = 50 粒米

    1碗  = 100 克 = 5000 粒米

    1人  = 每天 4碗米 = 20000 粒米

    全世界  = 70 亿人 = 140000000000000 粒米

    1年  = 大约 500 天 = 70000000000000000 粒米



    我们最后得到的数字有16 个零。我们曾经计算出的米粒数量为 18446744073709551615,近似于在2 后边有19 个零。这个数字比我们算出来的够全世界所有人吃一年的米多出来3 个零,换言之,大约是其1000 倍。所以这么看起来,这些米可以养活全世界人口大约 1000 年。(当然在这里我们没有考虑到的真实情况是,世界人口每年都会增长很多。)

     

    我的计算是非常粗略的,但是我相信你能明白我的意思:只不过是在一个棋盘上移动,做着一些平淡无奇的数量翻倍,但是很快,你就拥有了无法计量的米粒——比世界上现有的所有的米还多。

     

    千层酥


    千层酥的制作依赖相同的原理,即重复做乘法使事物以极快的速度增长。千层酥里具有惊人数量的薄层,它们是通过将面团折三折这个步骤重复6 次制成的。第一步,把一层厚厚的黄油夹在面团中间。当黄油的用量刚刚好时,黄油可以在你擀面团时恰好平铺在夹层里。第二步,将面饼折三折,然后冷却。这样所有层都会保持一定的硬度,而不会和其他层粘在一起。第三步,再一次擀面,将面饼再次折三折,然后冷却。如此操作6 次。重复“×3”使得层数增长得非常快。接下来,当你烘烤千层面团时,薄薄的黄油层融化了,黄油的液体部分蒸发并产生蒸汽,这将层与层相互推离。因此除了抽象数字的增长以外,你还能看到千层面团在烤盘中有形地变大。

     

    这是我最喜欢的关于指数增长的实物演示。一般情况下,人们说事物正在呈指数型增长,仅仅是想表达它们增长了很多。这基本上是正确的,但其正式的数学定义是事物一直以相同比例的速率增长。如果我在第一次将面团折三折,第二次折四折,第三次折五折,第四次折六折,这样层数会增长得更快,但它就不是指数型增长了,因为增长的速率发生了变化。

     

    我喜欢指数增长能够直接对应于美味的千层酥这个事实。千层酥的多层次不仅仅是为了引人注意和美观。当薄薄的一层层酥皮在口中融化的时候,它能够带来精妙的口感。千层酥以难以制作闻名,但是我认为使用指数增长的天才方法重复折三折的步骤,实际上大大降低了制作那些千层酥薄层的难度。毕竟,单独擀出这样的薄层是非常困难的。数学的主旨就是将复杂的事物变得简单一些。不幸的是,不知怎么,它反而往往会创造出莫名其妙的复杂问题。

     

    iPod


    我记得当iPod(苹果公司发布的便携式数字多媒体播放器)刚刚问世的时候,我在地铁上看见了它大大的广告标语——“240 首歌曲,100 万种不同的方式”。这个广告的核心理念是希望让人们记住一件事,那就是就算只有240 首歌曲,如果你不是在播放列表中从头播到尾而是用随机的顺序来播放它们,那么你将有100 万种不同的播放方式。 

     

    事实上,100 万是一个极大的低估。出于好玩的目的,我坐在火车上计算了一下为了获得 100 万种不同的播放方式,你最少需要多少首歌。

     

    如果你有两种歌,那么你只有两种播放它们的方式:从一首开始然后播放另一首,或者反过来。假设你有三首歌。对于第一首歌,你有三首歌可供选择;对于第二首歌,你只有剩下的两首歌可供选择;对于第三首歌你将不再有选择。(这里有一个前提假设是一首歌你只想听一次,虽然在现实中我经常重复播放同一首歌曲几个小时。)我们要再画一张树状图。与之前不同的是,这一次每一层的枝杈会越来越少,因为你不想重复播放,所以我们可供选择的歌曲数量就会越来越少(见图 11–1)。

    640?wx_fmt=png

     

    所以在这里我们有6 种可能的播放顺序,从树的最上层到最下层的每一条路径都代表了一种播放顺序。根据每一级可供选择的路径的 数量,我们可以把可能的播放顺序总数计算为 3×2×1。 现在假设我们有 4 首歌,我们会得到图 11–2 这个树状图:

    640?wx_fmt=png


    或者通过下面的方式计算:


    第一首歌有 4 种可能性,

    第二首歌有 3 种可能性,

    第三首歌有 2 种可能性,

    最后一首歌有 1 种可能性。


    我们可以计算出,总的可能性的数量为4×3×2×1。(事实上我们并不需要在最后写上 1,因为乘以 1 并不会改变任何事。)

     

    这在数学中被称为阶乘。“4 的阶乘”写为“4!”。一般来说,n的阶乘为:


    n×(n – 1)×(n – 2)×…×4×3×2×1


    我们也可以用归纳法来定义这个概念。这看起来有点儿像我那个“你好”小程序里面的循环: 


    1! = 1

    n + 1)! =(n + 1)×n!


    所以,如果我们有 n 首歌,可能的播放顺序总数就是n!。因为第一首歌我们有 n 个选项,第二首歌有 n – 1 个选项,第三首歌有 n – 2 个选项,以此类推,倒数第二首歌有 2 个选项,最后一首歌只有 1 个选项。 

     

    现在,我们可以回到最初的那个问题:为了获得100 万种不同的播放方式,你至少需要多少首歌?以数学的方式来说,这意味着我们要寻找一个最小的n 值,并使这个n!大于100 万。我们可以依次写出阶乘的值,直到我们找到这个数字。记住,从一行到下一行计算下 去的时候,我们只需要用这一行的结果乘以下一个 n 的值:


    1! = 1 

    2! = 2

    3! = 3×2 = 6

    4! = 4×6 = 24

    5! = 5×24 = 120

    6! = 6×120 = 720

    7! = 7×720 = 5040

    8! = 8×5040 = 40320

    9! = 9×40320 = 362880

    10!= 10×362880 = 3628880

     

    好极了,我们已经突破了100 万!我们只需要10 首歌曲,就能用超过 300 万种顺序播放它们了。

     

    我们现在可以问另一个问题了。如果有240 首歌,我们能有多少种播放它们的方式?我们需要做如下的计算:


    240×239×238×…×3×2×1

     

    如果不使用特殊工具,这个计算几乎是不可能实现的。因为这个数字会变得非常非常大。简单地使用普通计算机电子表格尝试了一下 之后,我发现在采取近似之前它只能计算到 17!。于是我们得到:


    17! = 355687428096000


    我高兴地发现我的手机计算器能计算得更多:


    18! = 6402373705728000


    我的手机计算器可以用近似的方法计算接下来的阶乘,但是它最多只能告诉我:


    103! ≈ 9.9×10163


    之后就完全没指望了。如果再进行更大数据的计算,它只会提示我出现错误。如果采用近似计算的话,我的计算机电子表格能一直算到 170!:


    170! ≈ 7.3×10306


    接下来它也没指望了。这是因为我的旧而脆弱的计算机是使用内存来储存大的数据的,而171! 是它碰到的第一个因为太大而无法处理的阶乘。 

     

    计算统计学家里克·维克林(Rick Wicklin)编写了一个计算大数 阶乘的程序。他最近恰好在他的博客里公布了200! 的数值。他解决大数字存储问题的方式是让计算机把大的数字当作一个长长的字符串来处理。然后他让计算机像人类手算一样进行乘法计算,一位一位地做并且在需要的时候进位。他计算200! 得到的答案就是下面这串超乎寻常的数字:


    7886578673647905035523632139321850622951359776871732 6329474253324435944996340334292030428401198462390417 7212138919638830257642790242637105061926624952829931 1134628572707633172373969889439224456214516642402540 3329186413122742829485327752424240757390324032125740 5579568660226031904170324062351700858796178922222789

    6237038973747200000000000000000000000000000000000000 00000000000

     

    我相信这是我见过的最大的数字。它有375 位数字,比广告中描述的“100 万种方式”要大非常、非常、非常多个数量级。而事实上,这还不是 240!。

     

    在摆弄这些大到荒谬的数字时,我还想看看,你的iPod 里需要有多少首歌才能让它们的播放方式多于那个棋盘上的米粒。答案是,21。这就告诉我们,翻倍数字能使它们变大得非常快,而阶乘能让它们变大得更快。

     

    你也许想知道在那个数字的末尾有那么多0 是否是一个奇怪的巧合。事实上,上面那个数一共有49 个 0。大数的阶乘 结果注定会在末尾有大量的0,即使不知道阶乘的答案,我们 也能算出它的末尾会有多少个0。最终答案中的每一个0 都来自一个因子10,而每一个10 都来自阶乘数字中的一个因子2 和一个因子5。由于存在的因子2 要比因子5 多,因此我们只 需要数出从1到我们所计算阶乘的数字之间有多少个5的倍数。 记住,有些数字具有多个因子 5,因此会贡献多个 0。

     

    你长得有多快?


    小时候,孩子们会长得非常快。因为他们实在是太小了,所以看起来会比实际长得更快一些。假设一个孩子在最初的几年里一年大约长高10 厘米,对于一个婴儿来说,这个增长量显得非常大,因为10厘米占婴儿总长的比例很大。当然,孩子们的生长速度是不同的。有些孩子在小时候比较矮,但是未来某段时期会出现一个急剧的增长,并开始超越周围的所有人。

     

    在数学中,我们也会考虑事物增长得多快,是否有些事物会比其他事物增长得更快这些问题。例如,在米粒的例子里,我们用2n 来表示数量,这里n 是稳定增大的。在歌曲播放的事例中,我们用n! 来表示数量,这里 n 是稳定增大的。在这两种情况下,数字都会非常快地增长到难以置信的大小,虽然它们仍然是有限的。在数学上,我们说“当n 趋于无穷时,2n 趋于无穷”。在这里,我们非常谨慎地避 免了直接宣称某些事物“是”无穷的。同样,当n 趋于无穷时,阶 乘n!也趋于无穷。但是我们会感觉到n!比2n 增长得“更快”一些。这又是什么意思呢?

     

    搞清楚这件事的一个方式就是把二者构建成一个分数:

    640?wx_fmt=png 

    从这个分数中,我们可以观察随着n 的增加谁会“赢”得比赛。 如果分数数值持续变大,就意味着n!胜利了。如果分数数值持续变小,那么2n 就胜利了。如果分数保持不变,就表示这是个平局。现在我们可以再次耍一个小聪明,将这个分数写成:


    640?wx_fmt=png


    接下来,我们可以像这样将它分解成一个个单独的分数相乘:


    640?wx_fmt=png


    现在,我们可以看出这是一大堆分数的乘积,它们几乎都是头重脚轻的。除了最末尾的。此外,随着n 越来越大,分数的乘积逐渐包含越来越多的项,同时新项将会比之前的项更为头重脚轻,因为其顶部的分子将越来越大,而底部的分母则始终是 2。最终的结果就是顶部明显胜过底部。

     

    事物趋于无穷的速度是有一个等级的。这与我们之前所说的无穷的层级有一些不同,但都是基于相似的想法建立的。 我们刚刚看到,n!增长得比640?wx_fmt=png快,而640?wx_fmt=png又比n^2 增长得快。事实上,640?wx_fmt=png比n^3、 n^4 或n的任何次幂,甚至640?wx_fmt=png增长得都要快。 最后一个数看起来很大,而且除了n = 1 以外,在开始阶段它确实比640?wx_fmt=png要大。但是640?wx_fmt=png最终会超越它。我们来试一个稍微不那么夸张的数, 比如640?wx_fmt=png。我的计算机告诉我,640?wx_fmt=png会一直领先640?wx_fmt=png直到 n = 125。之后,640?wx_fmt=png就领先了。

     

    在这里,我们只考虑n 的正数次幂。因为负数次幂通常根本不会带来增长。随着 n 的增大,n 的负数次幂通常越来越小。

     

    有个东西比所有可能的n 的幂都要增长得慢,那就是log n。你 也许还记得,对数是与指数相反的。如果我们以10 为底来做对数, 那么log n就是“将10增大到n所需要的指数”。所以log 100就是2, 因为你计算10 的 2 次幂就能得到100。而log 1000 就是3。然后100 到 1000 之间任意数的对数都位于 2 和 3 之间。以 10 为底数取对数基 本上就是在计算一个数在以10 为基数的情况下包含多少位数字。所以当n 增大时,log n 也会持续增大,但其增大的速度很慢。当n 已 经增大到 100 万时,log n 才仅仅增大到 6。

     

    这就是对数有用的一个原因。它可以将大数字转换成小数字,这样我们就能较方便地处理这些数字了。有这样一个理论,当数字增大到超过某个特定点的时候,我们的大脑就无法真正处理这个数字了。所以我们转而使用对数的方式思考,观察这个数有多少位而不是看它有多大。你可能也会这么做,即使你没有意识到你是在“取对数”。 这就是为什么在之前的例子里我会告诉你200!所得到的数字有375 位,因为 375 是一个我们能处理的数字。换言之,我刚刚从对数的角度对这个数字进行了转换。当一个数字大到这个程度时,与数字的数量级相比,你基本上已经不会在乎在这个数的某一位上加上或者减去 一个 1 了。这就是为什么在米粒的例子中我如此随意地假设一年中有 500 天。我知道相对于这个事件的宏伟性,500 与 365 之间并没有什么重要的区别,我真正需要做的就是选择一个与365 具有相同位数的数字。这里,我就使用对数的方式进行了思考。 

     

    总而言之,对数比 n 的任意确定的幂都要增长得慢。

     

    慢速增长


    有可能你增长得非常缓慢,以至于虽然你还在增长但是已经看不出来了。想象一下你正在节食,你决定只吃一块蛋糕的640?wx_fmt=png。但是蛋糕太美味了,你决定再吃这块蛋糕的640?wx_fmt=png。接下来,由于你像我一样控制 不住地想要更多但是又真的不想变胖,所以你决定再多吃一点点,但是这次只吃这块蛋糕的640?wx_fmt=png。接下来640?wx_fmt=png,再接下来640?wx_fmt=png,一直继续下去。最终你将吃下多少蛋糕呢?经过一段时间之后,你每次吃的蛋糕将基本上不存在了。因为在100 万轮之后,你只能再吃这块蛋糕的百万分之一,这基本上就等于什么都没吃,对吧?

     

    错了。如果你持续这样吃下去直到永远,你最终将会吃下无穷量的蛋糕。事实上,你吃的蛋糕量是呈对数增长的。它的增长速度确实很慢,而且会越来越慢,但仍会不可阻挡地趋于无穷(见图 11–3)。


    640?wx_fmt=png

    图 11–3

     

    从图11–3 中你可能无法判断这个曲线最终是否会完全变平,但我来告诉你,它真的不会。这个曲线是无边界的,这表示无论你想到哪个数字,最终它都会超过那个数字。无论你想要它变成多大,最终它都会变得比你预想得更大。我们将在第 16 章解释这个问题。

     

    这个例子说明,我们在思考无穷的增长的时候,真的要非常小心。因为我们的直觉极有可能导致我们误入歧途。一块蛋糕是微不足道的,但如果我们想要吃到的是无穷量的蛋糕呢?这就是我们需要依赖数学的精密性来搞清楚这些明显令人困惑的矛盾,并且确定我们能否吃到无穷量蛋糕的原因。

    640?wx_fmt=gif


    粉丝福利

    送书!


    640?wx_fmt=png 

    《超越无穷大:一次跨越数学边界的冒险之旅》

     

    本书入围英国皇家学会科学图书奖短名单,获得包括《魔鬼数学》作者乔丹•艾伦伯格在内的多位数学界大佬联袂推介。


    想获得此书,

    文章底部留言,

    留言点赞前五名的粉丝(24小时计),

    免费获得此书!

    640?wx_fmt=gif

    展开全文
  • 看到一篇文章《We Are Typists First, Programmers Second》,日期是2008年,好早的一篇文章。当如今打算以一个新人的身份又...或许这是一篇软文编程这件事情实际上一点儿也不难,当我们仅仅是在使用一个工具创造...

    看到一篇文章《We Are Typists First, Programmers Second》,日期是2008年,好早的一篇文章。当如今打算以一个新人的身份又一次进入编程领域。或许是受《重来》的影响,或者仅仅是在又一次思考——我们到底应该怎样去编程。(转载保留:编程同写作,写代码仅仅是在码字)

    写代码仅仅相当于写字

    ?或许这是一篇软文

    编程这件事情实际上一点儿也不难,当我们仅仅是在使用一个工具创造一些东西的时候。比方我们拿着电烙铁、芯片、电线等去焊一个电路板的时候,我们学的是怎样运用这些工具。尽管最后我们的电路板能够实现同样的功能。可是我们能够一眼看到差距所在。

    换个贴切一点的比喻,比方烧菜做饭。对于一个优秀的厨师和一个像我这种门外汉而言,就算给我们同样的食材、厨具,一段时间后或许一份是诱人的美食,一份仅仅能喂猪了——即使我模仿着厨师的步骤一步步地来,或许看上去会差点儿相同,可是一吃便吃出差距了。

    我们还做不好饭。还焊不好电路,还写不好代码。非常大程度上并非由于我们比别人笨,而仅仅是别人比我们做了很多其它。有时候一种机缘巧遇的学习或者bug的出现,对于不同的人的编程人生都会有不一样的影响(ps:说的好像是蝴蝶效应)。我们仅仅是在使用工具。使用的好与坏,在某种程序上决定了我们写出来的质量。

    写字便是如此。给我们同样的纸和笔(ps:降低无关因素),不同的人写出来的字的差距非常大,写得好的相比于写得不好的 ,仅仅是由于练习得很多其它。而编程难道不也是如此么,最后写代码这件事就和写字一样简单了。

    刚開始写字的时候。我们须要去了解一个字的笔划顺序、字体结构,而这些因素相当于语法及其结构。熟悉了之后。写代码也和写字一样是简简单单的事。

    学习编程仅仅是在学造句

    ?多么无聊的一个标题

    计算机语言同人类语言一样。有时候我们或许会感慨一些计算机语言是多么地背离我们的世界,可是他们才是真正的计算机语言。

    计算机语言是模仿人类的语言,从 if 到其它。而这些计算机语言又比人类语言简单。故而一開始学习语言的时候我们仅仅是在学习造句。用一句话来概括一句代码的意思,或者能够称之为函数、方法(method)。

    于是我们開始组词造句,以便最后能拼凑出一整篇文章。

    编程是在写作

    ?编程是在写作,这是一个怎样的玩笑?这是在讽刺那些写不好代码,又写不好文章的么

    代码如诗,又或者代码如散文。

    总的来说,这是相对于英语而言。对于中文而言可不是如此。假设用一种所谓的中文语言写出来的代码。不能像中文诗一样,那么它就算不上是一种真正的中文语言。

    那些所谓的写作逻辑对编程的影响

    • 早期的代码是以行数算的,文章是以字数算的
    • 代码是写给人看的。文章也是写给人看的
    • 编程同写作一样,都由想法開始
    • 代码同文章一样都能够堆砌出来(ps:如本文)
    • 写出好的文章不easy。须要重复琢磨,写出好的代码不也是如此么
    • 构造一个类,好比是构造一个人物的性格特点。多一点不行,少一点又不全
    • 代码生成。和生成诗一样,没有情感,过于机械化
    • 。。

    然而好的作家和一般的写作者,差别总是非常大,对同一个问题的思考程度也是不同的。从一个作者到一个作家的过程,是一个不断写作不断积累的过程。而从一个普通的程序猿到一个优秀的程序猿也是如此,须要一个不断编程的过程。

    当我们開始真正去编程的时候,我们还会纠结于"僧推月下门"还是"僧敲月下门"的时候,当我们越来越熟练就easy决定到底用哪一个。而这种“推敲”,不管在写作中还是在编程中都是类似的过程。

    写作的过程真的就是一次探索之旅,并且它会贯穿人的一生。

    编程仅仅是在码字

    编程仅仅是在码字,难道不是么?

    真正的想法都在脑子里。而不在纸上。或者IDE里。

    展开全文
  • 维护网站,多多少少都需要学习一点儿相关知识。 其实,博客平台在一定程度上满足了这个“刚需”,但它和真正的个人网站还有差距。因此,GitHub 早就推出了 GitHub Pages 服务。它既保留个人网站的灵活性,又降低了建...
  • 软件测试小白必读

    2017-10-28 16:31:00
    软件测试作为一个行业繁荣发展,只是近四五年的事情,相关培训是雨后春笋,自2011年入行,看过太多人转行,看过一些人带着未知想入行,真真是围城里的人想出去,...这么说一点儿都没有逗你的意思,2011年的时候,诺
  • 测试技术的牛人心得

    2018-06-25 18:46:10
    软件测试作为一个行业繁荣发展,只是近四五年的事情,相关培训是雨后春笋,自2011年入行,看过太多人转行,看过一些人带着未知想入行,真真是围城里...这么说一点儿都没有逗你的意思,2011年的时候,诺基亚虽已...
  • 后来想出了一点儿, 日本这里的建筑风格、家具装潢都在最大程度的保留自己的传统风格, 同样日本人穿西装是怪怪的,他们的西装都是明显区别于西欧风格,裁剪更加的贴身; 一直以来的日本人总是在努力学习世界...
  • 但有的客户根本不听你的解释,对你大喊大叫,甚至满口脏话,我十分委屈,但是只要我们公司的利益不受损害,用户发泄一下又何妨呢,我委屈一点儿不算什么。每天周而复始的工作,这样的事情经常会发生,但我始终牢记...
  • # import intro 请原样保留此行 字幕 1 00:00:00,000 --> 00:00:02,440 2 00:00:02,440 --> 00:00:04,440 3 00:00:04,720 --> 00:00:07,680 是起泡泡了 这糖化了 4 00:00:07,680 --> 00:00:09,400 ...
  • 而这时如果有一个冗余的实例,就可以先让冗余的实例对外服务,事故现场的环境得以保留。 多个实例来做负载均衡是一种不错的选择。 2.回滚设计 确保系统可以回滚到以前发布过的任何版本。 以前做游戏的时候...
  • # import intro (请原样保留此行) 字幕 1 00:00:00,000 --> 00:00:04,120 2 00:00:04,120 --> 00:00:10,120 瞧瞧 焦黄 脆脆的 3 00:00:10,120 --> 00:00:11,760 真好 4 00:00:11,760 --> 00:00:14,...
  • 我自己气馁过,所以我在第二版中,仍然试图把话说细一点,把自己的经验拿出来分享。而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的...
  • 我自己气馁过,所以我在第二版中,仍然试图把话说细一点,把自己的经验拿出来分享。而且我选择我能想到的最精简的设计,以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的...
  • 疯狂的程序员

    热门讨论 2012-07-18 18:05:32
    他老爸不停的说:“哟,再考个大学要多少钱哟。这学费都交了8000多了哟……” 所以最后,王江没能退成学。不过因为这次退学风波,王江一举成为专业上的名人。为啥?为啥要退学?此地不留爷,自有留爷处。所以,...
  • PERL语言编程

    2007-06-24 11:55:48
    <br/>不过,偏执一点儿说,Perl 帮你的大部分内容和 Perl 本身没有什么关系,而是和使用 Perl 的人有关。坦率地说,Perl 社区的人们可以说是地球上最热心的人了。如果 Perl 运动里面有那么一点点宗教色彩的话...
  • 不用勾芡儿也黏的诀窍是啥? 醋在什么时候搁?干烧和红烧的区别? 小友们带着这些疑问赶紧看看视频,学习一下三叔倾囊相授的干烧鱼吧! # import intro 请原样保留此行 字幕 1 00:...
  • 【国宴大师•门钉肉饼】一口爆汁的门钉肉饼,皮酥馅香、多汁肉嫩,掌柜的看家本领全在这儿了! |老饭骨 简介 大家好,今天邀请到了老门框爆肚涮肉的掌门人宋军为我们带来老北京记忆中的...
  • 主板与CPU的搭配

    2014-01-17 20:22:42
    声卡,我觉得用集成的就行,现在好一点儿的板子都可以支持到6.0或以上,不是专业用户够用了。集成的网卡有好用的,有不好用的。笔者的华硕主板集成的网卡就很好用,与独立网卡在速度上感觉不出什么差别;而另一台...
  • # import intro 稿件内请原样保留此行 字幕 1 00:00:00,000 --> 00:00:04,360 2 00:00:04,360 --> 00:00:05,440 小魏师父考考你 3 00:00:05,440 --> 00:00:07,200 是直刀下还是坡一点 4 00:00:07,200 -...
  • 咱们一点水不澥 这叫润 3 00:00:03,880 --> 00:00:04,840 4 00:00:04,840 --> 00:00:06,080 好香啊 5 00:00:06,080 --> 00:00:07,400 6 00:00:07,400 --> 00:00:09,080 我炸酱的时候用三种酱 7 00:...
  •  本书可以作为数据库开发人员、数据库管理员、数据库初学者及其他数据库从业人员的工作参考手册,可以作为各大中专院校相关专业师生的参考用书和相关培训机构的培训教材。 作译者  张晓明,Oracle OCP,现用...
  • 一点儿膻味都没有,不会影响羊肉本来的鲜香。 看完视频记得留言告诉老饭骨,开锅煮馅儿、闭锅煮皮的还有如何让饺子不粘的秘诀大家学会了吗? 字幕 1 00:00:00,000 --> 00:00:01,760 饺子...
  • c#学习笔记.txt

    热门讨论 2008-12-15 14:01:21
    看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的不是什么新玩意,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说...
  • 让默认的就可以了,但是超频玩者是肯定不会放过任何可以提高性能的东西的,所以如果你想在这里让你的电脑提升一点性能的话,就必须慢慢试验,选择一个适当的参数才能让你的计算机达到性能和稳定的最佳状态!...
  • 接下来需要等待一小会,因为这个命令是下载源码并编译安装 Apache。上面命令执行结果如下面这样: <pre><code>bash 🍺 /usr/local/Cellar/httpd24/2.4.23_2: 212 files, 4.4M, built in 1 ...
  • 软件测试作为一个行业繁荣发展,只是近四五年的...这么说一点儿都没有逗你的意思,2018年的时候,诺基亚虽已迟暮,但还顽强的支撑着很多团队的运转,我从那个时候开始手机系统的测试,后来到android app的测试,然后

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

一点儿也保留