我学完了C++和Java,现在正在寻找一门新语言学习。我本来想试试C#,但是很多人说它因为是高级语言而非常慢。那么为什么会有人使用C#呢?C++不是更快吗?它是不是可以使开发更容易,但最终产品速度较慢呢?
此外,C#还能用于哪些方面呢?你可以在Windows上与许多.NET内容以及ASP.NET一起使用它,但是还有哪些其他情况下会使用C#呢?使用它会有很多工作机会吗?
我学完了C++和Java,现在正在寻找一门新语言学习。我本来想试试C#,但是很多人说它因为是高级语言而非常慢。那么为什么会有人使用C#呢?C++不是更快吗?它是不是可以使开发更容易,但最终产品速度较慢呢?
此外,C#还能用于哪些方面呢?你可以在Windows上与许多.NET内容以及ASP.NET一起使用它,但是还有哪些其他情况下会使用C#呢?使用它会有很多工作机会吗?
这个“一群人”到底是谁?他们在与什么进行比较?
对于绝大多数情况来说,C++并不比C#更快。当然,在某些情况下它具有各种好处,特别是当您想要更确定的内存处理时,但在我的经验中,大多数应用程序的瓶颈并不在C++可以帮助的地方。正如spoulson所说,许多性能不在于确切实现而在于设计 - 在这里,能够轻松尝试不同的设计是有益的。
为什么使用C#当它比C++略慢一点?因为通常认为(即有些人不同意 :))它更容易开发而不会自己给自己挖坑。
至于C#可用于什么...你想用它做什么?除非你想开发驱动程序和内核,否则它可能很适合你。(即使是操作系统开发也有一些人使用C#...)
工作机会?大把。
缺点?嗯,.NET本身只能在Microsoft平台上使用。虽然有Mono,但它的可移植性不如Java(毫无疑问,对于同一群人来说,Java也是一种“慢”的语言)。
用汇编语言编写的代码速度非常快。为什么不直接使用汇编语言编写呢?
不要听信一切。对于我所有的项目来说,C#已经足够快了。通常,性能更多是设计因素而不是原始平台性能的影响。
我的上一家公司由5位每人拥有15年以上经验的C++老手创立。他们花了一个多月时间构建一个特定的Windows服务。其中一位发现并尝试使用C#,在一周内他的进展比所有人在整个月里都要多。不久之后,他们全都转向使用C#。
如果C#可能执行较慢,为什么选择它:你会为那种快速开发的程度付出什么代价呢?
我必须说,你跟他们交流的人根本不知道自己在说什么。简单明了。
许多企业级应用程序都是基于C#和其他.Net语言构建的。它们本质上并没有任何缓慢的问题。是的,它们 tend 于拥有较慢的启动时间,但这基本上就是它们的全部。
我注意到你在语言列表中提到了Java。如果你对Java的速度感到满意,那么使用C#也不会出现任何问题。总的来说,C#在许多不同类型的基准测试中至少和Java一样表现得很好。
ASP.Net不是一个坏的平台,我通常发现对象/控件堆栈是复杂交互的缺点之一。我认为ASP.Net MVC更适合更可扩展的基于Web的应用程序。但同样,它比我过去使用的许多其他系统都要好。
在服务层甚至GUI开发方面,它非常好用。我在Web应用程序、服务/通信/业务层方面拥有更多的经验,而对于桌面GUI应用程序则不能做出太多评论。我感觉很多GUI开发更多地是关于IDE/工具包,而不是特定的语言。
至于速度慢,你特别列出了Java,在大多数情况下,C#/.Net与Java一样快或更快。在我看来,使用C#(Visual Studio)进行开发比Java(Eclipse)更加顺畅。对于基于Web的应用程序,我喜欢ASP.Net MVC(甚至是ASP.Net)胜过Swing。这只是我的个人观点。
C#并不总是慢的 - 在许多情况下,它可以像你列出的任何语言一样表现良好。通常算法比语言选择更影响速度。
然而,C#非常表达力强,拥有一个极好的基类库可供使用,并且编译速度非常快。这意味着它很容易使用,相较于许多其他语言,尤其是C++,可以让你更加高效地工作。例如,我刚刚完成了一个小项目,在C++中,我本来预计要用1个人周的时间完成,而我们在C#中不到一天就完成了,主要是因为基类库简化了许多任务。
使用C#而不是C++的一个很大的原因是......看看所有那些C++存在的缓冲区溢出问题,人们通过在你的字符串或内存中注入可执行代码来接管你的机器,而垃圾收集器非常方便,我个人认为。
即使C++运行速度更快,在今天的计算机上差异也不大。这就是为什么在移动设备上,其中CPU和内存相对有限,C/C++仍然被广泛使用的原因。
但是考虑开发时间。如果使用C++需要2个月,而使用C#只需要1个月,你会选择哪一个呢?当需要进行大量修改/重构时,高级语言可以显著地提高效率和便捷性!