pascal下载为什么变得不流行了

<div id="click_content_aid_
<div id="favrite_content_aid_
Pascal主流核心不会用HBM 2显存,但GDDR5(X)显存可期
Pascal主流核心不会用HBM 2显存,但GDDR5(X)显存可期
10:26&&|&&作者:
&&|&&关键字:,,,,
消费级Pascal显卡并不需要多高的双精度性能,所以主流的GP104核心与GP100核心会有很大不同。实际上我们早在CES展会上就应该见过GP104核心了,它的性能也确定了,浮点性能为8TFLOPS,但用的显存不会是HBM 2,还是GDDR5或者GDDR5X。
本文约818字,需1分钟阅读
今天的GTC大会上,NVIDIA正式推出了GP100。作为Pascal架构旗舰,GP100核心的规模及规格都足够强大,不过这个核心主要是面向HPC高性能计算领域的,消费级Pascal显卡并不需要多高的双精度性能,所以主流的GP104核心与GP100核心会有很大不同。实际上我们早在CES展会上就应该见过GP104核心了,它的性能也确定了,浮点性能为8TFLOPS,但用的显存不会是HBM
2,还是GDDR5或者GDDR5X。GTC大会上展示的Drive PX2真身这次的GTC大会上,NVIDIA又一次拿出了Drive PX2自动驾驶平台,但是眼尖的读者应该会注意到,这次的Drive PX2与1月份CES展会上展示的PX2是不一样的,上图是老黄展示的Drive
PX2真身,而下图是之前CES发布会展示的Drive PX2。这是CES发布上的Drive PX2——所用的GPU并非Pascal显卡这张看着比较模糊的Drive PX2实际是赝品——虽然Drive PX2确实使用了Pascal核心,但是CES发布会NVIDIA连可供展示的Pascal核心都没,所以Drive
PX2上的GPU核心实际是Maxwell核心,使用的应该是针对笔记本市场推出的GPU模块。Drive PX2的规格再来对比下Drive PX2的性能,NVIDIA表示它所用的Pascal核心浮点性能为8TFLOPS,比GM200核心的
X还要高,但与今天GP100核心的10.6TFLOPS性能又不相符,所以我们可以断定Drive
PX2所用的Pascal核心并非GP100,更可能是主流的GP104核心。从老黄所持的Drive PX2真身来看,后者的Pascal显卡并没有使用HBM 2显存,还是普通的封装,这也意味着主流的GP104显卡不会使用HBM
2显存——虽然这一点本来就不算新闻了,但至少我们从官方层面终于证实了。没有HBM
2,GP104显卡的显存选择就比较单一了,继续使用GDDR5是有可能的,但该技术在过去一年没什么提升,最多是8Gb颗粒普及了,不过我们还有GDDR5X显存可供选择,后者虽然带宽不如HBM显存,但比GDDR5依然有明显提升,我们之前也计算过——如果GP104核心继续保持256bit位宽,那么搭配14Gbps速率的GDDR5X显存,其带宽依然有448GB/s,比目前翻倍,接近第一代HBM显存的水平了。&&更新:对于这个Drive PX2平台,NVIDIA其实详细介绍过了它的规格,它的CPU架构是2个自研的丹佛2核心以及4个A57核心组成,GPU是Pascal架构的。至于内存架构,Tegra处理器有8GB
LPDDR4内存,带宽50+GB/s,而独显GPU配备的是4GB
GDDR5,带宽80+GB/s,这个带宽在显卡中一点都不高,只有入门级独显的水平,桌面显卡的应该不会这么低,但可以证明主流级的Pascal显卡确实会使用GDDR5显存,好点的则会是GDDR5X显存。
本文读者还喜欢
买不起的天天吹
玩过红警2的利比亚吗?
你的ID音译+意译:李博士王- -‘
(你可匿名或登录后发表评论。没有帐号可,或使用和直接登录)
读书是为了心平气和地跟某些人讲道理,健身是为了让某些人心平气和地跟你讲道理,可惜我读书少,脾气也不小。
扫一扫右边的二维码
关注超能网微信账号
NVIDIA Max-Q笔记本导购
开学装机少不了,高性价比SSD导购
长续航、性能也够强的手机导购
暑假游戏笔记本导购Pascal 的不幸在于出现太早了,早期的PC性能太差不能做IDE的自动完成,所以语法罗嗦就是大缺点,放到现在完全不是问题。&br&比如 begin, end,输入的时候
b+tab,e+tab,IDE就自动完成了,可能比按住shift去输入 { } 还要方便呢。&br&&br&Pascal编译特别快,早在486时代用 delphi 1.0的时候,我一度怀疑delphi是像VB那样解释执行的,仔细研究发现的确是编译的,只是是编译实在太快了,相比同时代同一个公司开发的Borland C++要快几个数量级。&br&&br&放到现在,完全可以当脚本语言用,也许我们就不需要Python了呢。&br&&br&pascal内置字符串类型,这个是现代语言标准特性了,C的char*才是异类,C++的std::string是个怪胎。pascal串相比C串安全太多了,起码不依赖 ‘\0’,可以避免很多指针访问越界问题。&br&&br&pascal内置了 boolean型 true false是内置常量,早期的C都没有这些。&br&&br&pascal使用 import 而不是include,用import引用package也是现代语言主流做法了,C/C++的include带来的问题实在太多了,但是谁也没办法。&br&&br&相比 C ,Pascal更像一个精心设计过的语言,有学院派气质,而C则是实用主义至上,工程实践上怎么方便怎么来的。
Pascal 的不幸在于出现太早了,早期的PC性能太差不能做IDE的自动完成,所以语法罗嗦就是大缺点,放到现在完全不是问题。 比如 begin, end,输入的时候 b+tab,e+tab,IDE就自动完成了,可能比按住shift去输入 { } 还要方便呢。 Pascal编译特别快,早在486…
因素主要有两个:首先是最早版本的 Pascal 一些细节上的设计让它不适合大型软件,尤其是系统软件的开发,导致 C 语言后来居上。然后是因为 Borland 公司作死。Pascal 语言也奇迹般的&b&流行了两次&/b&。就像 Objective-C 一样。可惜的是 Pascal 第二次流行最后也没落了。&br&&br&第一次流行,Niklaus Wirth 开发 Pascal 语言本来是为了&b&教学使用&/b&,谁知道瞬间火了起来,从欧洲火到美洲,让他一卖拷贝的学生变成百万富翁(-_-!)。虽然有语法严谨易读等优点,毕竟是为教学设计的,这让它缺少一些开发大型软件和系统软件的特性,现在我们看 Pascal 强大是因为许多特性是后来加上去的,当时文件 IO 简陋,不支持直接操作内存,最严重的缺陷可能要算不同长度的字符串属于不同的数据类型,比如一个函数的参数是一个长度20的字符串,每次传递字符串的长度必须是20,上课学习写二叉树算法足够用了,对于商业软件显然是不行的。Unix 的作者之一 Brian Kernighan 就写文章说过这些事情:&a href=&///?target=http%3A//www.lysator.liu.se/c/bwk-on-pascal.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Why Pascal is Not My Favorite Programming Language&i class=&icon-external&&&/i&&/a&,开发 Unix 时没有用 Pascal,而是设计了新的语言: C 语言。随着 Unix 的流行,C 以及后来的 C++ 成了最流行的语言。Pascal 虽然在软件行业不再流行,但是教学上仍然是最流行的语言。&br&&br&Objective-C 因为 Apple 的复兴再次变得流行起来,这在编程语言里很罕见。Pascal 也经历了一次类似的事件。程序员大多都知道 Borland 这家公司,Pascal 起家,C++ 壮大,不过在和微软的 C++大战中败给了微软,Borland 是编译器提供商,C++ 是当时最流行的语言,失去 C++ 市场几乎是失去一切。Borland 寻求新的机会时盯上了起家的 Pascal,此时微软推出了一款可视化的开发工具 Visual Basic,不过很初级,无法用来开发产品软件,Borland 决定把 Pascal 打造成一个超越 VB 的开发工具,这就是后来的 Delphi,Delphi 1.0 获得巨大成功,Borland翻身的同时也让 Pascal 第二次流行起来。Delphi 所有用的语言叫 Object Pascal,也就是支持面向对象的 Pascal,已经非常强大了,Delphi 的设计者 Anders 看到 java 的成功也打算给 Object Pascal 加上 GC,并运行在虚拟机上,可以提高程序稳定性,降低程序员负担,但是管理层希望尽快开发新产品来赚更多的钱,甚至不惜降低产品质量,这导致了Pascal 的再次没落,而 Anders 被微软挖走,开发了后来的 C#。&br&&br&大概就是这样。
因素主要有两个:首先是最早版本的 Pascal 一些细节上的设计让它不适合大型软件,尤其是系统软件的开发,导致 C 语言后来居上。然后是因为 Borland 公司作死。Pascal 语言也奇迹般的流行了两次。就像 Objective-C 一样。可惜的是 Pascal 第二次流行最后也没…
&b&理论上说,大部分语言都可以用来写操作系统内核&/b&。&br&&br&但是为什么大部分操作系统内核都只用C语言来写?因为目前所有的语言的开发环境里,C语言能做到编译成不依赖操作系统的形式二进制代码,C语言的各种脱离系统的库最丰富,最完整,C语言用来开发操作系统的工具最多。&br&&br&举个例子:&br&&br&如果内核中希望使用printf这个函数,那么内核就必须自己实现printf,而不是依赖标准库,因为标准库是要依赖操作系统来完成真正的printf操作。而这种库,C语言版本的最容易找到,其它语言要么没有,要么很难用。&br&&br&题主有兴趣可以看Linux源码、网上泄露的Windows源码、ReactOS源码、以及各种嵌入式平台的源码(uC/OS,ThreadX,VxWorks等),这些源码的一个特点就是它们自身都实现了大部分标准库的函数。&br&&br&所以语言本身是什么不重要,重要的是语言运行所依赖的东西。&br&&br&如果有人使用Pascal实现了Pascal标准库里的大部分功能,并且都不依赖于操作系统,那么用这个环境就可以用来开发Pascal写的操作系统。&br&&br&有人会说解释型的语言肯定不合适,但是,实际上如果有人能移植一套不依赖操作系统的Java虚拟机,那么虚拟机之上完全可以开发一套以Java语言开发的操作系统。解释型的语言难点在于解释器,但如果解释器不依赖操作系统,那么语言本身也可以做到不依赖。&br&&br&回到问题,编程语言只是工具,不同语言之间确实在做事情上有差异,但如果付出一些代价(成本),那么工具的限制因素就会降低。&br&&br&用机床可以做零件,但用斧头、锤子、电钻、刀具就不能做了吗?只不过很麻烦而已。&br&&br&商用操作系统用C语言开发是因为工具齐全开发成本低,仅此而已。&br&&br&给个链接,JNode,一个用Java写的操作系统:&br&&br&&a href=&///?target=http%3A//zh.wikipedia.org/wiki/JNode& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&JNode&i class=&icon-external&&&/i&&/a&&br&&br&这个世界上有很多闲人,他们一直在做着各种稀奇古怪的事情,就包括用各种语言开发操作系统。&br&&br&看到题主有一点不明白,那么我再补充一下:&br&&br&一个语言的第一个版本肯定是用别的语言写的,但以后的版本就不一定了。这像是一个先有鸡还是先有蛋的问题,但实际不是。举个例子吧:C语言的最早的编译器肯定不是C写的,但用最早的编译器环境里的C语言是可以做出更复杂的编译器的,更复杂的编译器再做出支持更复杂语法的C,不停的迭代就可以了。迭代不仅仅可以是C语言,也可以是其它语言,就这样的。
理论上说,大部分语言都可以用来写操作系统内核。 但是为什么大部分操作系统内核都只用C语言来写?因为目前所有的语言的开发环境里,C语言能做到编译成不依赖操作系统的形式二进制代码,C语言的各种脱离系统的库最丰富,最完整,C语言用来开发操作系统的工…
先说结论:我认为Pascal是最有未来和希望的语言。&br&&br&原因:据统计,Pascal使用者平均年龄只有15岁,远低于其他语言。
先说结论:我认为Pascal是最有未来和希望的语言。 原因:据统计,Pascal使用者平均年龄只有15岁,远低于其他语言。
原本被Delphi搞的挺流行啊,后来的事情大家都知道了,因为Borland的老板太傻逼导致Anders去了微软,于是就变成了C#流行了。不过
Pascal的关键字实在是太啰嗦了,当年用Delphi的时候恨不得键盘上有Begin和End两个键。我还想过输入的时候把{}改成Begin和
End的,无奈大括号是注释
原本被Delphi搞的挺流行啊,后来的事情大家都知道了,因为Borland的老板太傻逼导致Anders去了微软,于是就变成了C#流行了。不过
Pascal的关键字实在是太啰嗦了,当年用Delphi的时候恨不得键盘上有Begin和End两个键。我还想过输入的时候把{}改成Begin和
因为参加过很多类似的讨论,我来讲一下我所理解的产生某些现状的原因。&br&&br&1. 怎么看待取消Pascal?&br&历史的进程。交互和要下发代码题目的出题人不用写三份代码了。关键的一点还是比赛中真没什么人用了。&br&&br&2. 为什么几年后才取消?&br&为什么取消省一保送当时要三年后实施呢?&br&很多人应该都不希望像浙江高考那样折腾吧,应试的东西还是得相对充分地适应以后才能反映水平。&br&&br&3. 为什么不开-O2?&br&今年NOI开了,事实上至少六七年前的冬令营就有过开-O2了。至少说NOI及以上的赛事根据出题人的需求可以开,包括C++11、14如果情况合适也开过(几年前的清华集训有过)。&br&本来就是先进的东西,又没有不推的理由,当然就推行咯。&br&&br&4. 那NOIp为什么不开呢?&br&有的省不装Linux,就会有选手因为系统差异挂掉。编译选项也是类似,选手用了奇怪的东西(比如未定义行为)被编译器一优化就可能挂。OI当然希望大家用规范的写法,让大家学会使用命令行,让大家了解编译选项。但一来在NOIp层面让大家学会写程序本身还是更重要一点的,二来即使要推广这些知识用直接扣成零分的方式也未必合理,三来开不开除了STL有效率的问题外影响确实没那么大。而STL在NOIp考查的有些知识中确实存在较大优势,为了语言公平削一下也有一定的道理。&br&在NOIp上我个人是支持加入各项语言特性的,但要打够提前量,否则不如不变来得好。&br&&br&5. 加入其他语言?&br&对于水平较高的人来说(比如这个问题下的大多数人),语言变多对大家不会产生什么成绩上的影响。只要正式公布能用的语言集合,大家都能轻易学懂每门语言在比赛中能使用的部分,还能对每道题目选择最合适的语言,最后拼的还是比赛想考的那些东西。&br&对于新手来说,选错语言带来的差异有时远大于编程和算法能力带来的差异。我觉得引入现在常用语言对这类人带来的好处不及造成的不方便。&br&对于出题来说,工作量上有所增加,比如要多造一个库。当然大家既然想出题,增加点工作量也是能忍的。出题难度上区别不大,有微小的增加。本来考的就是语言本身不能直接做的东西,有STL就不考裸快排,有C++14就不考裸字符串解析,有java就不考裸高精,有python就不考裸解线性方程组之类的就对了呗。只是需要稍稍花心思让语言不要太不平衡。&br&现在前面提的那些语言的基础库功能差异都很大,不像当年Pascal和C那样和谐。NOIp要加就得多套题了。高级一点的比赛开放成都能用增加点乐趣也没啥坏处,但总的来说也都不算大事,难点还是原来那些。&br&&br&最后,NOI系列活动一直有个使命是做计算机普及教育,有很多决策都是考虑了后进地区的发展。我记得这个话题在讨论的时候,最大的问题还是“如果一个地方的老师只会Pascal怎么办”,因为其他像使用人数、历史发展啥的结论都很显然。我在教育方面还没有什么理论知识,不知道有没有大神能够从普及教育的角度来谈谈这些这些问题解决思路。
因为参加过很多类似的讨论,我来讲一下我所理解的产生某些现状的原因。 1. 怎么看待取消Pascal? 历史的进程。交互和要下发代码题目的出题人不用写三份代码了。关键的一点还是比赛中真没什么人用了。 2. 为什么几年后才取消? 为什么取消省一保送当时要三年…
&p&关于anders用汇编写编译器的段子我就不讲了。delphi之所以编译那么快,跟他的语言设计得便于编译器实现是有莫大的关系的。现在的delphi不知道怎么样了,当年的delphi没有模板,整个语言是LALR(1)就可以搞定的,杜绝了所有可能让parser变慢的可能性。至于优化和代码生成的部分,因为对于所有语言都是一样的,所以这只能归咎于anders实在太牛逼了。&/p&&br&&p&说道delphi的unit,因为unit是不能循环引用的,所以一个unit发生了变化,什么unit需要重新编译是能算出来的。而且delphi的符号系统不复杂,unit编译完了他完全可以把符号表直接cache下来(不知道dcu是不是起到这么一个作用)。这个时候依赖他的unit重新编译,也不需要编译这个unit。C/C++因为是通过文件#include的,所以几乎做不到这一点。VC++的precompiled header为了做到这一点,要求你必须在文件的第一行就#include &stdafx.h“,就是为了让这个文件被include的时候,不会因为别的文件的内容而产生一些多余的#define,从而影响文件的内容什么的。&/p&
关于anders用汇编写编译器的段子我就不讲了。delphi之所以编译那么快,跟他的语言设计得便于编译器实现是有莫大的关系的。现在的delphi不知道怎么样了,当年的delphi没有模板,整个语言是LALR(1)就可以搞定的,杜绝了所有可能让parser变慢的可能性。至于优…
&p&Pascal是有很多现代语言的优秀特征的,譬如说,危险的用法写起来巨麻烦。&/p&&p&C语言:&/p&&div class=&highlight&&&pre&&code class=&language-c&&&span class=&kt&&int&/span&&span class=&o&&*&/span& &span class=&n&&fuck&/span&&span class=&p&&;&/span&
&span class=&kt&&double&/span&&span class=&o&&*&/span& &span class=&n&&shit&/span&&span class=&p&&;&/span&
&span class=&n&&fuck&/span& &span class=&o&&=&/span& &span class=&o&&++&/span&&span class=&n&&shit&/span&&span class=&p&&;&/span&
&/code&&/pre&&/div&&p&Pascal语言:&/p&&div class=&highlight&&&pre&&code class=&language-text&&var fuck : ^integer, shit : ^
shit := ^double(longint(shit) + sizeof(longint));
fuck := ^integer(shit);
&/code&&/pre&&/div&&p&你看,一看就不是什么正经人会写出来的代码。&/p&
Pascal是有很多现代语言的优秀特征的,譬如说,危险的用法写起来巨麻烦。C语言:int*
fuck = ++Pascal语言:var fuck : ^integer, shit : ^
shit := ^double(longint(shit) + sizeof(longint));
fuck := ^integer(shi…
自问自答。&br&在这几天的钻研下,也算是懂了这个游戏的一些基本的操作。&br&首先是游戏的存放目录:&img src=&/9c0ca63cf93d03b075e93_b.jpg& data-rawwidth=&659& data-rawheight=&490& class=&origin_image zh-lightbox-thumb& width=&659& data-original=&/9c0ca63cf93d03b075e93_r.jpg&&在安装盘\版本号\demo\graph\下,双击即可打开。&br&打开运行以后是这样的:&img src=&/82ee8a6ba7f9aa2b8eb92_b.jpg& data-rawwidth=&676& data-rawheight=&533& class=&origin_image zh-lightbox-thumb& width=&676& data-original=&/82ee8a6ba7f9aa2b8eb92_r.jpg&&&br&怎么样,是不是有一种瞬间回到上世纪的感觉?&br&不过,虽然游戏很简陋:&img src=&/66cbf0ae387abf5c93a77f827d3d76a4_b.jpg& data-rawwidth=&702& data-rawheight=&529& class=&origin_image zh-lightbox-thumb& width=&702& data-original=&/66cbf0ae387abf5c93a77f827d3d76a4_r.jpg&&甚至是用文字输入来操作,但是真正玩起来还是不错的。&br&&br&首先进入游戏界面后,我们看到了两艘飞机,名叫Enterprise号,和Klingon号,以及许多花花绿绿的小圆圈,这就是一些或大或小的星球,大的星球引力便大,小的星球引力便小。游戏的目标就是输入角度以及力度,飞机击中了对方的飞机便算是获胜了。&br&&br&具体的游戏界面是这样的:&img src=&/b6fbbc33afd76_b.jpg& data-rawwidth=&707& data-rawheight=&527& class=&origin_image zh-lightbox-thumb& width=&707& data-original=&/b6fbbc33afd76_r.jpg&&要求玩家一输入角度。&br&&br&在这个游戏中,角度需要手动输入,它的原则是正东方向是0°,逆时针算度数,比如说要向东南方向发射,就要输入(360-45)°=315°&br&&br&&img src=&/a893af3d29e_b.jpg& data-rawwidth=&708& data-rawheight=&531& class=&origin_image zh-lightbox-thumb& width=&708& data-original=&/a893af3d29e_r.jpg&&要求玩家一输入力度&br&&br&力度是从一到十,这不需要过多解释。&br&&br&在一个玩家输入完参数后,飞机就会吐出一条白色的丝来,这就是飞机的飞行轨迹,如果这条轨迹打到了敌机,便赢了。&br&&img src=&/07085adda3eb1_b.jpg& data-rawwidth=&712& data-rawheight=&531& class=&origin_image zh-lightbox-thumb& width=&712& data-original=&/07085adda3eb1_r.jpg&&最后在多次周旋过后,玩家二获胜&br&&br&--------------------------------------------------------------&br&开挂小技巧&br&在游戏开始界面,除了play game还有好几个选项:&br&&br&&img src=&/66cbf0ae387abf5c93a77f827d3d76a4_b.jpg& data-rawwidth=&702& data-rawheight=&529& class=&origin_image zh-lightbox-thumb& width=&702& data-original=&/66cbf0ae387abf5c93a77f827d3d76a4_r.jpg&&2.Option 调节游戏选项&img src=&/c82ee71b8ee4da4a4655e_b.jpg& data-rawwidth=&705& data-rawheight=&531& class=&origin_image zh-lightbox-thumb& width=&705& data-original=&/c82ee71b8ee4da4a4655e_r.jpg&&&br&3.修改(kai)游(wai)戏(gua)&img src=&/b562b82fbef767afb6d191_b.jpg& data-rawwidth=&707& data-rawheight=&534& class=&origin_image zh-lightbox-thumb& width=&707& data-original=&/b562b82fbef767afb6d191_r.jpg&&&br&这个选项可以让你任意改变游戏的设置,比如你可以将恼人的行星去掉,来一场没有干扰的的决斗;或者说把你的战舰移动位置,在战斗开始前便占据有利位置;再或者说增加游戏难度,加上几个行星,都是可以的,简直就是开外挂神器。&br&&br&这里我选择了删除行星&br&&img src=&/1e6c18dcdcf2990_b.jpg& data-rawwidth=&707& data-rawheight=&526& class=&origin_image zh-lightbox-thumb& width=&707& data-original=&/1e6c18dcdcf2990_r.jpg&&然后神奇的事情便会发生:Duang的一下蓝色的大行星便消失了&img src=&/99d9ef64eca65d_b.jpg& data-rawwidth=&706& data-rawheight=&528& class=&origin_image zh-lightbox-thumb& width=&706& data-original=&/99d9ef64eca65d_r.jpg&&&br&----------------------------------------------------------&br&更多技巧希望大家补充。&br&以上
自问自答。 在这几天的钻研下,也算是懂了这个游戏的一些基本的操作。 首先是游戏的存放目录:在安装盘\版本号\demo\graph\下,双击即可打开。 打开运行以后是这样的: 怎么样,是不是有一种瞬间回到上世纪的感觉? 不过,虽然游戏很简陋:甚至是用文字输入…
编写操作系统内核并不是只能用汇编跟C,C++的,非常早期的Mac操作系统,还有一个Apple Lisa机子的操作系统是题主所提到的Pascal所编写的。对,两个都是苹果的。&br&&br&那么为啥汇编,C/C++在操作系统里面那么流行呢?&br&&br&首先由汇编说起。现在常见的操作系统是有少量汇编代码的。为什么要汇编呢?因为boot的时候会有一些切换处理器模式之类杂七杂八的指令,用汇编干这种活简单粗暴,代码量也就100行,写好了就不需要动,不需要维护(除非有处理器架构有大的变化)。用汇编就图个省事。在其他大部分地方就大都用C/C++编写了&br&&br&C在操作系统中流行跟1970年代Unix出现有关。C语言最初是伴随着Unix出现的,最初的Unix是主要由汇编编写,部分应用程序使用了B语言(早期的一门高级语言)。为了编写方便,Unix开发人员决定改造B语言并用其来开发Unix后续的版本,丹尼斯里奇把B语言改造成了C语言。&br&&br&现在常见的操作系统内核主要有Linux, Unix, Darwin(Mac OSX的内核)以及NT(windows的内核)。Linux, Unix, Darwin本质上都是unix/类unix操作系统,用c语言编写是非常自然的事情。而NT内核则是Dave Culter带领团队开发的,很巧,他也选了c语言作为开发语言。造成了现在常用的操作系统内核基本上都是由c语言编写的,也给一些人一种只能用C语言写操作系统的印象。&br&&br&另外一方面,C语言有其在开发操作系统上的优势。操作系统一个很重要的功能是进行内存管理,Java, Python之类的不能直接操纵内存的语言要做内存管理是很困难的事情。而且内联汇编什么的在C语言当中太方便了,Java, Python开发操作系统好像用挖掘机穿针似的。C++能写操作系统内核,L4微内核的一些版本是C++实现的。至于Pascal,个人觉得应该跟C差别不大。注意到Pascal是强类型的,可能会略微不方便吧,但是个人觉得还是历史原因居多。&br&&br&对于 &a data-hash=&b07cd4743bee223e37badcfc& href=&///people/b07cd4743bee223e37badcfc& class=&member_mention& data-editable=&true& data-title=&@北极& data-hovercard=&p$b$b07cd4743bee223e37badcfc&&@北极&/a& 提及到的JNode,个人去其Github上稍微看了它的代码,内存管理部分是汇编写的,然后相当一部分代码是需要使用L2编译器编译的,这个编译器出来的是X86原生代码,而非JVM的bytecode。觉得不是出于科研的目的的话硬是这样搞的确挺蛋疼。&br&&br&对于当前的操作系统开发,特别是商业操作系统的开发,设计人员会遵循很多的惯例,使用汇编+C语言是其中一个。遵从这些经过无数次验证的惯例至少不会自己给自己找麻烦,也算是一种捷径吧。但是这些惯例总会过时的,也总需要有人走出新的道路。之前看了微软的一篇Paper,研究人员把c#改成一门叫Sing#的语言开发了一个操作系统,使用Sing#这门语言类型安全,内存安全的特性来提高操作系统的安全性,也使得进程能够在Ring0,同一个内存地址空间当中互相隔离。非常创新的一种做法,但是也颠覆了整个软件栈,所有应用、驱动代码要重写,没有啥兼容性,微软曾经想把它实用化,可惜失败告终。或许对以后的操作系统设计有着一定影响吧。&br&&br&好吧。。离题了那么多。。简单回答题主的问题吧,”写操作系统只能用汇编、C以及少数部分可以用C++“表述是错误的,Pascal能写操作系统内核。
编写操作系统内核并不是只能用汇编跟C,C++的,非常早期的Mac操作系统,还有一个Apple Lisa机子的操作系统是题主所提到的Pascal所编写的。对,两个都是苹果的。 那么为啥汇编,C/C++在操作系统里面那么流行呢? 首先由汇编说起。现在常见的操作系统是有少量…
窃以为这些语言并没什么明显缺陷,但是C在系统编程方面实在是太强了。&br&再没有一个语言的语法构造(在上世纪CPU特性还比较容易理解时)可以在脑子里逐字逐句对应到质量不错的汇编,而源代码看起来又接近高级语言。&br&四十多年后我们能更加深刻体会到C的牛逼之处。输给它并不说明什么。特别是Pascal,与C几乎同时出现,创新点相同(指针),早期特性上是C的子集,处在直接的竞争中。
窃以为这些语言并没什么明显缺陷,但是C在系统编程方面实在是太强了。 再没有一个语言的语法构造(在上世纪CPU特性还比较容易理解时)可以在脑子里逐字逐句对应到质量不错的汇编,而源代码看起来又接近高级语言。 四十多年后我们能更加深刻体会到C的牛逼之…
&p&谢邀 &a class=&member_mention& href=&///people/ae0d77d09de1e57ea9a0d61& data-hash=&ae0d77d09de1e57ea9a0d61& data-hovercard=&p$b$ae0d77d09de1e57ea9a0d61&&@陈泱宇&/a& &/p&&p&我高一上开始学的,但代价很大。&/p&&p&除非极其热爱,不建议投入太多精力,毕竟浙江选手强。&/p&&p&不过现在 NOIP 获奖难度有下降,可以业余学。当然目标越高,付出就越多。&/p&
我高一上开始学的,但代价很大。除非极其热爱,不建议投入太多精力,毕竟浙江选手强。不过现在 NOIP 获奖难度有下降,可以业余学。当然目标越高,付出就越多。
max&br&min&br&sort&br&stable_sort&br&heap_sort&br&binary_search&br&lower_bound&br&queue&br&priority_queue&br&deque&br&vector&br&set&br&map&br&list&br&stack&br&bitset&br&__gcd&br&pb_ds
max min sort stable_sort heap_sort binary_search lower_bound queue priority_queue deque vector set map list stack bitset __gcd pb_ds
&p&&b&绝对不是在推荐使用谭红宝入门!&/b&&/p&&p&&b&绝对不是在推荐使用谭红宝入门!&/b&&/p&&p&&b&绝对不是在推荐使用谭红宝入门!&/b&&/p&&p&重要的话说三遍&/p&&p&-------------------------------------------------------------------------------------------------------&/p&&p&当年的情况和题主一样,说下我个人经历吧。 一开始, 我的C++老师说国内没有好书, 入门书推荐了伟大的《C++ Primer》, IDE也给大家推荐的是Visual Studio。 但是当我开始学的时候就WTF了。。。&/p&&p&C++ Primer 将近1000页, 把C++讲的极其细致,而且一开始就是面向对象的思维, 第一章的book item的例子根本就没法运行, 也不知道什么是编译器, 好好的数组不用非要用什么vector, 总之就是看得一头雾水。。。 visual studio也是, 不能愉快的随便写个main.cpp就运行, 非要新建project, 而且安装极其庞大,启动慢的要死,还卸载不干净。。。&/p&&p&后来, 我开始看了伟大的神书, 我感觉我的生命都改变了,那就是 谭老师的红宝书!(&b&不要笑话我&/b&)&/p&&br&&img src=&/v2-ca75ca855f1464e10acfdb_b.jpg& class=&content_image&&&p&关于IDE,也用了别人推荐的DEV-C++。
比Visual Studio小巧很多,而且打开一个main.cpp就可以咔咔咔的run了, 也不用加system(&pause&)才能看见output, 也不会莫名其妙的需要加载windows莫名其妙的库。&/p&&br&&img src=&/v2-d2a77cc84e529b672fd495f07b5fbea1_b.png& class=&content_image&&&p&看着谭老师的宝书,完成从pascal向C++的语法的转换, 再去 &a href=&///?target=http%3A//acm./onlinejudge/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ZOJ :: Home&i class=&icon-external&&&/i&&/a& 去刷曾经的题目来练手。也就一两个礼拜的功夫,你就可以完全用C++来替代Pascal去做OJ了。当初唯一的坑就是有人用char数组有人用string类,搞得我一到处理字符串的时候就不知道怎么办。不过已经有答案给了对比图表了, (我个人建议是能用string类就用string类)。&/p&&br&&p&以上, 你完成了一个从pascal向C++语法的过度,参加比赛什么的就可以了。 下面就可以考虑开始学习C++了。&/p&&p&继续阅读谭红宝, 开始讲CLASS了吧,反正当成一个高级版的struct就好了, 一般做题的时候你也不会用到。 继承 多态神马的看看就好, 反正例子不是设计个books类就是student ID类。然后你会看到template, 这玩意好啊, 如果有了template自己手写快排神马的就可以适应多个类型了,管你是int还是double。 有了些许类和模板的基础, 加上过去的算法和数据结构基础, 容器迭代器的内容也是轻轻松松就明白了。 再去看STL, 哦, 老子上个礼拜练手手写的那些list,queue和quicksort都有库实现过了 (是的, 用pascal比赛的时候,没有库的概念)。因为自己熟悉了模板和迭代器, 如果调用STL来完成自己的功能也就熟悉了。 &/p&&p&到此, 基本的C++可以算学完了。可以&b&不完美&/b&的解决你上面提出的所有问题&/p&&br&&p&然后。。。。开始学。。。第二遍。。。&/p&&p&打开《C++ Primer》第一章开始读。。。 我擦!作者好牛逼, 一开始就打算用面向对象的思想来引导我, 我靠,这么早就讲了vector,不仅防止我们数组越界,而且封装了好多数组没有的功能。 你觉得好多写C++的习惯都不好,你被谭老骗了, 然后可以去如下几个问题去跟着点赞, 顺便骂龙哥是傻逼。。居然推荐谭红宝来误人子弟。。。&/p&&p&&a href=&/question/& class=&internal&&谭浩强的书为什么那么遭鄙视? - 计算机 - 知乎&/a&&/p&&p&&a href=&/question/& class=&internal&&谭浩强在程序员圈子里的口碑如何?为什么? - C(编程语言) - 知乎&/a&&/p&&p&&a href=&/question/& class=&internal&&谭浩强第三版c语言程序设计怎么样?大一从零开始学会被带偏吗? - 教育 - 知乎&/a&&/p&&br&&br&&p&你现在可以熟练的操作C++了, 还知道N种IDE,甚至可以用文本文档写程序, 再用嘿嘿的cmd来编译运行。。。后面再怎么样多说无益,到了这步, 你自己已经具备了自行强化C++的能力了,如果想深度使用C++,可以自行搜索进阶书籍 了, 但是也许那个时候,你已经爱上了别的语言了呢。&/p&&br&&p&—————————————————————————————————————&/p&&p&现在,coursera上有一门北京大学的系列课程, 这个系列的前三门相当于把C++给捋了一遍的,而且也是按照先搞清楚面向过程该怎么写, 再拓展到面向对象这个思路的。&/p&&p&链接:&a href=&///?target=https%3A//www.coursera.org/specializations/biancheng-suanfa& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Specialization | Coursera&i class=&icon-external&&&/i&&/a&&/p&&br&&p&祝好&/p&
绝对不是在推荐使用谭红宝入门!绝对不是在推荐使用谭红宝入门!绝对不是在推荐使用谭红宝入门!重要的话说三遍-------------------------------------------------------------------------------------------------------当年的情况和题主一样,说下我个…
本人高中P党,大学因参加ACM转C with STL(逃)&br&其实单从语法习惯,效率等等来说,P和C++孰优孰劣不过是仁者见仁智者见智的事情。&br&相较而言,C++在STL库等方面确实具有较大优势,比如我的同学很少有经常手写qsort的 &br&NOIP的一个重要使命是推广计算机编程,那么抛弃一个早已落后的P,推广依然有新特性出现的C++无可厚非呀。&br&不过从私人角度来说,也许很多年后我也会怀念当初写了六年的&br&var a:array[1..100]&br&procedure qsort(l,r:longint)&br&吧。&br&以上
本人高中P党,大学因参加ACM转C with STL(逃) 其实单从语法习惯,效率等等来说,P和C++孰优孰劣不过是仁者见仁智者见智的事情。 相较而言,C++在STL库等方面确实具有较大优势,比如我的同学很少有经常手写qsort的 NOIP的一个重要使命是推广计算机编程,那么…
所以当年挖Anders需要Bill Gates亲自打电话。
所以当年挖Anders需要Bill Gates亲自打电话。
PASCAL 不只用在 Lisa 和早期 Mac 操作系统开发中,从苹果 ][ 开始它就介入了。将 PASCAL 引入苹果电脑操作系统开发的关键人物是比尔·阿特金森和杰夫·拉斯金。大约在 1978 年以前,苹果公司使用 BASIC 和 6502 汇编语言开发软件,阿特金森说服管理层,告诉他们 PASCAL 语言比 BASIC 和 6502 更适合苹果开发自己的软件。管理层同意后,阿特金森和拉斯金从加州大学圣迭戈分校获取了 PASCAL 语言和开发系统的授权,并在苹果公司成立了内部的 PASCAL 开发组。&br&&br&苹果 ][ 的 PASCAL 系统包括 PASCAL 编译器、模式编辑器、6502 汇编器、一个强大的文件管理器和一些应用程序,这个系统通过一个命令行界面控制。Apple ][ 中的 PFS File 和苹果自己开发的 Apple Presents the Apple ][ 是用 PASCAL 开发的。苹果用 苹果 ][ 的 PASCAL 系统开发了苹果 /// PASCAL 系统,为了这个系统,苹果开发了一个非常复杂的浮点实现,它叫 SANE(Standard Apple Numeric Enviorment),到了苹果 ///,绝大多数软件是用 PASCAL 写的,在苹果 /// PASCAL 系统中扮演重要角色的人是伊拉·鲁宾和阿尔·霍夫曼。&br&&br&Lisa 使用的处理器改换成摩托罗拉 68000 系列,它的大部分系统和应用软件由一个叫 Lisa PASCAL 的 PASCAL 扩展写成。操作系统 9 万行,开发环境 10 万行,7 个应用软件,例如 LisaWrite、LisaCalc,大约 5 万行。1981 年苹果从硅谷软件手中购买了摩托罗拉 68000 原生代码 PASCAL 编译器,从头开始开发 Lisa PASCAL。Lisa 的开发全部使用 Lisa Workshop 完成,这是一个命令行开发环境,和早期的苹果 ][、苹果 /// 的 PASCAL 系统类似。同苹果 /// PASCAL 类似,Lisa PASCAL 也支持 SANE,不过在其上增加了一个复杂的数学包叫做 Mathlib。 苹果还开发了 Lisa QuickDraw 图形库,它是 Lisa 技术的核心,虽然是用 68000 汇编语言写的,但是苹果为这个超凡图形环境提供了大量的 PASCAL 接口。Lisa PASCAL 身后的重要人物仍是伊拉·鲁宾和阿尔·霍夫曼。&br&&br&Lisa Clascal(Lisa+Pascal)是苹果首次尝试进入面向对象世界而推出的编程语言,受到了施乐 PARC 研究中心正在试验的 Simula 和 Smalltalk 编程语言的影响,除了 Clascal,苹果还开发了许多类库,统称 Lisa Toolkit,这些类库可以显著缩短开发者开发桌面软件的时间。不过 Clascal 主要在苹果内部使用,Clascal 背后的工程是拉里·特斯勒和一些前施乐的 Smalltalk 专家。&br&&br&麦金塔上的 PASCAL 是 Lisa PASCAL 的移植版,1982 年苹果开始使用 Lisa PASCAL 和 Lisa Workshop 开发麦金塔电脑。1986 年苹果推出 MPW(Macintosh Programmer's Workshop),这是一个非常专业的开发环境。MPW PASCAL 提供了对新型 68000 处理器的支持,也提供了对摩托罗拉浮点和内存管理芯片的支持,条件编译指令使得 MPW PASCAL 支持浮点芯片指令的直接生成,大幅度提高了浮点运算速度。MPW PASCAL 还增强了对面向对象编程和支持,于是被命名为 Object PASCAL,这个扩展版被苹果用来开发名为 MacApp 的类库。&br&&br&大约 1988 年,苹果开始转用 C 和 C++ 开发软件,C 和 C++ 的优势促使了 PASCAL 在苹果内部和外部开发者中的显著衰退。&br&&br&&b&总结&/b&&br&&br&PASCAL 在苹果内部的使用从 1978 至 1992,集中使用在 1980 年代。启用的原因是为利替代 BASIC 和 6502 汇编语言,弃用的原因是 C 和
C++ 的兴起。这篇回答的内容节选自苹果开发者 David T. Craig 在 1992 年写的一篇文章《Apple Lisa Computer: History of Apple and Pascal》[1],里面有关于苹果采用的技术的更深入的探讨。&br&&br&[1] ftp://ftp.apple.asimov.net/pub/apple_II/documentation/macintosh/Mac%20History%20-%20Pascal%20DTC.pdf
PASCAL 不只用在 Lisa 和早期 Mac 操作系统开发中,从苹果 ][ 开始它就介入了。将 PASCAL 引入苹果电脑操作系统开发的关键人物是比尔·阿特金森和杰夫·拉斯金。大约在 1978 年以前,苹果公司使用 BASIC 和 6502 汇编语言开发软件,阿特金森说服管理层,告…
严谨的意思是,不会偷偷干一些奇怪的事情。譬如说C语言的指针大家就总是问,给一个int*加1到底是加1还是加4(8)啊?这种事情在pascal里面就不存在,因为指针不能加,要加就先转int。
严谨的意思是,不会偷偷干一些奇怪的事情。譬如说C语言的指针大家就总是问,给一个int*加1到底是加1还是加4(8)啊?这种事情在pascal里面就不存在,因为指针不能加,要加就先转int。
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 pascal命名法 的文章

 

随机推荐