您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

每个程序员都应该尝试的项目

时间:2021-01-12 10:23:32  来源:  作者:

一年前,我发表了“每个程序员都应该尝试的项目”一文。文中列出了每个程序员都应该去尝试的项目,包括一个文本编辑器、太空入侵者游戏、一个 BASIC 编译器、一个小型的操作系统、一个电子表格和一个视频游戏控制台模拟器。这篇文章在网上爆红,一个月内浏览量超过 10 万次。

 

现在,我要加入更多“现代”的项目:

 

  • 光线追踪器
  • 键值存储Web API
  • Web浏览器
  • 股票交易机器人

 

光线追踪者

 

它是 3D 图形!在发表前一篇文章后,我收到很多评论,建议加入光线追踪器。我同意了他们的建议。事实上,这是我在 2009 年学习 C#时最先尝试的一个项目。如果你无法马上理解所有与数学相关的东西或术语,请不要担心,你可以循序渐进,努力取得进步。网上有很多关于光线追踪器的资源优势,在学习过程中,你会获得强烈的视觉感受。

每个程序员都应该尝试的项目

 

光线跟踪器可以生成一些非常好看的图像,只需要 300 行代码!首先,你可能需要支持各种反射、光线和纹理,或者你开始意识到原来渲染一张图片需要几分钟,所以你开始优化。你可以使用线程并行化光线追踪器、减少交集的数量,或者使用分析器来跟踪分配了多少对象并找出瓶颈。

 

创意!我不想再去做另一个优化到半路的光线追踪器,也不想追求超现实的折射效果。相反,我特意降低了分辨率,这样就可以做出实时动画。一个带有下落粒子旋转圆环的动图可以让你在推特上获得不少点赞。我认为独立游戏可以走这条路,创造出独特的艺术风格。请期待我的 8 位复古视频游戏!

 

更多资料:

 

  • 系列书籍之“Ray Tracing In One Weekend”
  • 《计算机图形程序设计入门》
  • 计算机图形入门
  • Python开发光线跟踪器
  • Go光线追踪器优化
  • JAVAScript实现实时的光线追踪
  • 层次包围盒结构
  • 光线追踪宝石
  • 光线追踪器挑战
  • 实时渲染

 

键值存储 Web API

 

键值存储实际上就是一个字典。向它提供一个键,它就返回一个值。你可以添加新键、删除键或更新值。实际上,这就是一个 NoSQL 数据库!不过你可以更进一步,将其作为 Web API,这样你未来的所有 Web 应用程序都可以使用你的数据库服务。

 

我真的很喜欢这个项目,因为用它来创建最基本的“数据库”真的很容易。你可以从使用任何一门编程语言所提供的字典数据结构开始,并在这个基础之上添加一个 Web API。除此之外,你还可以添加更多的内容:性能优化、安全性和多用户、原子事务、数据类型、批处理操作、持久性、故障恢复,以及跨多个服务器运行能力。很快,你就会拥有像 redis 或 Amazon DynamoDB 那样价值 10 亿美元的产品。

 

说真的,打开你的代码编辑器,并使用你最喜欢的编程语言尝试一下。为了获得不同的体验,我用 Go 和 Racket 试过了,并从中获得了很多启发。在一些小型的测试中,我的 Go 版本的性能已经足够好了。

 

更多资料:

 

  • 键值数据库
  • B树数据结构
  • 原子性
  • 如何使用Go构建一个键值存储
  • Badger:超快的Go键值数据库
  • 如果你想深入了解数据库,可以看看这本《自己动手设计数据库》

 

Web 浏览器

 

第一次面试一个软件开发岗位时,面试官问我:“当你在浏览器上输入 Yelp.com 并按回车键时,都发生了什么”?我回答得不好,没有通过面试。于是,我开始了解万物运作原理的旅程。我发现最有趣的是浏览器如何将 htmlcss 转换成渲染好的 Web 页面。这是一个很常见的面试题,但我却因为太无知没有回答好。有一个非常棒的资源,它为很多问题提供了答案。

 

