编程,还是计算机科学?
Whispery 原创,转载请注明作者和博文地址。
在讨论前
讨论前,需要明确本文中“计算机科学”和“编程”对应的事物——通常这两个概念是较为抽象的,人与人之间可能会存在相当的理解差别。
本文中的计算机科学,指代在编程中偏向于理论的部分,也就是计算机相关专业里的那些理论知识,例如考研的408四大件(算法与数据结构、操作系统等等)。
而编程则对应了做项目敲代码,例如各种框架的掌握,各种编程语言的运用,数据库的使用,做项目所需要了解和掌握的东西。
Programming or CS ?
在明确概念后,我们可以开始讨论了。
我从参考资料(见下)中获得了一些不错的答案,我会将答案和我的理解融合在一起给出我认为的答案。
结论简单说,就是理论(CS)需要实践(Programming),实践需要理论,两者少其一个都无法成为优秀的程序员。
如果需要实际一点的最终答案,答案就是这两者是相辅相成的——没有CS知识不影响你成为一名程序员(Programmer),但是没有CS知识你不能称为一名好的程序员;相反地,光有CS知识的人无法成为一名程序员,而有CS知识且保持编程的人可以是一名好的程序员。
如果你的目的是进行开发,例如较为上层的开发,或许你不是那么需要理论也可以进行开发,你可以毫无顾虑的写网页,使用各种轮子……但是直到你遇见问题,并让你困惑难以解决的时候,你的CS知识(如果有的话)会很好的帮助你度过难关。
CS知识会帮助我们了解那些在编程语言、框架表面背后的事情是如何运作的,OOP、算法、操作系统……这些知识会帮助我们快速寻找问题背后的本质,以便我们解决问题。
Programming and CS .
在参考资料里,我看到了很多很棒的编程哲学,让我大受启发。(尤其是Quora社区的答案)
在技术飞速进步的当下,盲目着追逐趋势的我们会一步步疲倦,没有对CS的理解,我们只会疲倦地追逐各种新出现地技术,跟随着环境而变化——但是如果我们有一些知识呢?我们可以尝试去理解编程范式地转化(就像当初从机器语言走向面向对象一样),知道新出现的事物本质上和之前有什么不同,能够找到谁才是未来,便可以先一步走在环境的前面。
而且,作为一名程序员,工作应该是什么?敲代码吗?不,并不是,而是理解人们的问题并找到解决方案。如果认为工作是敲代码——始终以敲代码的方式解决问题,那么你做的结果很可能是将已经造过的轮子重新造了一遍。
参考资料
- FreeCodeCamp 社区. What should I learn first CS or Coding?
- Quora 社区. How important is it to learn computer science first before programming?