中国历史上有一个现象:国家的正式税率不高,但老百姓为税负而痛苦。
  比如明代,黄仁宇先生在《万历十五年》一书的自序中就说道:“过去关于明史的叙述,几乎无不有‘税重民穷’的说法。”税重民穷,是明代人的普遍感受。税重导致民穷,当时的人为税负感觉痛苦,这是研究者根据史料得到的普遍印象。
  但是,明代的税率却并不算高,按照黄仁宇的概括:“16世纪末,全国田赋额最重的为南直隶苏州府,约占农村收入的20%...

via 阮一峰的网络日志 on 10/25/11

大师去世以后,财新网约我写一篇纪念文章。

现在文章已经发表了,我可以把原稿贴出来了。

丹尼斯•里奇对人类的贡献,被大大低估。此时此刻,全世界几十亿人正在使用的几百亿件电子产品,里面的软件最终都可以追溯到他的智力贡献。

==========================================

保持简单(Keep it simple)----纪念丹尼斯•里奇(Dennis Ritchie)

作者:阮一峰

1954年,电气工程师阿利斯泰尔•里奇(Alistair E. Ritchie),决定举家从纽约州的布朗克斯维尔(Bronxville),搬到几十公里以外的新泽西。这样可以离他的工作单位"贝尔实验室"更近一些。

13岁的丹尼斯•里奇(Dennis Ritchie),就这样随着父亲一起来到新泽西。那时,谁也没有想到,这个文静的少年将在这里待上一辈子,并且创造出改变世界的发明。

中学毕业后,丹尼斯•里奇听从父亲的建议,进入哈佛大学学习应用数学,直到拿到博士学位。他的第一份工作,是为军方研制核武器,这并不符合他的志趣。1967年,通过父亲介绍,26岁的他进入贝尔实验室,从事刚刚兴起的计算机研究。从此,他在新泽西老家一住就是44年,直到去世。

他在贝尔实验室的第一个任务,是参与大项目Multics,即开发一个前所未有的、可以多人使用的、同时运行多个程序的操作系统。该项目由贝尔实验室、麻省理工学院和通用电气公司三方联合研制,但是由于设计过于复杂,迟迟拿不出成果,1969年贝尔实验室宣布退出。

第一个任务这样无果而终,丹尼斯•里奇很不甘,但也无能为力。谁知过完了夏天,比他小两岁的同事肯•汤普森(Ken Thompson)找上门,说借鉴Multics的设计思路,做了一个个人项目Unix,问他有没有兴趣一起参与。丹尼斯•里奇立刻表示同意,于是两人一起投入Unix的开发。肯•汤普森的专业是电子工程,丹尼斯•里奇专业是应用数学,正好互补。经过日以继夜的工作,1969年圣诞节前,Unix已经可以初步运行了。

吸取了Multics设计复杂而导致失败的教训,丹尼斯•里奇将Unix的设计原则定为"保持简单和直接"(Keep it simple stupid),也就是后来著名的KISS原则。为了做到这一点,Unix由许多小程序组成,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一些基本步骤,由这些小程序逐一完成,再组合起来得到最终结果。

表面上看,这样的设计很低效:为了取得结果,你必须运行一连串小程序,那么为什么不用一个大程序一次运行就得到结果呢?但是事实证明,由于小程序之间可以像积木一样自由组合,所以非常灵活,能够轻易完成大量意想不到的任务。而且,计算机硬件的升级速度非常快,所以性能也不是一个问题。另一方面,开发单一目的的小程序,要比开发大型程序容易得多,所以Unix才有可能在短短几个月内问世。

Unix迅速在程序员中流传,到了80年代,已经成为主流操作系统,演变成整个软件工业的基础,当代最主要的操作系统----Windows、MacOS和Linux----都与Unix有关。由此可见,丹尼斯•里奇的"保持简单"原则,对计算机时代的影响有多大。

丹尼斯•里奇对世界的贡献还不止于此。Unix最早是用不通用的机器语言编写的,如果换一个型号的计算机,就必须重新编写一遍。为了提高通用性和开发效率,丹尼斯•里奇决定发明一种新的计算机语言----C语言。

C语言也贯彻了"保持简单"的原则,语法非常简洁,对使用者的限制很少。丹尼斯•里奇编写的教材《C编程语言》总共只有100多页,薄得难以置信。很多人都被它的简洁性吸引,学习并使用C语言。直到今天,C语言依然是世界上最重要的编程语言之一,"保持简单"原则显示了强大的生命力。

发明Unix和C语言,给丹尼斯•里奇带来巨大的荣誉,他得到了1983年的图灵奖、1990年的汉明奖、1999年的美国国家技术奖章。尽管功成名就,但是就像他的工程设计思想,丹尼斯•里奇在个人生活上也尽量"保持简单"。他依然住在新泽西,低调地生活,不太在媒体上曝光,终身没有结婚。

他也始终没有跳槽,一直在贝尔实验室工作,尽管后者多次分拆,到了最后已经名存实亡。2001年,接手贝尔实验室的朗讯公司,决定关闭大多数实验室,许多研究人员纷纷离开,包括Unix发明者之一的肯•汤普森都去了Google,但是丹尼斯•里奇哪里也没去,还是留了下来。2006年12月1日,贝尔实验室被整体卖给了法国阿尔卡特公司,第二年他就选择退休了。

退休以后,他过上了隐居生活,外界几乎忘了他的存在。2011年10月12日,共事20年的同事Rob Pike从加州到新泽西去拜访他,才发现他已经去世了。由于是独居,无法知道准确的死亡时间。据他的兄弟透露,这几年丹尼斯•里奇的健康状况一直不好,他患有前列腺癌和心脏病。

Rob Pike在Google Plus发了一条简短的消息,"据我所知,Unix和C语言发明人丹尼斯•里奇已经去世",外界才知道这件事,引发了纪念浪潮。虽然这个过程有点令人伤感,但是必须说,这很符合他的"保持简单"的原则。

(完)

文档信息

via 非常日报 by 常非常 on 10/18/11

2010年大陆教育费用的支出只占GDP的3.2%左右,20多年来,一直没有实现4%的世界平均水平;而台湾的教育经费支出一直稳定在6%以上,基本实现了12年的免费义务教育。

 

为什么要办教育,大陆教育法的解释是“教育必须为社会主义现代化建设服务,必须与生产劳动相结合,培养德、智、体等方面全面发展的社会主义业的建设者和接班人。”

 

而台湾教育法的解释是“教育之目的以培养人民健全人格、民主素养、法治观念、人文涵养、强健体魄及思考、判断与创造能力,并促进其对基本人权之尊重、生态环境之保护及对不同国家、族群、性别、宗教、文化之了解与关怀,使其成为具有国家意识与国际视野之现代化国民。”

 

大陆教育法规定“国家在受教育者中进行爱国主义、集体主义、社会主义的教育,进行理想、道德、纪律、法制、国防和民族团结的教育。”

 

台湾教育法规定“教育应本中立原则。学校不得为特定政治团体或宗教信仰从事宣传,主管教育行政机关及学校亦不得强迫学校行政人员、教师及学生参加任何政治团体或宗教活动。”


全文见 信力建 大陆、台湾谁在崛起?

via 九点 生活 by 在西安 on 10/16/11

原文首发于兵马俑BBS,感谢作者“青空の回忆”的原创分享。】

本人男,小硕,去年考上某中央机关驻某地特派办,120多人的正厅级单位,职称副主任科员,6月底毕业报道,三个多月来对公务员有了点小认识,写出来跟各位准备“为国效力”的xdjm分享。

