序言
实话说我想讲这个话题很久了。随着 AI 大语言模型的爆发,最近时间线上看到越来越多被 Ch*tGPT 误导的友友,或者是想写前端但不知道从何入门以至于频频碰壁的友友。因此我想在这个过年度假的时候认认真真地讲讲相关的内容,顺带也可以当作给自己准备的一个带点挑战性的课题来做,整理一下自己十多年接触程序设计相关的经验和感慨。
因为只有 7 天,我不会讲得非常详细,不会像具体的那种程序设计教程一样讲完整的系统性知识,并且各种语言的语法和很多具体实践中的细节都需要自己去踩过坑才会了解。这只是一个以业务逻辑为主的结果导向的课题,用来帮助完全没了解过程序开发的人稍微接触一点程序世界的大门(甚至都不能算入门);如果您已经能较为熟练地编写代码,也欢迎您随时补充这里提到的一些细节,或是帮忙修正一些可能出现的勘误,来帮助阅读的人更好地了解相关的内容。
其实与其说是教程,倒不如说更像是一篇巨大的杂谈了。
WARNING
因为是结果导向,我的某些讲法可能会让讲究严谨的专业人士感到被冒犯,请容许我事先向您道个歉 🙏
INFO
我不懂什么高级算法,如果您是抱着想学高级算法的心态点开的话,那么更建议您去读一些其他的算法著作。
我无法保证所有的细节都能讲到位,因为长时间接触程序导致我的认知中一些常识性的概念可能一般人完全没有接触过。所以如果您有任何的疑问或是觉得我讲得不清楚的地方,欢迎随时提出。
🛠️ 技术栈
我会以时下热门的网页前端+服务端方案设计本次课题。之所以选择网页前端而不是任何一个特定的 GUI 组件库(例如 Qt ),主要的原因是现在有很多客户端本质上就是一个前端网页用 Electron 或者 Tauri 这种跨平台的工具打包的,并且一般来说主流的设备上通常都会有自带浏览器(只是兼容性不一样);那么学会了前端之后能很方便地迁移到其他的平台和工具上面去。并且前端开发环境的配置相对来说比较简单,不像 Qt 那种要安装一个巨大的依赖库,相对来说也更加开发者友好一些。至于服务端的话反正是作为一个相对来说更接近底层一些的必备组件来安排的,如果您只是想要学习前端相关的设计和逻辑,那可以忽略这部分内容。
预计使用的技术栈为:
- 前端:React + TypeScript
- 后端:go
- 镜像打包:docker
- 部署:docker compose (我弄不懂 k8s )
- 代码托管服务:GitHub
世界上有那么多的编程语言,不存在说谁更好谁更坏,使用哪种语言更多的是由个人的习惯决定的。比如,如果您更喜欢 Vue + JavaScript 作为前端, rust 作为后端,当然完全没问题。
我虽然平时经常也吐槽 GitHub 垄断作恶,并且挺想用 GitLab 的,但考虑到使用 GitLab 好像没有 GitHub 那么出名,并且现在自建轻量级代码托管服务器也可以用 Forgejo / Gitea 这个操作逻辑更靠近 GitHub 的解决方案,这种情况下使用 GitLab 就有点一厢情愿的感觉了。但作为 Git 托管平台的大致管理逻辑都是差不多的,所以当了解了一种平台之后,了解其他平台也就都很方便了。(虽然我个人是更喜欢 GitLab 的,子群组功能多香呀)
TIP
在本课题学习完成后您可以先都去读一读这些开发工具的文档,寻找最适合自己的开发环境。