代码改变世界

随笔(记录1)

2012-11-05 20:59  lefan  阅读(168)  评论(0编辑  收藏  举报

一、程序缘

又燃起了学程序的兴趣,看到三则信息,又多了信心,这和06年时,完全不一样了,互联网业又加入一大批85后的从业人员。学习程序的门槛降低了许多。最初为了考计算机三级,照猫画虎的背着100道C语言编程题,大概因为我特别愚钝,根本没有进入,再加上当时的认识也很有限,绕了到研究生毕业才想起当初的编程,写到这不免觉得可笑,其实与程序相遇还是很早的,重新相遇已是六年后。

1.  Danielle Leoung是在云端通信平台Twilio做网页开发的女生。大学学的是社会学,第一份工作是销售,因为不喜欢就辞职了。在家里自学6个月编程就找到了这份工作。如何在这么短的时间掌握编程呢?她说网络上有很多很好的课程,实践性比较强,所以学得也很快,当然,工作之后还在继续学习。http://www.pingwest.com/edu2/

2.  偶然的看到蔡学镛的《编程ing》的试读本,通过图片利用REBOL把一些编程语言\堆栈\变量\变量类型\语境等基本问题讲通了,读着感觉很好。

3.  Mehran Sahami在北大”Computer Science Curricula for the Coming Decade”的报告 Sahami教授引用美国自然科学基金、美国国家教育统计中心等机构关于人才市场需求和毕业生数量的数据。计算机、工程、生命科学、数学、物理5个专业,在2008-2018十年间,只有计算机专业培养的人数远远低于市场需求量,见下图。

二、REBOL语言

    解释型语言(Interpreted Languages)REBOL 程序很容易书写,所需要的仅仅是一个文本编辑器,一个程序可以只有一行也可以是一整个应用程序包含了几十个文件,同时,你的程序不需要对库和包含做声明。也有缺点:1、GUI组件相当不全 2、缺少文件等等。

为什么先从REBOL呢,正好有《编程ING》在,可以照着学,另外就是学习的顺序也正好先易后难,尽量不要一下子太难,保持兴趣。

学习的顺序:1解释型语言(Interpreted Languages)

            2.混合型语言(Hybrid Languages)

            3.编译型语言(Compiling Languages)

            4.汇编语言(Assembly Languages) 。

  《Java夜未眠》里有更详细的说明。

三、数据结构之堆栈

    计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。算法与数据的结构密切相关,算法依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。

      数据结构是计算机存储、组织数据的方式,精心选择的数据结构可以带来更高的运行或者存储效率。Lobert L.Kruse的定义对我来说更容易理解些,他将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。

    Stack是一种数据结构,就是数据的组织处理方式,stack像个容器,进和出都在同一端,越晚进去的,最先被取出来。程序在执行过程中,有时需要把某些运算暂时保留不做(条件不成熟),等到后面的事做完了才能回头去做之前保留的事,这时最适合用堆栈。(power 3 4 abs add 3 -4最后返回值为1,最后一个数据被第一个读出来)。其他常见的数据结构

1.数组 (Array)

2.队列 (Queue)

3.链表 (Linked List)

4.树 (Tree)

5.图 (Graph)

6.堆 (Heap)

7.散列表 (Hash)

 碎片段记了几点,边记边学吧。