计算机编程基础：

在一切开始之前，有一些基本功需要娴熟掌握，比如如何查资料，提取关键词，横向搜索，以及当下最热门的生成式搜索。

编程的第一课，应该是从翻墙开始，抛弃百度，CSDN，博客园的第一优先级，如何花钱来访问google，如何配置系统代理，让后面下载依赖库的时候顺风顺水。如何去github 找到自己可以clone运行的项目。

编程的第二课，应该从环境变量开始，什么是环境变量，如何配置环境变量，如何给环境变量起名，一个dll的运行，需要多少dll作为依赖项，为什么有些软件很小就能成功运行，有些语言跑一个hello world 都要1个G，C++ 的环境变量是如何，python 又是如何找到自己的依赖的，windows预装的net 是什么，开发环境和运行环境的区别。编译的dll是如何通过命令行，让ui和编译程序关联在一起的。

编程的第三课，应该从安装软件开始。安装Visual Studio，不同版本之间的差异，为什么有些人就要用2017甚至是更低的开发，如何让高版本兼容低版本，C# NET 4.8 和NET6.0的差异。python 不同的安装版本应该选择安装什么。pip 在下载库的时候，要怎么通过翻墙去下，不翻墙要怎么换国内的源。pycharm的统一配置以及Conda 以及pipven ， npm，cargo 的依赖环境设计.java spring框架之类的。

编程的第四课，应该从创建 一个hello world 开始。比如 C++ 里 从main 里创建到执行。从运行逻辑开始讲述程序是如何从启动到执行输出的。接着就是尝试使用自带的库，比如python 里面的math 函数，基本的语法差异，使用习惯，形成肌肉记忆。调用三种下载的的依赖库，比如c++ 配置 opencv的使用，python 配置requets,c# 配置一个Newtonsoft.Json  ，并利用这些第三方写一个简单的函数。

编程的第五课，编译运行工程框架，比如 C++ 的QT，生成导出dll ，比如 C# 的WPF,Winform ，比如 python  的 flask ，qt5,java的spring, 安装配置到运行。

编程的第六课，应该从语言的发展史，演变史开始，构建一个拓扑网络，了解程序之间的依存关系。 系统的构建层是什么，对外暴漏的接口有哪些，如何显示一个messagebox,如何创建一个窗口，C++ 是如何导出的dll, python ,C# ,java ，以及C++ 本身又是如何调用这些其他语言写出的dll, 他们又是如何调度自身的环境。

如何通过命令行交互，强行拼接不同的语言执行，python 又是如何调度 cuda 这些的原理。

编程的第七课。应该讲述在历史发展史中，数据的传递流。从socket到tcp IP, 到http, 协议是什么，拿到流之后是如何拿到里面的值做校验的，校验位和数据的传递的不可靠性是如何展现的，又是如何确立的。在http 之上的超文本协议，以及最重要的json 和xml 是如何成为数据交互的基础的。在不同的系统之间，数据流走来走去，在经由显示层显示。最后到   内存和硬盘之间的映射关系，以及 ini 格式，mysql ，系统的存储层等等数据最终保存在什么地方，一读一取是如何完成的，在不同的语言之间，实现的如何实现这个过程，哪些非常常用的第三方库，又或者是本身的环境中自带解析。比如 js.

编程的第八课，从游戏开始，计算机的变迁史，GDI,opengl,DirectX,vulkan开始，数据如何显示在桌面上的，渲染流程是什么，高性能计算为什么最后由 NV 家cuda的作为基础库，苹果自家的显卡在高性能计算上的应用，pytorch torch 在这些不同系统之间构建的接口。在不同的语言之间应该如何调用模型执行比如 文字识别，人脸识别，缺陷检测等等。

编程的第九课，从实体工程开始，讲述非必要但常见实际的工程经验，配置，svn,git的开发环境，配置github，配置生成的工具链，发布的证书， C++ 的项目结构，C# 的项目结构，python的运行执行。如何从github clone 项目运行起来，缺失的部分如何下载，遇到代码bug后应该如何快速排查，遇到程序，pdb文件如何dump,如何通过反编译，观察对方程序的指令逻辑。如何打日志甩掉自己的锅，如何配合对接快速获取，或者是让对方了解自己的意图。

编程的第十课，从编程的基础原理开始读，补充自己快速开发半吊子的水平。向自己感兴趣的方向多看看。比如偏向图形学，还是机器学习，还是UI，还是底层，还是某项具体的功能比如音频开发，sql,黑客，前端，后端，安卓等等。

