免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: starwing83
打印 上一主题 下一主题

[其他] 我的编程生涯 - 已更新到第24集 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
161 [报告]
发表于 2013-01-28 14:49 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
162 [报告]
发表于 2013-01-28 14:49 |只看该作者
shan_ghost 发表于 2013-01-28 14:42
是的,这其实是同样的错误:他们试图在小孩子尚未搞清楚加法究竟是什么之前,就灌输公理化体系。这和“直接背三五一十五”是完全相同的。


就是这个意思:)

论坛徽章:
0
163 [报告]
发表于 2013-01-28 15:44 |只看该作者
真不错  留个名  催更  

论坛徽章:
9
寅虎
日期:2013-08-30 09:34:32白羊座
日期:2013-09-07 13:20:56辰龙
日期:2013-09-07 13:43:13午马
日期:2013-09-08 07:41:16双鱼座
日期:2013-10-11 13:09:43双鱼座
日期:2013-10-15 08:19:59处女座
日期:2013-10-26 17:16:21卯兔
日期:2013-10-26 17:16:31技术图书徽章
日期:2013-10-27 22:07:09
164 [报告]
发表于 2013-01-28 19:35 |只看该作者
我来催稿

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
165 [报告]
发表于 2013-01-28 20:22 |只看该作者
本帖最后由 Ager 于 2013-01-28 20:27 编辑
会当凌绝顶聪 发表于 2013-01-28 15:44
催更

blueroger07 发表于 2013-01-28 19:35
我来催稿


莫催更。莫催更。。。

在楼主已发的篇章当中,已经有足够多的有待我们细细品味与咀嚼的内容了,呵呵 —— :)

读者,要给自己也要给作者多一点点时间,彼此都好沉下心来。。。:)




论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
166 [报告]
发表于 2013-01-28 22:05 |只看该作者
回复 165# Ager


    鼓励催更~~因为作者很懒~嘿嘿。

我是非常希望一天一更的。所以肯定要有人督促啦~~嘿嘿。


不过催了以后更不更~~哼哼~

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
167 [报告]
发表于 2013-01-29 00:06 |只看该作者
我的编程生涯(9):困境和顿悟

    大一的下半学期,对我来说是一个重要的转折。

    延续了整个上半年的疯狂的吸收,似乎到了瓶颈地带。我看完了我所能找到的任何一
本书。现在是开始编程的时间了。

    可是,我意外地发现,我居然不知道该如何开始。

    因为以前编程的时候用的是Lava,那货是不存在malloc和free的,所有的内存都给你
(从8192到24K的所有内存),然后你自己爱怎么用怎么用,反正就是这么多。突然一下
子转移到有了内存保护的Windows,我感到很不适应。虽然看过了许多书,但是在这种情
况下应该怎么办,我还是没有任何概念。

    于是一开始的时候,我开始全局变量干活,可是看到VC++2005生成的模块代码我又彻
底傻眼了——全局变量的声明放哪儿……这儿好像有很多个cpp文件……

    所以,基本上大一下学期开始,我是一直在摸着石头过河的。恩,全局变量很好。那
别的文件怎么用这些东西呢?突然有一天发现的extern可以派上用场(诶?谭浩强讲了这
个么?还真是没印象了!)。突然一下子,从一个单文件、没有预处理、没有指针、没有
堆内存的语言转移到完全版本的C语言,完全没有任何经验。

    还有就是算法问题。当时的我居然无法设计一些很简单的算法。比如说小学写的贪吃
蛇吧。当时就用的是整个棋盘模拟。可是遇到需要稍微分析(或者叫挖掘)的应用,我就
傻了。比如说写五子棋的游戏:你怎么判断有五颗子排一排呢?写个循环判断一下?恩,
横,竖,左斜,右斜,四个循环。感觉不太漂亮啊……算了也没别的办法了。可是写连连
看的时候彻底傻了……两个图案在同一排?同一列?不同排?不同列?中间经历了哪些块


    最后的结果是,写连连看的时候,居然每个情况统统写了一个函数,最后写了16个函
数覆盖了所有的情况才搞定。

    我开始觉得有点不对劲了。

    苦闷的是,我完全不知道如何解决这些不对劲的地方。我没有人交流,学校里面的老
师除了写1加到100的程序以外什么都不会。我开始觉得自己似乎缺了一块,但是我又不知
道缺的到底是哪一块。

    那段时间,我好像是遇到了对手的食神一样,做完一道菜,尝一下,发现味道不对,
然后扔掉继续做下一道菜。这样一直一直下去,一股叫做烦闷的情绪开始蔓延。我开始减
少编程的时间,开始在网上漫游,寻找我能找到的任何信息。

    慢慢地我开始学会使用搜索引擎。那个时候的搜索引擎没有现在的聪明,于是我自己
学着将问题总结成几个关键字再去搜索,而不是去搜索一整段话。这种总结的能力极大地
帮助了我了解我面对的困境。我学会了使用论坛,学会了在论坛提问。反正不知道是什么
时候,我发现了“BCCN”论坛,遇见了飞燕。

    飞燕真的可以算是我编程入门的启蒙老师。在我学会了编程语言以后,她教会了我如
何用这种语言写一篇声情并茂的文章。或者更浅显点,她至少教会了我基本的代码审美观
,不是缩进、空格这些,而是一份代码,如何才能算是在逻辑上“好看”。

    反正不知道什么时候,我当了飞燕算法群的管理员。经常参加飞燕组织的各种活动。
