原来,程序的世界远比我想象的精彩

 

原来,程序的世界远比我想象的精彩

注:本文转载自http://www.cnblogs.com/dingxue/archive/2008/12/23/1360908.html,作者丁学。
文中所有的 Pxx 指得是《Erlang程序设计》一书中的页码,书的信息放在文章最后。

人都说无知者无畏,那么这些年来我是不是一直很无畏?而且,还要继续无畏下去?

既然无畏,那也无所谓了,有啥说啥,不禁止评论,但是禁止笑我,违者删ID~~~HOHO~~~~~~~

开门见山的说,最近看了《Erlang程序设计》一书,发现原来程序的世界远比我想象的要精彩。高中的时候开始学了点儿C语言和一点VB,上大学后继续发扬光大(其实是老师说考不过不让毕业 :$),还学了些.NET,了解了点儿PHP和Java,顺便用ASP做了两个破网站,毕业后继续了一年VB之后便从此彻底投身.NET怀抱。由此产生了一个根深蒂固的想法:程序无外乎C系的顺序编程、ASP之类的网页脚本编程和.NET/Java之类号称面向对象的编程,直到去年学到了Perl,才发现,原来脚本不都是ASP/PHP那样的!也幸亏先补了点Perl,因此对PowerShell接受起来很顺理成章。但归根结底,程序无非就是拿各种控制结构去折腾那堆变量。这里面有两个非常重要的概念是下面要说的:变量 & 循环。

直到前些天看到了Erlang,原来变量是不对的,原来循环是不需要的~~~~~faint~~~世界好像突然可以变了?

1. X归来:
先来看一段《Erlang程序设计》里的一段话:(P12)

在我上初中时,数学老师就告诉我“如果在同一个方程式的不同地方都有X,那么这些X指的都是同一个东西”。解方程就靠它了,比如,我们有X+Y=10和X-Y=2,那么根据这两个方程可得:X为6,Y为4。
但是当我学习第一门程序语言时,却看到老师在黑板上写出这样的式子:
X=X+1
大家都懵了,“这是个无解的等式”。但老师却说,我们错了,我们应该忘了在数学课上学到的东西。X不是一个数学变量,它就像一个鸟笼……

 

怎么样?反正我最初学的时候没有考虑过这个问题,我认为很自然(因此入门快了?),但是现在,不得不回头考虑一下,嗯,数学老师一直在说“数学很重要,你们学计算机的不好好学数学,到时候什么都做不了”,可是现在呢,和数学完全反过来了!还好有Erlang,“在Erlang中,变量恢复了它在数学中的涵义。当把一个变量和值关联在一起时,你其实就做出了一项断言,也就是对一个事实的陈述,这个变量的是多少,仅此而已。”这是什么意思?意思是说:在Erlang的世界里,你的变量一经赋值,变再也无法改变了~~~~~

2. 我们真的需要for(;;){}吗:
真的,在Erlang里没有for循环,有意思吧?我最初看到这个的时候就在想,变量不能变,连个for循环也没有,这帮人怎么写程序啊?然后事实上,Erlang依然很容易的就可以写出很棒的程序,这个很有趣,但是我不知道应该说些什么,所以就此略过:让编程回归数学:模式匹配与高阶函数。

 

3. PS一些超帅的Erlang特性:

1. 超大数的计算,太BT了,从未见过哪个语言如此强悍(P11)
2. X = 1234,这个式子中,X不是一个变量,而=也不是一个赋值操作符(P12)
3. =表示一个模式匹配操作,之所以进行后X“变”成了1234,原因仅仅是为了“使得语句有效”(P13)

 

上面这些,只是感觉比较有趣的一些东西,而真正强大的异常处理、并发编程和分布编程,我还没搞太明白,不敢写出来,只是觉得这是一种完全不同的编程体验,也是一种非常有趣和强大的方式,有兴趣的可以去看看。

今天,我了解了一点点Erlang,知道了在我以前知道的那些东西之外,还有如此与众不同的东西,那么明天呢?我肯定要继续无畏下去了……

4. 暴力推荐这本书:

