Whispery 原创,转载请注明作者和博文地址。

在讨论前

讨论前,需要明确本文中“计算机科学”和“编程”对应的事物——通常这两个概念是较为抽象的,人与人之间可能会存在相当的理解差别。

本文中的计算机科学,指代在编程中偏向于理论的部分,也就是计算机相关专业里的那些理论知识,例如考研的408四大件(算法与数据结构、操作系统等等)。

而编程则对应了做项目敲代码,例如各种框架的掌握,各种编程语言的运用,数据库的使用,做项目所需要了解和掌握的东西。

Programming or CS ?

在明确概念后,我们可以开始讨论了。

我从参考资料(见下)中获得了一些不错的答案,我会将答案和我的理解融合在一起给出我认为的答案。

结论简单说,就是理论(CS)需要实践(Programming),实践需要理论,两者少其一个都无法成为优秀的程序员。

如果需要实际一点的最终答案,答案就是这两者是相辅相成的——没有CS知识不影响你成为一名程序员(Programmer),但是没有CS知识你不能称为一名好的程序员;相反地,光有CS知识的人无法成为一名程序员,而有CS知识且保持编程的人可以是一名好的程序员。

如果你的目的是进行开发,例如较为上层的开发,或许你不是那么需要理论也可以进行开发,你可以毫无顾虑的写网页,使用各种轮子……但是直到你遇见问题,并让你困惑难以解决的时候,你的CS知识(如果有的话)会很好的帮助你度过难关。

CS知识会帮助我们了解那些在编程语言、框架表面背后的事情是如何运作的,OOP、算法、操作系统……这些知识会帮助我们快速寻找问题背后的本质,以便我们解决问题。

Programming and CS .

在参考资料里,我看到了很多很棒的编程哲学,让我大受启发。(尤其是Quora社区的答案)

在技术飞速进步的当下,盲目着追逐趋势的我们会一步步疲倦,没有对CS的理解,我们只会疲倦地追逐各种新出现地技术,跟随着环境而变化——但是如果我们有一些知识呢?我们可以尝试去理解编程范式地转化(就像当初从机器语言走向面向对象一样),知道新出现的事物本质上和之前有什么不同,能够找到谁才是未来,便可以先一步走在环境的前面。

而且,作为一名程序员,工作应该是什么?敲代码吗?不,并不是,而是理解人们的问题并找到解决方案。如果认为工作是敲代码——始终以敲代码的方式解决问题,那么你做的结果很可能是将已经造过的轮子重新造了一遍。

参考资料

  1. FreeCodeCamp 社区. What should I learn first CS or Coding?
  2. Quora 社区. How important is it to learn computer science first before programming?