C#经验能否很好地转换为C ++?[关闭]


13

我在学校的编程课是C ++,但是最近几年我最终从事C#工作。如果某个职位要求说1或2年C ++经验,那么我在C#方面的经验值得考虑吗?我担任这样的职位有多有效?那么,我是否需要以入门级C ++程序员的身份开始学习以获得必要的经验?


4
最难的部分将是学习C ++的习语和“正确的”做事方式。在C#中,诸如内存管理和边界检查之类的内容都嵌入到了语言和框架中。在C ++中,还有很多方法可以使自己陷入困境。
罗伯特·哈维

1
@RobertHarvey:仅当您从未听说过智能指针时。或容器。
DeadMG

11
@DeadMG:我不知道你的意思。即使您听说过它们,您仍然必须学习它们。
罗伯特·哈维

2
比起有效的C#系列,Effective C ++系列更令人振奋。
工作

@Robert:好吧,如果您要做容器和智能指针,那么您就不必管理一点内存。学习他们是C ++ 101
DeadMG

Answers:


13

这里的问题是C ++和C#从根本上来说是极为不同的语言,它们对许多问题使用不同的方法。将它们作为“一种OO语言”集成起来很容易,但是简单的事实是,许多C#习惯用法在C ++中被认为是非常糟糕的代码(反之亦然)。

如果您真正了解这些差异以及C ++习惯用法的样子,那么我认为没有理由不应该这样做。


5

大约2年前,我在同一条船上。您的c#经验对于c ++作业可能不如c ++对ac#作业有价值。就是说,如果您知道c#的实际工作方式(很少有c#程序员实际上是这样做的),并且很好地学习了c ++,那么c ++就不会成为问题。问题是您已经习惯了某些设计模式,这对于c ++来说太高了。

例如,从漂亮的ADO.NET数据访问模型到使用cppcon进行mysql访问,System.Collections.Generic到使用stl,多继承,垃圾回收来清理析构函数中的内存等,所有这些是艰难的过渡。C ++并不是问题,学习库,设计模式以及如何使用它们是挑战。大多数招聘人员都没有意识到这一点。如果您可以进行基本设计并且可以使用c ++的实际常用功能,那么在面试中应该没问题。

但是,为工作做好准备是另一回事。不过,这是一个有趣的挑战,我希望一切顺利。


我看到的所有C ++工作都需要2-3年的C ++经验,但是我的工作是C#。这真的让我感到沮丧,我想做C ++!您对招聘人员的要求是正确的,他们让我失望了。如果没人让我尝试,我怎么能获得这种经验?我有信心,如果有人让我进门,我就能很快学到东西,我只是不知道该如何与他们取得联系。
MetaGuru 2011年

我目前从事的工作是C ++项目。那可能是您最好的选择。或者,您始终可以进入使用c ++的开源项目。
乔纳森·汉森

正如乔纳森所说,@ Ryan有很多方法可以获取C ++的经验。我来自Atleast,您必须证明自己有经验(而不是流行的说法;具有5年以上经验的1年)。这是双向的-没有太多“纸”经验的人也有机会证明自己。尝试之前,只需确保您真正了解C ++!
马克斯

3

我不能为每位雇主发言,但我个人认为编程是一种技能和语言特长。仍然有可能被雇用不是您的主要技能的另一项编程工作。

话虽这么说,我不太可能会雇用一个完全没有用我要雇用的语言经验的人。花几个周末学习,并做几个宠物项目来增强您的简历。即使是很小的孩子也能证明您有学习能力和敏锐能力。


3

您的情况与4年前完全一样。

我在学习期间做了一些C ++,但我讨厌它。当我有空的时候可以从事这个领域的工作,我做了很多网络开发工作。

当我搬家时,我申请了一份具有2年C ++经验的C ++工作。好吧,在面试之前,我刷新了C ++的记忆,当测试时间到了时,我设法摆脱了一些事情,但我不确定自己做得是否正确。

但是大多数采访都是关于解决问题和创造性解决方案的,而C ++只是次要因素。

因此,机会的确取决于雇主及其职位。

如果您正在通过一家招聘机构,您将“很可能”被告知您的个人资料不匹配。但是,有了真正的雇主,您的机会就会变多,因为他们真的知道他们需要什么。


1
只要确保您知道什么是虚拟析构函数,就可以使其通过电话屏幕。
凯文

2
正如其他人所说的那样,请确保您还记得C ++中内存管理的一些基本知识。这是根本的区别。否则涉及库和框架大多数(大型)公司都有自己的库和包装器,因此它们不希望您知道其实现。与C#相反,在C#中,大多数高级库都备份到.net框架中,并且要求是知道与该位置相关的一组库。
郊狼

那你找到工作了吗?我真的很想从事C ++工作,但是我缺乏文献记载的经验会关门,不知道如何建立它。
MetaGuru 2011年

是的...在那里工作了三年。这是一个很棒的经历...但是前几个月我不得不赶上C ++的特殊性。
郊狼

1

这取决于。如果您能回答一些有关指针之类的基本面试问题,那么您应该没问题。

如果可以列出C ++模板和.NET泛型之间的差异,这也将非常有益。

除此之外,在进行过程中赶上其余部分非常容易。


1

是。它可能不像C ++经验那样重要,但是很好。

优秀的雇主将对您的想法感兴趣,而不是对您使用某种特定语言已有多少年的兴趣。

入门级C ++职位很好:您可以快速学习,并且做得很好。一个好的公司会给您很多成长的机会。如果没有,您可以去其他地方,并具有C#和C ++的经验。


0

这确实取决于您要申请的业务的性质。如果他们正在寻找具有良好的基于​​OO的编程和体系结构技能的人,那么C#可能和接下来的事情一样好。

如果他们以软件的速度/响应能力为荣,那么您将需要了解您的算法,因为这比微优化更重要-哈希表与线性查找等。C#在这里仍然很重要,但是您需要展示对性能特征的理解-例如,并不是每个人都了解ngen.exe。

如果它们位于嵌入式/移动和/或非垃圾收集环境中,则您确实需要了解如何有效管理内存。@DeadMG指出,智能指针在这里很关键,但了解内存分配配置文件也很关键。游戏程序员经常预先分配大量对象并回收它们,以便预先了解内存需求并减少每帧的未知数。这也是在iOS中滚动TableViews中使用的技术。

如果有任何集成工作,就语言之间的数据编组(如P / Invoke)而言,您可能需要C级专业知识,而且需要字节级的理解如何使用这些数据结构的知识,这在实践中并不常见。以我的经验使用C#。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.