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



为什么知乎用户 vczh 不建议初学编程的人把 C 作为入门语言? 第1页

  

user avatar   lu-luce 网友的相关建议: 
      
世上本没有路,走的人多了也便成了路。

但是偏偏有人在走完了前人开创的路以后,非要把路刨了,让后人无路可走。或者不建议后人走自己成功的路。但是,他的这种又坏又蠢的想法是不会实现的。毕竟人人都见到他从这条路走过。

vczh自己就是靠大学的时候,学习C语言,自己搞编译器。之后成功登陆美国的。现在他不推荐别人走这条路。真是令人喷饭。

正相反,我倒是建议初学编程的人把 C 作为入门语言?毕竟你连个指针都搞不明白。后面更加复杂的计算机概念,就更加吃力了。作为大部分软件的编程语言,C语言的每一个语法特征都是需要在初学阶段扎扎实实搞清楚的。


user avatar   ze.ran 网友的相关建议: 
      

个人看法,如果不打算做专业程序员,不用从c学,如果打算干这行,即使工作上没用到,或早或晚,都应当学学c。学习c的过程中,会对内存分配有更敏感的认识,即使用别的语言,这也是很重要的。


user avatar   newbie-tu-xing-cheng-xu-yuan 网友的相关建议: 
      

编程语言是有两面的。

一面是抽象的一面,给人(包括自己和别人)看和理解的。

一面是实现的一面,语言如何跑在机器上。

而我觉得抽象的角度至少和实现的角度一样重要,而且很可能更重要

你不会半点硬件知识也可以写写py写写js。你硬件知识比较菜可能写出来的C也就比别人慢个20%。但你不会抽象的能力,写什么语言都一样,只要代码量一大就要崩,糊出来也丑的要死。

所以我认为第一门编程语言最重要的教学抽象的能力、写出可读代码、组织代码的能力

从这个角度看,C合适吗?C本身类型系统菜、表达能力弱,C有很多++之类的糟糕功能。而C最大的特点,和硬件之间的鸿沟小,对于第一门编程语言来说就是纯粹的噪音


那第一门编程语言该是什么样的?

  • 首先,“以后能不能拿开干活”在我看来不能成为一个理由,除非你打算只学这一门语言就不学了。因为作为第一门编程语言建立起正确的观念和思考方式才是最重要的。
  • 不符合直觉的语义越少越好。哪怕这个设计在现实中很有用处,如果跟初学者没发简单地解释这个用处那就没有意义。例子:++,python的弱智作用域,js的隐式类型转换
  • 最好有类型。哪怕对于动态类型语言,写的时候脑子里有虚构的类型在也是极好的。建立这种思考方式是很重要的
  • 学语言的时候要同步地培养审美。要了解什么是代码复用、模块化、接口实现分离、避免不合法状态

理论上满足上述条件的都很合适,现实是这样的语言很少。我姑且先摆一个OCaml在这里。去掉type那条条件的话,racket/scheme也可以。


====== upd:基于和网友气氛融洽的对线,写了篇东西说明“为什么语义可以脱离任何硬件与实现存在”




  

相关话题

  作为一名程序员,最大的成就感来自哪里? 
  编写基于机器学习的程序,有哪些编写和调试的经验和窍门? 
  为什么国内创造不出很棒的编程语言? 
  既然有指针了,为什么c++还搞个引用出来? 
  软件工程界有其它与『操作系统内核』与『浏览器引擎』齐名的高难度项目吗? 
  《C专家编程》第六十页参数在传递时为什么会首先放到寄存器中? 
  以英语为母语的人写代码时是什么感觉? 
  编程大神打符号和数字的时候也是用标准指法吗? 
  如何向一个零基础的人,解释学习计算机编程的正确顺序和原因? 
  现在计算机大厂985本科是不是难进了? 

前一个讨论
听不懂英语,但是能复述怎么办?
下一个讨论
金书里的张三丰是怎么吹出来的?





© 2024-11-09 - tinynew.org. All Rights Reserved.
© 2024-11-09 - tinynew.org. 保留所有权利