有人用Intel C/C++intel编译器器吗?谈谈体会如何

c++编译器_百度百科
关闭特色百科用户权威合作手机百科
收藏 查看&c++编译器
就是将“高级语言”翻译为“(低级语言)”的程序。一个现代的主要工作流程: (source code) →
(preprocessor) → 编译器 (compiler) →
(assembler) →
(object code) →
(Linker) → 可执行程序 (executables)。简&&&&介与标准化高度兼容的编译环境特&&&&色VectorC
c++是一个与标准化高度兼容的编译环境。这点对于编译可移植的代码十分重要。对不同的会进行不同的优化。Cygwin
还有正宗的GNU GCC 2.95.5~3.0.0.4版本
是一个开源的C++,GCC3.3对标准化C++的支持达96.15%。
值得一提的是,gcc是gnu c的, 是gnu c++的编译器, 而egcs(Enhanced GNU Compiler Suite)可以认为是gcc的改进版。目前gcc已经改名,从原来代表GNU C Compiler改变为代表GNU Compiler Collection。而MinGW或Cgywin,是在windows平台上的gnu c/c++,以及库文件,运行环境的集合。
在GCC家族中GNU GCC是根本,其它的版本都是从它导出的。其中,Cygwin和Mingw32都是WIN32平台下的,DJGPP是DOS下的32位编译器。大家所熟知的DEV-C++充其量只是GCC的一个外壳,它所自带的就是Mingw32的一个版本。这些GCC的版本中,Cygwin是最大的,它与其说是一个,倒不如说是一套编程工具。它不仅有,还有其它很多的工具。其实,它就是一个UNIX系统在WIN32平台上的实现。实现了大多常用的UNIX工具,最近的版本中连Apache这样的“工具”都集成进来的。不过,Cygwin虽然功能强大,但它却不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因为太多其它的工具分散了人们的注意力。相比之下Mingw32就要好用得多,它只有最基本的几个编程工具(只可惜它不自带GDB)。GCC中并不只是C/C++,其中还有很多其它的编译器如JAVA,Fortran,ADA等。它是一个集合,不过有些编译器只能在UNIX系统上用。MSC 5.0、6.0、7.0
MSQC 1.0、2.5
MSVC 1.0、4.2、6.0、7.0
VC++6.0对标准化C++的兼容仅达83.43%。
它是Visual Studio、Visual Studio.net 2002、Visual Studio.net 2003、Visual Studio.net 2005的C++。随着Stanley Lippman等设计大师的加盟,它变得非常成熟可靠了。Visual C++ 7.1对标准C++的兼容性达到98.22%。TC 1.0、2.0
TC++ 1.01、3.0
BC 3.0、3.1、4.0、4.5、5.0、5.02
BCB 3.0、5.0、6.0
该编译以速度快、空间效率高而著称。它的5.5版本对标准化C++的支持达92.73%,而官方称100%符合ANSI/ISO的C++标准和C99标准。
它是Borland公司开发的,是Borland C++ Builder和Borland C++ Builder X这两种IDE的。Intel C/C++ 5.0
Watcom C/C++ 11.0、11.0c
VectorC 1.3.3
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
LCC-WIN32 ~日版
Intel C/C++大家一看名称就知道是Intel的东西,它和VC6完全兼容,不过要挂在VC6下才能用。Watcom C/C++是早先中的一员,原本是很不错的东西,可惜战略不对,现在已不见声息了。倒是以它为基础的一个OpenWatcom现在还在奋战。VectorC是我近日才发现的一个好东东,它是个纯C的。IBM的VisualAge for C++原本是IBM想用来淌C++这片浑水的东西,不过IBM的战略改了,它就被放弃了。DigitalMars C/C++的前身的Symantec C++(它也是中的一员),不过现在Symantec不做了,于是它的作者就把它改成了DigitalMars C/C++开放给大家使用。以上这些都是WIN32平台上的东西。KAI C/C++是个很强大的C/C++,它是个多平台的编译器。不过现在被INTEL收购了,已经停止开发了。Lcc4.1是个纯C的它是的。不过不怎么好用。LCC-WIN32是一个在LCC基础上开发的C语言的,很好用,而且有很详细的资料,FREE!Pacific C是一个纯DOS的C的集成开发环境,就不多说了。Small C CC386都是的,它们都很简单,应用来给大家学习编译器的。Quincy
Quincy Eic CINT都是C的,是用来让大家学习C语言的其中CINT的功能很强大,还支持一些C++的特性。这个东西只支持纯C。但它却号称是最快的,不过经过试验,它的确在有些情况下强过其它编译器很多!而且它还有个交互式的优化器,可以让你直接看到C代码对映的汇编代码。为一母所生,其运行效果相差不大。它们生成的代码效率都很不错,编译的速度也很快,最值得一提的是它们对C++的特性的支持算是所有中最完全的,而且它们还支持C++的大部分特性。这一点很是不错!大家对MS的VC已经很熟悉了,本不用我多说。不过在它的最新的产品VC7.0中,有很大的改进。它对C++的特性的支持比6.0有了很大的提高,是我所用的中是仅次于GCC的。而且它编译出的程序,运行速度很快!仅有少数时候次于VectorC与GCC,其它情况都是最快的!其平均运行速度是最快的。使用Pascal编译器的Delphi,以及使用标准C++编译器的C++ Builder具有较高的执行效率,相对微软平台的C++而言,开发的程序体积相对较大。这是他的唯一缺点,但是执行效率却相对微软的编译器高。Intel的大家可能不熟,它太贵了!还要有VC的支持,很不划算,而且编译速度比VC6还慢。不过它的代码质量很不错。没有什么亮点,编译速度较快,代码执行速度适中,对C++特性支持还算不错。是个很不错的,它只支持纯C。它的编译速度极快!代码执行速度较慢。不过它的最大亮点在于它的IDE,在所有的FREE编程工具中,它的IDE是最专业的,有很强大的代码分析,管理功能。而且它提供了大量的编程资料。
新手上路我有疑问投诉建议参考资料 查看精品:c语言编译器 c语言编译器下载 c语言用什么编译器 c语言编译器怎么用 c语言编..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
各大C语言编译器评测
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口来自子话题:
提高c和c++的最好办法是去做项目,而不是做题。&br&&br&你说的做题对于训练语言技巧方面的作用很有限,多是在解决小问题。通常学习算法的人,会&br&不停的做题目,他们不是c++上的牛人,而是算法牛人&br&&br&要做题,国内去poj,zoj吧,不会的,直接网上找答案。
提高c和c++的最好办法是去做项目,而不是做题。你说的做题对于训练语言技巧方面的作用很有限,多是在解决小问题。通常学习算法的人,会不停的做题目,他们不是c++上的牛人,而是算法牛人要做题,国内去poj,zoj吧,不会的,直接网上找答案。
来自子话题:
1. Webbench&p&Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。&/p&&p&下载链接:&a href=&http://home.tiscali.cz/~cz210552/webbench.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Web Bench Homepage&i class=&icon-external&&&/i&&/a&&/p&- 2. Tinyhttpd&p&tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。&/p&&p&下载链接:&a href=&http://sourceforge.net/projects/tinyhttpd/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Tiny HTTPd | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&- 3. cJSON&p&cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。&/p&&p&cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。&/p&&p&项目主页:&a href=&http://sourceforge.net/projects/cjson/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&cJSON | SourceForge.net&i class=&icon-external&&&/i&&/a&&/p&- 4. CMockery&p&cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧,对其他开源包没有依赖,对被测试代码侵入性小。cmockery的源代码行数不到3K,你阅读一下will_return和mock的源代码就一目了然了。&/p&&p&主要特点:&/p&&ul&&li&免费且开源,google提供技术支持;&/li&&li&轻量级的框架,使测试更加快速简单;&/li&&li&避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好;&/li&&li&并不强制要求待测代码必须依赖C99标准,这一特性对许多嵌入式系统的开发很有用&/li&&/ul&&p&下载链接:&a href=&/p/cmockery/downloads/list& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Downloads - cmockery - A lightweight library to simplify and generalize the process of writing unit tests for C applications.&i class=&icon-external&&&/i&&/a&&/p&- 5. Libev&p&libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.15版本8000多行),是学习事件驱动编程的很好的资源。&/p&&p&下载链接:&a href=&http://software.schmorp.de/pkg/libev.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&software.schmorp.de/pkg&/span&&span class=&invisible&&/libev.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&- 6. Memcached&p&Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态数据库驱动网站的速度。Memcached 基于一个存储键/值对的 hashmap。Memcached-1.4.7的代码量还是可以接受的,只有10K行左右。&/p&&p&下载地址:&a href=&http://memcached.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&memcached - a distributed memory object caching system&i class=&icon-external&&&/i&&/a&&/p&- 7. Lua&p&Lua很棒,Lua是巴西人发明的,这些都令我不爽,但是还不至于脸红,最多眼红。&/p&&p&让我脸红的是Lua的源代码,百分之一百的ANSI C,一点都不掺杂。在任何支持ANSI C编译器的平台上都可以轻松编译通过。我试过,真是一点废话都没有。Lua的代码数量足够小,5.1.4仅仅1.5W行,去掉空白行和注释估计能到1W行。&/p&&p&下载地址:&a href=&http://www.lua.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Programming Language Lua&i class=&icon-external&&&/i&&/a&&/p&- 8. SQLite&p&SQLite是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。足够小,大致3万行C代码,250K。&/p&&p&下载地址:&a href=&http://www.sqlite.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&SQLite Home Page&i class=&icon-external&&&/i&&/a& 。&/p&- 9. UNIX v6&p&UNIX V6 的内核源代码包括设备驱动程序在内 约有1 万行,这个数量的源代码,初学者是能够充分理解的。有一种说法是一个人所能理解的代码量上限为1 万行,UNIX V6的内核源代码从数量上看正好在这个范围之内。看到这里,大家是不是也有“如果只有1万行的话没准儿我也能学会”的想法呢?&/p&&p&另一方面,最近的操作系统,例如Linux 最新版的内核源代码据说超过了1000 万行。就算不是初学者,想完全理解全部代码基本上也是不可能的。&/p&&p&下载地址:&a href=&http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&minnie.tuhs.org/cgi-bin&/span&&span class=&invisible&&/utree.pl?file=V6&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&- 10. NETBSD&p&NetBSD是一个免费的,具有高度移植性的 UNIX-like 操作系统,是现行可移植平台最多的操作系统,可以在许多平台上执行,从 64bit alpha 服务器到手持设备和嵌入式设备。NetBSD计划的口号是:”Of course it runs NetBSD”。它设计简洁,代码规范,拥有众多先进特性,使得它在业界和学术界广受好评。由于简洁的设计和先进的特征,使得它在生产和研究方面,都有卓越的表现,而且它也有受使用者支持的完整的源代码。许多程序都可以很容易地通过NetBSD Packages Collection获得。&/p&&p&下载地址:&a href=&http://www.netbsd.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The NetBSD Project&i class=&icon-external&&&/i&&/a&&/p&&br&&p&这个网站整理的比较全,可以看看&a href=&/c/c++//c-open-project.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&值得推荐的C/C++框架和库&i class=&icon-external&&&/i&&/a&&/p&
1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来…
来自子话题:
&p&Dave Cutler像你这么大的时候才刚开始学编程,才过10年就成为硅谷最牛逼的内核程序员。显然只要你努力的话,拿它混饭吃都没问题,我就不要求你成为最牛逼的那个了。&/p&&br&&p&有很多人都对Dave Cutler学编程之前干什么很有兴趣,据他自己说,他那会儿想着毕业了之后出来盖房子。当然后来没盖成。&/p&
Dave Cutler像你这么大的时候才刚开始学编程,才过10年就成为硅谷最牛逼的内核程序员。显然只要你努力的话,拿它混饭吃都没问题,我就不要求你成为最牛逼的那个了。有很多人都对Dave Cutler学编程之前干什么很有兴趣,据他自己说,他那会儿想着毕业了之后出…
来自子话题:
其实这本教材的大部分读者都是非程序员,你可以去看看C语言二级的试卷,就跟这本书一样糟糕。反正这些人最后也不会靠这个吃饭,就权当考试了。但是我认为任何一个有志于当程序员的学生,都应该可以自发的认为这本书是完全不满足当代需求的。
其实这本教材的大部分读者都是非程序员,你可以去看看C语言二级的试卷,就跟这本书一样糟糕。反正这些人最后也不会靠这个吃饭,就权当考试了。但是我认为任何一个有志于当程序员的学生,都应该可以自发的认为这本书是完全不满足当代需求的。
来自子话题:
&div class=&highlight&&&pre&&code class=&language-text&&int dv7(int input)
if(input&8)
return (input+1)&&3;
return (input&&3) +dv7((input&&3)+(input&7));
&/code&&/pre&&/div&&p& l&/p&&p&另外增加一个求余数的。&/p&&div class=&highlight&&&pre&&code class=&language-text&&int rm7(int input)
if(input&8)
return (input==7)?0:
return rm7((input&&3)+(input&7));
&/code&&/pre&&/div&&br&&p&这里简单的解释一下吧,当前限定为非负整数,下面不再赘述。&/p&&p&如果a=8*b+c 其中c小于8 ,则a/7=b+(b+c)/7,这个式子就是整个的递归体。根据整数的二进制表示,我们可以这样得到b,c b=a&&3, c=a&7。&/p&&p&诸如此类的二进制位操作技巧在Hacker's Delight 这本书中有非常多,在TAOCP 4A中也有提及相关技巧,本题只是最基础的一种。&/p&&p&ps Hacker's Delight 已有中文版,叫做算法心得,有兴趣的可以去看一下。&/p&&p&最后,抄一段hacker's delight 里面的答案。&/p&&div class=&highlight&&&pre&&code class=&language-text&&unsigned divu7(unsigned n)
unsigned q,
q = (n && 1) + (n && 4);
q = q + (q && 6);
q = q + (q && 12) + (q && 24);
q = q && 2;
r = n - (q && 2) - (q && 1) -
return q + ((r + 1) && 3);
&/code&&/pre&&/div&
int dv7(int input)
if(input&8)
return (input+1)&&3;
return (input&&3) +dv7((input&&3)+(input&7));
l另外增加一个求余数的。int rm7(int input)
if(input&8)
return (input==7)?0:
return r…
来自子话题:
&b&题主有时间&/b&、&b&在学校&/b&、&b&有C基础。&/b&&br&&br&建议:重点看C++ Primer 5th的 9-16章。1-8章快速通过,17-19看不看都行。用到的时候google+stackoverflow。我们在github上有个CP5的习题repo,欢迎report issue,欢迎贡献代码:&a href=&/Mooophy/Cpp-Primer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Mooophy/Cpp-Primer · GitHub&i class=&icon-external&&&/i&&/a&&br&&br&另外,CP5有一些地方需要反思和小心:&br&1、过于迎合初学者,刻意回避了算法和数据结构,没能引导CP之后的学习方向。&br&没有算法和数据结构基础,理解STL是一句空话,即使把CP5背下来也没用。&br&&br&2、过分强调迭代,淡化递归,(可能是STL本身导致的)。&br&强化迭代,迭代器和容器分离并实现泛型是STL的优点,用起来就很爽。&br&但过于依赖迭代会被束缚思想。在归纳法、算法设计、复杂度分析、递推关系、编译等方面倍感不适。&br&&br&3、第十五章OO的习题和课文脱节,没提虚表。&br&C++盘子这么大,重中之重是STL,不提虚表也无可厚非。可不少面试官是C with class大师,虚表是常见考题,面试前别忘了专项补充。&br&&br&综上,题主如果有时间、有精力,建议如下路线:&br&CP5-&算导1-14章-&SICP-&龙书-&算导15-35章&br&&br&最后,补充一个个人看法:请把&b&工业级项目&/b&和&b&大学生个人发展&/b&区别对待。&br&从项目角度看,effective系列、google C++ style是非常有意义的,有效提升团队战斗力。&br&从个人发展角度说,&b&过早&/b&花精力在这些工程化、经验性的东西上会束缚思想、削足适履。而且也没用啊,在校生哪有太正经的项目可以做?这些东西连功利都谈不上,因为面试都不太考。。
题主有时间、在学校、有C基础。建议:重点看C++ Primer 5th的 9-16章。1-8章快速通过,17-19看不看都行。用到的时候google+stackoverflow。我们在github上有个CP5的习题repo,欢迎report issue,欢迎贡献代码:另外,CP5有一些…
大家都提到过Accelerated C++,这本书真的是好书,我在大四担任我们学院的C++助教的时候,我给大一的学弟学妹推荐的就是这本书,但是据我所知坚持看下来的同学比较少,但是看下来的现在都比较牛逼了,我认为这从他们大一愿意坚持下来学习的态度有很大关系。但是这本书,我认为是好书但是不风趣,其实对于初学C++的同学来说,我认为最好的教学方式或者书籍就是&b&用生动形象的例子去帮助他们理解计算机里面抽象的概念&/b&,如教授引用的时候,你就不应该扯一大堆抽象的东西,你完全可以举例子说你有个小名叫王小二,你的大名叫王二,你对引用的操作就如同揍王小二一样,不要认为揍了王小二,就没有揍到王二你了,因为无论是王小二还是王二其实都是你。而传值是什么?让我们想象现在科学技术非常先进了,已经可以达到克隆人了,他与你长的一模一样,甚至名字都是和你一样的,都叫王二,但是别人揍了那个克隆人,根本不会对你有任何关系,因为你们只是长的一样,即使名字都是一样,但是你们终归完全是两个不同的个体。像我大一之前根本没有怎么摸得到过电脑的人,你扯那么多虚的概念我是根本接受不了的,而接受的了的就是形象的例子来帮助我如何理解这些抽象的概念。&br&&br&思维稍微散了一下,我认为这样充满生动例子的方式也完全可以推广到操作系统的教学中,因为操作系统很多概念也很抽象,比如中断处理那么一大堆,你让学生理解起来也是非常枯燥难记的,在教材或者课堂教授的时候,完全可以举正常的生活例子来。比如现在一个初学者没有学习中断处理,那么如何让它理解呢?就可以举例,你现在正在使用电脑观看你喜欢的DVD影片,很不凑巧,来了一个电话,你很自然的操作就是暂停DVD影片,然后去接电话,接完电话后再回来播放DVD影片。而其实这个例子就是操作系统处理中断的过程,你观看DVD影片就是CPU正在正常执行的事件,然后,当铃声来临时,则是在通知你电话响了,你需要去接电话,你很自然的反应当然是暂停影片,然后根据铃声找到电话所在处,去接电话,如果换做计算机的世界,则是中断控制器(如8259A)告诉CPU有地方发生了中断,需要去进行中断处理,CPU这时候则会保存好“现场”,即相关寄存器的值,然后根据特定的中断请求(IRQ)在中断向量表中找到相关中断处理程序入口地址,以期调用相关中断程序进行中断处理;随后,你找到电话后,进行了电话通话,如果换做计算机的世界,则是CPU调用了正确的中断处理程序,进行了中断处理;最后你处理完了电话,你回到电脑前,继续观看你暂停前的影片,如果换做计算机的世界,则是CPU恢复“现场”,即相关的寄存器的值,随后继续执行中断发生前的程序。
大家都提到过Accelerated C++,这本书真的是好书,我在大四担任我们学院的C++助教的时候,我给大一的学弟学妹推荐的就是这本书,但是据我所知坚持看下来的同学比较少,但是看下来的现在都比较牛逼了,我认为这从他们大一愿意坚持下来学习的态度有很大关系。…
来自子话题:
A: 车提速不给力,如何解决?&br&B: 可能是喷油嘴脏了,导致汽油雾化不良,需要清洗;也可能是发动机内部积碳,要清除。&br&A: 我的是自行车。
A: 车提速不给力,如何解决?B: 可能是喷油嘴脏了,导致汽油雾化不良,需要清洗;也可能是发动机内部积碳,要清除。A: 我的是自行车。
来自子话题:
趁着现在&a href=&http://www.gaclib.net& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&www.gaclib.net &i class=&icon-external&&&/i&&/a&的用户还不多,我可以提供人肉文档支持=_,=机不可失,时不再来。
趁着现在的用户还不多,我可以提供人肉文档支持=_,=机不可失,时不再来。
来自子话题:
分开来回答把:&br&1,只要是微软的 C++,都是不标准的。&br&应该说微软独有的那部分扩展特性,别人没有,(比如什么 CString,stdafx,独有的pragma标签之类),你若是不用那些非标准特性,微软仍然可以是标准的。&br&&br&2,IDE 庞大。&br&这个显然并没错,安装 Visual Studio 必须占用 C 盘的空间(即便设定为D盘也必须将大部分内容放在C盘),而且还不小。数倍甚至数十倍于其他 IDE 所占用的空间。不过只要你有剩余空间,这其实也不算是个大问题。&br&&br&3,C++ 11 的特性都没支持全。&br&(原评论已删)有知友指出 clang 已经完整支持,所以这一点 clang 应该更有优势。&br&&br&4,另外我注意到楼主的用词「VC」,这个用词一般是用来形容 98 年的 VC6 的,现在的人用 VS 居多,所以能说出 VC 给人感觉你仍然在用上个世纪的编译器,而如果你坚持使用上个世纪的编译器,它离当前标准相差太远太远了:请回到二十一世纪。&br&&br&我们看到,其实你朋友说的话基本上是对的,只是看你怎么理解罢了。使用其他的编译器能够让你避免使用微软独有功能的诱惑,这样你的代码将来就算拿到 Visual Studio 里面也是能够编译的。而使用 VS 的话,新手基本上很难避免诱惑不去使用 VS 专有特性,而一旦使用这些特性,你的代码不容易移植到其他平台,就被微软绑定了。——对于老手来说这确实不是问题。问题在于并非所有人都是老手,所以微软通过独占特性来锁定新手程序员的行为,很有必要向新手指出。&br&&br&至于轮子哥 说的「最好的编译器是 ICC」,我表示呵呵。ICC 的存在是为了让代码为 intel CPU 做优化。因此,这个编译器「好」的前提是所有代码都在 intel 的 CPU 上运行,很幸运现在这并不是事实,移动平台已经远远超过了桌面PC的数量以及使用率,而他们绝大多数都不是用的 intel CPU。
分开来回答把:1,只要是微软的 C++,都是不标准的。应该说微软独有的那部分扩展特性,别人没有,(比如什么 CString,stdafx,独有的pragma标签之类),你若是不用那些非标准特性,微软仍然可以是标准的。2,IDE 庞大。这个显然并没错,安装 Visual Studio…
来自子话题:
&img src=&/de1efcfdf4f001ac16960b_b.jpg& data-rawwidth=&155& data-rawheight=&201& class=&content_image& width=&155&&&br&&br&大概你只需要實現2個函數&br&string multiple(string a, int b)&br&string sum(string a,string b)
大概你只需要實現2個函數string multiple(string a, int b)string sum(string a,string b)
来自子话题:
&ol&&li&math.h 里的函数都是定义在 libm 里,而每个 libm 实现都不同&/li&&li&gcc 的 glibm 中数学函数的实现完全是平台依存的,在 x86 机器上,能调用 FPU 指令的就用 FPU(比如 sqrt() 就实际上调用 FSQRT,log() 调用的是 FYL2X),否则再自己实现&/li&&li&如果需要软件实现,方法基本上是泰勒级数。当然对于 sin 这类,可以用专门的优化算法,比如 CORDIC&/li&&li&CPU 中的电路基本上也就是泰勒级数。&/li&&/ol&下面介绍一下 CORDIC 算法。CORDIC 最初是用来算 &img src=&/equation?tex=%5Carctan%28y%2Fx%29& alt=&\arctan(y/x)& eeimg=&1&& 的。由于这个值本质上是点 &img src=&/equation?tex=%28x%2Cy%29& alt=&(x,y)& eeimg=&1&& 的幅角,因此我们可以用一个座标旋转把它弄到横轴上:&br&&img src=&/equation?tex=%5Cbegin%7Bpmatrix%7Dx%27+%5C%5C+y%27+%5Cend%7Bpmatrix%7D+%3D+%5Cbegin%7Bpmatrix%7D+%5Ccos+%5Cgamma+%26+-%5Csin+%5Cgamma+%5C%5C+%5Csin+%5Cgamma+%26+%5Ccos+%5Cgamma+%5Cend%7Bpmatrix%7D+%5Cbegin%7Bpmatrix%7Dx+%5C%5C+y+%5Cend%7Bpmatrix%7D& alt=&\begin{pmatrix}x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos \gamma & -\sin \gamma \\ \sin \gamma & \cos \gamma \end{pmatrix} \begin{pmatrix}x \\ y \end{pmatrix}& eeimg=&1&&&br&可是这里的
正是我们要求的啊……不过不要紧,我们可以用二分搜索:第一次顺时针旋转 45 度,然后看新的座标给弄到横轴的上面还是下面,如果在上面就顺时针旋转 22.5 度,在下面就逆时针。换言之,每次旋转角度减半,这样就能把点逐渐靠近横轴了。而每次旋转所用的三角函数值完全可以存储在表格里,用查表的方法得到。&br&&img src=&/03e1d9af59ac_b.jpg& data-rawwidth=&412& data-rawheight=&421& class=&content_image& width=&412&&不过即使这样我们仍然有大量的乘法运算(每次旋转做了 4 次乘法),对矩阵稍作修改就可以得到:&br&&img src=&/equation?tex=%5Cbegin%7Bpmatrix%7Dx%27+%5C%5C+y%27+%5Cend%7Bpmatrix%7D+%3D+K_i+%5Cbegin%7Bpmatrix%7D+1+%26+-%5Ctan%5Csigma_i+%5C%5C+%5Ctan%5Csigma_i+%26+1+%5Cend%7Bpmatrix%7D+%5Cbegin%7Bpmatrix%7Dx+%5C%5C+y+%5Cend%7Bpmatrix%7D+%3D+%7B1+%5Cover+%5Csqrt%7B1%2B%5Ctan%5E2+%5Csigma_i%7D%7D+%5Cbegin%7Bpmatrix%7D+1+%26+-%5Ctan%5Csigma_i+%5C%5C+%5Ctan%5Csigma_i+%26+1+%5Cend%7Bpmatrix%7D+%5Cbegin%7Bpmatrix%7Dx+%5C%5C+y+%5Cend%7Bpmatrix%7D& alt=&\begin{pmatrix}x' \\ y' \end{pmatrix} = K_i \begin{pmatrix} 1 & -\tan\sigma_i \\ \tan\sigma_i & 1 \end{pmatrix} \begin{pmatrix}x \\ y \end{pmatrix} = {1 \over \sqrt{1+\tan^2 \sigma_i}} \begin{pmatrix} 1 & -\tan\sigma_i \\ \tan\sigma_i & 1 \end{pmatrix} \begin{pmatrix}x \\ y \end{pmatrix}& eeimg=&1&&&br&换言之每次旋转的时候,为了保持点到原点距离不变我们乘以了一个系数 &img src=&/equation?tex=K_i& alt=&K_i& eeimg=&1&&,不过我们这里只关心幅角不关心模,所以可以把它去掉(后果是变换时点会离原点越来越远):&br&&img src=&/equation?tex=%5Cbegin%7Bpmatrix%7Dx%27+%5C%5C+y%27+%5Cend%7Bpmatrix%7D+%3D+%5Cbegin%7Bpmatrix%7D+1+%26+-%5Ctan%5Csigma_i+%5C%5C+%5Ctan%5Csigma_i+%26+1+%5Cend%7Bpmatrix%7D+%5Cbegin%7Bpmatrix%7Dx+%5C%5C+y+%5Cend%7Bpmatrix%7D+& alt=&\begin{pmatrix}x' \\ y' \end{pmatrix} = \begin{pmatrix} 1 & -\tan\sigma_i \\ \tan\sigma_i & 1 \end{pmatrix} \begin{pmatrix}x \\ y \end{pmatrix} & eeimg=&1&&&br&这样浮点乘法减少了两次。&br&&br&然后我们还是不甘心,因为浮点乘法实在是太慢了,能不能把它彻底消除呢?实际上是可以的。在刚才的布骤里我们每次旋转角减半,实际上并不需要这么做——我们可以选择&br&&img src=&/equation?tex=%5Csigma_i%3D%5Carctan%282%5E%7B-i%7D%29+%5C%3B%5C%3B%5C%3B+%28i+%5Cge+0%29& alt=&\sigma_i=\arctan(2^{-i}) \;\;\; (i \ge 0)& eeimg=&1&&&br&这样一组特殊的角,就能让每次旋转中的乘法完全退化为加减法,这就可以大大简化电路设计。&br&&br&当然 CORDIC 除了可以算 arctan,还有许多函数都可以计算,包括 sin、cos、tan 和模。
math.h 里的函数都是定义在 libm 里,而每个 libm 实现都不同gcc 的 glibm 中数学函数的实现完全是平台依存的,在 x86 机器上,能调用 FPU 指令的就用 FPU(比如 sqrt() 就实际上调用 FSQRT,log() 调用的是 FYL2X),否则再自己实现如果需要软件实现,方法…
来自子话题:
乱七八糟说了那么多,其实还是能力不够,怕驾驭不了,上线出乱子&br&说有内存碎片的,你们有彻底了解过stl吗?&br&说性能问题的,就一个链表,数组,红黑树的,你们确信自己的代码能比stl快多少?难度你们的程序瓶颈在在链表或者数组上吗?&br&你们自己写的代码能确保异常安全吗?是久经考验确保比stl更稳定吗?
乱七八糟说了那么多,其实还是能力不够,怕驾驭不了,上线出乱子说有内存碎片的,你们有彻底了解过stl吗?说性能问题的,就一个链表,数组,红黑树的,你们确信自己的代码能比stl快多少?难度你们的程序瓶颈在在链表或者数组上吗?你们自己写的代码能确保异…
来自子话题:
又是你邀我。。。那我默认你知道我要喷你了。。。&br&&br&谭浩强书看多了吧。。。不仅学到了他的表皮(which is 代码风格)你更学到了他的思想(which is 扯蛋)&br&&br&就你的简单问题来问,当然是在编译时了。。。&br&&br&但是你的代码实在是毫无意义。。。&br&&br&第一个i没有初始化,所以打出来什么你都没什么好奇怪的&br&第二个i初始化了,所以每次都是初始化的值&br&2个static变量都是废的,因为根本没有输出它们&br&&br&另外。。你的代码实在写得太恶心了,我帮你祛祛谭浩强的晦气&br&&img src=&/2e58bd8cb69cf527ae569a_b.jpg& data-rawwidth=&714& data-rawheight=&697& class=&origin_image zh-lightbox-thumb& width=&714& data-original=&/2e58bd8cb69cf527ae569a_r.jpg&&就是耐不住寂寞好好打基础,天天整这些没意义的东西,对代码又没有爱。。。。总是帮谭浩强提一些很无聊的问题。。。。。。。。&br&&img src=&/5ba0e13ffb17ed03c1a3_b.jpg& data-rawwidth=&623& data-rawheight=&702& class=&origin_image zh-lightbox-thumb& width=&623& data-original=&/5ba0e13ffb17ed03c1a3_r.jpg&&
又是你邀我。。。那我默认你知道我要喷你了。。。谭浩强书看多了吧。。。不仅学到了他的表皮(which is 代码风格)你更学到了他的思想(which is 扯蛋)就你的简单问题来问,当然是在编译时了。。。但是你的代码实在是毫无意义。。。第一个i没有初始化,所…
来自子话题:
鉴于C++所要解决的问题,以及其想要解决这些问题的方法,它的替代品也不太可能比它更简单了……那些说C++复杂到另人发指的同学,以为C++是因为好玩儿才加那些feature的么?&br&C++的目标是高性能,高效率,当你做正确的事儿的时候,C++不想因为自己的原因给你加太多额外的开销。比如如下事件:&br&1,为了开发效率,类最好有构造函数和析构函数,这样在某些时候就能自动插入一些代码,省去手动调用init() finalize()了。&br&2,为了性能,数据结构不能全都在堆上分配,语法必须支持在栈上分配数据结构。&br&3,为了开发效率,再也不能像C那样总是检查if (ret & 0) error(xxxx);了。得支持异常。&br&4,那异常发生时栈上的数据结构怎么办?……&br&C++不复杂,复杂的是编程本身……如果你想精确控制你的程序的行为,那么C++几乎是最简单高效的那个选择了……&br&当然,如果你只是想凑和着跑几个小工具,其实没必要整C++。大公司没搞个C++++,只是因为他们知道为不同的工作选择合适的工具,而不是自大地认为自己搞的东西是万金油。没有适合任何人和任何工作的编程语言!---C++的创造者经常这么说……
鉴于C++所要解决的问题,以及其想要解决这些问题的方法,它的替代品也不太可能比它更简单了……那些说C++复杂到另人发指的同学,以为C++是因为好玩儿才加那些feature的么?C++的目标是高性能,高效率,当你做正确的事儿的时候,C++不想因为自己的原因给你加…
来自子话题:
&p&意义在于见识一个丑陋的C++框架能丑到什么样子,以便时时警醒自己不要在工程里做出这种东西。&br&
不过现在还有很多卫道士宣扬MFC永远不会过时,并且说MFC面向对象,要认真学习MFC设计思想云云,真让人大开眼界。&/p&&p&——————————————&/p&&p&如vczh所说,&/p&&blockquote&大家千万不要学&a class=&member_mention& href=&/people/05ada9b5f08b76c987f5bd& data-hash=&05ada9b5f08b76c987f5bd& data-editable=&true& data-title=&@王凝枰& data-tip=&p$b$05ada9b5f08b76c987f5bd&&@王凝枰&/a& ,因为MFC有一些地方不好,就否定他的全部&/blockquote&我没有否定MFC的全部,我也承认MFC有其可取之处(实际上我很怀疑一个一无是处、毫无优点的框架的存在性)。MFC受制于历史原因,设计不够好;虽然学习MFC不是毫无意义,但把这些时间用来学习其他更现代的框架能更有收获。
意义在于见识一个丑陋的C++框架能丑到什么样子,以便时时警醒自己不要在工程里做出这种东西。
不过现在还有很多卫道士宣扬MFC永远不会过时,并且说MFC面向对象,要认真学习MFC设计思想云云,真让人大开眼界。——————————————如vczh所说,大家…
来自子话题:
我靠,必须是使用我们由中国人自己掌握核心技术的谭浩强发明的C语言啊。&br&----------------------&br&&div class=&highlight&&&pre&&code class=&language-text&&/*
哎呀,别顶了各位,我都不好意思了。
因为python和java这种高级语言更加用以上手。
现代编程课程主要教的是数据类型,变量作用范围,逻辑,条件,循环,这是面向过程阶段的。
还有面向对象阶段的继承,多态,抽象等特性都能很好满足。
并且它跨平台,容易出产品。
如果你用C系,尤其是在linux下,你需要care的和特定语言相关的细节太多,
不是老学究或者是系统工程师,在入门阶段了解太多意义不大。
&/code&&/pre&&/div&
我靠,必须是使用我们由中国人自己掌握核心技术的谭浩强发明的C语言啊。----------------------/*
哎呀,别顶了各位,我都不好意思了。
因为python和java这种高级语言更加用以上手。
现代编程课程主要教的是数据类型,变量作用范围,逻辑,条件,循环,这…
来自子话题:
Java比C++&br&好在:&br&1.Java比C,C++简单,学起来比C\C++容易&br&2.Java完全对象化,比如数组在Java中是一个对象,含有length这个属性;而不像C++中数组是一个指针。所以访问数组,Java都会进行边界检查,更安全,但牺牲了速度。同时因为Java中所有类都会继承Object这个基类,所以可以把几个好不相干的类用基类联系起来,比如放在同一个数组里。&br&3.Java中没有指针这样不安全(虽然指针速度快)的概念。&br&4.Java中有完善的内存管理机制,能自动垃圾回收,最大可能降低内存溢出的可能,同时提高编程效率。&br&5.Java中有完善的异常机制(标准C++中不够完善)。&br&6.java中保持数据时对象本身是在堆里,同时靠一在栈里的句柄与之连接。这个设计更合理。&br&由以上几点可见Java更安全。&br&8.Java标准库完整的多,相比之下C++除了一个STL(而且还超级难用)就没了,实际C++编程中需要大量使用第3方库。这很大程度上是因为Java有一些商业公司支持,更新速度快,而C++只有一个可怜的标准委员会,上一个C++标准版本还是C++98。.&br&9. Java因为是把程序编译为字节码,运行时需要JVM把字节码再翻译为机器码,所以他跨平台,一次编译到处运行。但这也是他慢的根本原因。&br&10.Java原生支持多线程(C++仅靠标准库办不到),原生的UI,如AWT Swing&br&&br&不好在:&br&1.Java比C\C++慢。Java 1.0 比C慢20倍 现在的Java 1.6运行速度也只是C的一半。&br&2. C++在继承和派生上比Java更灵活&br&3. C++ 中可以直接插入汇编 能直接操控底层硬件 所以操作系统还是得用c写&br&4. Java办的到C++一定办得到,C++办得到的Java则不一定。&br&&br&5. Sun被甲骨文收购了之后,Java的发展很受影响。&br&6. C++编译的程序可以直接运行,Java需要安装JRE有几十MB,影响产品发布的用户体验。&br&&br&最后插一句,Java的一部分优势会随着C++0x的发布有所减弱。
Java比C++好在:1.Java比C,C++简单,学起来比C\C++容易2.Java完全对象化,比如数组在Java中是一个对象,含有length这个属性;而不像C++中数组是一个指针。所以访问数组,Java都会进行边界检查,更安全,但牺牲了速度。同时因为Java中所有类都会继承Object这…
推荐 Agner Fog 的 5 本优化手册:&br&&ol&&li&Optimizing software in C++: An optimization guide for Windows, Linux and Mac platforms&br&&/li&&li&Optimizing subroutines in assembly language: An optimization guide for x86 platforms&br&&/li&&li&The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers&br&&/li&&li&Instruction tables: Lists of instruction latencies, throughputs and micro-operation breakdowns for Intel, AMD and VIA CPUs&br&&/li&&li&Calling conventions for different C++ compilers and operating systems&br&&/li&&/ol&&a href=&http://www.agner.org/optimize/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Software optimization resources. C++ and assembly. Windows, Linux, BSD, Mac OS X&i class=&icon-external&&&/i&&/a&。
推荐 Agner Fog 的 5 本优化手册:Optimizing software in C++: An optimization guide for Windows, Linux and Mac platformsOptimizing subroutines in assembly language: An optimization guide for x86 platformsThe microarchitecture of Intel, AMD …
来自子话题:
Dave Cutler像你这么大的时候都还不会编程,40+的时候就写出Windows NT了。
Dave Cutler像你这么大的时候都还不会编程,40+的时候就写出Windows NT了。

我要回帖

更多关于 谈谈演讲学习的体会 的文章

 

随机推荐