中学生想学计算机吗?当然啦!
如何学习计算机?休闲模式,冒险模式,自由选择,欢迎挑战!
“以emacs写小说,以平水韵饮美酒”是一个追求科技、人文、未来的爱好者,也是一个传记、科幻作家。代表作有《乔布斯传》和《人工智能》。
朋友的孩子刚高中毕业,拿到了美国顶尖大学的录取通知书。不知道什么时候能去学校报到。孩子想快速学习编程,为大学打好基础。孩子和我聊了一个多小时,从如何学习编程到非计算机专业和计算机专业的路径差异,以及如何从不同角度认识计算机和编程。不知道对这个孩子会不会有用。
回想一下我自己的高中时代:我痴迷于编程,却完全没有知识渊博的人的指导。在我们四线城市的厂矿中学,开设计算机兴趣课程的老师都没有我了解的信息多。我高一的时候在北京中关村逛街,当时并没有意识到中国第一代顶尖程序员正在我旁边低矮的写字楼里写代码。著名的UCDOS、WPS、CCED都出自他们之手……我当时在街边的一家书店买了很多种印刷质量极差的计算机书籍。以今天的标准来看,那是一批外国书籍的盗版影印或未经授权的翻译。但是那些书后来证明是我高中时代最有价值的编程知识来源。
很明显,我在高中的时候,只是单纯的用一种狂野的方式学习计算机。现在后悔也没用。当时我能接触到的资源就这么多。如果可以回到30年前,我会对喜欢编程的自己说什么?这些年来,我和世界上最优秀的程序员一起工作,参与了世界上最有价值的软件系统的研发。有什么可以分享给一个热爱编程的中学生?
【问题1】中学生想学计算机吗?
当然啦!
每个中学生都要学习。但提示大部分中学生使用“休闲模式”,少部分中学生使用“冒险模式”。
啊?两种模式?我应该进入哪种模式?请跳到[问题2]
【问题2】你选择哪种模式?
你对电脑着迷吗?比如你玩游戏的时候,是不是特别想知道游戏背后的代码是怎么写的?比如,即使老师的父母不同意你学计算机,甚至当着你的面砸电脑,你还坚持学计算机吗?如果是,恭喜你进入“冒险模式”,请跳至【第200题】
你对数学感兴趣吗?比如当你看到街道建筑的曲线时,你脑子里有没有想到曲线对应的函数或者方程?每当你手里握着几个骰子的时候,你会不由自主地计算概率吗?如果是,欢迎进入“探索模式”,请跳转至【第200题】;当然,如果你犹豫不决,也可以先进入“休闲模式”。请跳至【第100题】
即使你对计算机和数学不感兴趣,父母和老师也强烈建议你学计算机吗?就算你们一百个没时间,一千个不想,家长老师还会逼你学计算机吗?如果是,建议你主动进入“休闲模式”,向家长和老师汇报“我一直在按照谷歌前高级软件工程师的专业建议认真学习编程”。请跳至【第100题】
在其他情况下,所有人都将进入“休闲模式”。请跳到第100题。
【问题100】休闲模式|主要学什么?
“休闲模式”将电脑视为我们生活和工作中必不可少的工具,主要学习如何智能、高效、优雅地使用计算设备。这里所说的计算设备包括未来肯定会进入生活的所有形式的电脑、手机、游戏机、智能家电、自动驾驶汽车。
什么?你已经会用电脑,会玩手机,会玩游戏了?别急,慢慢往下看。
【问题101】休闲模式|可以用搜索引擎吗?
我知道你可以搜索练习的答案。然而,练习的答案不是知识。可以用搜索引擎搜索整理知识吗?请尝试用电脑和你喜欢的搜索引擎解决以下两个问题:
圆周率有几种计算方法?每个不同的计算方法是在什么时代由谁提出的?在计算机的帮助下,今天人们可以计算圆周率的小数位数是多少?圆周率一次算到这么多小数位需要多少度电?
世界上大约有多少厕所?在不同发展水平的国家,有百分之几的人能享受到抽水马桶的卫生厕所?比尔·盖茨为什么要大力推动一个研发项目去设计一种新的马桶?比尔·盖茨的公益组织在这个项目上大概花了多少钱,最后得到了多大的效果?
如果你不能很快得到以上问题的全部答案,那就给自己定一个小目标:在一个月内,学会用搜索引擎系统获取和整理一套知识点的所有技巧。
【问题102】休闲模式|接下来学什么?
建议好好学习典型的工具软件。比如我知道你可以用Office,但是用Office和用Office是很不一样的。对于生活、学习、工作来说,学好一个工具软件比学习编程技巧更实际。
可以用Excel管理班级公益金的预算和实际收支吗?可以用Excel画出近20年来全球大学排名的演变趋势吗?你能用Word排版一篇中学生论文吗?论文中的图表和最后的参考文献如何排版?能不能用Word整理一个班级出版物,包括封面、扉页、目录、插图页、附录、封底等。,哪些可以印刷后直接装订成册?PowerPoint呢?你研究过苹果发布会上那些幻灯片的设计吗?当乔布斯或蒂姆·库克站在幻灯片前时,他们的演讲理念是如何与幻灯片完美结合的?哦,还有别忘了学习如何对数码照片做后期处理,如何用电脑或手机剪辑视频,如何给剪辑好的视频加字幕,如何把照片、音乐、视频等素材结合起来,制作一个有吸引力的短Aauto快/抖音视频。
最后抽空玩设计精美的游戏,比如纪念碑谷,塞尔达传说:荒野之息。同时,远离那些满屏的广告,或者欺骗你充值,在游戏里花钱的垃圾。
【问题103】休闲模式|不学知识吗?
当然是学习知识。以下每一个实用的计算机知识,都足够大家学习一段时间了。
色彩知识:你知道为什么同一张数码照片经常显示在不同品牌的手机屏幕、不同的电脑屏幕、不同的智能电视上吗?你知道有些颜色只适合屏幕显示,不适合打印输出吗?你知道软件工具中常用的RGB,HSL等颜色空的含义吗?PowerPoint幻灯片设计时如何选择一组和谐美观的色彩?
字体知识:你知道什么是衬线字体,什么是无衬线字体吗?你知道网页中常用的英文字体有哪些吗?你知道哪些英文字体最适合商务演讲中的幻灯片?你知道电脑和手机常用的中文字体有哪些,比如黑体、宋体、仿宋体、楷体,适合实际应用吗?你会把不同的字体混合成一个漂亮的页面吗?
知识:你知道5G是什么吗?你知道5G和4G在通信带宽和通信距离上的具体区别吗?你知道什么是路由器,什么是防火墙吗?你知道如何配置路由器和防火墙吗?微信或QQ聊天时,对方发来的文字、语音或视频是如何传到你手机上的?
知识:在淘宝找到的商品信息从哪里来?商品是用什么方式分类的?为什么购物app经常会推荐一些你买过看过的商品?你知道如何为自己建立一个个人网站吗?你知道怎么管理微信微信官方账号吗?
知识:你知道互联网上的钓鱼攻击是什么吗?你知道什么是电脑漏洞吗?你知道为什么黑客要把大量被攻击的电脑变成可以远程控制的木偶吗?你知道为什么现在很多手机app都是通过短信发送验证码吗?如果验证码被坏人截获,你会面临什么风险?
这只是一个例子。还是有很多实用的计算机知识的。你可以自己去发现。
【问题104】休闲模式|我需要学习编程吗?
可以,但是没必要。即使学习,也只需要根据自己的需求,学习那些最能帮助自己解决现实问题的部分。
【问题105】休闲模式|该学什么编程语言?
在“休闲模式”下,电脑是工具,编程也是工具,用够了就好。学什么编程语言完全取决于你希望计算机为你做什么。
如果你想在数据处理上有更多的自主权,不妨学习Python;想做一个简单的交互演示程序,先学Javascript想把论文写得更好更快,不妨学学LaTeX;如果你想学做一个简单的手机APP,那就学安卓手机的Java,苹果手机的Swift。如果你只是想知道编程到底是怎么回事,那么…就从Python或者Javascript开始吧。其实跟五六岁的孩子学Scratch图形编程也不错。
【问题106】休闲模式|我需要学习人工智能吗?
在“休闲模式”下,最需要学习的不是人工智能的原理,而是人工智能是什么,人工智能能做什么,不能做什么。
在手机上试试吧。人工智能做语音识别能达到什么水平?哪些字好认,哪些不好认?打开机器翻译软件,试试哪些资料翻译的好,哪些资料翻译的不好?手机上的拍照软件一般都有人脸识别的功能。我们来试试人脸识别在哪些场景做的好,哪些场景做的不好。找一部关于人工智能的科幻电影,用自己的判断去解读。电影中哪些技术有可能成为现实,哪些技术存在逻辑矛盾。
【问题107】休闲模式|有什么参考书和参考资料推荐?
书不重要。豆瓣评分7分以上的计算机应用、编程甚至科普书籍都可以用来翻看。
在知乎上直接搜索自己想了解或学习的知识点可能效率更高。
如果你觉得自己刚刚开始活动,想挑战更高的层次,欢迎来到“冒险模式”。请跳到第200题。
否则,“休闲模式”到此结束。请留下这个问答。
【问题200】探索模式|主要学什么?
“探索模式”需要挑战精神。世界计算机科学技术发展迅速,背景复杂。想要探索而不迷失,就得有条不紊,系统的学习计算机知识,慢慢构建一个能帮助你未来走的更远的心智地图。
在“探索模式”下,计算机不仅仅是一个可以快速计算的工具。电脑更像是我们大脑的延伸。这既包括认知能力的延伸,也包括认知逻辑的延伸。随着学习的深入,大家会逐渐认识到计算机的多维能力:
计算机是一种“信息管理机器”,可以表示不同类型的信息;同时,计算机也是一个“指令处理器”,可以不断执行指令,完成特定的信息处理任务;同时,计算机也是一种“知识推理机”,可以在知识和逻辑的层面上完成特定的推理任务;同时,计算机也是一台“智能学习机”,可以从人类给出的数据或自己生成的数据中总结出规律,建立模型,独立完成一些决策。
“探索模式”的目标是尽可能准确地认识计算机,掌握关于计算机操作的最基本的规律。有了这些基础。未来在大学期间或者工作中,你将能够更轻松地设计计算机软硬件系统,或者设计出碳基脑和硅基脑的最佳合作方案。
【问题201】冒险模式|我的英语够吗?
苹果每年秋季的新品发布会,没有字幕你能看懂多少?
能看懂大部分:建议在学习计算机的过程中,尽量使用英文教材和文档。能看懂一小部分:建议把你原本打算学计算机的一部分时间分出来学英语。你只能理解“你好”和“再见”:请留下这个问题和答案。然后,用你本来计划学计算机的时间去学英语,半年后再来。
【问题202】冒险模式|我的数学水平够吗?
如果你是数学和数学应用的小能手——复杂的数学问题总能很快找到核心思想,或者很快简化成简单的问题;很容易把抽象的概念映射成具体的数学图形,或者把数学问题和相应的现实问题联系起来:请继续你的冒险。如果你觉得很难应付正常的数学课程,建议你把原本打算学计算机的时间分一部分来学数学。如果你还是搞不清楚什么是方程、函数、集合、概率……:请离开这个问答,然后,用你本来打算学计算机的时间去学数学,半年后再来。
【问题203】探索模式|为什么强调英语和数学?
从统计上来说,最好的计算机参考资料大多是用英文写的,最好的计算机课程大多是用英文讲的,最新的计算机论文大多是用英文发表的。
函数、方程、坐标系、标量、向量、排列组合、概率,中学数学会初步学到的,都是计算机的基础。
【问题204】冒险模式|这么多计算机知识,正确的学习顺序是什么?
有两个最重要的序列。建议从订单入手,有富余产能的时候兼顾两个订单。
顺序1:自下而上,即从底层原理到上层应用扩展的顺序。
计算机原理基础知识:为什么每台计算机都有CPU、内存和外部设备?为什么内存可以同时存储数据和指令?CPU如何完成一个加法运算?编程语言的基础知识:数据类型、值、变量、范围...语句,流控制语句...过程、方法或功能、类、模块、程序、服务...编译系统的基本概念:计算机程序如何被解释或编译成目标代码?算法和数据结构的基础知识:数组、向量、链表、堆、栈、二叉树、树和图...递归算法,排序算法,二叉树搜索算法,图搜索算法...应用层基础知识:电脑为什么需要操作系统?设备驱动程序是做什么的?沟通的基本原理是什么?浏览器如何找到并显示网页?数据库是干什么用的?虚拟机是怎么回事?人工智能系统基础知识:先熟悉线性代数、概率、数学优化的一些基础知识。什么是机器学习?从简单的线性回归中体验机器学习的基本概念和思想。什么是神经网络?什么是深度神经网络?为什么神经网络可以完成机器学习任务?如何使用PyTorch或TensorFlow实现简单的深度学习功能?二、顺序:自上而下,即从顶层抽象逻辑到下层具体逻辑的顺序。
计算机的本质是什么?图灵机是什么?什么是通用图灵机?什么是读取(评估)输出循环?如何从上到下理解一段程序代码?静态语言和动态语言有什么区别?如何理解变量和数据类型的绑定关系?什么是函数式编程?编程语言中函数的本质是什么?为什么函数可以像值一样被表示、存储、传递和处理?什么是面向对象?阶级的本质是什么?如何用面向对象的方式定义一个功能接口?如何根据接口实现具体功能?什么是事件驱动?什么是事件?如何将事件分发给收件人?如何理解事件驱动环境下代码的状态和执行顺序?
【问题205】冒险模式|如何提高编程水平?
在掌握基础知识体系的基础上,学好编程的方法只有一个:多编程,多参加编程竞赛,多编程题,多实验项目,多实习机会——其中,参与真实项目最有价值。
【问题206】探索模式|应该从哪个编程语言学入手?
我个人推荐入门编程语言:python javaswiftc # Javascript/typescripttruby...可能不适合入门语言,但适合深造:C c++ goo objective-C汇编语言机器语言shell scriptluahaskellocamlrjulierlangMATLAB...
【问题207】探索模式|如何选择参考书和参考资料?
强烈推荐的参考书籍和资料:
麻省理工学院、史丹福大学、CMU大学和加州大学柏克莱分校任何计算机专业使用的教学参考书或参考资料。这些学校的计算机专业的课程体系都可以在网上查到,有的学校甚至还会发布课程视频。经常会列出参考书和参考资料。与数学和计算机科学相关的维基百科条目。Github上超过1000星的开源代码和开源文档。
强烈推荐但经过仔细鉴别的参考文献:
知乎上的数学和计算机科学相关词条。使用时需要特别注意三点:尽量只看高赞答案或高赞文章;识别和避免广告软文;并避免纯粹而巧妙的故事或笑话。关于堆栈溢出的编程问题答案:自己实验一下,看看解决方案是否有效。CSDN上编程问题的答案:自己做实验,看看答案是否有效。
其他推荐的参考书籍和资料:
国内专业作者写的专业技术书籍。技术公告、专栏、博客等。大厂的高级工程师。名著系列:奥赖利等动物封面的系列书籍。在中国翻译的著名技术书籍。
要避免的参考书和参考资料:
过时的书籍或参考资料。或者是作者和译者比章节多的专业书。数学或计算机科学相关材料百科全书。
什么?你在这个问答里没有推荐具体的一本书?是的,没错。如果你觉得即使有了以上线索,你还是找不到好的书籍和资料,那么也许你还是适合“休闲模式”。请跳至【第100题】