以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

excel一次多选怎么操作,表格里怎么选择多项目

  

  由鱼和羊编辑   

  

  量子报道|微信官方账号QbitAI   

  

  光有理论对编程来说是不够的。动手实践是必修课。   

  

  但是,往往很难从什么项目入手。   

  

     

  

     

  

  如果你还在纠结哪些项目可以开始自己的编程实践,请看看这份“程序员应该尝试的挑战项目”清单。   

  

  这是奥斯汀亨利,田纳西大学的助理教授。   

  

  Henley)结合自己的经历,给出了良心推荐。它不仅总结了知识要点,还使你在学习中有了明确的目标,并密切组织扩展的阅读材料。   

  

  你可以多次构建这些项目,每次都能从中获得新的知识。   

  

  每当我不知道该练习什么,或者想学习一门新的编程语言或框架时,我会选择以下项目之一开始编码:   

  

  # #每个程序员都应该尝试的具有挑战性的项目   

  

  # # #文本编辑器   

  

  如何在不使用GUI框架中内置的文本框组件的情况下,构建一个支持光标移动、选择、插入和删除的文本框?   

  

  这个项目有两个主要挑战:   

  

  *如何在内存中存储文本文档   

  

  *了解流行编辑器中文本光标的行为。   

  

  不要低估这些基金会的作用,有很多细节值得注意。例如,当光标在文本中间时,按向上箭头,光标会移动到哪里?   

  

     

  

  # # # # # 来源:奥斯汀亨利   

  

  如果你认为这太简单,有一些高级测试:   

  

  *撤消/重做   

  

  *自动换行   

  

  最后,总结知识要点:   

  

  *存储文本的数据结构:数组、绳子、间隙缓冲区、片表   

  

  *文本光标的行为和实现   

  

  *撤消/重做设计模式:内存、命令   

  

  *分离文本视觉和记忆的抽象   

  

  别忘了拓展阅读:   

  

     

  

  ### 2D游戏-太空入侵者   

  

  即使是最简单的游戏也需要考虑数据结构和设计模式。   

  

  在这个项目中,你的任务是从头到尾实现一个定义明确的游戏。最好使用2D图形库,如SDL,SFML和PyGame。   

  

     

  

  # # # # # 来源:奥斯汀亨利   

  

  第一步是创建对象移动的效果。   

  

  第二步:了解游戏周期的所有信息。游戏实际上是在绘制、获取用户输入和处理游戏逻辑之间的一个循环。   

  

  第三步是处理用户输入。   

  

  第四步:学习如何创建和管理所有游戏对象及其状态。比如如何生成动态的敌人数量。   

  

  第五步是学习如何应用游戏的逻辑。子弹位置什么时候更新?什么时候屏幕上会出现更多的敌人?如何确定敌人已经被击毙?游戏什么时候结束?   

  

  即使到了高级阶段,也可以考虑引入AI来制造更多的“智能”敌人。   

  

  # # #编译器-微型BASIC   

  

  从头开始写一个非常小的类似BASIC的语言编译器,然后编译成任何其他语言。比如用Python编写可以输出C#代码的Tiny BASIC编译器。   

  

     

  

  # # # # # 来源:奥斯汀亨利   

  

  知识点:   

  

  *词汇分析   

  

  *语法分析   

  

  *递归下降分析   

  

  *抽象语法树   

  

  *语义分析   

  

  *优化通道   

  

  *代码生成   

  

  # # #迷你操作系统   

  

  从这个项目开始,难度就增加了。   

  

  系统的运行依赖硬件,所以入门门槛比较高。但是这个项目可以帮助你。   

更好地理解计算机底层都发生了什么。

  

作者亨利推荐了一本免费电子书《使用Rust构建RISC-V操作系统》作为入门教材(地址见文末)。

  

  

###### △图源:Austin Z. Henley

  

知识点:

  

* 交叉编译

  

* Bootloading

  

* BIOS中断

  

* x86模式

  

* 内存管理和分页

  

* 排程(Scheduling)

  

* 文件系统

  

如果以上四个项目,你都觉得so easy,那么就来尝试一下最后这两个高难度项目吧。

  

### 电子表格

  

电子表格应用程序(如Excel)将文本编辑器和编译器的挑战结合在了一起。

  

在这个项目中,你需要学会如何在内存中表示单元格内容,并实现用于方程式的编程语言解释器。

  

### 电子游戏机模拟器

  

这是一个操作系统+编译器的二合一挑战项目。

  

挑战内容是,编写一个虚拟机,让虚拟机可以像真实的CPU和其他硬件组件一样运行。

  

亨利的建议,是从简单的虚拟控制台入手,比如CHIP-8。

  

## 网友建言献策

  

博客一出,在Hacker News、Reddit上受到了广大码农们的欢迎。

  

有网友说:

  

> 这些项目能让我接触到全不同的领域和问题,比我日常的工作更能激励我。

  

并且,网友们纷纷建言献策,又推举出好几个优质上手项目:

  

* 从零搭建数据库

  

* 光线追踪器

  

* 矢量图形编辑器

  

* 图像解码器

  

* 网页聊天室

  

* pi计算器的位数

  

* 通用终端实用程序(如grep)

  

* FTP客户端和服务器

  

所以,这些项目是否激发了你的灵感?

  

Talk is cheap. Show me the code. 快动手练起来吧~

  

## 传送门

  

博客地址:

  

http://web.eecs.utk.edu/~azh/blog/challengingprojects.html

  

Hacker News讨论(内含更多项目推荐):

  

https://news.ycombinator.com/item?id=21790779

  

《使用Rust构建RISC-V操作系统》:

  

http://osblog.stephenmarz.com/index.html

  

  

量子位 QbitAI 头条号签约

  

关注我们,第一时间获知前沿科技动态