• 青海新闻网—青海门户 主流媒体 2019-07-08
  • 北京学习十九大精神--北京频道--人民网 2019-07-08
  • 李君如:“新时代”是一个有依据、有内涵的理论创新成果 2019-07-04
  • 韩媒:韩美商定暂停原定8月“乙支自由卫士”联演 2019-07-04
  • 铜陵市:推进基层参与式治理 创新城市社区居民自治路径 2019-06-30
  • 蔡英文将二访巴拉圭?台媒:主要是想过境美国! 2019-06-28
  • 莎普爱思 关注白内障中国行 2019-06-28
  • 朔州:为母亲河清淤化污 重还塞上绿洲美丽 2019-06-16
  • 蔬菜-热门标签-华商生活 2019-06-16
  • 过年如何时尚返乡  12种男版围巾系法送给你 2019-06-11
  • 政策推进汽车零部件产业整合加速 2019-06-11
  • 高校雪景图大合集来了,哪一张惊艳了你? 2019-06-09
  • 融资结构巨变 “大牛市”将再次上演? 2019-06-08
  • 安徽中北部遭遇强降雨 十几个县市发布暴雨预警 2019-06-07
  • 女婴遗弃在草丛里 热心市民与民警接力救助 2019-06-06
  • 您好,欢迎访问郑州佳豪科技官方网站!

    新闻中心

    哪些程序是每一个程序员都应该尝试的

    2015/2/6 10:18:41 浏览次数:1352 来源:CSDN

    武林大会和五子棋大师 www.qzerz.tw 在Quora上有这一个讨论:“哪些程序是每一个程序员都要写的?”PHP100在这里为大家整理了一些较为完整的答案,仅供参考。


     


    认准自己喜欢什么

    如果你像我一样,对系统和底层结构感兴趣,我推荐你尝试下面的事情:

    网络设计:编写一两个服务器程序,可以从静态文件HTTP服务器或者一个SMTP服务器开始。如果你想深入了解并发性,那就学习些一个多线程的IM服务器或游戏服务器。再进一步的话,就试着实现节点探索系统,并用它去做一些有用的事情,比如在无服务器情况下实现局域聊天的服务。


    存储系统:创建一个简单的文件系统。FUSE可以帮助你抽象出内核的接口,你要做的就是实现基本的文件系统功能。一致,可靠并可扩展的转化一个复杂的路径结构不是一件简单的事,而且还有很多边界情况需要你去考虑。


    汇编语言:即使你没有打算在一个实际的项目中用上它,你也需要了解计算机是如何工作的。用汇编语言写一个程序或算法(比如快速排序),然后尝试去优化它。接着实现setjmp()和longjmp(),可以让你对它们有新的理解,和你在高级语言中学到的内容是不同的。


    操作系统的概念:写一个malloc()和free()函数可能没有你想得那么简单。你思考过它们为什么有时候会失败吗?写一个线程的调度算法,你就会明白很多关于锁和并发的问题。


    语言:为某一种语言写一个编译器或解释器,甚至你可以创造你自己设计的编程语言。写出可以执行的有效代码是一个好的开始,下一步就尽可能地优化它们。


     

    对于那些对游戏开发感兴趣的朋友,我推荐你做另外一些尝试:

    图像与图形:你肯定希望你的游戏界面很好看,那就学习写一些简单的OpenGL程序。先做一个旋转的立方体,然后对它加一些可以互动的东西。根据规则,做一些东西,然后用提供的函数让它看起来像其他的东西,比如炽热燃烧的羽毛或雨滴。只要你有足够的想象力,你就可以在屏幕上创造任何的形象。


    操作系统概念:游戏大多有着复杂的系统,系统中的每一件事都要在特定的时间以特定的方式展现出来。游戏的背后有很多玩家看不到的东西,但是游戏的设计者必须可以响应玩家在游戏中的请求。


    网络设计:如果你希望人们可以在不同的机器上一起打游戏,你就要想出一种方法实现他们之间的联系。要设计一个快速,允许再扩展的协议。


    安全性:玩家总想通过作弊取的好成绩,所以安全性在这里就显得很重要。提前想到玩家可能对你程序的修改,然后建立一些规则限制他们这样去做。比如,虽然你不能阻止玩家读取游戏的内存,但你可以通过经常移动那些敏感的数据,让它变得很难。


    人工智能:大家都喜欢和其他人一起玩游戏,或许你可以让他们和机器人一起进行游戏。


    上面只是提到了两个方向,或许你是对数据处理,网页设计或计算机视觉感兴趣,你也可以尝试在那些领域的项目和技术。


     


    如果你想学的更多,那就写一个编译器吧

    编译器里可以学到:

    1. 词法分析和语法分析;

    2. 汇编语言;

    3. 优化代码;


     

    我会学习这些:

    1. 服务器/浏览器/代理服务

    2. 优化编译器

    3. 垃圾回收机制

    4. 内存分配

    5. 命令解析器(shell)

    6. 驱动

    7. 编辑器

    8. 生成文件

    9. Lambda calc解释器


     

    每一个程序员吗?反正我会从这些做起:

    1. Hello world;

    2. 写一个基本的程序:打印1-100中除了可以被3整除的所有整数;

    3. 一个要用到数组的程序;

    4. 一个要自己写函数的程序;

    我认为其它的建议都过于高级了,特别是对于那些非软件工程师,只是在其他行业中用简单的程序实现某一目的罢了。

     
    武林大会和五子棋大师
    固定电话
    0371-56040999
    0371-55907386
    手机号码
    13938286690
    13014533772
  • 青海新闻网—青海门户 主流媒体 2019-07-08
  • 北京学习十九大精神--北京频道--人民网 2019-07-08
  • 李君如:“新时代”是一个有依据、有内涵的理论创新成果 2019-07-04
  • 韩媒:韩美商定暂停原定8月“乙支自由卫士”联演 2019-07-04
  • 铜陵市:推进基层参与式治理 创新城市社区居民自治路径 2019-06-30
  • 蔡英文将二访巴拉圭?台媒:主要是想过境美国! 2019-06-28
  • 莎普爱思 关注白内障中国行 2019-06-28
  • 朔州:为母亲河清淤化污 重还塞上绿洲美丽 2019-06-16
  • 蔬菜-热门标签-华商生活 2019-06-16
  • 过年如何时尚返乡  12种男版围巾系法送给你 2019-06-11
  • 政策推进汽车零部件产业整合加速 2019-06-11
  • 高校雪景图大合集来了,哪一张惊艳了你? 2019-06-09
  • 融资结构巨变 “大牛市”将再次上演? 2019-06-08
  • 安徽中北部遭遇强降雨 十几个县市发布暴雨预警 2019-06-07
  • 女婴遗弃在草丛里 热心市民与民警接力救助 2019-06-06
  • 第戎景点介绍 北极奇迹投注 甘肃快三走试图今天 佐伯阿汉-塔什干火车头 重庆时时彩 历史记录 圣埃蒂安VS尼姆 新疆时时彩官网 绝地求生刺激战场体验服 吉尼斯世界纪录 弗罗西诺内球场