背景:农转地信,没学过代码。研究生学习需要 用到c++、python和js。
开学到现在,在我自己摸索了大半年之后,我发现对于一个没有接受过计算机基础知识学习的人来说,这个过程的难度不亚于一个乒乓球爱好者去打篮球。因此,我意识到计算机基础知识的重要性。在过去的大半年中,我不断提醒自己要从计算机基础开始学习,而不是一味追求具体的编程方法。
我的学习路径如下:
- 计算机科学速成课程:学习了二进制、内存、机器语言和高级语言之间的区别,并对它们的使用有了一定了解。
- 斯坦福CS105计算机导论:补充了对电脑软件硬件、计算机网络、人工智能和算法的简单了解。
- 补充自己感兴趣的领域的相关资料:并不需要全部都看完,我自己也没有看完,因为我没有接受过计算机科班的教育。
- 初期资料主要参考菜鸟教程和CSDN,对于C++ Primer等书籍并没有太多帮助,这是因为我的个人原因。
- 花了很多时间来理解Visual Studio的操作和C++语法,但有些时间浪费了。
- 补充了一些书籍:《程序是怎么跑起来的》和《计算机是怎样跑起来的》。虽然没有全部看完,但是阅读是有益的。(对于像我这样的农科转工科的研究生,不建议一开始就读《Effective C++》这类书籍)
- 观看了The Cherno的C++视频,虽然没有全部看完,但对C++语言和编译器有了更深入的了解。
- 至于JavaScript前端入门,我参考了付费课程中的教程,对事件和DOM有了一定的理解。
相关实践:
- c++:
- 学生成绩信息系统(纯黑框应用,用来熟悉c++语法)
- gltf文件计算三角面积,基于opencv读取image属性
- py:
- 符合后缀条件的文件批量移动脚本
- txt、json文件转换脚本 3 js:
- 基于mapboxGL js 和DeckGL js 完成OD line的交互可视化效果
思考误区:
把菜鸟教程全部看完了,但是我还是不会code。
这是菜鸟教程是字典式查阅,如果想要掌握语法,应该找到代码练习题,然后分析要如何用xx数据类型的xx方法来拼接成解决方案,所以早点开始codewar是一个好选择。尽管这些内容在GPT发布后,掌握essential是有必要的,用code解决问题的逻辑还是需要掌握的,尽管不用自己写。
所以,我理解的编程学习路径是:
- 首先要对计算机科学的基础知识有清楚的了解,理解计算机的工作原理,然后根据个人兴趣选择合适的语言和技术栈。
- 然而,对于研究生来说,语言是固定的,你必须按照实验室的要求进行学习,除非你的能力足够强大。
- 因此,我认为在全力投入之前,必须清楚地了解计算机科学的基础知识,否则在编写代码和解决问题时会感到非常痛苦。(当然,如果你擅长使用ChatGPT搜索或者英语水平较好,痛苦程度会小一些,难度也会降低一些)。
学习资料参考:
- codeWar :我用来js写代码学习语法
- chatgpt:搜索信息、指导代码学习
- 书籍:《程序是怎么跑起来的》和《计算机是怎样跑起来的》
- 学习网站:udemy、youtube and bilibili
- 关键:知识平权比以往做得好,关键在于获取信息后在限定条件内如何组合资源完成目标任务。