惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 丁学

javascript实现可以拖动的层示例(层拖动,兼容IE/FF) 《博客园精华集:Web标准之道》内容提要、序、前言、封面 终于有时间聊聊《Silverlight2 完美征程》 可怜的家居易站,早说过不要乱搞 还是无法忘怀——三鹿 水土不服的SNS,落地生根的网游 无敌博皮 之 乾坤大变色——支持:后续更新 无敌博皮 之 乾坤大变色——下篇:脚本讲解 无敌博皮 之 乾坤大变色——中篇:样式说明 无敌博皮 之 乾坤大变色——上篇:使用方法 拿到微软GDI(最有影响力开发者)礼包 对“关于购物车的想法”的一些回复 SEO--我们是不是走错了路? 如何实现在客户端,使CheckBox按照选择的顺序进行排序--来自博问的问题 关于参数为可空值类型的多个重载的优先级 (彻底晕掉了) 电子商务胡说八道之:淘宝封百度,卖家很受伤 测试搜索引擎收录状态(2008-09),顺便测试一下CSDN那帮超有才的编辑 测试一下找找看 TerryLee [当当网,你意欲何为]之三:不解,那可怜的UE
原来,程序的世界远比我想象的精彩
丁学 · 2008-12-23 · via 博客园 - 丁学

文中所有的 Pxx 指得是《Erlang程序设计》一书中的页码,书的信息放在文章最后。

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

既然无畏,那也无所谓了,有啥说啥,不禁止评论,但是禁止笑我,违者删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指的都是同一个东西”。解方程就靠它了,比如,我们有X+Y=10和X-Y=2,那么根据这两个方程可得:X为6,Y为4。
但是当我学习第一门程序语言时,却看到老师在黑板上写出这样的式子:
X=X+1
大家都懵了,“这是个无解的等式”。但老师却说,我们错了,我们应该忘了在数学课上学到的东西。X不是一个数学变量,它就像一个鸟笼……

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

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

PS一些超帅的Erlang特性:

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

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

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

暴力推荐这本书:

PS:卓越网的网址真够恶的,一点儿不像程序员的杰作~~~~