我最近发现了Erlang,现在我正在通过几个教程.到现在为止,我很期待将某些东西作为一个爱好项目来实现.我对另一个聊天服务器并不感兴趣.我想编写更有趣的东西(是的,我知道这是一个相当模糊的术语),这也是可以管理的,所以我可以在业余时间完成它.
有什么建议?
编辑:项目应该优先突出Erlang的优势(并发,分布式).
构建一个分布式系统,实时搜索Twitter提要,并允许任何人从Web前端执行搜索.
构建分布式文件系统.实现分布式B*树或B +树作为此文件系统的基础.在erlang中做.
在步骤2中构建的分布式文件系统之上构建分布式键值存储.
在密钥值存储之上构建分布式Web索引(由分布式Web搜索引擎使用).
构建分布式链接器.高级构建自动化为分布式构建和/或分布式处理提供远程代理处理.
构建一个MMORPG后端,依赖于游戏/玩家状态的分布式存储和用户请求的分布式处理.
对于自己的东西,考虑编写一个简单的服务器; 例如,服务日期/时间请求或者 - 有点发烧友 - 一种仅为静态内容提供服务的HTTP守护进程.
Erlang最好的部分是它处理并发的方式; 锻炼那个.
项目欧拉,当然.
我丰富的待办事项列表中的一些内容既是良好的学习练习,也有助于整个erlang社区:
描述所有可用的Key/Value商店:
编写一个库,用于测试各种K/V存储的插入,查找,删除,搜索时间
创建人们可以运行的基准测试套件
使它与ets,dets,proplists,gb_trees,dict,orddict,redblack trees,bdb,tokyocabinet,...
制作漂亮的图表
让您可以轻松更新,贡献并运行任何人的计算机
编写一个使用命名参数的新io_lib:format例程:
io_lib:nformat("你好〜{name} s~n.",[{name,"Bob"}]).
如果格式字符串的语言发生变化时参数的位置发生变化,这对国际化非常有用.
扩展erl -make(make.erl)
允许添加代码路径(这样您就不需要执行erl -pa LibraryPath -make)
在实现这些行为的模块之前编译/加载行为模块
正确处理分层模块(特别是输出路径)
这并不完全回答你的问题,但是如果你正在寻找一个用Erlang编写的有趣的免费开源项目,你一定要查看CouchDB.来自网站:
Apache CouchDB是一个分布式,容错且无架构的面向文档的数据库,可通过RESTful HTTP/JSON API访问.除了其他功能之外,它还提供了具有双向冲突检测和解析功能的强大的增量复制,并且可以使用面向表的视图引擎进行查询和索引,其中JavaScript充当默认视图定义语言.
CouchDB是用Erlang编写的,但可以从提供HTTP请求的任何环境轻松访问.有许多第三方客户端库可以使各种编程语言和环境更加容易.
该CouchDB的网站有更多的细节.快乐的编码!