原来,程序的世界远比我想象的精彩
人都说无知者无畏,那么这些年来我是不是一直很无畏?而且,还要继续无畏下去?
既然无畏,那也无所谓了,有啥说啥,不禁止评论,但是禁止笑我,违者删ID~~~HOHO~~~~~~~
开门见山的说,最近看了《Erlang程序设计》一书,发现原来程序的世界远比我想象的要精彩。高中的时候开始学了点儿C语言和一点VB,上大学后继续发扬光大(其实是老师说考不过不让毕业 :$),还学了些.NET,了解了点儿PHP和Java,顺便用ASP做了两个破网站,毕业后继续了一年VB之后便从此彻底投身.NET怀抱。由此产生了一个根深蒂固的想法:程序无外乎C系的顺序编程、ASP之类的网页脚本编程和.NET/Java之类号称面向对象的编程,直到去年学到了Perl,才发现,原来脚本不都是ASP/PHP那样的!也幸亏先补了点Perl,因此对PowerShell接受起来很顺理成章。但归根结底,程序无非就是拿各种控制结构去折腾那堆变量。这里面有两个非常重要的概念是下面要说的:变量 & 循环。
直到前些天看到了Erlang,原来变量是不对的,原来循环是不需要的~~~~~faint~~~世界好像突然可以变了?
X归来:
先来看一段《Erlang程序设计》里的一段话:(P12)
但是当我学习第一门程序语言时,却看到老师在黑板上写出这样的式子:
X=X+1
大家都懵了,“这是个无解的等式”。但老师却说,我们错了,我们应该忘了在数学课上学到的东西。X不是一个数学变量,它就像一个鸟笼……
怎么样?反正我最初学的时候没有考虑过这个问题,我认为很自然(因此入门快了?),但是现在,不得不回头考虑一下,嗯,数学老师一直在说“数学很重要,你们学计算机的不好好学数学,到时候什么都做不了”,可是现在呢,和数学完全反过来了!还好有Erlang,“在Erlang中,变量恢复了它在数学中的涵义。当把一个变量和值关联在一起时,你其实就做出了一项断言,也就是对一个事实的陈述,这个变量的是多少,仅此而已。”这是什么意思?意思是说:在Erlang的世界里,你的变量一经赋值,变再也无法改变了~~~~~
我们真的需要for(;;){}吗:
真的,在Erlang里没有for循环,有意思吧?我最初看到这个的时候就在想,变量不能变,连个for循环也没有,这帮人怎么写程序啊?然后事实上,Erlang依然很容易的就可以写出很棒的程序,这个很有趣,但是我不知道应该说些什么,所以就此略过:让编程回归数学:模式匹配与高阶函数。
PS一些超帅的Erlang特性:
2. X = 1234,这个式子中,X不是一个变量,而=也不是一个赋值操作符(P12)
3. =表示一个模式匹配操作,之所以进行后X“变”成了1234,原因仅仅是为了“使得语句有效”(P13)
上面这些,只是感觉比较有趣的一些东西,而真正强大的异常处理、并发编程和分布编程,我还没搞太明白,不敢写出来,只是觉得这是一种完全不同的编程体验,也是一种非常有趣和强大的方式,有兴趣的可以去看看。
今天,我了解了一点点Erlang,知道了在我以前知道的那些东西之外,还有如此与众不同的东西,那么明天呢?我肯定要继续无畏下去了……
暴力推荐这本书:
卓越网购买地址:http://www.amazon.cn/mn/detailApp?qid=1230041969&ref=SR&sr=13-2&uid=168-4868547-7142652&prodid=bkbk864629
china-pub购买地址:http://www.china-pub.com/301677
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?