报考

1、单位性质:中央直属,不比地方单位好,单位行业很重要,单位级别一般没意义。

中央直属只是名头响亮,如果不在京城就没有意义。 当然,如果你是京城直接委派来刷基层经验的除外。地方单位有很多省内优惠政策,如果是家乡单位便利很多,家庭既有人际关系网和独生子女就近照顾父母都很重要。

举例来说,中央涨工资,中央外派单位不涨,说是要跟地方挂钩,地方涨工资,国家范围的涨才能跟着算,省内涨的不算,省内财政不管吃中央财政的中央外派单位,于是乎夹在中间最可怜。这事要靠领导向中央反映,但是这种单位的大领导都是京城直接派来刷基层经验的,一心想着刷够年限回京晋升,根本就不操心这些事,反正你不想干有的是人愿意干。

单位一定要有实权的,没实权的干啥都不硬气,有自己收入的单位才是王道。我们自己没收入,检查别人的预算执行、政策落实、领导干部经济责任什么的,看似牛逼,其实不如人家实惠,毕竟资金都是人家用的,你查出问题了人家单位也不可能解散了,明年资金还是人家用的。最重要的并不是没实权的单位就清闲,大家没事可以搞搞思想学习大讨论,写感想发内部报刊论文什么的,没事咱可以折腾点事嘛,不过还是要看领导性格,领导通常喜欢搞些事情把大家都指挥着吆喝着,底下人汇报着,指挥别人的感觉真好。

单位级别不关底层人员的事,家里没关系,出身P民,十几年苦读名牌大学毕业,过关斩将考进来,那么恭喜你,你还是P民!中央直属正厅级单位的你,绝对不如隔壁市局的正式编制大专科员。所以还是要找能靠的上的本地单位,就是家里没啥关系还落个离家近、故友多、能照顾父母的便利。

2、职称:主任科员,副主任科员跟科员一样。

基本上能直接招主任科员,副主任科员的单位就基本没有科长,科长只存在于后勤之类的养老部门,不混到一定年限没一定关系不可能调过去的。普通部门最小的领导是副处,正科级还是普通科员,就每月多几十元工资而已。

3、理工科职位的工作:浪费才能,并不轻松,难出成绩。

技术处一般都会遇到外行领导内行的情况。即使有技术背景的领导,也一般是副职,正职的任职标准跟技术和成绩关系不大,跟资历人脉关系政治情况相关更大,党需要“又红又专”的技术人员,正职领导保证“红”,副职领导负责“专”。

我干的都是技术含量不高的事,单位本来也没多少技术积累,能提高的不多。

工作繁琐砸碎,事特别多,软硬件维护,为业务处做计算机支持,党政思想任务。我入职3个多月来,每天晚上加班,没休过周六,周六晚上也没休过,最坑爹的是周日也要随叫随到,要不是我故意少报进度,这会儿也没机会在bbs灌水了。

干了这么多事都是给别人添彩,跟自己的年终考核完全无关。例如把业务处的操作方法整理成计算机方法,整理他们给的没头绪的数据,编写sql和某坑爹的自制语言脚本,最后署上人家的名字报到京城总部,如果评上优秀人家年底加分,跟我无关,如果入选的多,我们处年底加分,跟我个人还是无关。各级领导更重视充面子的成绩,比如政策学习活动评个优秀,发个“主体”思想讨论文章上了内部报之类的。

在领导们看来所有技术问题都一样的,没有难易之分,有问题了你们不是本科生研究生吗,肯定去了就能解决,解决不了就是不认真工作,再难的问题解决了也是不计成绩的。领导眼中,排除服务器莫名其妙的故障和装个office2003是同样难度的工作,只是服务器整起来时间长了一些而已。

技术领导喜欢搞些大动作,比如自己开发个软件让总部看看(他只负责提要求),还整天叫嚣着咱们要搞点科研让总部瞧瞧。在他这里几个半外行作坊式的编代码和软件公司工程式开发没有区别,人家的经验积累、至少可重复级的CMM开发过程和需求变更控制等条件都是可以靠思想上重视就能弥补的;至于搞科研更是扯淡,作为公务员本职是搞科研那研究所和大学都可以关门了。虽然外包是个好办法,不过向总部申请额外的经费显得领导无能,还是一分钱都不花,让手下人加班去干吧。最重要的是总部也没让你整这些,真是不折腾不舒服。

工作环境

1、硬件设施:国家不差钱,单位不差钱,就是分配方式很难理解。

宽敞的办公室,空调暖气,每人一个科长级的大桌子,免费的Maxwell,四五种茶,保洁班负责卫生,新人也不用端茶倒水打扫卫生。去年预算拨款年底花不完买数码相机,买移动硬盘,买thinkpad,堆在仓库里落灰。没有政策就是不能发给底下的同志们,我现在还用着破dell620,装上保密防护软件慢的要死,我猜是单位没有介于pad和d620之间的空闲本,又不能和领导用一样的,只好委屈新人用破电脑了。

公务员
图片来自网络

申请预算该有的却没有,机房的破UPS,居然只能支持10分钟,这么鸡肋的UPS不如没有,半夜市区电力检修,楼里电力改造,几次半夜停电,有一回三点多停电,被楼层保安电话叫醒,回单位去手动关机,等到4点多来电再手动开机。又不是没钱干吗这样凑合啊,搞个xx重要思想学习活动倒是很舍得花钱包场地买东西包餐饮。

2、领导:先服从再考虑,一切为了领导。

底下的人一切以本处正领导为中心,各处领导一切以大领导为核心,这叫民主集中制。领导不懂乱指挥,你明知错了也要服从,在错误被现实证明之前,一切反对观点绝对禁止,必须等到错误的后果出现了,你才能请示领导是不是试试别的方法。

一切行动以领导的意图为主,规章制度靠后。正面例子:上下班时间,规定靠边站,你必须比领导指定的时间早上班,晚下班。反面的例子暂时没遇到,遇到的也进去了。

3、人际关系:为领导服务为前提精诚合作,基本没有勾心斗角,也看单位了。

感觉人际关系还不那么复杂,底下人基本没有勾心斗角的,大家都明白自己的p民地位,折腾和小动作是没有用的,个别人背景特殊,可能想的深,和大多数底层p民比较疏远。上下级之间关系明确而牢固,一点也不复杂,就是上面的想法就是我的想法,我是p民没多于想法,一切随您愿就行了。

单位应酬不多,出去有时应酬多。地方单位应酬比较多。

日常工作

1、工作效率:效率高了不是好事。

大家干同样的活,谁效率高谁多干些,能者多劳。手头的干完了就有新的补上,全部干完了苦劳是大家的,功劳是处室的,处室是领导的。

效率高的不如耗时间的。上个月让去京里参加总部某考试,考过了给单位、处里和个人年底都加分。领导让每晚去会议室自觉加班复习,我效率高,看完就去办公室上网了,那些人一直坐那耗时间,考试处里5个人就过了我和另一人,前两天说大家辛苦了发点加班费,结果我比其他人都少,还被警告要认真工作。没做出成绩反而比做出成绩的拿得多,怪不得一直都说机关工作效率底呢…

没办法,人要适应环境啊,于是我干完的活上报领导说还在干,故意把进度少报点,这样周末就可以上上网休息一下了,还落个周末也认真加班的美名。

2、工作强度:有人累的颈椎疼,有人闲的串门玩。

