我是靠谱客的博主 玩命电脑,最近开发中收集的这篇文章主要介绍匈牙利命名法鼻祖---查尔斯·西蒙尼生平简介编程风格由来匈牙利命名法的由来,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

生平简介

1948年9月10日,查尔斯•西蒙尼Charles Simonyi)出生于匈牙利布达佩斯。上高中时,他开始接触计算机和编程,父亲安排他给一名从事计算机工作的工程师当助手,当时计算机在匈牙利屈指可数。

1966年,查尔斯高中毕业,同时也完成了他的第一个编译器。凭借开发编译器时积累的经验,他在丹麦哥本哈根的A/S Regnecentralen公司谋得了一个职位。1968年,他离开丹麦进入美国加州大学伯克利分校学习,并于1972年获得理学学士学位,1977年获得斯坦福大学博士学位。西蒙尼曾先后在加州大学伯克利分校计算机中心、伯克利计算机公司、ILLIAC 4项目和施乐PARC工作。在施乐公司,他开发了Alto个人电脑的Bravo和Bravo X程序。

西蒙尼从1981年进入微软,直到2002年离开,当时他在微软公司的头衔是应用开发总监、首席架构师。在微软期间,西蒙尼招聘和管理的开发团队创造了很多最畅销的软件,包括Microsoft Word、Microsoft Excel等。西蒙尼于2002年创办了Intentional Software,目前担任该公司主席和CTO。这家公司的宗旨是创造能加速软件设计的技术,让商务人士即使不熟悉电脑术语,也能清楚地描述需求。

在工作以外,西蒙尼表现出对航天旅行的极大兴趣,并于2006年9月在俄罗斯星城接受训练。2007年4月7日,他与两位俄罗斯宇航员一起搭载联盟TMA-10飞船前往国际空间站,并于21日返回地球。4月9日到达国际空间站的时候,西蒙尼说:“黑暗天空中的一切都令人惊叹,非常非常激动人心。就像一个巨大的舞台布景,有许多不可思议的歌剧或现代剧的奇妙演出。当我说我彻底折服的时候,就是现在这个样子。”两年后,即2009年3月,西蒙尼再次进行了太空旅行,重游国际空间站。

编程风格由来

采访者:你的编程风格主要受谁的影响?
西蒙尼:影响主要来自两方面,一位匈牙利工程师,一台我在丹麦工作时用的计算机。

我在匈牙利的导师是一位使用Ural II计算机工作的工程师。我像个狂热的追星族,卑躬屈膝外加免费跑腿,以换取别人容许我待在一个我本不该待的地方。这不是孩子待的地方,它是全匈牙利仅有的五台计算机中的一台,被看作重要资产。我父亲是电子工程学教授,这个工程师是他的学生。我猜是我父亲托他帮忙让我进去的。我也尽量让自己能派上用场。我先是给他带午饭,后来帮他拿东西递家伙,最后我主动提出帮他们守夜,看管机器。他们一到晚上就把计算机关掉,到第二天早上再打开。开关真空管时,电热丝加热或冷却很容易损坏。这台机器有2000个真空管,每次打开时都会坏掉一个。因此,他们上班后的第一件事就是先花一个小时找出那个坏掉的真空管。我在那里守夜的话,计算机就可以一直开着,他们也不用浪费那一个小时。于是,在晚上看管机器的时候,我也就可以用这台计算机了。总之,我和这位工程师成了好朋友。他是个数学天才。我早年学到的许多技巧都是他教的,有的是关于算术思考,有的是关于符号问题。

另外,那台丹麦计算机对我影响也很大。当时,它拥有的也许是世界上最好的Algol编译器,Gier Algol。去丹麦之前,我已经把这个编译器的全部代码清单研究了个遍。它全都是用机器语言写成的,因此我既学了机器语言编程,又学会了从美学层面上思考编译过程。我对这个程序知根知底,至今仍记忆犹新。举个例子,我在伯克利上学时写的SNOBOL编译器只是这个程序的变体。我觉得GierAlgol程序现在仍在我脑海中,也影响着我的编程风格。我总是问自己:“如果这是Algol编译器的一部分,他们会怎么做呢?”这个程序真是精妙无比。有一点我印象很深,就是他们倒着扫描源代码文本的做法。在某些情况下,如果你倒着做事情,之前显得很复杂的问题突然之间会变得非常简单。例如,解析前向引用(forwardreference)可能很难。要是倒着扫描,它们就变成了后向引用(backward reference),很容易解析。只要从新的角度看待程序,原本可能很难解决的问题也会变得容易解决。这个Algol编译器处处是玄机。