想要设计出一些足以击垮 Safari 或 Brave 的杀手级用户界面?不要抱太大希望了。在你达到那个目标之前,还有很多事情要做!不如让我们来缩小一下范围,假设你有一个 HTTP 库和一个 HTML 解析器,你必须实现自己的渲染器。你不能使用 WebBrowser 或 WebKit 之类的东西。你会怎么做?

每个程序员都应该尝试的项目

 

我的建议是从创建一个基于文本的 Web 浏览器开始。实际上,你也可以忽略所有的格式化问题,忽略所有的 JavaScript 和 CSS。你要做的是使用给定的 URL 执行 HTTP GET,解析 HTML,找到需要显示的文本,并将其显示在屏幕上。你要做的就是这些。

 

获得纯文本之后,你就可以添加其他功能了。你可以添加标签、历史、后退和前进按钮,等等。但到了某个时候,你可能想要的不只是文本……那么祝你们好运。渲染网页视觉元素可能是我永远不会去尝试的事情,或许要等到我有用不完的时间。一步一步来,每次只关注一个 HTML 标记和属性。如果你想尝试这么做,请让我知道是如何进行的。

 

更多资料:

 

  • Browsh:一个基于文本的浏览器
  • HTML标准
  • Mozilla的HTTP文档
  • 让我们来构建一个浏览器引擎
  • Web浏览器工程

 

股票交易机器人

 

现在,你有机会构建一些理论上可以让你变得富有的东西:股票交易机器人!构建一个基础的交易机器人是非常简单的,你可以添加无穷无尽的功能。你甚至不需要了解任何与投资有关的知识。在这个过程中,你至少可以学到如何利用不同的 Web API、如何处理数据,并应用现有或创建自己的交易策略。你可以使用大量的历史数据来测试它。

 

这样还不够?那就用上机器学习或搭建一个Twitch流,让陌生人来控制你的钱。

每个程序员都应该尝试的项目

 

这是一个基础的交易机器人开发路线。首先,找出几家你感兴趣的大公司(如苹果、特斯拉和 Target)。第二,确定何时买进、何时卖出。例如,如果当前价格达到 52 周低点就买入,如果达到 52 周高点就卖出。(千万不要把这个策略用在实际当中,这个策略其实是个愚蠢的策略)。第三,弄清楚如何使用一个免费的 API 来获取股票数据。第四,建立测试环境,让它跑起来!

 

现在可以找乐子了……使用历史数据进行自动化测试,实现几十种交易算法,并对它们进行比较,添加可视化,使用 API 连接到真正的券商服务器,尝试一些机器学习或进化算法,并将成功的交易结果共享到 Twitter 上。

 

更多资料:

 

  • 交易信号
  • trump2cash:一个交易机器人
  • Q学习
  • 如何从零开始构建一个股票交易机器人
  • 免费构建一个人工智能股票交易机器
  • 如何用Python构建算法交易机器人
  • 罗宾汉API指南

 

原文链接:

 

https://web.eecs.utk.edu/~azh/blog/morechallengingprojects.html



Tags:程序员   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  Tags: 程序员  点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  Tags: 程序员  点击:(8)  评论:(0)  加入收藏
什么是shellshell是c语言编写的程序,它在用户和操作系统之间架起了一座桥梁,用户可以通过这个桥梁访问操作系统内核服务。 它既是一种命令语言,同时也是一种程序设计语言,你可以...【详细内容】
2021-12-16  Tags: 程序员  点击:(16)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: 程序员  点击:(20)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03  Tags: 程序员  点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  Tags: 程序员  点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  Tags: 程序员  点击:(14)  评论:(0)  加入收藏
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  Tags: 程序员  点击:(31)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  Tags: 程序员  点击:(42)  评论:(0)  加入收藏
一、Java 线上诊断工具 ArthasArthas是阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。工具的使用场景:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我...【详细内容】
2021-11-17  Tags: 程序员  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(8)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(14)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(51)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(29)  评论:(0)  加入收藏
软件工程专业有Web开发、移动终端开发、大数据开发、计算机系统工程师、视频开发工程师、计算机软件应用工程师等就业方向。第一,Web开发。Web开发包括前端开发和后端开发。...【详细内容】
2021-10-19  辰新   企鹅号  Tags:软件工程   点击:(79)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条