游园惊夢 的讨论

发布于: 雪球回复:12喜欢:0
有推荐的学习资料吗

热门回复

2022-08-22 11:10

@-flymonkey-

学了c#和c/c++,其中c#学了差不多一个月。

c#学的时间比较长,只涉及到语言,不涉及应用框架。

比如winform,wpf,asp.net之类的框架都没有学,还有几个暂时用不到的部分没有学。

比如socket网络编程,需要将来她学过计算机网络以后,才能教她。
比如lamda没有教,因为学会这东西,很可能就不愿意学基础算法了。将来她学数据库以后再教。

学c#只是买了本参考书,主要是我给她讲,我自己编例子。

学c#的目的,首先是因为c#是门纯面相对象语言,让她习惯面相对象的思维方式,可以用面相对象的方法组织程序逻辑。
其次是c#语言差不多是最优雅的一种编程语言了,让她体会一下程序语言之美,知道语言优美的天花板在哪里,从而形成良好的编码习惯。
再次就是将来要学unity3d,需要有c#语言基础。
~~~~
后面学了c和c++,c语言学全了,c++挑着学了一部分,短期内主要是为了编程竞赛。将来再搞本c++精华这类的大厚书,让她慢慢自己学吧。

跟的是慕课网,北京大学,郭炜老师的课,那是一个系列课,系列一是c语言,系列三是c++。

这个老师讲的挺好的,有网上练习题,还有课本练习题。

因为c#语言讲的比较深入,所以c和c++学起来也比较容易,只是使用习惯的不同,库函数不同。

刚开始学c的时候,由于语言风格的不同,适应了两天,后面学c++的时候就简单多了。

除了指针以外,c++里面有的功能,c#语言里面基本上全有,并没有什么不同,而且c#语言实现的更优雅。

在学习的过程中,我给她找了一些简单算法题,作为日常练习。

学c和c++的时候,学习语言花费的时间很少,主要时间就是做题了。

这东西本来就是熟能生巧,原理搞清楚了,多练就行了。

2022-08-22 21:55

[赞成]不同语言适应不同场景,就是个工具,适合的才是最好的。

2022-08-22 11:15

谢谢解答

2022-08-23 15:39

大哥现在在做啥行业呀

2022-08-23 10:37

[赞成]感谢。

可惜我早就脱离了码农行业,下半辈子大量写代码的概率微乎其微了。[捂脸]

现在只是教孩子写代码,估计过个两三年,连孩子也教不了了。水平落伍太多了。[大笑]

2022-08-22 21:51

c#里面没有类的多继承,所有类都是从object类单继承下来的。
不过c#里面的类可以多继承接口,执行接口附加的特性。这也更符合面相对象方法解决问题的思维方式。

怎么说呢,类似c#和java一类的语言,其实是属于工程类语言。

从工程的角度来说,明确性,其实是一个优点,可以有效降低复杂度。

毕竟干工程的,不是搞研究的,讲究的是多快好省。

所以c#语言里面,增加了很多看似比较啰嗦的语法,但是却增加了明确性。

c++很多语法都非常简洁灵活,但是对于工程来说,这反而是缺点。因为工程人员之间理解难度增加,更容易出问题。
~~~~
c++的模板,在c#里面就是泛型。

只不过在c#里面增加了更多的约束。

比如两个泛型参数相加,这在c#里面是不允许的。
因为泛型类提供给其它人调用之前,你不知道参数到底是什么类。
从明确性的角度来说,相加是无意义的。

但是在c++里面就非常灵活,也没多少约束,顶多调用时抛出异常。

如果从工程角度,调用方是很难理解为什么会出这种问题。

c#就是强约束,必须是哪类类型,甚至是符合某些条件的类型,才可以进行调用。在工程上是非常方便的。
~~~~
我没有涉及到过图灵机相关的问题,这方面确实回答不出来。[赞成][捂脸]

2022-08-22 20:34

学习了,我对c#认知还停留在做手游上

2022-08-22 20:31

c#的unsafe里可以使用指针,可以做运算的指针。

c++泛型和别的语言泛型区别很大,是真正的模板,别的语言通常利用装箱拆箱机制搞的,如java(c#不熟,我估摸也是如此,说错勿怪)。因此c++泛型我可以做到零开销的多态。c#不了解,也许在泛型上不输给c++[大笑]
其实要说多数应用场景,确实任何语言都可以胜任,但我还是更喜欢c++一点,因为:
1、优秀的性能,良好的源码级跨平台支持。我们有个项目是同一套核心c++代码服务端支持windows,linux,客户端支持windows,android,ios。
2、赋予程序员最贴近硬件和系统的控制力。例如内嵌汇编、随心所欲且精确地控制内存。
3、几乎完美兼容C语言,太喜欢了。调用操作系统API和海量开源C语言库轻松简单。当然别的语言也能调,但是往往要把接口申明一大堆,如果作者没有绑定到该语言那自己搞的话绝对是苦差事[大笑]

以上纯属个人偏见的看法,没有贬低同行的意思。实际工作中语言跟着项目走,我司手游客户端基本70%是c#开发[大笑]

2022-08-22 13:17

c#在工业自动化行业也应用广泛,也是在近几年开始在工业自动化应用领域流行起来的

2022-08-22 12:55

c#里面也有指针了? 我离开码农行业差不多10年了,可能出新的东西不知道。

不过我简单翻阅了两本新出的c#语言书籍,没见有指针方面的内容啊。

如果你说的是ref之类语法,那不能算啊,和指针差的太远。
~~~~
c++里面泛型,运算符重载之类的如果算奇淫巧技的话。

在c#里面完全就是正规军,微软的框架里面随处可见运算符重载。c#里面如果没了泛型,简直不可想象,百分之99.99的程序里面,都会使用泛型。

除了指针,我没发现c++里面有什么特殊的功能,是c#没有的。