当当网购买地址:http://union.dangdang.com/transfer/transfer.aspx?from=P-263982&backurl=http://product.dangdang.com/product.aspx?product_id=20398803
卓越网购买地址:http://www.amazon.cn/mn/detailApp?qid=1230041969&ref=SR&sr=13-2&uid=168-4868547-7142652&prodid=bkbk864629&source=cnblogs
china-pub购买地址:http://www.china-pub.com/301677
PS:卓越网的网址真够恶的,一点儿不像程序员的杰作~~~~

 

版权声明:本文原创发表于博客园,作者为丁学
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广州五羊雕像特色

明天qq群里不时讨论,广州五羊塑像的那5个羊的性别终究是公是母。。经过搜索,大局部材料是说最大的是母羊,上面是4个小羊; 有小局部音讯说,两头最大的是公羊,周围有母羊和小羊。。。 真相不得而知了。。。本…

【MSLearn 学习模块】Hi ! ⼀起来学Python

随着大数据、人工智能、物联网的兴起,Python越来越受到大家的关注。不论你是⼀位学生,是一位传统的码农,还是非计算机领域的从业人员都离不开Python。当然大家的角度不⼀样,作为学生是以学为主,码农是以用为主&#xf…

有趣的12张数学原理动图,令人舒心却又伤脑!你看懂几个?

全世界只有3.14 % 的人关注了爆炸吧知识下面的12张数学动图你能看懂几个,反正知识君是都看懂了。1.被简单证明的勾股定理给三角形加上一点厚度。从面积问题,跳转到了具象的体积问题。2.勾股定理的面积证明法Its a long story……慢慢看。3.周长和直径的π…

typora插入代码设置_Typora基本功能介绍

Typora是什么?提起Typora,如果是使用过Markdown的人,应该就不太陌生,Typora 是一款支持实时预览的 Markdown 文本编辑器。它有 OS X、Windows、Linux 三个平台的版本,并且由于仍在测试中,是完全免费的。在T…

Linux虚拟机克隆后网卡找不到问题

解决虚拟机克隆网卡丢失问题1.克隆后的虚拟机网卡显示如下[rootser5 桌面]# ifconfiglo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0inet6 addr: ::1/128 Scope:HostUP LOOPBACK RUNNING MTU:16436 Metric:1RX packets:120 errors:0 dropped:0 o…

head rush ajax chapter4 DOM

《 Head Rush Ajax》website: http://www.headfirstlabs.com/books/hrajax/document对象可以让你的JavaScript访问Web浏览器的DOM树。可以把<html>看作树的根。getElementById()通过id属性找到页面中的元素。var mananger document.getElementById("Mg").valu…

【DotNetMLLearn】.NET Core人工智能系列-概述

.NETer大家好&#xff0c;今天为大家送上.NET Core 下如何完成人工智能应用的系列&#xff0c;希望给.NETer进入人工智能领域提供一个指引。.NET Core已经是一个全场景应用的技术栈方案&#xff0c;对于每一个领域都有支持。自从微软在开源发力后&#xff0c;.NET Core的社区能…

fanuc机器人控制柜接线_FANUC涂胶标定参考

FANUC涂胶标定参考1、进入SETUP界面2、选择DISPENCE界面3、选择15 flow rate control,按F2 detail进入4、进入标定界面此画面定义含义如下&#xff1a;(1)为涂胶标定单位,TCPP BEAD WIDTH宽度为基准(2)为 输入理想涂胶宽度,desired flow rate(3)为定义出胶轨迹sample program(一…

硬盘坏道修复白皮书

常识&#xff1a;硬盘坏道分类 - 不同坏道分仔细由于硬盘采用磁介质来存储数据&#xff0c;在经历长时间的使用或者使用不当之后&#xff0c;难免会发生一些问题&#xff0c;也就是我们通常所说的产生“坏道”&#xff0c;当然这种坏道有可能 是软件的错误&#xff0c;也有可能…

Objective-C 学习记录6--dictionary