并不是领导就闲着,跟部门有关。带着我做工作的副处就也是苦逼,忙的回家还要继续干;另一个副处负责网络改造施工,其实就是外面公司的人干活,他派人盯着,有事向他汇报而已。业务处去其他单位检查,对方接待的好好的,工作节奏基本松缓,偶尔关键时刻加个班突击一下的,还有差费补助。机关党委,后勤办公室,财务处等等确实舒服,发发通知上上网,做做广播操串个门,据说还有全勤的加班费,加你妹啊!

个人发展

1、培训:有用的东西不少,但很多流于形式。

在北京中心培训比较有用,形式也丰富,吃住活动设施都很好,就是机会难得。单位内部培训有提高实际操作水平的作用,不过也就刚来才有。网络培训,内容丰富,很多课件质量挺高,知识结构调整系列考虑很周到,但是根本没空看,手头活多的没空看。

领导也不重视网络培训,看见你看课件就觉得你太闲了,于是安排些杂七杂八的事,明明手头活还没干完的说,就是稍微放松一下调整一下状态而已,怎么活又多了呢。于是只能挂课件(就像挂bbs上站时间),挂够时间年底考核学时就过了。

2、交流:机会难得。

干够年限有机会到地方交流,主任科员可以到地级市挂副局长职,到县里挂副县职,副处级依次类推…很多都是去了不想回来,不过一年期限到了还得回来当科员…

普通人都有机会到总部交流一年,就当长见识吧,反正去了待遇不变到期必须回来,也不是晋升机会。

总部中低级领导到外派单位交流纯属刷经验,刷满经验回京升级。这都是圈子里的,普通干部别想。

3、考核:考核标准不利于技术处。

业务处考核看查出上报的东西,内勤处考核不犯错就行。技术处夹在中间,参照业务处考核办法,苦逼的技术处手里没东西可报,偶尔有人跟业务处出去作技术支持,回来想尽办法写报告,还要自己加一些计算机方法进去,就指望总部能评个优秀。没机会出去的人又累又没成绩,出点错就要扣分。领导不愁没成绩,所有人的成绩都是领导的加分点,过失都是自己的。

4、晋升:低级晋升熬年限,高级晋升只是圈子里的事。

刚进来是按学历和国企/事业单位工作年限划分的职称的,之后熬年限,科级在某个职称上连续3年的年底评价称职才能晋升,副处级以下满足条件直接升,处级需要竞争上岗,也就是说副科至少6年才有机会竞争副处,副处五年称职有机会升正处。当然升处级的隐含前提是有空缺位置,不像正科随手一抓一大把。

处级之上为高级晋升,跟圈子里扯不上关系,升到处长也就到头了。因为越往上领导岗位越少,于是还有一种没实权的职位,我们这里叫正(副)司级巡视员,这种只在外派单位有,是当地有足够威望的人跟圈子里扯得上关系才能被任命的。

总部选拔考试,干够年限,像考公务员一样考,其实去了还是主任科员…

待遇

1、工资福利:地方单位比直属单位好,工资改革越改越坑爹,“我们相信思想建设比高薪养廉更符合中国的文化传统和现实国情”。

每月辛苦加班发到手3300左右。出差每天补助350,包括食宿通信交通,其中住宿要求200,住宿花不完要收回,于是乎想办法开发票什么的也是有人干的。五年前本单位阳光之前每月比现在多拿1000,现在物价涨了,工资降了。隔壁地方单位合法收入平均比我们高1000,还有逢年过节发卡。

公务员编制没有三金五险一说,据单位说全包,可是据我目前了解到的情况,医保单位每年给工资卡里打三四百元,其他没有,可以自己参加社区的,操!!工作8年的老同志说公积金每月好像是10元,天哪,积你妹呢这是。

只有单身能住便宜宿舍,每月100以内,水电气自理。食堂一天三顿共4元,还算合理,住得远的就享受不上早晚的了。

房子以前的老同志很多都有两套房,其中一套160平米,2008之前来的年轻同志都有那套160平米的,单价2000每平米。待批示文件上说2008之后的同志有没完全产权的房子,4800每平米,全额自己支付,单位不得以任何方式代垫,以目前的薪资,家里没钱首付,每月手里留不到一千元,需要还到退休都还不完。坑爹啊,这不是逼我出去查别人时犯错吗!!!

地方单位以前有房,后来集资建房跟我们2008之前的那批类似,不过政策叫停之后我们单位想尽办法坚持盖完了,人家干脆按照中央要求停工了,转手了,开发商送他们一些房,据说人手一套,以前还要2000买的…

去年我们处某前辈总部选拔考入京城总部,收入不到4k,总部房子也是4800每平米,他家在本地。结果离家远了收入基本没提高,职称不变还是主任科员,还是科员。

2、工资外收入:绝对有的单位有,有的单位不敢有。

我们单位检查的都是中央在全国范围内指派的单位,每次不同。一般都是上面知道有问题,地方的例行检查根本“查不出问题”的情况。明知对方要翻船,给你你还敢要吗。

工资外收入的情况请自行脑补。总部公示的我们查出的案件里就有,所以说绝对有。

小结

  1. 我交工科出来的不建议干公务员,浪费啊。有关系的除外。
  2. 地方实权单位收入高,便利多,应酬也较多。可以轻松做到中产阶级。
  3. 指望干轻松工作的打听清楚再行动,轻松的确实有,既看单位又看部门,最重要看领导。
  4. 指望挣额外收入的,随缘吧,自重别进去了,别给别人替罪了。
  5. 满腔报国热血的,你的热情能靠思想建设维持多久。
  6. 野心大的没关系您就省省吧,费尽心机还会跑腿,去学学人民日报的阶级固化理论先。

PS:这样折腾不是个事,本人最多干够一年,然后辞职回老家结婚算了。

《[职场人生]公务员百日感》二维码网址相关阅读
央企五年升职记
路在前方 心向往之
上班两年了
像蚂蚁一样生活


© 2011 - INXIAN敬献 - 9个围观群众 - 我也投递! - InStoRE! - 邮箱订阅 - 微博(twitter|新浪|腾讯)

via 无聊哦 by 疾风 on 10/19/11

商:酒池肉林         周:贵族世袭

秦:言论管制         汉:好大喜功

晋:炫富糜烂         南北朝:文化断层

隋:大兴土木         唐:万国马屁

宋:外交疲软         元:苛捐杂税

明:党派山头         清:高度专制

民国:内忧外困      当今:综上所述。


推荐阅读:十句话秒掉中国历史

感谢无聊哦网友 浮云 的分享

via Tony Bai_blogbus by Tony Bai on 10/17/11

本文翻译自Dr. Dobb's Journal 官网上的一篇由Brian W. Kernighan和Dennis M. Ritchie共同撰写的名为"The State of C "的文章。这里谨将此篇译文献给不久前刚刚离我们而去的C语言之父 - Dennis M. Ritchie ,愿一代计算机科学巨匠一路走好。

不再只是为了系统级编程(system programming)

C是一门通用的计算机编程语言,它最初由贝尔实验室(Bell Labs)的Dennis Rithie于1972年左右设计并实现。C的早期发展与其被用于Unix系统的实现密不可分,终端以及Unix系统上运行的大多数程序都是由C开发的。近些年,C在更为广泛的环境中逐渐流行起来,并且它不再依赖任何操作系统或机器了。