其中就包括ACM/ICPC的线上模拟评测。

    我开始发现,原来编程可以并不只是产生“某种人眼可见的效果”,而可以仅仅产生
纯逻辑问题的输出。我开始关注什么叫“算法”,我发现之前如同填鸭被填进去知识突然
开始显现了它们自己的意义:为什么要学数据结构?因为你要学会如何保存、处理你自己
的数据!为什么要学习算法?因为这是被归结为处理问题高效的方法,而站在更高的高度
,算法实质上就相当于你写文章的“笔法”,它内部贯彻了一种思想。而且因为计算机的
思想很单纯(就是高效),并没有人类那么多复杂的想法,所以算法的思想就会更加纯粹
。它形成了一种统一的审美观,形成了人们对程序本身一种统一性的看法和评价标准。

    突然开始觉得不再孤单,觉得和整个世界联系起来了。就如同一个默默地学习写字的
人,突然看到了这个世界上绚烂的文章,开始明白怎么写的文章别人爱看,开始明白怎么
有效地在有限的篇幅表现自己的感情和思想,而不仅仅是辞句的堆叠。直到从此刻开始,
我才真的觉得自己入了门。距自己接触计算机,已经度过了十年了。

    以数据结构为骨,以算法为魂,以代码为肉,才是完整的程序。数据结构决定了程序
的移植性和大体的接口,算法决定了程序整体的风格和特征,而代码,则是程序的“肉皮
囊”,是对程序的第一印象。这就是我对编程的理解。

    而后C++的学习就开始豁然开朗:和C以算法——命令的执行——为中心不同,C++实
质上是以数据结构为中心的。它倾向于构建外界无关的一个完整的状态体,被称为“对象
”,任何有需要改变这个状态体的企图,都必须通过和这个对象声明的“消息”,即方法
。对象本身接收到了消息之后的处理过程,就是算法。对C++而言,算法依然是魂,而数
据结构依然是骨,代码则依然是肉。

    这里写起来,好像顿悟就在一瞬间。但我还记得那段时光是怎么度过的。在春光明媚
的四月天,我一个人在宿舍不停地写不停地调试。每天早晨8点打开VC,一直写写调调到
天黑。偶尔抬起头,看着窗外明媚的阳光,又埋头继续编程。这样的领悟过程是慢慢的,
是沉淀在记忆中的,我已不记得当初付出了多少精力。

    我开始慢慢地将知识都连贯了起来。计算机组成原理告诉了我我写的程序是如何执行
的,如同人如何理解字词这样的知识。数据结构构成了程序的骨骼,决定了程序的运动方
式。算法本身改变了程序员自身的思维方式,又通过程序员的思维方式来规划程序本身的
运行方式,就好像是一个人跳着美好的舞蹈,对外星人来说可能只是肢体的某种带着规律
的运动,而对于同样的人类来说,这给予了我们美好的观感和感情,我们能体验出其中的
美,这就是算法。

    在这个基础上,计算机的整个构架在我眼中清晰了。

    算法的第一种思想,就是枚举——计算机的运行速度很快,所以要习惯让程序去做大
量重复性的劳动,比如说拿起一个答案,检查它对不对,然后检查下一个。计算机能以很
快的速度完成这样的工作。这种思想旨在改变程序员的固有思维:要记住,计算机是很快
的。

    算法的第二种思想,则是分治。将一个复杂的问题,划分为几个不那么复杂的部分,
然后分别处理。分治本身是算法的灵魂,也就是编程的灵魂的灵魂。如果说枚举是走路,
那么分治就是跑步了。分治思想告诉我们,计算机一次不能处理太多太复杂的情形,因为
计算机需要我们告诉他每一步的具体工作。那么让程序短小,让计算机高效的一个办法是
,顺着问题的特点,将相同的工作划分在一起,将不同的工作划分开,然后让计算机去“
枚举”,这就是分治。另一种分治则是将相同的工作划分开,然后在处理后续的工作时,
用上之前处理的信息。这是加快计算机程序执行的一个最重要的思想:不做重复功。如果
说枚举告诉程序员,计算机是很快的,那么分治就是在告诉程序员,计算机其实没有你想
象中的快。

    其他的什么递归,什么搜索,本质上就是在枚举和分治之间玩着灵活的游戏。就比如
说一个人身体的某个关节本身只会有一个运动方向,但是整个人动起来,就可能形成很没
美观的动作。问题是你得先理解计算机最基础的特性,你才能够利用这些特性,做一些复
杂和花哨的动作。

    我终于有了一种清晰的感觉:我已经跨过了最高的那道门槛。

    (未完待续)

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
168 [报告]
发表于 2013-01-29 00:09 |只看该作者
第(9)集沙发先坐下来再说!



论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
169 [报告]
发表于 2013-01-29 00:17 |只看该作者
回复 168# Ager


    这篇就是针对你们之前要求的“门槛”来的,嘿嘿。

写完以后发现有种意犹未尽的感觉。所以准备下一篇继续讨论算法的基本思想。——诶……我的感情戏什么时候才能开始吖……

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
170 [报告]
发表于 2013-01-29 00:19 |只看该作者
starwing83 发表于 2013-01-29 00:17
回复 168# Ager

我的感情戏什么时候才能开始吖……


任何时候都能呀 :)





您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP