代码之家  ›  专栏  ›  技术社区  ›  BenAlabaster

关于编程理论在现实世界中的实际应用,有什么好的资源吗?

  •  13
  • BenAlabaster  · 技术社区  · 15 年前

    有人能推荐任何好的材料来提供 现实世界视角 关于编程理论?我是一个长期从事软件工程师工作的学生。当我说现实世界时,我的意思是“我为什么要使用接口?”这不符合干巴巴的原则吗?这看起来像是多余的不必要的元代码。“(这是今天出现的另一个问题的含义。)似乎这个学生班的教授没有给出将它们作为“你使用它”的明显商业理由,所以你的应用程序的主要部分不依赖于你的一个或多个组件的特定实现。例如,可以在不影响应用程序其余部分的情况下替换或升级的数据存储,或者可以在出现更好的应用程序时替换外部设备的插件。”

    我注意到学生有一种趋势,即达到他们的CS课程的关键点,并开始在各种问答网站上提问为什么他们应该使用某个范例,他们了解什么和如何使用,但他们对为什么它实际上有用一无所知,并在课程的其余部分思考“好吧,那又怎样?”通常情况下,课程都是非常学术的,没有任何现实世界的背景。我自己也在那里,我希望在学校的时候我有一个像StackOverflow这样的资源。

    我希望这个问题能为学生提供一份有用的阅读材料清单,帮助他们为课堂上(或其他)学习的各种编程范例和模式提供现实世界的背景,帮助他们理解在现实世界中,什么时候以及为什么应该关注某些模式。

    8 回复  |  直到 13 年前
        2
  •  2
  •   Norman Ramsey    15 年前

    这个 Pragmatic Programmers 是的,很实用,但是他们精通CS理论,知道何时以及如何应用它。

        3
  •  1
  •   Khaled Alshaya    15 年前

    好吧,说到我自己是一个学生:)

    我觉得斯特劳斯鲁普的论文很有趣,而且 实际的 而不涉及无用的细节。以他的论文为例 Object Oriented Programming 是我读过的最好的读物之一。它从最基本的编程思想,到通过OOP思想的模块化编程。他展示, 为什么? 我们是否需要在简短的代码片段示例中使用这些编程范例?这些是他依次经历的范例:

    • 程序化编程数据隐藏
    • 面向对象的数据抽象
    • 编程(大部分是关于OOP的)
    • 参数化类型

    另一个精彩的阅读是 Sixteen Ways to Stack a Cat . 一 十六 写入堆栈的不同方法 C++ (语言实际上并不重要)。拿着这些,比较我所知道/听说的大多数范例的优缺点。

        4
  •  1
  •   JSmyth    15 年前

    不幸的是,缺乏经验的程序员通常不会意识到他们有问题,直到他们自己遇到问题。我认为在现实世界中看到问题的最好方法是让学生有“现实世界”的问题,这些问题可能最容易在教学CS校长的教室外发现。(我想在这方面软化会被教得有点不同)

    代码完整+头部优先设计模式是我建议每个大学生在毕业前阅读的两本书。

    哦,而且他们至少应该有一个完成(或大部分完成)的课外项目。网站、游戏、实用程序等等。

        5
  •  0
  •   miku    15 年前

    代码完成。 http://cc2e.com/

        6
  •  0
  •   ChrisW    7 年前
        7
  •  0
  •   MandoMando    15 年前

    我会用以下方法让球滚起来:

    • 设计图案,由“四个聪明人”设计。
    • 代码完整,很好地解决了问题。

    通常,这些模式是由于维护和开发大型代码的问题而开发的。程序员总是很紧张,没有人认为我们需要更多的时间。大多数程序员在整个软件生命周期中不会使用相同的代码,因此需要有一种方法让程序员不必读取几百万行代码就可以理解彼此的代码。

    现实建筑类比: 你不能建造没有接缝的建筑物。否则,它会随着冷/热的加热而开裂和断裂。界面是两个可能刚性实体之间的关节。
    你把它做成模块化的,这样改造就成为可能。 你不是用同样的材料做的。(水管不是木制的) 你设计它是为了让多个承包商可以同时在建筑上工作。 使用该建筑的人只是想使用它,并不关心如何使用。 你建造了它。 检查大楼的人和建造大楼的人是同一个人。

        8
  •  0
  •   Andy Dent    15 年前

    Uncle Bob The Apprentice 软件工艺系列。有一个很好的叙事风格,我认为学生可以与普罗塔伽主义者,因为他/她从一个低级学徒开始。