C最初被设计成一门用于"系统级编程"的语言,也就是说它被用于编写诸如编译器,操作系统以及文本编辑器之类的程序。不过它也已被证明非常适合其他类型程序的开发,包括数据库系统,电话交换系统,数值分析,工程程序以及大规模的字处理软件。今天,C已经成为世界上使用最为广泛的编程语言之一,并且几乎在每台计算机上我们都能看到C语言编译器的身影。

C的起源

C源于BCPL语言,后者由Martin Richards于1967年左右设计实现。BCPL是一门"无类型"的编程语言:它仅能操作一种数据类型,即机器字(machine word)。也正因为如此,BCPL特别适合面向机器字的硬件。1970年,Ken Thompson为运行在PDP-7上的首个Unix系统设计了一个精简版的BCPL,这个语言被称为B。它也是无类型的。

随着PDP-11的出现,下一版Unix也在PDP-11上实现,一个无类型的语言愈发显得不再适合这一硬件。PDP-11提供了多种不同规格大小的基本对象 - 一字节长的字符,两字节长的整型数以及四字节长的浮点数 - B语言无法处理这些不同规格大小的对象,也没有提供单独的操作符去操作它们。

C语言最初尝试通过向B语言中增加数据类型的想法来处理那些不同类型的数据。和大多数语言一样,在C中,每个对象都有一个类型以及一个值;类型决定了可用于值的操作的含义,以及对象占用的存储空间大小。例如,像int i, j;double d;以及float x这些声明决定了适于变量的操作集以及变量的存储空间需求。在语句d = x + i * j中,编译器使用类型信息确定这个整数乘法适合表达式i * j,但是在其结果与x相加之前,这个结果值必须先转换成一个浮点类型,然后最终的结果在被赋值给d时也必须先转换为双精度浮点类型。

虽然C最初是在一台PDP-II上实现的,但其早在1975年就开始在其他机器上使用了。Steve Johnson实现了一套"可移植编译器",这套编译器修改起来相对容易,并且可以为不同的机器生成代码。从那时起,C就已经在大多数计算机上被实现,从最小的微型计算机到与CRAY-2(译注:一种庞大的超级计算机)规模大小相近的大型机器。C语言很规范,即使没有一份正式的标准,你也可以写出C程序,这些程序无须修改就可以运行在任何支持C语言和最小运行时环境的机器上。

C最初在小型机器上实现,并且继承了一系列小语种编程语言的特点;与功能相比,C的设计者更倾向于简单和优雅。此外,从一开始,C语言就是为系统级编程而设计,程序的运行效率至关重要。因此,C语言与真实机器能力的良好匹配也就不足为奇了。例如,C语言为典型硬件所直接支持的对象:字符,整数(也许有多种大小),以及浮点数字(同样可能有多种大小)提供了相应的基本数据类型。

你可以创建一些更为复杂的对象,诸如数组,结构体等,但是C语言几乎没有提供将这些对象作为一个整体进行操作的操作符;你必须自己编写函数来实现诸如字符串比较,将一个数组赋值给另一个数组等功能。

还有一些不同寻常的是,C语言本身并没有提供输入输出操作。当然,这并不是说C程序无法进行I/O操作,只不过C语言中的IO操作是通过用户定义函数或库中的函数来完成的,而不是通过语言内置的语句。这与作为语言一部分的FORTRAN的READ和WRITE,BASIC的INPUT和PRINT恰恰相反。

C语言本身未提供的功能还包括:它没有存储管理,比如像Pascal语言的new函数那样;它没有提供并行处理的基础设施,比如像Ada的rendezvous机制那样。你可以很容易地用C实现这些功能,不过它们已经通过函数库提供了,并且同样并非语言本身的一部分。在符号记法方面,函数调用要比直接使用操作符显得更加笨拙,例如,BASIC中的字符串比较语句如下:

IF A$ = B$ THEN

使用C语言,你可能会像这样实现这一功能:

if (equal(a, b))...

与内嵌代码相比,函数调用还会带来更多的额外性能开销。

不管怎样,C中省略的特性的程度也是它的显著特点之一。

语言元素

控制流:C语言中的控制流相当传统,但比FORTRAN或BASIC语言提供的更为丰富。C提供了两种决策语句:if ... else和switch。在下面语句中

if (expr) statl else stat2

expr被求值;如果求值结果为真(非零),语句stat1会被执行;否则,语句stat2会被执行。整个语句中的else部分是可选的。在下面语句中

switch (expr) {
   case const1: stat1
   case const2: stat2
   ...
   default: stat
}

expr被求值,求值结果再与各个case中的常量相比较。如果找到一个匹配的case,那么对应的stat就会被执行。如果没有找到可以匹配的case,default部分对应的stat将会被执行。default部分是可选的。C语言中的switch语句有些类似Pascal中的case语句,只是后者没有default部分。

C同样也提供了三种循环:while,for和do。在下面语句中

while (expr) stat

expr被求值;如果求值结果为真,stat将会被执行,并且expr会被再次求值。当expr求值结果为假时,这个循环结束。语句:

for (stat1; expr; stat3) stat2

等价于下面的while循环:

stat1
while (expr) {
  stat2
  stat3
}

除了结束条件测试的含义不同之外,do语句与Pascal中的repeat...until语句很相似,在下面的语句中:

do stat while(expr)

stat被执行,并且expr被求值和测试。如果求值结果为真,这个循环将重复执行。

break语句执行的结果是从一个封闭的循环或switch语句立即跳出;而continue语句执行结果则是使得一个循环的下一次迭代立即开始。C还提供了goto语句,但这个语句很少使用。

在上述所有例子中,stat可以是一个单一的语句,比如x = 3或是包含在括号内的一组语句,这里提到的括号类似于其他语言中的begin...end。语句以分号结束。

数据类型:C语言提供的基本类型包括char(一个字节);int,short和long(不同长度的整型);以及float和double(两种不同长度的浮点数)。字符和不同的整型数可以是有符号的或者无符号的。

使用数组,结构体,联合体以及指针,你可以将这些对象组合成一个"派生"数据类型的无限集合(原则上),我们常见的数组:

char mesg[100];

定义了一个100个字节的数组mesg,通过mesg[0]到mesg[99]我们可以访问到数组中的每个元素。C没有提供字符串数据类型;而是用结尾字节为0的字符数组代替字符串。这就是编译器生成诸如字符串常量"hello world\n"的方法。在一个字符串中,某些"转义序列",诸如\n,用于表示特定的字符,比如换行符。"hello world\n"这个字符串包含了12个字符以及一个结尾0字节。

结构体是一些不必具有相同数据类型的相关变量的集合(类似Pascal中的record)。例如,

struct object {
   int x, y;   /* position */
   float v;    /* velocity */
   char id[10]; /* identification */
};
struct object obj;

声明了一个名为object的结构体并且定义了一个该结构体类型的变量obj。引用结构体内的个体成员可以通过类似obj.v这样的语句进行。注意,object结构体包含了一个数组类型成员id,我们可以通过obj.id[0]到obj.id[9]来访问该数组成员中的各个元素。你也可以定义结构体数组。

C语言提供了指针,或叫作机器地址作为这门语言本身不可或缺的一部分。指针的形式没有Pascal和Ada中约束地那么严格。下面的语句

char *pc;
struct object *pobj;

声明了一个指向字符的指针pc,以及一个指向object结构体的指针pobj。通过声明语句中使用的形式*pc或*pobj,我们可以访问到指针指向的数据的值;这个"解引用"操作符*等价于Pascal中的脱字符号(^)。结构体中的单独成员可以通过,例如pobj->v的形式访问。

