15-110: Principles of Computing An introductory computer science course for students with little to no computing experience. Students will learn the core elements of programming in Python and will also receive a broad overview of big ideas in the field of computer science. The course begins with fundamentals of programming (data, variables, functions, conditionals, loops, and recursion) and the basics of computer organization (data representation and memory), then introduces major data structures (lists, dictionaries, trees, and graphs), the core concepts of efficiency (through runtime analysis and a case study of search algorithms), and how computing is scaled for practical use (concurrency and the internet). The course concludes with an overview of how computer science can be used as a tool to support other domains (data analysis, simulation, and machine learning) and how computer science influences and is influenced by the world (history, ethics, and modern events) 我这几天看了几个例子,但是因为隐私协议不能说。
先说说马工。我口中的马工,指的是互联网服务行业的编程人员。马工,并不是一个门槛很高的劳动密集型的工程专业。马工的高工资,是中美两国通过资本高强度投入,在互联网服务领域跑马圈地,抢占垄断地位的结果。本质上,是一个商业现象,有其背后政策和金融支持造成的。
马工这个行业存在了很久了,但是马工天下第一的热潮,实际上从2010之后才逐渐展开,是由华尔街的天量廉价资金维持的。
当前的现状是互联网服务的产业已经基本发展成熟。市场格局,也逐渐实现寡头垄断,基本上就是中美两国争霸。后面唯一的悬念,是中美谁占上风。在这个背景下,马工的热潮会慢慢衰退。其实,历史是在不停重复自己的路径。汽车行业从二十世纪初的起步到成熟到衰落,走了将近一百年。当年的底特律,充满了意气风发的年轻人和毫无顾忌的创新精神,一如现在的旧金山湾区。互联网服务是整个IT行业的一个发展阶段,而我们现在骄傲的马工们,是互联网服务业这个发展阶段的产物。
可惜,高强度的资本投入带来的是疯狂的发展速度,中美的竞争又进一步加强了这个趋势。于是,仅仅十年之后,这个行业就发展成熟了。
IT行业的发展,并不会停止,下一步虚拟现实,人工智能,自动化,甚至芯片制造都还有很多的领域会大发展,但是,在这些领域,我们现在意义上的互联网服务行业的马工,不再是主角了,主角是工程师,数学家,美工,创意等等,而且也不都是劳动密集型产业。
所以,互联网服务行业马工的未来,是很容易看到的。行业成熟,竞争强度下降,资金投入减少,市场容量不再增长,技术成熟,标准化自动化的推行。想要看到马工的未来,看看传统车厂的人员薪资配置就知道了。
编程有两头,一头连接的是硬件,一头连接的是应用。从事互联网服务行业的马工,更靠近的是应用端,虽然每个人与应用端的距离远近不相同。
学过计算理论人的都知道,最基本的编程语言,只需要变量赋值和循环(等价于递归)就足够了。图灵机本来就是结构非常简单的东西。剩下的东西,我们统统可以称之为语法糖(虽然语法糖不是这么定义的,这里是调侃)。编程语言本身,却一直都在发展,发展方向是越来越方便,越来越抽象,越来越容易学。未来,也许编程会变成可视化的SQL模块做后台,加上可视化的有限状态机做前台人机互动界面,也未可知。是的,我是在幻想编程变成了搭积木,呕不,搬砖的那种工作。其实,这又有什么奇怪的,几十年前,编程还是在纸带上数孔的工作。
未来充满了未知,谁也不知道将来的编程用什么语言,什么programming style,什么工具。如果不是立刻去用的话,作为知识的积累去教孩子编程,其实只要教会了循环和递归的概念,就足够了,这也就是一个下午的事情,好吧一个星期的事情。当然,真的要把递归的概念搞明白,是数理逻辑的研究对象,是数学,不需要懂编程。对于有兴趣的孩子,学好编程会带来极大的乐趣。如果是为了未来从事马工之旅,那么还是把未来的事情留给未来去做好了。
至于刷题,其本质是算法,系统,数据库等等具体领域的问题。是很有意思的领域,但是实际上与互联网服务行业马工的工作不太相关的。马工们刷题,是一种选拔聪明头脑手段,如果把这种选拔手段换成写用编程语言写八股文,也许一样能招到合格的优秀人才。
计算机自称科学,其实是工程。唯一的科学部分,是计算理论,那是纯数学。
算法是什么?真的说不清楚,似乎万物都是算法,可是似乎又只有排序,动态规划,数据结构那些主考官们口中问出来的才有资格称为算法。至于主考官们的选择,似乎也并不比成衣时尚界的潮流更容易理解。不论如何,算法是为了解决问题(我们不再定义什么叫问题了,在深层的定义需要数理知识了),而且是在现有硬件资源的基础上作出的折中选择,在现实中是一个不折不扣的工程问题。数学,逻辑,想象,努力等等都是解决问题的手段,但是最重要的,仍然是问题本身。所以,把算法教材当作有趣的智力练习,素材积累,启发工具都可以,但是真的要做算法开发,那是各个行业的人才做的事情,不是马工做的。
操作系统是个大杂烩,是真正意义上的杂家。软件,硬件在此交汇,历史与现实在此汇集。在这里,你会真正体会到,一门学科就是它的历史这句话。马工们最需要的,其实是操作系统,因为他们每一天都在这里游泳。我真的希望刷题更多集中于考操作系统,而不是算法。可惜,操作系统更像是文科生的东西,是大道,而不是奇技淫巧,怎么能够得到养猪人的垂青?是的,资本家们需要的是能被圈养的马工,而不是觉醒了的奴隶。
编译,就不说了,那是些底层的脏活累活,只需要几个拿得住寂寞的扫地僧做的事情。
计算机体系(architecture)是硬件方面的知识,和互联网服务的马工无关。可是,一个真正有志于搞清楚计算机的人,是不能够局限于优雅简洁的苹果外观的,那是电子用品消费者的级别。还是要打开盒子,搞清楚那些看灰尘的线路到底是干什么的。一个纯洁的马工,是应该能把从键盘敲击一下到显示屏显示出一个字符的整个软硬件过程全部在大脑中复现出来的。一个摆脱了低级趣味的马工,是会去思考并行算法在冯诺依曼机上的局限性,是会去研究单片机,GPU, FPGA的。
最后说一句,如果孩子喜欢,就去学习。如果是有志于培养未来的马工的,这些东西留给未来也可以。就像修路,盖房子,吃喝应酬,办公室政治等等一样,都是成人的游戏,留给未来就好了。
那是最初级的马工。
你太牛啦。最近写了不少总结贴啊!😂
想法很好,仅此而已。
计算机科学里最难的(不一定是最赚钱的)领域,全是数学物理。
我不准备让孩子太早学习编程,把数学学好,脑子训练灵光,越晚摸电脑越好。
你看我一摸电脑就开始刷华人打游戏,有什么好的。电视顶好都少看。一百年前人类怎么娱乐的,我希望我娃就像那样娱乐。
我觉得lz讲得非常好,计算机科学其实就是计算机工程。
cmu的csc录取的学生不要求会编程的,入大学前没学过编程也不要紧。
可以展开说说具体事例吗谢谢
所以,现在的孩子如果以后想从事高薪工作,其实从小打好数学,科学等学科的基础是很必要的。
前两天关于数学教授以及中学教师薪水方面的几个帖子,有个别言论有些阴阳怪气。我正好再这里说两句:无论哪个国家如果大众都轻视基础学科,轻视基础学科的教师都是蛮可怕的。
lz你应该写书的。 我刚刚看完海淀推娃指南,适用于低龄。 你可以写个北美推娃指南,适用于大娃
因为他们csc为他们新生开了一门编程入门课。
https://www.quora.com/Can-I-get-into-Carnegie-Mellon-CS-with-no-computer-science-background
15-110: Principles of Computing
An introductory computer science course for students with little to no computing experience. Students will learn the core elements of programming in Python and will also receive a broad overview of big ideas in the field of computer science. The course begins with fundamentals of programming (data, variables, functions, conditionals, loops, and recursion) and the basics of computer organization (data representation and memory), then introduces major data structures (lists, dictionaries, trees, and graphs), the core concepts of efficiency (through runtime analysis and a case study of search algorithms), and how computing is scaled for practical use (concurrency and the internet). The course concludes with an overview of how computer science can be used as a tool to support other domains (data analysis, simulation, and machine learning) and how computer science influences and is influenced by the world (history, ethics, and modern events)
别好为人师误导人了。说话直你可能不爱听不过我个人是希望中国人占领这个行业越多越好。CS已经活了至少30年了还会火很多年,因为将来的趋势就是“元宇宙”模式,社会生产不需要那么多人,沉浸在虚拟世界里面。越来越多的行业要智能化代替人,所以码工这个行业还会一直火。过去10来年是互联网,下一个可能是智能车,也可能是其他的但是CS还是会火。
这些是刷题能刷出来的吗
不过我非常同意楼主说的想让孩子学计算机,要从扎实的数理逻辑开始。但是用任何一种编程语言(其实越贴近底层越好)学习如何用简单的条件循环实现复杂的任务,也是数理逻辑的一部分,而且这个是一般数学课上学不到的
码工刷题只是一种招人的方式而已,真正的工作跟刷题基本没什么关系。没有更好的办法招人了。
嗯,写bug的人也越来越多了
同意这个,智能时代刚起步呢,需要大量马工。
计算机的应用一切才刚刚开始。人类差不多只是用来完成了一些excel 报表而已。
LZ所谓的应用端是相对于贴近硬件端的概念,不是“前端网页”。很多人一听人说是码工就默认做互联网的,然后就问“你做前端还是后台”,其实这俩不该相提并论,后者比前者的覆盖范围要宽太多了。前者基本上是UI的范畴,后者是从底层系统到上层应用应有尽有。
键盘上敲个字母显示在屏幕上的这套东西要说清楚也不容易呢,我当年PhD的qualify exam考题之一哦。
赞同。
家中下半年上大学的老大说去学computing science and engineering 专业,我听了一脸懵,听您这么一说,貌似就业前景还不错
因为政策多变, 中国互联网行业已经进入冬天. 未来还有更多的uncertainty, 或许整个行业消失也不过是执政党的一念之差. 同时, 一旦离开美国的open source, 中国就会像买不到芯片的行业一样, 直接萎掉. 内外交困, 实际情况问问自己海归了的朋友就知道了.
别告诉他们. 咔咔.
哈哈. 这里太搞笑了. 走了.
但是在我看来前端编程人员未来也不会被淘汰,而且还将继续蓬勃发展,先说说我知道的历史
90年代初期,前端开发人员,大部分是桌面应用(C/S)开发,因此微软的windows桌面操作系统取得了巨大的成功,也是由于大量桌面前端开发人员涌入,相比于同时期的mac、linux就没有这么幸运了 到了互联网出现之后,特别是NetSpace的web browser出现之后,极大的推动了互联网的发展,随后的W3组织统一HTML标准,使得这个时期的的前端主要以web开发人员为主,也就是楼主认为的互联网开发人员,但这个时期岗位和职能还没有进一步分化,这个时期的web开发人员需要做front-end的工作同时也要做back-end的工作以及data的工作 而如今cloud虚拟化的兴起,以及distribution的需要,多工种协调性以及专业性的需要,从互联网开始,编程人员逐渐分化成更专业的工种,如开头提到的三大方向 这个时期伴随着iphone在智能手机领域的开拓,使得移动互联网的爆发,Front-end又进一步分裂进化,由web fron-end进一步扩展出mobile app front-end工种,以及之前的desktop app front-end,统称为Front-end,国内也称之为大前端
与之同时期分化出去的,后端进一步演变出了业务后端和系统架构后端,业务后端算法类要求稍微少一些,更多的是业务逻辑的思考,需要将成熟的算法直接应用到实际业务当中,但也是需要一定算法基础的,而系统架构则需要用到很多算法和逻辑去保证整个系统在distributed的硬件架构上保持其正确性和稳定性,在早期back-end也是需要个data打交道的,编写很多T-SQL语句,随着后来的ORM框架的兴起,以及大数据量下的performance要求,出现了DBA岗位,随后更多的Data Mining等等的出现,data这个岗位也就进一步分化出来了
如果按front-end的发展规律,desktop-》web-》mobile,下一个未来是智能穿戴设备以及VR/AR等虚拟领域,只要硬件设备、操作系统在不断更迭,就会产生新平台APP的开发需求,front-end的大前端圈也将会有越来越多的机会,不可能只有逻辑没有UI,那就回到了DOS用命令行的时代,这显然是不可能的,未来的front-end会越来越真实化、复杂化 从desktop-》web-》mobile的进程中可以看出来,许多在desktop时代的应用被逐一搬到了mobile上、web上,比如MS Office,现在已经mobile、web都有了,依然很赚钱,而且其他竞品也产生了很多,每一次新硬件的出现,也就注定会有新的front-end角色诞生,也将注定编程人员下一次的繁荣
作为一名front-end从业者,对于front-end这样所见即所的开发方式其实更直观和更有趣味性,我写的代码不再是一堆枯燥的logic,可见的UI设计图从设计师那里到我这里逐一实现,这让我的工作变得更有趣,当然front-end也并非不需要算法、逻辑,只是照图施工的工作量占了大部分,但不论从desktop还是到app还是到web,许多layout原理、UI原理都大同小异,差异在于编写工具、语言切换、开发平台等,其核心理念可以说是触类旁通的,so,未来新硬件设备的出现,front-end也将再度繁荣
说到这里,不得不提的是game行业,其实也算是front-end,但是是更复杂的front-end工作,而且还夹杂着许多算法,这些算法已经被游戏开发引擎实现了,大部分时间也是拿来即用
至于编程会被模版化替代,那根本不是未来,那是过去了。多年前咱不都还得先学点dos 不然都没办法用电脑?那时候谁不得学着改html. 现在人家开网店的谁需要自己写网页?你家3岁孩子果子机能干的比你年轻时100个程序员能干的还多。然而人家程序员都失业了吗?
社会需要科技就跟需要能源一样。能源从煤,到油气,到renewable energy, 一直在变,但没有永动机,所以能源会永远需要,而且需求越来越大。科技也一样,科技的内容会变,但科技的需求会越来越大。至于现在挖煤的能不能接着挖renewable, 那就看个人的本事了。
数学或者统计比较好
对,被制裁的无比坚实
制裁才说明黔驴技穷需要狗急跳墙了
对华为高兴死了
我不是CS专业的,是商科的phd。根据我个人经验,感觉学个数学是不错的:). 大家都觉得商科有点水,但是数学功底好发展的路子会很宽。有很多商科和技术学科的交叉领域可以做研究也可以做实务,这也是很多商科发展的趋势。我工作很多年了,我那个年代的国内本科教育,商科数学是很一般的。我为了读博在美国想尽办法去补过高级点的微积分。这两年夏天还硬着头皮去计算机系跟着本科生学了16个学分的各种编程、算法啥的课程。今年夏天还准备去修个把CS三年级的专业课。年轻时以为可以混过去,越到以后反而越觉得没有捷径。
我只是知道的太少太浅,能说的就这一点点,也不见得对。物理肯定也有物理的好。环境所限,我还没有接触到,但也许以后会懂更多一点。
如果孩子愿意,尽管第一个专业修会计、营销这种稍微soft一点的专业,尽管第一份工作只能找个出纳挣一点点钱,我也会支持他们去修个数学作为第二专业。打好基础,培养好的逻辑思维能力是一辈子的事。也许有一天他们想法就变了,喜欢hard core一点的呢?
说的非常好, 马工的工作分类品种彼此之间也是隔行如隔山的 写前端的真的是比较简单直白的部分, 后台不知道多少不同的马工在工作
一个谷歌搜索对于终端用户来说就是一个输入,然后一个回车,后面多少人在实现算法
有一种说法 Software is Eating the World. 从广义的角度来说,state-of-art的硬件都有软件的身影。 比如Cisco router里的iOS,CPU里的microcode。硬件的复杂度需要软件来提供更高层面的抽象。
> 最基本的编程语言,只需要变量赋值和循环(等价于递归)就足够了
并不代表数据结构和算法没有意义对吗? 就好像你可以说人就是碳氢氧氮等基本元素构成的, 但是人之所以为人更重要的是如何组织它们。 如何运用基本的primitive 来提供更有效率的抽象才是计算机技术研究的方向。
这个是属于动手能力的问题。从小得培养做家务,玩乐高,玩模型,做手工,也用不着摸电脑。
> 马工们最需要的,其实是操作系统,因为他们每一天都在这里游泳。我真的希望刷题更多集中于考操作系统,而不是算法。
lz 把操作系统和应用放在一起了吧。 OS做的就是提供一个hardware的抽象。 就好比一个木工应该花时间研究家具,怎么使用工具,而不是研究怎么提高自己的工具。
> 一个纯洁的马工,是应该能把从键盘敲击一下到显示屏显示出一个字符的整个软硬件过程全部在大脑中复现出来的。
这个要求太高了。涉及到软件, 硬件, firmware, driver ... 大多数人看到的都是抽象出来的interface,很少有人知道所有的know how。
+1
> 说到这里,不得不提的是game行业,其实也算是front-end,但是是更复杂的front-end工作,而且还夹杂着许多算法,这些算法已经被游戏开发引擎实现了,大部分时间也是拿来即用
从历史上来看,所谓的前端,或者HCI经历了: terminal -> GUI -> web -> mobile(iOS, Android) 都是二维平面的,而且有详细的HCI guideline。
如果VR是未来的人机界面的话,我们有一个三维的人机界面用来和机器交互。 对前端工程师会有新的需求。但是长期来看,肯定会出现新的framework来简化, formalize。
顶一个