Skip to main content

Posts

杂谈:把 Mathematica 当做一种编程语言

在很大一部分 Mathematica 用户眼中, Mathematica 只不过是一个兼有符号操作和数值计算功能、用户界面良好的计算软件而已,由于中文资料的相对缺乏,这一点在中文用户中尤其严重。稍微挑选基本在互联网上可见的中文本土教程,比如张韵华、王新茂教授等人编著的 Mathematica 7 实用教程,徐安农所编写的 Mathematica 数学实验 等等,基本上从软件教学的层面编写的。从编程语言、计算机科学角度编写的中文资料,即使有,也是相当贫瘠的。  实际上,尽管 Mathematica 脱胎于 Stephen Wolfram 最早的 SMP 符号操作程序,但却是作为一种编程语言被设计的。Mathematica 的底层解释器大部分由 C 语言写成,此外一些极端要求速度的基础计算函数也由 C 语言支持, 而其他大量的实用函数以及包由则是由 Mathematica 编程语言来实现的。解释器和这些函数构成了所谓的 Mathematica Kernel。Mathematica 这个生态系统的另外一个重要组成部分是前端(Front End),大量美轮美奂的数学公式显示,图形绘制,文档排版功能都极大程度地依赖前端,而前端和 Kernel 之间通过 MathLink 进行交互。Front End 和 Kernel 被设计得相当独立,尽管并不普遍,但是Front End实际上是可以被当做独立的软件来使用的,用户可以在上面编辑文字公式,生成漂亮的文档、演示文稿,绘制图形等等。  个人感觉,学习 Mathematica 编程,至少有三点是一定需要了解的:“Everything is Expression” 的语言设计原则、“规则替换”的系统实现机理和“模式匹配”引擎的强大效用。 从设计上来说,Mathematica 遵循 “Everything is Expression” 的哲学,这种哲学可以大大简化解释器的设计,也可以产生“统一”的数学美感。关于这一点,有些读者可能会知道对于任何公式函数以及符号,当我们用 FullForm 这个函数作用于其上的, 就能求出该公式函数或符号的“完全形式”,而 FullForm 通常遵循这样的形式: head[arg1, arg2, ..., argn]. 这就是一个 Mathematica 表达式, 甚至对...

Mathematica 这门语言怎么样?

本人小白。学习Mathematica两个月。 我说的不是这个数学软件,而是此软件自带的编程语言,我觉得此语言表达能力异常强大,模式匹配等特性可以使代码写得非常短。但是此语言现在貌似仍然局限在Mathematica系统内部。 问:此语言和其他主流语言比起来优缺点在哪?以后Mathematica有没有可能跳出Wolfram的封闭体系得到更广泛的应用? ***************************************************************************************************************************************** 没想到我的这个提问已经快要一年了,现在我来自己回答下。 我本人在入门Mathematica的时候没有多少关于其它语言的经验,仅仅是自学过一点点python,然后在学校接触了C(水平大概在求1+2+.......+99+100的程度),这应该是值得庆幸的地方,因为许多习惯于传统语言(主要是过程式)的人在使用Mathematica时都会非常的不适应。这一年来我一直都在玩Mathematica,水平可能仍停留在入门阶段但是对这个呆萌的系统的认识肯定比一年前要多一些。现在我把回答的重点集中在这门语言的独特之处。 翻开任何一本国内的Mathematica书籍,行文过程大概都是这样的:怎么在笔记本里输入并运行表达式;介绍基本的数学函数;教你怎么画图;过程控制语句(For,While,If等)。不得不吐槽过程控制语句这一部分,对Mathematica稍有了解的朋友都知道,在Mathematica里大量的使用过程式语句是非常不自然且不高效的一种做法,其他语言(比如C)中大量使用的For循环在Mathematica中丑陋而低效。 其实,Mathematica支持很多的编程范式(有可能是最多的),其中最为高效的应该就是函数式了,熟悉一点函数式语言的人再来接触Mathematica可能会倍感亲切。通过纯函数(相当于Lambda演算)、高阶函数(Nest、Fold、Map、Apply等等)等各种函数式编程的技巧,你可以轻易写出简洁到爆的程序,而且绝大部分情况下都比过程式版本高效得多。 但是,这就是全部吗?Mathematica就是一个顺带支持其它编程范式的函数式...

战略水平差——葬送了世界一流战力的日军

首先说明,再牛的部队也不可能脱离环境。比如越南打游击打赢美帝,跟中国打阵地战就死成了鬼。德军打闪电战基本无解,跟苏联人打起城市战马上歇菜。战斗力是由人和装备共同组成的。人的因素又包括了战略、战术和单人战斗素养。 从这几个方面来说,日本军国主义毫无疑问是很强的,因为他把国运一直放在了战争上,装备不佳的日军仍然是世界一流的军队。 日本人的战术极其精到(按计划打的时候),体现在细节上就是日军极为守时,该出现在哪就出现在哪。莱特湾的时候,一边引诱美帝追击,一边去屠登陆舰队,只要稍微失误,不是诱敌的先被灭掉,就是偷袭的完蛋。可小鬼子愣是玩出来了。山本五十六出去巡查,说几点到就几点到,美帝飞机本来滞空时间也就那么几十分钟,如果他上个厕所,开个party什么的也就躲过去了,可人家多守时啊,这才有了击落山本的战果。那么,小鬼子怎么就打不过土八路呢?难道真的是游而不击么?非也。 我们现在嘲笑日军的武器差,但每一种武器都是有其设计目的和用途的,说人家差要看人家怎么用,对谁用。日军的轻重机枪虽然次了些,但是射手训练极其有素,至于三八大盖,它的防尘盖虽然笨重,但是有效的防止了故障的发生。直到朝鲜战争时,我们很多军队仍然不愿意换装苏式步枪,认为三八大盖更好使。至于说它的杀伤力比毛瑟枪差,别忘了,杀伤力是以打得中为前提的。日本人的口径之所以设在6.5毫米,考虑的是国内资源不足,省一点是一点,这种作风一直影响日本军队到战败为止。优秀的八九掷弹筒就很适合丛林战山地战,九二步兵炮被称为世界最好的步兵炮,既可以当直射炮,又可以当迫击炮用,完全符合日军对战场的想定——也就是亚洲战场 交通极差 汽车不足 人力为主 蓄力为辅,三个人拉着这炮就能走。因为资源不足,所以日本陆军机械化水平很低,骡马化为主。不过二战时期这也不丢人,保卢斯的第6集团军在斯大林格勒作战时,还有10多万骡马在乌克兰草原上吃草,这就是第六集团军的后勤运输主力。日本海军方面,战列舰的设计建造是不成问题的,缺点是钢材质量不如美国,炮钢不行,打不了多少炮弹就得换,舰艇设计方面底蕴不足,性能不均衡。电子设备跟没有一样。但日本人的鱼雷是世界最好的,射程最远,威力最大,因为长矛鱼雷是用液氧做氧化剂的,全世界都不敢用——这玩意儿现在就在韩国罗老号上,自己掂量吧。说他易爆,不是制造时爆炸,而是巡航返回后鱼雷没用 如何保养的问题——美国人在战后问日本...

v字仇杀队打了谁的脸

http://blog.renren.com/blog/280546087/888584105 一、楔子 昨天看了闻名遐迩的《V字仇杀队》,想写点什么,但总感觉憋不出什么P话来。后来某人要求我写一下,那我就写一下咯~ 好几年前,很多朋友就向我强力推荐,他们表示这部电影简直就是说出了他们的心声,完全可以用伟大来形容。当时我就想,既然是如此伟大的电影,我认为还是等自己的思想稍微成熟点,再来观赏品味。 直到现在,我自认为思想不再是那么幼稚的时候,看完了这部电影,接着就完全明白为何它在豆瓣上有8.5那么高的评分了。 我相信,很多人打分的时候,完全是冲着那一句看起来非常经典的台词——人民不应该害怕他们的政府,政府应该害怕他们的人民。这样就为电影奠定了一个格调——主题意义大于艺术价值。 呵呵,说句题外话,按照这个逻辑,我可以大胆地推测出这些人最向往的是文革。在那个时代,人民群众可以持枪,可以随意把政府官员拉出来批斗甚至恶整。国家主席在人民面前,只有颤抖啊。 好了,言归正传。这部电影看起来是在讽刺纳粹德国,实际上是在讽刺英国,当然,中国网民觉得这是在讽刺天朝。而在我看来,电影是在讽刺所有的政府和某个特殊群体。 二、政府不给力 讽刺政府,这个很好理解,影片进行不到三分之一,安理会五大常任理事国就全部中枪。监听国民、制造假新闻、排除异己、策划阴谋、研发生化武器、镇压暴动等等,五大理事国一样都没少干,说是五大流氓国绝不冤枉。当然,还有其他的政府,比如日本、德国,甚至可以涵盖到所有政府。影片从一开始,就把政府和人民推到了对立面。这让我们感同身受,很容易理解导演的立场,我相信中国的影迷感触肯定更深。 在政府面前,我们还真就是个P,很渺小很无助,看起来是这样,实际上好像也是这样。可是,在P民面前,政府又是什么呢?政府有些时候就是P民的男朋友:(1)你怎么都不管我?(2)要你管我?!(3)你给我个解释!(4)你不要解释,我不听我不听你说的都是骗人的!(5)看看人家的男朋友! 特别是第5条,非常适用于中国P民。 好了,关于电影讽刺政府的话,也就点到为止,相信有非常多的影评都在分析这个,这里就不再赘述。我现在来谈谈我认为的影片所讽刺的另外一个群体。这个群体,就是你,就是我,就是他,就是我们这些P民。 三、忽悠万岁 影片以一个四...

10年PostDoc待遇

http://emuch.net/html/201010/2461585.html 1.        全美高校博士后待遇相差不大,博士后第一年一般$35000左右。National lab高一些(约$70000/year),我3年前刚毕业来美时, $35000/year (材料学), 我在西南部消费很低的城市,我师妹今年初去纽约大学 $42000/year. 不知道是不是今年博士后工资涨了,但东部消费高很多,特别是房租。 2.        如果可能,来美时最好先了解一下老板的人品,特别是当老板是华人时,我很多朋友抱怨华人老板push很厉害,很累,有时没有周末,几年都不涨工资,还有的抢学生文章。 3.        J1签证前3年不交税,J2家属可以合法打工,H1签证要交税,家属不可以合法打工,如果拖家带口的,税率会很低,基本不怎么交税了【更正:我认识的H1博后是美国毕业的,他要交联邦税。我查了一下,据说从国内过来的H1前3年也免联邦税, 从国内过来的博后J1和H1的税收区别在于H1刚来就要交社会安全税(7.65%, H1一来即被认为是resident),而J1则在第三年才开始交】。所谓benefit主要是指学校给你全家(包括你,配偶和未成年子女)买健康保险。保险费很高,你只需付其中的很少一部分,学校里会付大部分作为benefit。现在主要谈谈J1的收入和福利。 4.        J1第一年和第二年 (身份non-resident alien)只交健康保险费(每年都在涨,2011年单人$590/月, 自己负责$40/月,直接从工资里扣;2个人$1252/月, 自己负责$119/月; 3人及以上家庭,$1626/月, 自己负责$221/月)。除去健康保险费,剩下的都可以拿到手。 5.        值得一提的是牙医保险和健康保险是分开的,保险费主要由个人负责(学校负责很少一部分)。自己负责的费用是$30.98/m (单人), $70.87/m(2个人), $123.12/m (3人及以上)【更正,这个是贵的牙医保险,一般不选这个,还有个比较便宜的牙医保险,只...

Interview

http://ecarmi.org/writing/google-internship/ "I've been working at Microsoft for over 11 years now and have experienced exactly what you described from both sides of the table -- both as an interviewee (when I was first hired) and now as an interviewer. What I am going to share with you is my experience at MS, but I have friends who work at Google, Yahoo and Facebook and they tell me it's the same over there. So these tips will help you navigate through the hiring process at most high tech companies. 1) The first thing you must realize is that the hiring process at most high tech companies is stupid. So don't take it personal. The people interviewing you are nothing but tiny cogs in a big machine. The format/content/duration of the interview is dictated by the people above. The interviewers are selected (some volunteer, others forced) among all the teams in the hiring department, and are rotated on a weekly basis to fill-in interviewer spots. The HR department s...