技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 查看专题: 编程
    编程语言虽说跟自然语言类似,但有一些本质的区别,如果不理解这些区别,编程的槛始终过不去。这篇文章尝试把几个最要紧的概念提取出来咀嚼消化。
    希望这篇浅显易懂的文章能让你感受到函数式编程的思想,就像OO编程,泛型编程,过程式编程一样,我们不用太纠结是不是我们的程序就是OO,就是functional的,我们重要的品味其中的味道。
    如果你已经读了我的前几篇关于面向对象范式因为受到Rust and Go等语言的影响而发生变化的文章,看到了我正在研究的Rust设计模式,你会发现我对Rust语言十分的偏爱。
    最终我是学会了开发自己的原型,但道路很崎岖。如果你也跟我一样走在自学的道路上,我希望你能避免我犯过的错误。
    如果我告诉大家,这篇文章出自一个只有20岁的小伙,我想很多人都会感到吃惊。至少我是吃了一惊,因为这篇文章涉及到主题听起来是很有深度的,我本人在20岁时几乎想都不会想这些事情,更别说研究了。但又过了这么多年,不知国内的青年们有没有追赶上西方的步伐,也能出现几个这样看起来很有编程天分的人?我最近看到了《编程改革 》这篇文章,里面的内容讨论到了我们的编程中存在的一个最根本的问题。我同意作者的观点,但我感觉很多的评论并没有理解他说的问题,所以,我打算用另外一种方式来说明一下。 我从事编程已经很久,主要是因为我痴迷于解决难题。
    下面是一系列的动作: 从小屋里拿出耙子,用它把院子里的树叶堆起来,然后把耙子放回小屋。 飞到西雅图,看风景,然后飞回。 把钥匙插进钥匙孔,打开,然后取出钥匙。 点亮你的手机,查看时间,然后把它置回睡眠状态。 看到这些模式没?你做一种事情,然后做另外一种事情,然后又撤销你做的第一件事情。或者用更精确的说法,这最后的一步是第一步的反向操作。一旦你认识到这种模式,你会发现它无处不在。拿起茶杯,喝一口茶,放回茶杯。同样,在程序代码里有到处都是: 打开一个文件,读取内容,关闭文件。 分配一段内存,用它做一些事情,释放它。 把内存地址内容加载到寄存器,修改它,然后存回内存。 虽然这很容易解释,也很容易举出例子,但想实现它却不那么容易。
    本刊评论目前为止,据我个人观察,从语法角度上讲,最被人诟病的一种语言应该是LISP语言了。打开这种语言的代码,一眼望去,满目全是括弧,一层套一层。这种语言特征最大的问题是,它不符合人们通常的思维习惯。LISP语言的这个特点是个整体的语言现象,而任何一种语言其实也都有一些个别的很奇特的东西,其中有些会奇怪的让你摸不着头脑。有一个好事者在一个帖子上征集各种语言里不合常理的地方,结果收集到了320多条,问题最大最多的语言算是Javascript了,另外还有C,Java,Python,PHP等等。下面列出的是其中最有趣的几条。
    很奇怪不是,很少有人每天都使用函数式编程语言。如果你用Scala,Haskell,Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。这个行业里的绝大部分人都是使用像Python,Ruby,Java或C#等面向对象的编程语言――它们用起来很顺手。不错,你也许会偶然用到一两个“函数式语言特征”,例如“block”,但人们不会去做函数式编程。 然而...
    收家的时候发现了一张VC++6.0的光盘,实然引发了我的怀旧情结。于是在微博上感叹了一下,看到一些朋友的回应,还有朋友提到了Turbo C 2.0,于是更回放大了我的怀旧情绪,让我回想了很多N年前伴我走过编程之路的软件。现在看下来,有些感叹,又有些可笑。感叹的是技术发展的变迁,可笑的是当时的一些想法。(Unix/Linux是在大四和毕业的时候接触的,虽然这是我的强项,但是这下面的编程这么多年来没什么变化,所以就不提了)
    做什么东西并不重要,重要的是你找到东西动手去做。我所认识的那些优秀的程序员,他们都有各自不同的最初学习编程的动机。有些人学习编程是为了<STRONG>开发动画游戏</STRONG>。有些人是为了解决他们在使用计算机时遇到的问题,或<STRONG>让工作更有效率</STRONG>。有些人是为了<STRONG>开发产品</STRONG>来满足人们的需求。有些人(真正的程序员)学习编程只是他们为了深入了解计算机工作原理的步骤之一 ;他们希望能<STRONG>搞清楚这种机器</STRONG>。有些程序员编程只是因为他们享受<STRONG>解决难题</STRONG>的挑战。
    在看到这个问题的时候,我感到应该不可能,但是我错了,这个问题的前两个答案让我深深地震憾了。 第一个答案的回复人是Jared(其在StackOverflow上的积分有将近14K),但是你能想得到他是一个盲人吗?他回复到―― 我是一个完全失明的大学学生,我做过一些程序员的实习工作,所以我的回复基于我的这些经历。我使用Windows XP 和 Jaws 来为了读出屏幕上...
    对你的编程技术提高最有效的一件事是什么?回复的人中给了很多很不错的建议,我把他们总结了一下,十条,相信一定会对你有用。(注意:顺序是我自己按我的个人经验排的) 和比自己聪明的能力比自己强的人工作。学习他们的代码,他们的做事方法,看一看那些人是怎么处...
    愚公这篇文章很给力:原子,与原子联结的友类、友函数 CSDN 很不给力,要登录才能评论。好不容易注册了一个帐号,发表评论,居然提示“正在提交,请稍候”。我稍候了半个小时,重试了两次,都未发表成功
    半年前,JoelOnSoftware和CodingHorror合搞的stackoverflow.com刚上线不久,我兴冲冲地跑过去扔了一个问题: 你们认为编程的首要原则是什么? 作为我的学习原则的一个实践: 8. 学习一项知识,必须问自己三个重要问题:1. 它的本质是什么。2. 它的第一原则是什么。3. 它的知识结构是怎样的。 5个月过去了,这个问题到现在还有人回复,我得到了一大堆有意思的答案,忍不住翻译过来与大家分享:
[ 共14篇文章 ][ 第1页/共1页 ][ 1 ]
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1