如果p是一个指向T类型对象的指针,并且当前指向一个T类型数组中的一个元素,那么p+1则是指向该数组下一个元素的指针。同样,如果p和q是指向同一数组中元素的两个指针,并且p小于q,那么q-p则为p到q之间元素的个数。总之,指针的算术操作会按照指针所指向的对象的大小进行缩放;对象的实际大小通常在你编写程序时是不相关的。当与对象的实际大小相关时,C提供了sizeof操作符用于计算对象的大小,这样程序本身就无须为特定机器显式指定对象的大小了。C所整合的完整的指针和地址计算是这门语言的一个优势。

操作符与表达式:与多数传统编程语言相比,C语言拥有一套丰富的操作符。除了普通算术操作符+,-,*,/和%(取余)之外,其他几组操作符也值得给予特殊的关注。

首先,C提供了用于操作一个字内部的比特位的操作符(见表1)。

&       bitwise AND(按位与)
|       bitwise OR(按位或)
^       bitwise exclusive-OR(按位异或)
~       one's complement(按位反)
<<      left shift(左移)
>>      right shift(右移)
表1: 操作字内部比特位的C操作符; 对于许多系统级编程的程序来说,这些操作符十分必要。

例如,列表1中的函数计算其参数中值为1的比特位的个数,它通过重复测试参数最右侧比特位的值,并每次把参数右移一位,直到参数值为0为止。声明中的unsigned意为函数将n视为逻辑数量,而不是一个算术变量。

bitcount(n)        /* count 1 bits in n */
   unsigned int n;
{
   int b;
   for (b = 0; n != 0; n >>= 1)
   if (n & 1)
      ++b;
   return b;
}
列表1:bitcount函数计算其参数中值为1的比特位的个数,它通过重复测试参数最右侧比特位的值,并每次把参数右移一位,直到参数值为0为止。

函数bitcount阐释了第二组操作符。任何类似>>这样的接受两个操作数的操作符都有一个对应的"赋值操作符",比如>>=,因此下面的语句

v = v >> expr

可以被简化为:

v >>= expr

这个符号更易读,特别是当v是一个复杂的表达式而不是一个单字母的变量时。

第三组操作符用于处理逻辑条件。操作符&&和||自左向右求值,表达式的值一经得到,求值过程立即停止。在类似下面的结构中

if (i < N && x[i] > 0)...

如果i大于或等于N(假定N是数组x的大小),那么包含x[i]的值测试将不会执行。逻辑操作符的这种行为被称为”短路求值“。

函数:一个C程序的整体结构是一组变量和函数的声明和定义。如果程序规模较大,这些定义常常被放到独立的文件中;你可以单独编译它们,并且使用链接器将它们链接在一起。

在一个函数内部,变量通常是"自动的"- 也就是说,它们在程序执行进入函数时出现,在离开函数后消失,就像在bitcount函数中那样。不过,如果你将一个变量声明为static,那么这个变量的值将从一次函数调用保留到下一次函数调用。在任何函数外面声明的变量是全局的,在程序的任何位置都可以访问到它们。

函数是支持递归调用的;标准(并且有些老套)的例子是阶乘函数(见列表2)。

fact (n)      /* returns n! (n >= 0) */
   int n;
{
   if (n <= 0)
      return 1;
   else
   return n * fact(n-1);
}
列表2: 递归函数的经典例子 - 用C实现的阶乘函数。

C语言使用传值的方式将参数传递给函数,即函数收到的是一份参数的拷贝,而不是原来的数据对象。(注意,函数bitcount修改了它的参数变量,不过这是安全的,因为它实际上是一个参数的拷贝。)通过传递指向数据对象的指针,你也可以获得与传引用一样的效果。函数的参数和返回值可以是任何基本数据类型 - 指针,结构体,或者联合体。如果要传递数组给函数,你需要传递一个指向这个数组第一个元素的指针。

ANSI标准

很多年来,C语言的定义就是《C程序设计语言》第一版中的参考手册。1983年,ANSI(美国国家标准协会)成立了一个委员会以提供一版最新的,全面的C语言定义。其结果是,C语言的ANSI标准,或叫作ANSI C,预计将在1988年年底得到批准。最新的编译器已经提供了对这一标准中绝大部分特性的支持。

自从1978年以来,这门语言变化甚少;这版标准的目标之一就是确保目前大多数现存的程序依旧是有效的,或者失败,但编译器可以产生有关新行为的警告。

基本上,有关C语言的最重要的改变就是一种声明和定义函数的新语法。现在一个函数的声明可以包含有关函数参数的描述了;定义语法也为了匹配参数而作出了改变。额外的信息让编译器更加容易地检测到因为参数不匹配而导致的错误;根据我们的经验,这是一个非常有用的补充。

为了说明这一点,考虑下面这个典型的C代码片断:

int n;
double x, sqrt();
x = sqrt(n);

函数sqrt期望一个double类型的参数,但是n却是一个整型。这个错误无法被检测出来,并且这个执行的结果也肯定没有任何意义。而采用ANSI C的新函数原型语法,你可以用如下方式重新编写这段代码:

int n;
double x, sqrt(double);
x = sqrt(n);

这里编译器已经被告知函数sqrt期望的参数类型,所以编译器生成代码将整型数n转换为浮点数。如果你不小心编写了一个无法被转换为double类型的表达式,比如 x = sqrt(&n),编译器将捕捉到这个错误。

函数定义的语法为了匹配参数而作出了改变;形式参数列在函数名字后面的括号内。因此,函数bitcount的定义就变成了:

bitcount(unsigned int n)
{
 ...
}

还有一些其他小规模的语言变化。结构体赋值,枚举,以及void数据类型,所有那些被广泛使用的特性,现在都正式成为了语言的一部分。你可以进行自动结构体和数组的初始化,你也可以作单精度浮点运算;这些在小机器上会获得更好的计算性能。

标准更加详细地阐述了算术转换的属性。并且支持十六进制常量,转义序列以及八进制常量。用于做文本宏替换的C预编译器也变得愈加精致了;它为宏生成过程提供了更多的控制。这里的大多数改变只是对你的编程有轻微的影响。

这个标准的第二个显著的贡献就是C标准库的定义。它详细说明了访问操作系统的函数(比如,读写文件),格式化输入输出(scanf和printf),内存分配(malloc),字符串操作(比如,strcmp),数学计算(比如sin和lag),等等诸如此类的函数。

一些被包含在用户编写的程序中的标准头文件为函数和数据类型声明提供了统一的访问。使用这个标准库与主机系统交互的程序可以确保其行为是兼容的。库中的大多数函数都是仔细地仿照了Unix系统的"标准I/O库",并且在其他系统上也具备相似的程序。同样,你不会看到太大的变化。

由于大多数计算机都直接支持C提供的数据类型以及控制结构,因此实现一个自包含程序所需要的运行时库是极其微小的。标准库函数只是被显式调用,所以如果你不需要,你可以避开它们。大多数标准库函数都是用C实现的,并且除了隐藏的操作系统细节外,库函数自身是可移植的。

C的评价

C是一门紧凑,高效且极富表现力的语言。事实上,C的确足够优秀,以至于它在很多系统上几乎完全取代了汇编语言编程。一个简洁,可读性强的高级语言的使用具有压倒性的优势;它仅仅使阅读程序变成可能,这在使用其他一些语言时是极其困难的。

C是一门相对"低级"的语言。这种定性是没有贬义的;只是说C语言与大多计算机一样处理着相同类型的对象,即字符,数字,以及地址。这些类型的数据可以由真实计算机实现的算术和逻辑操作符结合和移动。

