# 4.2 Evaluate existing technological functionalities and incorporate them into new designs 评估已有的技术成果并将其纳入自己的设计当中

At all levels, students should be able to use well-defined abstractions that hide complexity. Just as a car hides operating details, such as the mechanics of the engine, a computer program’s “move” command relies on hidden details that cause an object to change location on the screen. As they progress, students should incorporate predefined functions into their designs, understanding that they do not need to know the underlying implementation details of the abstractions that they use. Eventually, students should understand the advantages of, and be comfortable using, existing functionalities (abstractions) including technological resources created by other people, such as libraries and application programming interfaces (APIs). Students should be able to evaluate existing abstractions to determine which should be incorporated into designs and how they should be incorporated. For example, students could build powerful apps by incorporating existing services, such as online databases that return geolocation coordinates of street names or food nutrition information.

所有阶段的学生都应该能够使用定义明确的抽象来隐藏复杂性, 就像汽车隐藏了发动机的机械结构细节, 或者像电脑程序将屏幕中的对象移动细节隐藏在命令行下面.

  1. 随着学生成长, 学生应该懂得将预定义的函数纳入他们的程序设计中, 并且理解为什么他们不需要知道这些预定义抽象函数背后的实现细节
  2. 最终, 学生能够理解调用现成抽象函数的好处并且能够自如地使用它们, 这些抽象函数包括由他人创建的“库”以及 API 接口. 学生能够评估和挑选现有的抽象功能并且懂得如何将其纳入自己的程序设计当中. 比如说, 学生在创建软件程序时, 懂得纳入已有的网络服务, 比如能够根据街道名称返回地理坐标的在线数据库, 或者能够返回食品营养信息的在线数据库