百科问答小站 logo
百科问答小站 font logo



为什么现在部分985高校还是给大一上C语言课? 第1页

  

user avatar   changwei1006 网友的相关建议: 
      

因为C语言是最靠近硬件的编译语言,C语言没有过多的语法糖(你可以勉强认为取数组成员这种方括号的写法是指针运算然后取值的语法糖,包括结构体取成员的点运算符),使得他在大部分情况下几乎可以直接和最原始的汇编指令一一对应,尤其是X86这种CISC指令集。

例如jxx系列指令可以直接和if语句对应,jnz等指令可以直接和while循环语句对应,jcxz等指令可以直接和for循环,call和ret指令可以直接和函数调用语句以及返回语句对应。汇编的内存寻址可以直接和C语言的指针引用一一对应。

如果要了解更多,推荐阅读《CSAPP》这本教材,他就是完全按照C语言和汇编的对应关系让你了解计算机的工作原理以及学习汇编语言。我也很推荐每个CS专业的人先看看这本书以及《编码》。毕竟这本书在国外名校也是已经被使用了多年的大学教材。如果你真的能够认真把这本书读完,你应该就可以认识到C语言在CS专业的重要性了。

而像Python,Java本身就有解释器,而Golang这种虽然是静态语言,但是他又自带了运行时环境(可以支持GC),这些跨平台兼容的运行时环境的存在,使得他就和硬件和操作系统隔离的太远了。如果你只学了Python,Java而不会C,那你在后续学习操作系统原理,计算机组成原理,单片机等课程会非常吃力。尤其是单片机这门课,单片机的内存只有几百K,连C++的STL都不一定能存下,更别说别的语言笨重的运行时了。

而且C语言的struct和union在处理数据结构上可控性很强,当你深入学习了计算机之后,你会发现计算机是一个抽象层级非常深的黑盒子,而程序员为了保证自己的代码能够理解和方便debug,对于代码的可控性要求也非常高,因此就有矛盾,为了掌握可控性,就必须让这个黑盒子变得不那么“黑”,方法就是必须掌握每个底层的具体实现,数据的位置大小和端序,而不是隔着一个黑色的runtime(golang)或者virtual machine(jvm,.net framework)或者interpreter(python)盒子来编程。

例如在计算机网络这门课会学习很多协议栈中的数据包,这些数据包的位置,大小,每个字段的端序(Endianness)都要非常精确,否则会不符合协议栈的规范,因此只有C,Golang这种系统级开发语言提供的struct才能够这样做,Java和Python的对象可能会为了优化和内存对齐,改变里面每个字段的位置以及大小,虽然也可以通过各种magic code实现,但是非常麻烦不优雅,而且可控性差)

所以你可以看出来C语言是为了你后续几门计算机专业课做铺垫,如果你不会的话后面的课学起来就和坐火箭一样非常吃力。

计算机科学相对软件工程这门专业又更多的是学计算机底层的工作原理。那就更需要了解计算机最原始的工作方式。如果你对底层不感兴趣,只是想学一门编程语言然后开始写crud搬砖工作,那么你更适合去培训机构。


user avatar   xiao-jiu-44-16 网友的相关建议: 
      

我说一句反常识的

因为c简单

大一学的c语言,最多也就解除20个函数,没有那么多语法糖,真正的所见即所得。

ab交换内容

c=a

a=b

b=c

只要你稍微用心一下就可以理解

(b,a)=(a,b)

你需要多理解一个原组的概念

很多人觉得指针难,但是对指针没有概念怎么理解计算机模型呢,之后的数据结构、操作系统、编译原理是不是不学了。

想要构建完善的编程思维,理解计算机模型。不用把精力过多的放在函数和语法糖上,还有比c更好的吗。

很多人喷谭浩强的c语言程序设计,我的书一点问题也没有,高校主要目的就不是让你学完之后可以用c做一个大型应用,只要你知道什么事if else while do 等等逻辑结构,能够用简单的预发结构完成复杂的需求(比如冒泡排序),就完成了教学目的。


user avatar   lu-luce 网友的相关建议: 
      

计算机的基础课:

编译原理实现的编译器是用C语言实现的。

计算机网络对应的协议栈是用C语言实现的。

操作系统是用C语言实现的。

我也没办法啊!


user avatar   zhai-sen-8 网友的相关建议: 
      

我感觉C++用于入门是最合适的。第一,C语言没有stl这些,一上手确实是很有难度的;第二,C++相比于py的好处在于会对计算机底层有更多的了解。当然,我觉得大一上C语言课也并无不妥。

说到C++,我觉得并不是大学一上来教C++不好,而是教授的方法不对。个人认为按照下面的顺序是对初学者最友好的:

基础语法→stl→template→class→指针

原因如下:

①这个顺序是真正的由易入难,前期学起来跟py没什么区别。

②顺带对数据结构有初步的认识。

③如果是非计算机系的,我觉得指针也基本用不到了(很多语言都没有指针了),stl和class足以解决大部分问题,况且指针似乎是公认的难,就放在最后了,课时不够就不教了。


user avatar   david-dong-20 网友的相关建议: 
      

单独的C语言课真的没有必要,内容太少了,根本讲不了一学期。

还不如合并进计算机体系结构一类的课程里。


user avatar   damon-dance-for-me 网友的相关建议: 
      

这两个游戏都有自己的问题。但严重程度完全不一样。

赛博朋克最大的问题是人力不够,没有人手把愿景在限期内做出来,导致后期狂砍。但从已有的成品来看,CDPR是完全有人才有能力把东西做出来的,只不过没时间做。光影效果,已有的垂直城市设计,以及主线和很多支线任务的演出都有毫不输巫师3的气质,尤其是日本城浮空平台那关,无论是游戏流程还是画面还是音乐,都把类似银翼杀手2047的那种气氛和感受做到了极致。有人说CDPR的人才都跑了,或者CDPR傲娇了开始放水,这并不客观。2077确实是个半成品,主机优化的问题尤其严重,但你关注已经完成的部分,用高配置PC玩,其质量并未令人失望,依然是巫师3的水准。

2077就像是一个优等生忘了做背后的几题的考卷,开天窗导致不及格,但已经做了的题目还是正确率极高的。

谈到E3的demo,单从画面上讲你很难说它缩水了。只不过CDPR没告诉你想要E3画面,就得上3080+光线追踪。。。

我猜想没有光追的话,游戏在大多数情况下也是可以达到光追的效果的,只不过人工工作量会很大,有些地方需要离线烘培,而有些地方需要人工设置虚拟光源。CDPR可能发现项目后期工作量太大搂不住了,就上了光追这个大杀器。。。


至于无人深空,现在口碑很好,但我要不客气地讲,这个游戏到了今天依然是垃圾,只配卖$19.95,打折的时候卖2.95的那种。

Hello工作室自始自终都没有把初始愿景实现的技术能力。

你可以看无人深空进入大气层的技术实现。先是一段飞船进入大气层摩擦发红的特效,然后可以看见地形通过一种非常粗糙、视距很近的情况下刷新出来,并且刷出来的地貌和太空中看到的地貌完全不同。所以从头到尾,hello工作室都没有类似精英危险和星际公民的无缝行星登陆技术。

无人深空更新了十几次,并没有触动这个游戏除了机械刷就没有任何深度的本质。这是一个极其无聊的游戏。但它刷了两年的DLC,玩家也就给他点面子,没功劳有苦劳。它每次更新我都会进游戏看看,但玩不了半小时就会放弃。一是实在无聊,二是它美术设计和渲染水平有限,色彩及其刺眼。比如在母船机库里,到处都是亮瞎狗眼的点状光源,但这些光源不会照亮周围的任何东西,看的时间长了有种不带护目镜看焊接的流泪效果。你说更新了那么久,这么简单的问题都不解决,有什么用呢。游戏中随处可见低级设计的痕迹,比如说有很多行星上有一种可以卖钱的球,这种球没有任何贴图,只有亮瞎眼的纯白色材质,在HDR效果下极其刺眼,但它又不是个光源,放在地上不会照亮周围任何东西。这种打开Blender就存盘的建模初手垃圾素材居然也能放在游戏里,真是活久见。

所以无人深空就像是一个学渣冒充学霸,把期望提得无限高,却每题都答错结果接近0分,被骂,然后花了漫长的时间在那里订正,一题一题的改,最后终于接近30分了,然后获得了大家的赞赏,全然忘记了它改了那么久依然是不及格。

无人深空的贴图我就不贴了,首发的时候真是纯垃圾,基本上是2008年魔兽世界首发的那个水准。现在也依然是垃圾,开个HDR看着眼睛都疼。


user avatar   zorrolang 网友的相关建议: 
      

这两个游戏都有自己的问题。但严重程度完全不一样。

赛博朋克最大的问题是人力不够,没有人手把愿景在限期内做出来,导致后期狂砍。但从已有的成品来看,CDPR是完全有人才有能力把东西做出来的,只不过没时间做。光影效果,已有的垂直城市设计,以及主线和很多支线任务的演出都有毫不输巫师3的气质,尤其是日本城浮空平台那关,无论是游戏流程还是画面还是音乐,都把类似银翼杀手2047的那种气氛和感受做到了极致。有人说CDPR的人才都跑了,或者CDPR傲娇了开始放水,这并不客观。2077确实是个半成品,主机优化的问题尤其严重,但你关注已经完成的部分,用高配置PC玩,其质量并未令人失望,依然是巫师3的水准。

2077就像是一个优等生忘了做背后的几题的考卷,开天窗导致不及格,但已经做了的题目还是正确率极高的。

谈到E3的demo,单从画面上讲你很难说它缩水了。只不过CDPR没告诉你想要E3画面,就得上3080+光线追踪。。。

我猜想没有光追的话,游戏在大多数情况下也是可以达到光追的效果的,只不过人工工作量会很大,有些地方需要离线烘培,而有些地方需要人工设置虚拟光源。CDPR可能发现项目后期工作量太大搂不住了,就上了光追这个大杀器。。。


至于无人深空,现在口碑很好,但我要不客气地讲,这个游戏到了今天依然是垃圾,只配卖$19.95,打折的时候卖2.95的那种。

Hello工作室自始自终都没有把初始愿景实现的技术能力。

你可以看无人深空进入大气层的技术实现。先是一段飞船进入大气层摩擦发红的特效,然后可以看见地形通过一种非常粗糙、视距很近的情况下刷新出来,并且刷出来的地貌和太空中看到的地貌完全不同。所以从头到尾,hello工作室都没有类似精英危险和星际公民的无缝行星登陆技术。

无人深空更新了十几次,并没有触动这个游戏除了机械刷就没有任何深度的本质。这是一个极其无聊的游戏。但它刷了两年的DLC,玩家也就给他点面子,没功劳有苦劳。它每次更新我都会进游戏看看,但玩不了半小时就会放弃。一是实在无聊,二是它美术设计和渲染水平有限,色彩及其刺眼。比如在母船机库里,到处都是亮瞎狗眼的点状光源,但这些光源不会照亮周围的任何东西,看的时间长了有种不带护目镜看焊接的流泪效果。你说更新了那么久,这么简单的问题都不解决,有什么用呢。游戏中随处可见低级设计的痕迹,比如说有很多行星上有一种可以卖钱的球,这种球没有任何贴图,只有亮瞎眼的纯白色材质,在HDR效果下极其刺眼,但它又不是个光源,放在地上不会照亮周围任何东西。这种打开Blender就存盘的建模初手垃圾素材居然也能放在游戏里,真是活久见。

所以无人深空就像是一个学渣冒充学霸,把期望提得无限高,却每题都答错结果接近0分,被骂,然后花了漫长的时间在那里订正,一题一题的改,最后终于接近30分了,然后获得了大家的赞赏,全然忘记了它改了那么久依然是不及格。

无人深空的贴图我就不贴了,首发的时候真是纯垃圾,基本上是2008年魔兽世界首发的那个水准。现在也依然是垃圾,开个HDR看着眼睛都疼。


user avatar   william-lim 网友的相关建议: 
      




  

相关话题

  如果加班是自愿的,你们会为了钱加班吗? 
  运算符+左右操作数地位相等吗? 
  如何通俗地理解「分布式系统」,它解决了哪些问题,有什么优缺点? 
  掌握很多门计算机编程语言会不会记串啊?记串了咋办? 
  程序员属于什么阶级?上升空间如何? 
  支撑你熬过最艰难的日子的一句话是什么? 
  网站如何升级成https的? 
  如果一定要在C++和JAVA中选择,是C++还是java? 
  程序员开发那种,遇到不给力的测试怎么办? 
  为什么很多编程语言采用花括号区分 block 而非缩进? 

前一个讨论
半个月可以写出一个电脑操作系统吗?
下一个讨论
在古代,如何去西藏?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利