[赞成]不同语言适应不同场景,就是个工具,适合的才是最好的。
[赞成]感谢。
可惜我早就脱离了码农行业,下半辈子大量写代码的概率微乎其微了。[捂脸]
现在只是教孩子写代码,估计过个两三年,连孩子也教不了了。水平落伍太多了。[大笑]
c#里面没有类的多继承,所有类都是从object类单继承下来的。
不过c#里面的类可以多继承接口,执行接口附加的特性。这也更符合面相对象方法解决问题的思维方式。
怎么说呢,类似c#和java一类的语言,其实是属于工程类语言。
从工程的角度来说,明确性,其实是一个优点,可以有效降低复杂度。
毕竟干工程的,不是搞研究的,讲究的是多快好省。
所以c#语言里面,增加了很多看似比较啰嗦的语法,但是却增加了明确性。
c++很多语法都非常简洁灵活,但是对于工程来说,这反而是缺点。因为工程人员之间理解难度增加,更容易出问题。
~~~~
c++的模板,在c#里面就是泛型。
只不过在c#里面增加了更多的约束。
比如两个泛型参数相加,这在c#里面是不允许的。
因为泛型类提供给其它人调用之前,你不知道参数到底是什么类。
从明确性的角度来说,相加是无意义的。
但是在c++里面就非常灵活,也没多少约束,顶多调用时抛出异常。
如果从工程角度,调用方是很难理解为什么会出这种问题。
c#就是强约束,必须是哪类类型,甚至是符合某些条件的类型,才可以进行调用。在工程上是非常方便的。
~~~~
我没有涉及到过图灵机相关的问题,这方面确实回答不出来。[赞成][捂脸]
c#的unsafe里可以使用指针,可以做运算的指针。
c++泛型和别的语言泛型区别很大,是真正的模板,别的语言通常利用装箱拆箱机制搞的,如java(c#不熟,我估摸也是如此,说错勿怪)。因此c++泛型我可以做到零开销的多态。c#不了解,也许在泛型上不输给c++[大笑]
其实要说多数应用场景,确实任何语言都可以胜任,但我还是更喜欢c++一点,因为:
1、优秀的性能,良好的源码级跨平台支持。我们有个项目是同一套核心c++代码服务端支持windows,linux,客户端支持windows,android,ios。
2、赋予程序员最贴近硬件和系统的控制力。例如内嵌汇编、随心所欲且精确地控制内存。
3、几乎完美兼容C语言,太喜欢了。调用操作系统API和海量开源C语言库轻松简单。当然别的语言也能调,但是往往要把接口申明一大堆,如果作者没有绑定到该语言那自己搞的话绝对是苦差事[大笑]
以上纯属个人偏见的看法,没有贬低同行的意思。实际工作中语言跟着项目走,我司手游客户端基本70%是c#开发[大笑]