1.NSDictionary 和NSMutableDictionary NSDictionary dictionaryWithObjectsAndKeys:~,nil 使用键值对创建字典,用nil标志结束 NSDictionary initWithObjectsAndKeys: 使用键值对初始化字典,也用nil来表示结束. dictionary count 计算其字典的长度. dictionary keyEunmerator …

糟糕!复工后,最让人担心的问题又又又来了!

▲ 点击查看你复工多久了&#xff1f;当我们在家宅着的时候&#xff0c;一天到晚都想着什么时候才能出去。然而现在公司一通知复工&#xff0c;其实心里还是有点犯怵。先不说通勤了&#xff0c;上班吃饭就有又成为大家绕不开的问题。现在虽然可以在外面点外卖&#xff0c;但说实…

Myeclipse中Tomcat的两种部署方式

一、在Myeclipse软件中部署 1、 在Myeclipse中&#xff0c;创建好工程后&#xff0c;在Myeclipse菜单栏中选择 Windows -> Preferences -> Myeclipse -> Tomcat5&#xff0c;选择"Enable"&#xff1b;Tomact Home Directory要选择你机器上Tomcat所安装的目录…

为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?

咨询区 Alex Sansau&#xff1a;我是 ASP.NET Core Web API 的初学者&#xff0c;我在跟着文档创建 Controller 时&#xff0c;VS模板引擎给我生成了如下 Controller 模板代码&#xff0c;我发现有一个奇怪的地方如下&#xff1a;public class TodoController : Controller { }…

配置yml_dctc:生成docker-compose.yml配置的工具

有时候&#xff0c;我们需要想知道docker容器的运行参数、环境变量等配置&#xff0c;以便容器以后被删掉之后&#xff0c;可以重新运行起来。特别是在测试环境&#xff0c;有些容器可能就是一个docker run就运行起来了。或者随便找一个目录丢了一个docker-compose.yml运行起来…

Silverlight 2 应用程序部署到任意HTML页面

Silverlight 2 应用程序部署到任意HTML页面&#xff0c;可以采用ActiveX的方法&#xff0c;在页面中放入object标签&#xff0c;设置相应的属性即可。使用 object 元素&#xff0c;可以用与所有受支持浏览器兼容的方式在 HTML 中嵌入和配置 Silverlight 插件。具体可参看&#…

系统集成相关岗位理解

如果从系统集成生命周期来分的话&#xff0c;系统集成项目其实可以细分为:售前、实施及售后三大块&#xff0c;售前:就是做项目实施方案&#xff0c;为项目配置设备、投标等工作&#xff1b;实施:就是根据项目管理方法把握现场项目的实施工作&#xff1b;售后&#xff1a;而完成…

对于“知识”,我们存在哪些误解?

全世界只有3.14 % 的人关注了爆炸吧知识对于不少用户来说&#xff0c;微信已经成为了获取新资讯的重要途径之一。如何保证自己找到「值得看」的内容&#xff1f;每天更新的文章这么多&#xff0c;哪些才值得你看呢&#xff1f;今天就为大家推荐一些颜值与才华并存的好评公众号。…

常见三维文件格式之STL

STL只能用来表示封闭的面或者体&#xff0c;stl文件有两种:一种是明码格式&#xff0c;另一种是二进制格式。 他的文件格式非常简单明码:solid namefacet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloopendfac…

一个搜索需求搞垮微服务

“编程十几年&#xff0c;我只希望能把技术讲明白而已&#xff0c;当然能帮到各位更是深感荣幸“假如你是一名架构师或者技术领导人&#xff0c;一定要深深的知道&#xff0c;没有完美的技术方案&#xff0c;要不然编程技术早就万佛归一。微服务作为近几年新兴的技术概念&#…

python进阶之学习笔记_干货 | Python进阶系列之学习笔记(四)

目录Python条件判断Python循环语句Python循环控制迭代器与生成器异常一、Python 条件判断如果某些条件满足&#xff0c;才能做某件事情&#xff1b;条件不满足时&#xff0c;则不能做&#xff0c;这就是所谓的判断。不仅生活中有&#xff0c;在软件开发中"判断"功能也…