匈牙利命名法的由来

匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。
举例:

  • hwnd : h 是类型描述,表示句柄, wnd 是变量对象描述,表示窗口,所以 hwnd 表示窗口句柄;
  • pfnEatApple : pfn 是类型描述,表示指向函数的指针, EatApple 是变量对象描述,所以它表示指向 EatApple 函数的函数指针变量。
  • g_cch : g_ 是属性描述,表示全局变量,c 和 ch 分别是计数类型和字符类型,一起表示变量类型,这里忽略了对象描述,所以它表示一个对字符进行计数的全局变量。

采访者:别人读几段你的源代码,有没有可能断定“这代码是查尔斯•西蒙尼写的”?
西蒙尼:噢,是的,毫无疑问。是不是我本人写的可能很难分辨,但有一点是确定无疑的:只要看了代码,你就能知道它是不是我的团队写的,或者是不是受我的影响写的。这是因为我从1972年起写的代码都遵循特定的命名规范,许多人称之为“匈牙利命名法”。你一眼就能分辨出哪些代码是受我的影响写出来的,包括Microsoft Word、Multiplan和Bravo,以及其他许多遵循这些规范写成的程序。

采访者:你提到的“匈牙利命名法”是指什么?
西蒙尼:称它为“匈牙利命名法”是个玩笑。你知道,如果有人说“这对我来说就是希腊文”,这表示他们看不懂,因此也可能它就真是用希腊语写的。这里的“匈牙利”是句反话,因为这些命名规范其实是要让代码更易读。这个玩笑说的是程序看起来这么难读,说不定真是用匈牙利语写的。

其实这套规范能够很好地控制程序中所有变量的命名。要是分解一个程序,把它放进磨床,然后对碎片进行分类,你就会发现程序的大部分都是名字。写下“apples + oranges”,你会发现名字“apples”有6个字符,运算符“+”只有1个字符,名字“oranges”有7个字符,一共14个字符,只有一个字符即加号与运算有关。因此,对我来说,要起到作用或有所改进,合乎逻辑的做法就是尽力完善程序的主要部分,也就是名字。

“匈牙利命名法”是一种根据变量的属性自动为其创建名字的命名方法。这跟人们把当裁缝(tailor)的叫做泰勒(Taylor)以及把当铁匠(blacksmith)的叫做史密斯(Smith)非常相似。因此,面对一个具备某些属性的结构,不要随随便便地取个名字,然后让所有人去琢磨名字和属性之间有什么关联,你应该把属性本身用作结构的名字。这种方法有很多优点。首先,造个名字很容易,想到那些属性时,把它们写下来,名字自然就有了。第二,它很容易理解,因为当你读到某个变量时,从名字本身就能了解到与属性有关的大量信息。这些属性会越来越多,因此很难简明地描述它们。为此“匈牙利命名法”引入了一种缩写符号,以很小的空间就能展现具体属性。当然,这在不知情的人看来完全是一团乱麻,那个玩笑就是这么来的。

有些人认为,如果他们可以读出代码里的每个字,那么程序就是可读的。实际上,这种意义上的可读性并不可取。没有人会拿着代码清单,站到演讲台上大声朗读程序。关键在于理解。只是能阅读单词并发出音来,这毫无用处。当人们看到采用“匈牙利命名法”的代码清单时,他们发现这些词很难念,可能就会认为代码不是可读的。但实际上,由于名字和属性之间存在关联,它更容易理解,也更便于沟通。那些使用匈牙利命名法编程的人,即使在离开我的部门之后,仍会继续使用它。这种命名法已经打入苹果电脑、3Com及其他许多公司。

最后

以上就是玩命电脑为你收集整理的匈牙利命名法鼻祖---查尔斯·西蒙尼生平简介编程风格由来匈牙利命名法的由来的全部内容,希望文章能够帮你解决匈牙利命名法鼻祖---查尔斯·西蒙尼生平简介编程风格由来匈牙利命名法的由来所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部