消息关闭
    暂无新消息!
小弟用C#也有几年了,做的C/S多,一直想学多门语言,看好C/C++,所以也做了一些对比

C#:
感觉C#太高级了,底层接触得太少,像之前用C#想写个高性能的socket服务端,中间就发现很多问题,后来都一一解决了,网上都搜索不到答案,都是教你这个类怎么用怎么用的,也从来没讲过原理,幸亏群里的C/C++大神指点的底层知识原理,后来根据底层知识才一步步解开难题。打个比方,就说TCP长连接需要检测心跳,根据网上的答案和论坛上很多人的说法就是发包给对方,所以造成了很多C#的程序员,直接就在应用上编写数据发包给对方,后来我才发现原来socket本身就有这个心跳机制,并不需要我们构造心跳数据,只是默认的心跳间隔时间很长,但只要设置下相关的选项就可以了。再打个比方,像多线程,有的人以为开得多就快点,所以有的C#程序员一开就是几十上百条几百条,其实cpu切换线程是需要时间的,有时线程多还不如少量的线程快。哎,终究到底,都是不懂底层知识才掉进了坑。

C++:
小弟是想着用C#配合C++,C++做底层高性能核心dll,C#做界面和业务逻辑,看好C或C++,貌似C什么都要自己干,就连字符串类型也没有,还要char[] *p这样,当然我只是简单了解了下,而C++给我的印象是使用的人比C要多,而且大多数牛B的软件都出自C++多点,而且C++又有C的底层功能,还有面向对象这些,所以小弟终于决定了学C++。

我知道学习的过程是枯燥漫长的,很多学生学了很多时间也搞不出个程序来,不知道窗口程序是怎么弄出来的。不知道学的东西有什么用,用在什么地方,这是原因之一,其二,有的老师教C++是偏向linux方发,但学生并不知道,学生只喜欢界面程序,因为最起码这让学生对编程有个轮廓上的认识才好继续学习下去。所以我学习一向都是跳着学,学自己喜欢的,学自己用到的、有需求的。

C++给我的印象就是较底层,很多东西都要自己去实现,C#相反,直接调用类库就可以了,很多都是现成的类和函数。
但我在百度上搜索:C++ socket服务端,C++http实现,C++高性能XXX,等等网络技术关键词,点击进去,发现全部都是调用某某库、某某框架,什么ace、libcurl、Asio等等,都是调用别人的类库,那和C#调用.net的类库有啥区别?为啥不是自己写的?其实对于我来说,如果自己能实现高性能的,就绝不会使用别人的库,因为有安全隐患有坑也不知道,最可怕的是到了项目被应用开来了,那时才出现问题。之前用sqlite、mongod、hp-socket,深有感触。

既然C++都调用别人的库,那和C#调用.net的类库有啥区别?如果是这样的话还不如C#爽啊。。
一直以为C++很多都要自己实现,其实自己实现,实现的是什么?

小弟对高性能网络编程有着浓厚的兴趣,不知道C++要学习哪方面的知识?

4个回答

︿ 0
C#不是一样使用很多.net framework的功能库?C#语言本身做不了什么事情的;不同的是库的提供形式有区别
︿ 0
就是因为c++什么都要自己干,经常是不现实的,如果有已经造好的开源轮子,又何必自己去造,如果大家都在用某开源库,说明它已经成熟,经过了千锤百炼。