免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

让我欢喜让我忧——我的C++之路 [复制链接]

论坛徽章:
0
171 [报告]
发表于 2012-04-05 20:09 |只看该作者
回复 171# 三月廿七


    呵呵,我只知道大多数网页游戏使用Flash做的,Flash是通过一个叫“Adobe Flash Player ActiveX”的东西运行在IE上的。chrome和firefox是另外的技术,我可没说他俩也用ActiveX。至于用 ActiveX开发浏览器插件是否属于弱智行为我也不与评判。

论坛徽章:
0
172 [报告]
发表于 2012-04-05 20:40 |只看该作者
回复 172# lsnl8480


你是否想说Office是用VBA做的?对此我就不说啥了。


Windows NT's architecture is modular and most of it is written in C and C++.


即便你证明了Office是彻头彻尾用VBA实现的,我也无法承认WindowsNT不是C++写的。我在想微软用的什么编译器来编译它的Windows呢?难道是gcc和LLVM?

.Net 如果不是C++写的 ,难道是用C#写的?先有鸡还是先有蛋啊?Java再牛,也只能用Java写Java编译器,还没办法用Java写Java虚拟机。

你所说的.NET支持的C++,那是C++/CLI,跟ISO的C++是两码事。即便是.NET 的上层类库也不会用C++/CLI这么蹩脚的东西来做,人家有C#和VB来实现类库。更底层的东西只能可能用他们的Visual C++ / Native 来做。

ActiveX和com的确可以看作是框架,但是提到这个能否定啥?

我也只是引一下BS的观点,没必要上纲上线。人家BS的观点就是:微软的东西绝大多数都是在Visual C++下做的,我觉得很有道理!

我也知道VC可以编译.c文件,而且执行的是C标准。但是BS要拿这么大的目标来给自己脸上贴金,那一定是有证据的。

论坛徽章:
0
173 [报告]
发表于 2012-04-05 20:54 |只看该作者
回复 171# 三月廿七


    你也太片面了。chrome开发我没做过,我不知道。firefox开发我还是做过的。人家提供的SDK是基于XUL的(XML的一种),然后还提供一个附加的C/C++开发包,Windows下大多都是用C++把基础功能做成DLL,然后跟XUL打成一个压缩包,这就算是一个插件。

论坛徽章:
0
174 [报告]
发表于 2012-04-05 20:58 |只看该作者
刚才没想起来,那个附加的C/C++开发包中最主要的技术叫做 XPCOM

XPCOM is a cross platform component object model, similar to Microsoft COM. It has multiple language bindings, letting the XPCOM components be used and implemented in JavaScript, Java, and Python in addition to C++. Interfaces in XPCOM are defined in a dialect of IDL called XPIDL.

XPCOM itself provides a set of core components and classes, e.g. file and memory management, threads, basic data structures (strings, arrays, variants), etc. The majority of XPCOM components is not part of this core set and is provided by other parts of the platform (e.g. Gecko or Necko) or by an application or even by an extension.

论坛徽章:
0
175 [报告]
发表于 2012-04-05 21:13 |只看该作者
回复 171# 三月廿七


    我还差点忘了,chrome是开放源码的呀,http://src.chromium.org,去逛了逛,只看Common目录里面,基本上是C++(.cc)和Python(.py)的代码。人家chrome插件是用json做框架的,跟Firefox的XUL差不多,也是XML的一种。其他的咱还没看,也就不说了。

论坛徽章:
0
176 [报告]
发表于 2012-04-05 21:14 |只看该作者
sonicling 发表于 2012-04-05 20:40
回复 172# lsnl8480

呵呵,你并没有证明NT是c++写的,但是我证明了NT大部分是c语言写的,你说office是vc++写的,但是我证明了office大部分是vb.net写的,你说了一大堆,也没能证明.net是c++写的。我给出了质疑.net很大可能不是c++写的。即使你说出ActiveX和com是c++写的,也不能证明windows是c++写的。
说这么多,我就想说,写操作系统,c++不是那棵菜(虽然我只喜欢c++)。我认为顶多是c语言写的核心,c++封装一遍,提供个更灵活的借口什么的。
还有,我就是要证明作者毫无根据的下的结论是错的。
”关于Windows,至少在我,还没有找到什么证据来证明它是C还是C++,或者是其他什么。我只是采用了一种较为普遍的说法“,较为普遍的说法,可笑了,较为普遍就可以是误导人的理由,我怎么听到普遍的说法是一般都是c语言写操作系统呢。
“我也有这样的印象,所以我不敢断定Windows是C写的还是C++写的,或许,C在更加的底层,而C++更加接近接口“这句话还像回事,你都不敢断定了都敢在书上写。误人子弟么。

”操作系统决定了C++的强大生命力,这一点并没有改变” 可笑了,一个要死的语言还强大的生命力。什么操作系统决定了c++强大的生命力?微软么?微软自己把vc++整的越来越复杂,为什么,提高开发门槛。让更少的人去用它。
说这么多外乎想告诉作者,著书慎言,勿要误人子弟。可是作者这态度。呵呵,不说了。浪费的都是口水,有时间我还不如看会代码呢。

论坛徽章:
0
177 [报告]
发表于 2012-04-05 21:18 |只看该作者
第一,谈一下对这本书样章的一些看法,这本书可以作为C++入门级的基础教材,在内容上,本书把C++的各个方面都蜻蜓点水的做了一下介绍,不能算作深入研究,入门参考尚可;在示例上,偏重于Windows软件平台开发,对Linux、Unix等平台的支持不足,一般而言,作为标准C++介绍,应该独立于平台介绍示例,或者Win和Unix类主流平台都做相应的示例介绍,最好不要偏颇;在用词与史实考究上,本书希望可以进一步改进,一是外国人名,建议直接使用其英文名称,尽量不要翻译,以免直译误解,且各种版本翻译都可能会有出入,二是有些措辞希望可以进一步改进,如“2.1.3 C++程序=预编译指令+程序代码+注释”,从程序员角度来说,预编译指令难道不能算做程序代码么?C++程序是不是最好不要这样直白的划分?C++语言的每种语法成分都有其特定的语义与用法,希望作者可以进一步考量,想当年1984年图灵奖获得者Pascal之父Niklaus Wirth一句话“数据结构+算法=程序”,的确一语中的,切中要害。