由于C语言相对小巧,因此我们可以用较小的篇幅描述这门语言,并且快速的学习它。你可以合理地期待去认识,理解,并且适当地使用整门语言。

C语言的另外一个优点是其可移植性。虽然C语言与很多计算机的能力相匹配,但其实现是与任何特定的机器体系结构无关的。稍微谨慎一些,你就可以很容易地编写出无须修改即可运行在多种机器上的可移植的程序。C标准显式地明确了可移植性问题,并且规定了一组常量,用于描述运行程序的机器的特性。

C的另外一个优势在于其缺乏约束。编程语言的一个流行的趋势是"强类型",其大致含义是由语言进行细致的检查,并保证程序只包含合法的数据类型组合。强类型有些时候可以尽早地捕捉到bug,不过它也意味着一些程序无法被编写出来,因为它们本质上违反了类型组合的规则。

一个存储分配器就是一个很好的例子:你无法用Pascal编写出Pascal的new函数 - 返回指向一块存储的指针,因为在Pascal中没有办法定义一个返回任意类型的函数。不过使用C语言你就可以轻松且安全地实现这个函数,因为C语言允许你阐明对类型规则的特定违背是有意为之的。

C不是一门强类型语言,不过随着它的演化,它的类型检查已经得到了加强。最初的C定义不赞成再使用,但仍然被允许。指针和整数的互换,这早已被淘汰,而现在的标准需要适当的声明以及显式的转换,这也是一些优秀编译器已经强制要求的了。new函数的声明则是在这一方向上迈出的另外一步。编译器会给出大多数类型错误的警告,并且不会对不兼容的数据类型进行自动转换。尽管如此,C保留了一条其基本的设计哲学,即程序员知道他们在做些什么;它只是需要你显式地阐述你的意图即可。

C已经被证明是一种优秀语言,甚至其他语言也可以编译为C语言。一个最好的例子就是Yacc编译器,它可以将一门语言的语法规范转换为一个用于解释这门语言语句的C程序。自然而然,C语言本身也可以用这种方法实现。

C语言出现什么问题了?在低级别上,存在一些关于操作符优先级的低劣的选择。一些用户感觉switch语句应该做出一些变化,不要让控制流像现在那样从一个case走到下一个case。简洁的语法有时会让新手畏缩;复杂的声明时常难于阅读。《C程序设计语言》第二版中的一个新例子就是这样的一对程序:它们在C声明与自然语言单词之间进行相互转换。

如果你依赖未定义属性或实现定义的属性时,可移植性问题有时就会发生。例如,函数参数的求值次序是未指定的,因此你编写出来的依赖求值次序的代码在不同机器上很可能得到不同的执行结果。这不是一个严重的问题,因为很容易检测到依赖关系。但人们有时仍然忽视它,导致产生不幸的影响。

接下来是什么?

在过去的十年中,C语言不断演化,虽然变化的速率很缓慢。ANSI标准正式地接受了这些改变,并且也加入了一些其自身的特性。由编译器进行的错误检查的数量一直在稳步上升:虽然语言中对你的所作所为的约束依旧不多,但现在当你做出一些奇怪的事情前,你需要更多显式地确认你的操作。

在接下来的若干年,C语言可能走向何方?最有可能的演化就是继续目前这种缓慢但稳定的改进,谨慎地添加一些新的特性。谨慎是必要的,因为与目前已经存在的庞大数量的C代码保持兼容是极其重要的。我们不能无缘无故地做出改变。

实事求是地说,C语言本身不可能进行较大程度的改变了;反而一些新语言将源自于C语言。C++就是一个例子,它提供了数据抽象以及面向对象编程的设施,而且几乎完整地保留了与C的兼容性(参见"更好的C?")。与此同时,随着你使用C语言经验的增加,C本身依然经久耐用。伴随着15年的C语言使用经验,我们仍然有这样的感觉。





收藏到:Del.icio.us

via delphij's Chaos by Xin LI on 10/15/11

C语言和 UNIX 之父、K&R 的"R",Dennis Ritchie,于2011年10月12日在家中病逝。

Dennis Ritchie 在 Bell 实验室对 Ken Thompson 设计的 B 语言进行了扩展,并以此为基础设计了 C 语言。 C 语言与当时设计操作系统常用的汇编语言相比,提供了更好的可移植性,并成为了 UNIX 系统高可移植性的基础。Dennis Ritchie 做的这些工作是开创性的。这些工作使得我们能够使用包括数据结构、函数等高级语言特性的语言书写程序,并可以很容易地移植到不同类型的硬件上,同时又保持与为不同的硬件手工书写的汇编代码接近的性能。C++ 之父 Bjarne Stroustrup 对于 Ritchie 的工作如此评价:"They said it couldn't be done, and he did it."。即使在 40 多年后的今天, C 仍然在从嵌入式设备到超级计算机在内的各种计算环境中广泛使用。

"UNIX is very simple, it just needs a genius to understand its simplicity."

via 芦笛的博客 on 10/16/11

谁说毛时代的中国不是人类堕落的极致?

芦笛

我在《再谈中国人是否堕落了》中说:

“曾经沧海难为水,敢问世上还有比那阵子的中国人更堕落的民族么?纳粹也得甘拜下风吧?在那之后,咱们还配抱怨什么‘道德滑坡’?难道毛共统治的30年中国不是落到了道德的谷底,向任何一个方向走都只会有‘负帕累托效应’,都只能提升而不是降低道德水准?难道世界上还可能有比那‘道德绝对零度’更低的行为水准?”

日夜盼望共军飞弹攻击他的家园的葡萄皮网友乃愤然质问道:

“除了日本人在‘满洲国’的‘原木实验’能与纳粹的毒气室比美外,还能有甚么事是更堕落的?

日夜盼望苏维埃革命再度蹂躏中华大地的铁木网友赶紧附和,指责本区是反华喉舌:

“就算你把最残酷的反人类暴行拿出来, 芦区的同志总能找出中国人更恶劣10倍的例子,这里的同志们擅长的就是这个。”

其实这问题我早在《科学社会主义vs国家社会主义》、《马列主义远比法西斯主义邪恶》等旧作中谈过了。可惜这些同志拒绝学习芦着。说不得,只好再简单地吹一次轱辘笛。

什么是邪恶政权?我早已说过几万次,那就是煽动仇恨与暴力,并以此立国。人类历史上,只有两类极权国家这么做过,那就是纳粹与共党。但前者与后者相比,可谓mini巫见jumbo巫。

第一,两者都是具有广泛草根性的民众运动,都获得大部份国民支持(当然纳粹主要是以其政绩赢得了人民大众真心实意的拥戴,而共党则靠暴力恐吓、镇压与洗脑。对比希特勒与斯大林、毛泽东等人立即就能洞见这点,纳粹其实没有搞什么造神运动,而斯毛则完全靠以国家权力大规模造神;除了虐犹屠犹外,纳粹从未大张旗鼓地“镇压反革命”,而一切共党政权都把自己的国家浸在血海中)。两者都以鼓吹和煽动仇恨获得执政的理由(也算是“合法性”吧),并以此唤起民众的认同。两者的邪恶宣传都以“科学规律”为包装。纳粹的种族主义的“科学基础”是所谓“社会达尔文主义”,而共党的“阶级斗争学说”的“科学基础”则是马克思的“科学社会主义”。但纳粹的宣传还只限于“科学”水平,而共党则把“对敌人像严冬一般残酷无情”提炼为宗教美德,把暴力与仇恨提升为国教,将心狠手辣当成“政治立场坚定可靠”,以此作为各级“接班人”的遴选指标。无论是纳粹还是日本军国主义者都从未这么做过。

