‘壹’ 你看过脑洞最大的科幻小说是什么
关于科学家与科幻作家的脑洞之争,科幻作家刘慈欣的答案是“科学家的脑洞更大”,因为“科幻作家所能做的,是把科学家的想象,用一种文学的形式表现出来”。本期好书榜中有几本与“科学”相关的书,一本是天才科学家爱因斯坦的《我的世界观》,一本是牛津心脏外科医生奇遇记《打开一颗心》,还有一套科幻作家韩松的首部作品集。
如果将中国科幻分为两极,一极是刘慈欣,另一极就是韩松,“一种是想象力意义上的应用文,另一种是作为社会预警的小说”。《时代周刊》形容韩松“白天忙于新闻工作,晚上写着阴郁诡异的故事”,而读者给他的标签是“技术时代的聊斋志异,电子囚笼中的卡夫卡”。在中国读者中,韩松的科幻小说褒贬不一,分歧很大——爱的人爱得不得了,恨的人恨得了不得。他的作品通常带有人文与反思的一面,站在不同维度、通过不同视角,冷静地观察宇宙、人间和自己,在科幻中描摹历史、现实和未来。近日,他的经典作品首度结集出版,《韩松精选集》一网打尽其成名作、获奖作品和未出版新作。其中包括再版的长篇小说《红色海洋》及《火星照耀美国》,还有两部中短篇小说集《苦难》和《冷战与信使》,《苦难》收录的是新作,大多还没有正式发表过,《冷战与信使》包含了韩松曾获全球华语科幻星云奖的《再生砖》、成名作《宇宙墓碑》等中短篇小说;《我一次次活着是为了什么》是一部首次出版的随笔杂文集,处处体现出韩松对于现实的思考和关怀;还有一部诗选《假漂亮和苍蝇拍手》亦是初次面世。今年是世界科幻诞生两百周年,韩松从初中开始写科幻到现在,三十六年一直没有中断,常有人问他是如何坚持下来的,他回答:“每个人都有责任,把自己在这个片断宇宙中的经历,尽可能记录下来,留给另一个宇宙中的我看。”
一直以来,伟大的自然科学家、相对论的创始者爱因斯坦在绝大多数人心目中只是一个符号。他究竟是一个怎样的人?根据1953年德文版着作编译出版的爱因斯坦文集《我的世界观》,会让人们对爱因斯坦产生更加完整的认知。他不仅是天才和伟大的科学家,还是思想家和人道主义者、和平主义者。他不受羁绊的独立人格,以及看待问题和处理问题的独特方式使他思想深刻、见解独到,在今天看来依然有很强的现实意义。比如他坚信科学的应用可以是集体组织的,但科学的创造却只能是个人自由思想的成果,他从不搞什么“创新团队”,甚至没有带过博士生。他自己的教育思想是:“只教人专业知识是不够的。这种教育培养出来的人可以成为一个有用的机器,却成不了一个人格完整的人。重要的是,要让学生对‘价值’有所理解并获得切身的感受。学生必须对何为美以及何为道德上的善有敏锐的辨识力,否则只是靠那点儿专业知识,更像一只训练有素的狗,而不是一个均衡发展的人。”这就是他“在提倡‘人文学科’同等重要时心中所想的东西”,而“过分强调竞争体系,以及为了立竿见影的用途而过早地专门化,将会扼杀包括专业知识在内的一切文化赖以生存的那种精神”。
《打开一颗心》作者斯蒂芬·韦斯塔比医生是英国着名的心脏外科医生,曾经师从国际心脏外科先驱柯克林教授,经手过12000颗心脏。他所遭遇的心脏外科救助场景不是影视剧,却时时上演着惊心动魄的生死大戏,心脏外科大夫的脑洞比影视编剧要大得多,患者在苦难过山车上的跌宕程度也比好莱坞大片刺激得多:主动脉瓣严重畸形的马术爱好者,后来因妊娠而凸显危机;救治没有脉搏、没有血压的机械心脏人、电子心脏人;在走廊里偶遇穿越沙漠、逃过大屠杀的阿拉伯无名哑母病孩,全力施救却最后双双殒命;还有两颗心脏并联工作的手术方案……当医务制度和救人冲突时,医生该何去何从?手术风险巨大,患者和医生该如何决定?技术通神的医生也有做不成的手术?医疗的成效、界限究竟在何处?英国医生韦斯塔比的经历、态度和思考,也必定引发中国医生和读者的反思。
‘贰’ C语言编译后是生成汇编代码还是直接生成机器代码
不会是这两种语言代码,而是编译后直接生成二进制文件(.obj文件),再通过连接器链接成二进制文件(.exe/.dll/.ocx/.sys等)
‘叁’ 编译器为什么会生成汇编语言而不是机器语言
计算机只能识别二进制代码,所以机器指令是由二进制代码组成的,即你所说的机器语言。所谓汇编语言,只是一种符号,用来方便人们使用,否则你看到的都是一串串的01011011之类的信息,一眼就认出它是什么指令非常困难,而用汇编语言这种符号,一看就知道是什么指令了。这种符号语言用助记符来表示操作码,用符号或符号地址来表示操作数或数地址,它与机器指令是一一对应的。(楼上各位表述的所谓“步骤”论是不确切的)
所以,并不是你说的“生成汇编语言而不是机器语言”,生成的是机器语言,你在调试器或反汇编程序中看到的汇编语言代码只是由反汇编程序把机器指令翻译成你看得懂的符号--汇编语言--而已。(比如你在OD或IDA中可以看到每行汇编指令前面都有机器码,如push ebp的机器码是55h,单看55,你不是熟手的话可能还不知道它是什么指令,后面给你显示出符号"push ebp",你一下子就明白了,这就是一一对应的关系,连"55"都是为了让你看的方便,否则应是01010101,即8个电子元件的电源开、关状态)
同样的道理,你在十六进制编辑器(如winhex、HexWorkShop等软件)中看到的是十六进制每行16字节排列的,那也是经过把二进制代码每字节转换成十六进制显示给你看的。
关于平台问题,当然会有影响,不同的CPU有不同的指令系统,就连同一厂家的CPU指令系统都不同,比如Intel公司的CPU,从最早的到现在的,指令不断增多,什么MMX、SSE等等新指令集不断出现,更不要说不同厂家的CPU了。当然它们之间也有很多兼容的指令集。
‘肆’ 程序编译后,如果没有显示错误,还需要执行什么操作,才能生成机器代码文件
按ctrl+f5键生成文件。
进入/home/user/目录,编译源代码:gccexample.c-oexample,如果没有编译错误,将生成执行文件example。在当前目录下输入./example,就可以运行了。
‘伍’ java编译生成的.class文件存的是字节码,那么.net EXE中究竟是IL还是机器码 C#
.Net编译好的不是汇编指令,而是IL指令,Java是字节代码
JIT
运行时.Net装载入口Assembly,CLR公共语言运行时运行代码创建主应用程序域,然后CLR提取代码从IL编译为汇编指令并执行,循环到第二部分代码。。。每部分代码都是即时编译(JIT)。代码运行中CLR监视内存使用情况并处理废品回收等等。
Java
不同的是编译为字节代码,字节代码有一套通用的语法,可以跨平台。字节代码是解释性的。Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的interpreter(解释器)负责将字节码文件解释成为特定的机器码进行运行。
‘陆’ .NET程序首先被编译成中间语言IL,IL经过再次编译后才生成机器码。这样做有什么好处
方便独立开发语言和虚拟机吧。
还有这样就可以兼容各种语言,生成相同的il。
‘柒’ Java语言源文件编译生成的字节码和机器码有什么区别
字节码要根据不同的操作系统来转换用机器码后再在本操作系统上运行。
‘捌’ java源程序编译后生成的源文件是以什么编码的,是计算机cpu得机器码还是其他编码
这个叫字节码,是JVM虚拟机能够解释运行的编码
‘玖’ java编译器将源文件编译生成的字节码是机器码么
不是,中间码。