Sim*_*ons 4 c# c++ architecture windows programming-languages
或者我应该问一下从C++开始是多么有用和有益
这似乎是相关的,但它对我来说有一些意义,可能很少有像我这样的人.
我只想知道,当你是.NET程序员时,学习C++,COM和ATL有多重要?
我喜欢用.NET和C#编程.Visual Studio只是拥有它自己的智慧魅力,颜色编码和其他漂亮的功能,这让我们沉迷于它.
我在想,几乎我们可以用C#构建任何东西,但它仍然适用于大多数,但它有时会滞后:
当我尝试创建Shell扩展时,强烈建议使用非托管代码而不是任何托管代码.还有一些其他东西,如COM,ATL,它们最好用C++而不是C#编码.我在IT行业工作了4年,很想成为解决方案架构师.
因此,如果我正在使用与.NET UI集成的C++进行当前的COM项目,那么需要所有的输入知道,在未来的冒险中它有多重要/有用.
在医疗保健,银行和电信等常见领域是否有任何C++和.NET实现.
试图"与.NET UI集成"的问题(至少对于您提到的特定情况,例如shell扩展)是您真的不能.在托管代码中编写shell扩展不是一个好主意的原因是给定的进程只能在任何给定时间加载一个版本的CLR.如果两个shell扩展依赖于不同版本的CLR,并且它们都尝试同时加载,则它将失败.您无法在shell扩展的上下文中以任何形式或形式加载CLR,并且是一个表现良好的shell扩展.
我的建议是在你真正有理由学习它之前不要理会C++(尽管C++是我最喜欢的语言).但是当你学习C++时,请把你的.NET行李留在门口.有很多东西(例如过度使用强制转换,不断使用new
等)是惯用的C#,在C++中是完全错误的.如果你不试图在CLR方面理解C++概念,那将会更加快乐 - 仅仅因为C++不能在那里运行.您可以使用您可能已经学习过的一些C#设计模式,但是底层语言和机器的运行方式在两种语言之间完全不同.
对于新的C或C++程序员来说,最令人困惑的区别可能是未定义行为的概念.C和C++标准是用这样一种方式编写的,不依赖于特定的机器.与此形成鲜明对比的像Java或.NET,其中所述语言实际上是在一个虚拟机来定义的体系结构(并因此是极其依赖于VM).这导致标准字面上没有说明程序的正确输出应该是什么的地方; 而是说"然而底层机器通常会这样做".如果你曾经处理浮点数学,你可能会注意到这一点.虽然C#对浮点数的计算和舍入方式和位置有严格而具体的规则,但C和C++没有这样的限定条件.
一旦理解了C++,就可以继续学习COM和ATL.COM基本上设计成使一个C++等可访问的语言类结构(COM ABI),机器(32位和在同一系统上64个处理之间编组等)和位置(DCOM提供RPC设备)独立的方式.如果你不明白的C++对象模型,那么你将有一个非常困难的时期与COM对象模型,因为两者极其相似.ATL是一组围绕COM基础知识的C++类模板,它们只为您处理一些样板文件.
归档时间: |
|
查看次数: |
1177 次 |
最近记录: |