第二,纳粹实行的是外在标志明确的种族歧视与种族灭绝,因而牺牲者有限而且固定,从而极大地减轻了镇压的随意性,一般不会轻易泛化到雅利安人头上去;共党实行的是标志模糊随意的阶级歧视与阶级灭绝,任何人,哪怕是三代赤贫也罢,都可以在瞬间内变成“阶级敌人”,受害人范围完全由施暴者武断地任意划定。只有在共党的治国史上,才有 “指标镇反”、“指标划右”这种臭名昭著的烂事。中共治下先后有多少人遭受迫害,或许是个永远查不清的数字。可以肯定的是,根据毛共多次宣传的官方国策,有至少5%的国民是恒定的迫害对象,在这个恒定指标之外,还要时时发动新运动(每年至少一次,大运动里还套小运动),不断地把新的“阶级敌人”抓出来。据后毛共官方披露的资料,文革中至少有一亿人遭受了不同程度的迫害,这个数字,只怕全世界其他国家所有被无辜迫害的人加在一起也赶不上。

第三,纳粹实行的种族歧视与种族灭绝具有自限性,因而蛊惑力与传播范围都极其有限,难以形成国际运动——最起码的,“劣等民族”中不会有谁相信那些屁话,而共党的阶级歧视与阶级灭绝理论本身就是“放之四海而皆准”的“无产阶级国际主义”,具有极大的蛊惑力,因而流毒全球,使得三分之一的人类备受荼毒。

第四,纳粹屠犹,杀的还是异族,而共党专杀本族人。与共党使用的各种惨绝人寰的毒刑相比,纳粹的毒气室简直可算人道毁灭。我终生难忘的,就是下乡进村第一天见到的景象:村头的大树上高高低低地吊满了“阶级敌人”,被革命群众用泡了水的棕绳抽,抽得受害者如陀螺一般地转,鲜血便成圆锥状洒下来,宛如水滴从旋转的雨伞上甩出来一般。另一个永远无法忘记的噩梦镜头,是一对地主夫妇被背靠背捆在一起,中间塞了雷管与炸药,武装民兵用枪逼着他们的儿子上去点燃引线。和这比起来,奥斯维辛的毒气室难道算不得天堂?

第五,纳粹屠杀犹太人,靠的还是一小撮盖世太保,绝大部份德国民众给瞒在鼓里。日军的“七三一部队”就更不用说了,那是由一小撮专业人士在战争时期对敌国百姓施行的暴行,并不是由广大日本人民亲力亲为,而共党不但专门在和平时期毫无必要地虐杀同族,毛共更把歧视、虐待、迫害、残杀同胞化为全民生活方式,长达30年之久。除“阶级敌人”外,但凡毛时代过来的人,没有一个良心清白者,所有的人都在不同程度上参与过迫害同胞。毛共最邪恶之处,是以这种“投名状”的土匪战略,逼得全民把自己的命运和他们捆在一起,以唆使、煽动、怂恿、逼迫全民犯罪作为检验他们忠诚度的方式。有谁若敢拒绝作胁从,则立即就要从“人民的队伍”中跌到“阶级敌人”中去;反过来,若谁以出色的表现通过这邪恶“考验”,就能青云直上,飞黄腾达。这种罪恶的“考验”延续了三十年之久,在60-70年代竟然变成了治国的总纲(所谓“以阶级斗争为纲”)。论刽子手之多,施暴时间之长,举世并无二例。

如果这还不是人类堕落的极致,那我还真不知道什么才是。这儿可以争辩的,就是中国算不算共党国家中最堕落的国家。必须承认,论毒刑之残暴,毛共似乎比不上苏联老大哥。我在《野蛮的俄罗斯》中介绍过(购买信息:http://www.mirrorbooks.com/news/html/86/n-17586.html)

“据目击者报告:

‘整个宽大的汽车间的地上都是血,血、颅骨和一绺绺头发以及其他人体残留物,混合堆积成了几英寸深的可怕的物质……墙上有几千个弹孔,溅满血迹,沾着脑浆与头皮……,一个长约十米,宽与深均为四分之一米的槽内盛满了血……在这个恐怖的地方的附近,在同一房子的花园内,匆忙地掩埋了127个尸体,那是最近一次屠杀的产物……所有的尸体的头颅都被砸碎了,许多尸体的头颅甚至是扁平的。有的尸体完全没有头,但那头不是砍掉,而是……扯掉的……。在花园的一角,我们见到了另外一个较早的坟墓,大约有80个尸体……肚子被划开的尸体,其他则是残缺的尸体,有的被彻底地糟践过。有的眼睛被挖出了……头,脸,脖子和躯干都被刀伤覆盖……有老人,男人,女人和儿童。一个女人和她八岁的女儿用绳子绑在一起,两人身上都有枪伤。

在省契卡我们发现一个椅子(在哈尔科夫也是这样),类似牙医用的那种,只是有更多的皮带把受害人捆在上面。整个水泥地板都被血液淹没。那血染的椅子上沾着人皮和带发头皮的残留物……在县契卡也同样如此,同样是为血液、骨头与脑浆覆盖的地板,等等……这个房间里引人注目的是一块木板,紧挨着它是一个类似活板门的陷坑(яма),受害人的头被放在木板上,颅骨被撬杠撬开,脑子便立即从破碎的颅骨中落入陷坑,那陷坑里满满的全是脑浆。’

这并非个例,使用令人发指的酷刑是布党在全国的普遍实践:奥德萨的契卡人员将白军军官用铁链绑在木板上,缓慢地送入熔炉或盛满沸水的储槽,或是用绞盘撕为两段;在哈尔科夫,活剥头皮以及活剥手上的皮成了家常便饭——将受害人手上的皮剥下来做成‘手套’;沃罗涅日的契卡人员将赤裸的受害人放进里面全是尖钉的大桶,然后再滚动之;叶卡捷琳诺斯拉夫的契卡人员把受害人钉上十字架或是用石头活活砸死;察里津与卡梅申流行‘锯骨头’; 波尔塔瓦和克列缅丘格的契卡人员将神职人员躯体刺穿,活埋暴动农民;奥廖尔的契卡喜欢将受害人剥光衣服,把他们绑在冬天的街头上,再向他们赤裸的身躯泼冷水,直至他们化为‘冰雕’ ; 在基辅,契卡人员将老鼠笼子固定在受害人的肛门那儿,打开笼子门,再用火加热铁丝笼子,老鼠便不顾一切地啮咬撕开受害人的肛门,钻入受害人的肠子逃生。这酷刑可以持续几小时,有时甚至持续到次日,直到受害人死亡。

根据平反政治迫害受害者总统委员会负责人亚历山大•雅科夫列夫院士的证词,神职人员受到的酷刑是最残暴的:教士、修士被钉上十字架,被投入沸腾的沥青大桶中,被活剥头皮,被绞死,被强灌融化的铅作的‘圣餐’,被投入冰洞淹死……仅在1918年一年,就有3000名神职人员被处死。

暴行同样施加到那些‘反革命’妇女身上,在沃罗格达的拘留所,几乎所有的女囚都被看守强奸了 。根据俄国历史学家拉津斯基的调查,契卡当时流行的做法,便是将某个丈夫抓来作人质,等他的妻子上门来用自己的肉体赎回丈夫的性命。此时喝得烂醉的契卡官员便把那丈夫叫来,请他参加他们与那妻子的狂欢。”

这些材料都是老毛子自己爆出来的,论残忍程度,似乎远远超过了我本人在中国的耳闻目睹。但不管怎么说,那些暴行毕竟还是契卡匪徒犯下的。虽然布党宣称“我们每个人都是契卡战士”,而且许多苏联公民确实也是告密者,但苏联毕竟未像中国那样,把羞辱、毒打同胞的所谓“批斗会”变成全民的日常活动,斯大林也未号召“以阶级斗争为纲,其余都是目”,他依靠的还是职业队伍,并不是“全民皆凶”的人民战争。

当然,论被屠杀者占全民人口比例,“民主柬埔寨”当仁不让居全世界第一。对此我毫无异议。然而问题在于,波尔布特同志是毛泽东同志的最好的学生之一,只有他才建起了彻底消灭了“八级工资制,按劳分配,货币交换”等“资产阶级法权残余”、“三大差别”乃至一切差别的乌托邦,实现了毛心目中的“共产主义社会”。所以,如果同志们要坚持认为“民主柬埔寨”才是人类堕落的极致,那我也不便反对,只是觉得应该加一句:“青出于蓝而胜于蓝,在中共尤其是其领袖毛泽东的传帮带之下,红色高棉统治的柬埔寨甚至作出了超过中国的堕落成就,光荣升为人类堕落的珠穆朗玛峰(或堕入马里亚纳海沟)。”

最后附上中共烈士、前党魁瞿秋白的女儿瞿独伊在其回忆录中所作的“新旧社会两重天”的感慨。虽然与千百万“地富反坏右”相比,她与其母亲的遭遇不过是mini巫见jumbo巫,但高干尚且蒙如此待遇,平民如何也就可见一斑了:

 “1941年9月,苏德战争爆发三个月后,我和母亲启程回国,途中被新疆军阀盛世才软禁。

  那时,我们还没有受到什么虐待,院子锁着,没有自由,但是房间没有锁门,大家可以互相来往。中间搬了好几次,最后一次是在第四监狱,待的时间最长。吃饭是一天两顿,一桶没有一点油水的烂白菜汤,放一点盐,然后一木箱馒头,馒头里面掺了沙子,吃起来哧溜哧溜响,馒头不限制,随便吃,但是没什么营养。

  刚进监狱时,我们带了一些衣服,我还带了溜冰鞋,托看守帮忙变卖,买了一点羊尾巴油,吃馒头的时候抹一点,就有油水了。我们还买了葡萄干和牛肉干,牛肉干舍不得吃,一年四次节日的时候,我们趁机给男监的同志,一人送5、6个牛肉干。我们自己主要是抹点羊尾巴油,吃点葡萄干。

  一共有150人被关押在那里,除了我们这些苏联回来的路过人员,还有八路军办事处的工作人员。我们呆了4年,出狱时只有130人,好些不是病死了,就是牺牲了(毛泽民、陈潭秋、林洁如三位同志就被杀害),或者早就叛变了。1946年6月10日,经过党的营救和张治中将军的努力,我们才获得自由,分乘10辆大卡车奔赴延安。7月10日到延安时,受到毛泽东、朱德、林伯渠等中央领导的接见。

  说实话,在新疆监狱里,女同志没有受刑,也没有被拷打。我的一位狱友,没有死在新疆监狱,后来却死在了‘文革‘监狱里。我没想到中国人是如此的兽性,说她是叛徒,嘴里塞布,手脚绑着,头朝下,一上一下倒插进农村的茅坑里,慢慢给弄死的。

  我也蹲了10年的牛棚,每天吃一个窝头,5分钱的菜,一个月12元钱。那时说我们都是叛徒,我则是‘叛徒、军统特务、苏修特务、国民党员’,说我们集体叛变、做了很多坏事,但是也具体说不出我们做了什么坏事。我在中国农业科学院里上班,先被关在一个办公室里,上厕所,要敲门叫人来开门。有人就开,把我押到厕所去,回来再锁上。没人就得忍耐。我在牛棚里蹲了十年,笔纸都没有。睡在温室大棚的草地上。每天吃饭以前要请罪,向毛主席鞠躬,鞠躬以后可以吃窝窝头和五分钱的菜。

  我没有想到自己人整自己人,比国民党整我们还厉害。很多新疆监狱的人在‘文革’的时候都被整死了。包括我母亲,就是在“文革”中遭受迫害致死的。

  母亲解放后先在妇联国际部工作,然后担任妇联副主席,全国女工部部长,‘文革’被逮捕以前在检察委员会工作。她身体一直不好,关在秦城监狱里。母亲在监狱里没有名字,只有一个号码,在新疆监狱的时候我们还有自己的名字,还有人格,但那时母亲已经没有了。我去看她的时候,叫了她的名字,她说,‘你叫了我的名字?’我说,‘是啊,不叫你的名字怎么来看你?’她说,‘这下糟了,他们知道我是谁,对我更不好了。’

  我给周总理写信,请求让我母亲保外就医,但是保外就医只有三天,她就去世了。”

作者:芦笛芦笛自治区 发贴, 来自 http://www.hjclub.info

via 百度知道_精彩推荐 by 匿名 on 12/30/10
已解决
驾车如何判断车距?
悬赏分:0 - 解决时间 2010-12-30 19:40
驾车如何判断左右前后车距
提问者:匿名

最佳答案
判断轿车前端与人的距离:

以轿车为例,假设前方有一个身高1.7至1.8米左右的人,脚面高在10厘米左右,膝盖高在45厘米左右,臀部在70厘米左右。

1、当你看到车前端由地面向人体脚面或脚跟上移并停留此处时,车前端与人体之间的距离为3米。

2、当你看到车前端升高到人体膝盖高度处时,车前端与人体距离为1米。

3、当你看到车前端升高到人体臀部下端时,车前端与人体之间的距离为0.3米。

判断前车距离:

1、从挡风玻璃下沿看到前车保险杠上沿时约一米;

2、从挡风玻璃下沿看到前车保险杠下沿(人的脚膝盖)时约两米;

3、从挡风玻璃下沿看到前车后轮胎下沿(或看到地面)时约三米;

4、左后视镜下缘看到的相对地面的横线就是自己车头位置。

右后视镜判断后车距离:

1、后车影占后视镜全部时,车距约3米;

2、后车影占后视镜三分之二时,车距约5米;

3、后车影占后视镜二分之一时,车距约9米;

4、后车影占后视镜三分之一时,车距约12米;

5、左后视镜看到后轮盖罩中间(后门手握柄、车身横线或后视镜底线反射)相对地面就是车尾位置。

6、通过车内后视镜透视过后窗挡风玻璃下沿判断后车距离:若看到后车大灯上缘,则后尾箱距后车为三米半左右;若看到后车机仓盖与前挡玻璃交界处,则后尾箱距后车为一米;若看到后车前挡玻璃的水平三分之一,则基本靠上了。

判断车辆位置(车轮位置、前后位置):
1、判断路边在挡风玻璃中的位置(左轮在挡风玻璃左柱往右10-15cm位置;右轮在挡风玻璃中心线往左5-10cm位置);离路边距离可以从后视镜看到。
2、判断右轮位置(车头中部或右雨刮器):在车头盖板右边三分一处的相对地面
回答者:paladinguo 12-27 22:40

更多内容>>