The First Software Engineering Homework

yamabuki-odori / 2024-03-10 / 原文

这个作业属于哪个课程 软件工程2024-双学位 (广东工业大学)
这个作业要求在哪里 软件工程第一次作业
这个作业的目标 熟悉 Markdown语法,熟悉 git操作,学会写 blog
其他参考文献

目录
  • 1 个人简历
    • 1.1 自我介绍
    • 1.2 当前水平
  • 2 展望未来
    • 2.1 阅读《构建之法》
    • 2.2 未来规划
    • 2.3 课程期待
  • 3 学习路线
  • 4 个人仓库
    • 4.1 附记: git的初步用法
    • 4.2 附记: gitcode的一些大坑

1 个人简历

1.1 自我介绍

  • 昵称: Yamabuki Odori
  • 头像
  • Github:Hanaaihakase
  • 邮箱: hanaaihakase@gmail.com
  • 爱好: 日常写点代码,偶尔写点博客。
  • 自述: CRUD engineer。经常为 RTFSC工程头痛不已。

1.2 当前水平

  • 个人奖项:英语四六级证书,日语 JLPT N1证书。
  • 专业水平
    • 熟悉 Linux操作系统。熟悉使用 BashPython编写日常使用的脚本。熟悉使用 vim编辑器。
    • 了解 C, C++等语言。了解 makecmake构建系统。
    • 有用 requests库编写爬虫的经验。
    • 代码量至今 5k左右。

2 展望未来

2.1 阅读《构建之法》

阅读《构建之法》,并阅读构建之法社区中前人提出的问题,选择5个及以上的问题写下自己的思考。要求在自己的思考中贴上原问题的链接。

  • 1.2.3 AI辅助编程,是一个银弹么?

我觉得至少现在不是。尽管 ChatGPT之类的大语言模型近年来特别火爆,大有代替人类编程的趋势,然而还是达不到成为「银弹」的水平。说到底,软件工程是一个需要工程师的社区和企业通力协作的一个庞大的工程,这个工程量,即使是世界上最聪明的工程师也无法理解,当然现在的大语言模型更是无法理解了
比如说操作系统的开发,微软内部的 Windows操作系统源代码的 Git repo是世界上最大的 Git repo,大约有 350 万个文件,当签入 Git 存储库时,会生成大约 300GB 的存储库。此外,Windows 团队约有 4,000 名工程师,工程系统在 440 个分支机构每天生成 1,760 个“实验室版本”,此外还生成数千个拉取请求验证版本。[1] 软件工程的异常复杂性决定了在人类历史的很长时期内,都无法产生「银弹」[2]我觉得只有当大语言模型的算力达到可以独立开发出全新的操作系统的水平时,我们才有认为大语言模型确实是「银弹」的可能。

  • 1.1 如何区分一个好的程序员和不好的程序员呢?

十分简单。可以写出符合需求的代码并且顺利运行,还可以获得用户高度认可的程序员就是好的程序员。即使他只会 CRUD,符合这个标准,他也是好的程序员。

  • 7.1 商业价值与开源精神是否矛盾?

二者并不矛盾。无论是 RMS主导的自由软件运动还是 Linus主导的开源软件运动,都不反对进行商业盈利。当年 Richard Stallman贩卖 Emacs还能小赚一笔呢。现在也有很多使用开源游戏引擎(比如说 Renpy)做的游戏,放在 Steam上面贩卖,但是他们的源代码是按照开源协议与附在一同销售的商品上的。这说明开源与商业并不矛盾。

  • 4.2.6 变量命名是否应该有描述?

当然,不是所有人都会详细的阅读注释和文档,为了使得团队合作更为顺利,必须在变量命名上做到明确合理。写出int a = 1之类的习惯应该尽可能改正。

  • 3.1 如何让自己能够跟上软件工程发展,做一个永不落伍的开发者呢?

RTFSC,STFW,RTFM,还有 How To Ask Questions The Smart Way之类的老生常谈自不必说。还要终身保持谦逊的学习态度,接受别人的建议,接受崭新的知识,不要有任何成见。

2.2 未来规划

// main.c

#include "commmon.h"

int main(){
// 1. 把难啃的 CSAPP看一遍,做一遍笔记。
Read("CSAPP.pdf");
Note("CSAPP.pdf", "CSAPP_NOTE.md");

// 2. 准备408考研。
Prepare_for_postgraduate("408");

// 3. 丰富技术栈,尤其是 c,x86 assembly,操作系统之类底层相关的。
Learn("C");
Learn("x86 assembly");
Learn("Operating System");

return 0;
}

2.3 课程期待

从编程作业的实践中学到一些实际的经验,学会 Team Working,并且了解到软件工程的一些前辈的教训。

3 学习路线

4 个人仓库

这是我在 GitCode的仓库。可能会不常用。

这是我的 Github仓库。

4.1 附记: git的初步用法

  • 第一步:注册 git系网站,查看账号信息。再生成密钥,如ssh-keygen -t ed25519 -C "git@gitcode.com",再cat ~/.ssh/id_ed25519.pub查看。复制粘贴到该网站的 ssh密钥列表当中。
  • 第二步:新建一个仓库。
  • 第三步:git clone该仓库到本地,打开该仓库,新建README.md文件。
  • 第四步:在本地新增账号,邮箱。注意:假如你使用多个git网站,请不要全局设置!!!
git config user.name "YOURNAME"
git config user.email "YOURMAIL"
  • 第五步:往本地分支新增README.md文件,并且增加 commit。
git add README.md
git commit -m "add README"
  • 第六步:推送至远程仓库主分支。
git push -u origin main

4.2 附记: gitcode的一些大坑

gitcode分为 gitcode.net旧站和 gitcode.com新站。只有旧站可以作为图床使用。一定要注意这一点。


  1. https://devblogs.microsoft.com/bharry/the-largest-git-repo-on-the-planet/ ↩︎

  2. https://zh.wikipedia.org/wiki/没有银弹 ↩︎