第二,谈一下讨论的几个问题。
1. 为什么现在的C++教科书都那么枯燥无味?  
国内外写C++教科书的高手不乏其人,有的作品读后觉得作者的水平可谓高山仰止,大有自己在该领域内不可望大师其项背之感,大家可以在Google中输入C++关键字,流芳百世的作品亦可找到好几部,不想赘述。至于枯燥无味之说,我想原因有二:一是在于读者的实践积累与领悟能力,二是在于读者本身求知的兴趣,简言之,语言是用来用的,是给想用的人用的。

2. C++中的类这个概念很抽象,请各位说说自己是如何理解运用这个概念的?
抽象在程序设计语言中算是一门基本功,需要长期的实践和领悟,建议大家多读面向对象的资料,从OO思想到RUP等软件开发方法,最好以实践为基础。粗略的讲一点个人体会,要抽象和运用类的概念,一般采用用例驱动的方法,逐渐界定出对象的边界,进而不断充实和完善类的成员变量与方法。

3. 听工作过的哥们说STL是C++中很重要的一部分,可是那本《STL源码分析》我看也看不懂,我该怎么办啊?
《STL源码分析》这本书可以作为STL的进阶作品,作者侯捷先生对STL的领悟水平已经到达了一种随心驾驭的境界,才会创作出如此优秀的作品,对于它我谈一点自己的认识,STL是彻底掌握C++特性不可回避的难点,首先要学会用STL,只有学会用STL,才会明白各种容器与算法的用途,才会有进一步探寻它为什么如此设计的功力,其次才去学习它内部的机制,因为作为优秀的C++机制,STL的规范性和安全性都是大家公认的,学习优秀的代码是成为顶级程序员不可或缺和日常的功课。至于看不懂,就只能一步一步脚踏实地的去领悟、学习,在实践中体会,要吃得苦中苦,这种进阶学习都是有一个痛苦的过程。

本人水平有限,希望高手拍砖切磋。

论坛徽章:
0
178 [报告]
发表于 2012-04-05 21:42 |只看该作者

M

本帖最后由 三月廿七 于 2012-04-05 22:01 编辑

回复 175# sonicling

确实是这样做的,基本上跟ActiveX 没有关系,所有的功能都是封装在 dll,
那个dll 不可能是用 ActiveX写的,要不然就会绑死在 IE上,

API 是一套c的接口,跟c++没有任何关系,跟c++有关系的是 MFC
MFC 是c++的耻辱

我有必要跟你解释下 c 和 c++ 的区别吗?
以及 API 和 MFC 的区别?

c++ 也不只运行在 windows上啊, Linux/Unix是c++写的吗?

论坛徽章:
0
179 [报告]
发表于 2012-04-05 22:13 |只看该作者
回复 178# lsnl8480


    OK,这一点我错了,我轻信BS了。一般人都认为NT内核是大部分的C和小部分的C++组合而成的。MSDN上的说法也类似。仅这一点而已。

你说你证明了office大部分是vb.net写的?我是懒得说。且不提VBA和VB.NET是两码事,就跟JS和Java一样。VB.NET 02年才出来。而在此之前Office是用什么写的?短短这几年能把以前代码全部抛弃重写?更何况VB.NET成熟也是近几年的事情。你随便在Office目录下拖一个dll到DependencyWalker里面看看,有几个是依赖于mscoree.dll的?基本上都是依赖于MFCxxx.dll或者MSVCRT.dll,这是他用C++的最直接证明。那些纯用MSCVRT的dll也有可能是C写的,但也不能排除是C++写的。使用了MFCXXX的一定是C++写的。

COM和ActiveX的框架代码都摆在那里,即便不完整,但使用的啥语言一目了然。更别提MFC、ATL是ActiveX库的主力了。

至于C++生命力如何,我说了不算。

论坛徽章:
0
180 [报告]
发表于 2012-04-05 22:30 |只看该作者
回复 180# 三月廿七


    你把问题扩大化了。我没争论这么多。我只想说:IE插件是用ActiveX做的,而ActiveX的绝大部分实现都是用的C++,仅此而已。不要扩展到chrome、firefox、甚至linux。

我只是用BS的观点来支持一下作者,不要炮轰我。炮轰我也没用,改变我的看法解决不了任何问题,去BS的主页砸场子才能扭转这个所谓的错误。



PS:广泛使用的操作系统基本都很少用C++,不代表C++不适合开发操作系统。很多实验室的新操作系统都是用C++写的,比如号称与Windows兼容的ReactOS、和大多数Capability-based OS等等。选择C++作为语言并非是赶时髦,特别是Capability-based OS,里面强调的就是对象,也有用C实现的,很少。

另外C++横行的领域在图形界面上,这一领域看似正在被Web、XML(包括相关的那些文档格式)、脚本等蚕食,但是这些新兴技术大多还是以C++为基础构建,所以C++在这一领域的优势地位并没有根本性的改变。

最后就是一些Cers好像沾上C++就很丢脸,就很抗拒,就很激动。C和C++本来就是一家,同属一个体系,绝大多数特性都是互通的。非要同室操戈,争个你死我活。“本事同根生,相煎何太急”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP