如果你开始接触编程,肯定会听说“框架”这个词,“Django”、“Spring”、“TensorFlow”、“Flask”这些名字也随处可见。我一度被这些概念困扰,毕竟它们不像clojure,kotlin一样是名字奇怪的编程语言,而是“基于某种语言”;它们的介绍里会开门见山地说“这是一个框架”,然而你此时并不知道什么是框架。

  我也可以开门见山地说,框架就是一个库(用于import或include之物)——但你需要重新思考什么是库。

  举个例子,用python写一个网页服务程序,完全可以不使用任何框架,python自带的库(urllib)完全足够。如果是教程里的简单例子,代码可能仅有十几行。但是当你想做更大、更复杂的东西,你就会发现代码开始膨胀,重复的代码越来越多,你意识到应当把重复的部分单独出来写成一个函数,然后用不同的参数调用它。当这些函数也多起来的时候,你意识到应当把这些函数放到一个额外的文件里。于是你原本的文件由于调用了函数,会变得非常精炼:实现不同的服务程序,互相重复的代码变得很少。此时你就可以称那个存放了一堆函数的文件为一个“框架”了。

  在完成其他任务的时候,这一过程是一致的:把重复的工作打包成一些函数,装进一个单独的地方。但是之所以有“框架”这个名字,是因为相比之前,所用的代码在整体上换了逻辑,写代码的重心发生了改变。你也不能用先前的逻辑写代码了,因为可能一堆if else判断被字典代替,不同语句的参数变成了同一个函数的参数……你得重新学习这些风格,这仿佛是“语言中的语言”——语言是对使用机器的抽象,而框架是对使用语言的抽象,不过每次抽象都是要花费额外的精力的。

转载于:https://blog.51cto.com/13535617/2113998

【新手向】什么是“框架”?相关推荐

  1. 从新手小白入门MFC框架-黄强-专题视频课程

    从新手小白入门MFC框架-806人已学习 课程介绍         微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class li ...

  2. Java新手如何学习三大框架

    Java新手如何学习Spring.Strurs.Hibernate三大框架? 1. 学习方法 1.1 给我一个可以运行的学习Demo 曾经有过面向百度学习框架的同学,一定会有这种感受,哗啦一搜,各种框 ...

  3. orm框架有哪些_java技术哪些是必学的?

    我们接触过java需要的小伙伴们都知道java是一门强大而又复杂的编程语言,现如今在互联网行业,java的身影随处可见,可能刚学习的小伙伴们会被java语言庞大的体系图吓到,不过知识毕竟是一个积累的过 ...

  4. 说说自己写PHP框架的一些感受

    说说自己写PHP框架的一些感受 个人感受 我以前觉得,造一个框架,不是很难,其实我现在也是这么认为的,不是说我到底有多么厉害,其实我仅仅是觉得,造出来不难,恰恰是造出来之后,你要去 "养育& ...

  5. Slim 框架源码解读

    0x00 前言 Slim 是由<PHP The Right Way>作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim ...

  6. python中wx是啥_设置wx.框架大小(wxPython wxWidgets)

    我是wxPython新手,在设置框架和窗口(widgets)的给定大小时,我发现了一些问题.我把这个问题隔离到一个最简单的例子中,我试图创建一个250x250像素的帧.在 运行代码我得到一个实际尺寸为 ...

  7. 魅族手机使用应用沙盒一键修改位置数据

    之前文章介绍了如何在安卓手机上安装激活XPOSED框架,XPOSED框架的强大功能大家都介绍过,能不修改APK的前提下,修改系统内部的参数,打个比方在某些应用情景,大家需要修改手机的某个系统参数,这时 ...

  8. 红米手机使用应用沙盒一键修改imsi信息

    较早前文章介绍了怎么样在安卓手机上安装激活Xposed框架,Xposed框架的极强的功能各位都清楚,能够不修改应用程序的前提下,修改系统底层的参数,好比在某些应用范畴,各位需要修改手机的某个系统参数, ...

  9. 程序员为什么会有职业瓶颈?

    寒冬的思考 2019年初,俗话说"金三银四".这时候面试不知道你们慌不慌张.因为2018年冬天是寒冷的.其实18年的低温持续时间不算很长,我也没有披上军大衣.但是突如其来的互联网寒 ...

  10. PHP程序员的学习路线

    最近刚好有一个同学对编程很有兴趣,所以前来询问我该如何学习,从哪一步学起.刚好我自己也想总结一下,也是给他,也是检验一下自己,看看自己的学习之路是否正确. 一.入门篇 1.关于编辑器 (1)我们要学习 ...

最新文章

  1. Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException
  2. 在Android中,如何以编程方式在dp中设置边距?
  3. java.util.function包
  4. 下次激活策略10_服装店营销策划方案,简单策略让服装超市提升10倍业绩
  5. 环境搭建:Windows系统下Nacos集群搭建
  6. visio 科学图形包_如何科学地做笔记
  7. ★LeetCode(1025)——除数博弈(JavaScript)
  8. tensorflow2 目标检测_BJX 系列 小型远距离检测型光电传感器代理报价
  9. opencv基础--图像模板匹配
  10. python使用sax实现xml解析
  11. 微信小程序-基于云开发 CMS + Vant Weapp 电商 Demo 来了!
  12. Vijos P1848 计数问题
  13. 几种镜像恒流源电路分析!
  14. [转]王飞跃:交通拥堵多因管理水平等所致
  15. maven创建web项目
  16. 我们学校一牛老师的语录
  17. 学习笔记 | 建站流程
  18. D. Factorial Divisibility
  19. Android支付接入:Google In-app-Billing
  20. 服务器装sata硬盘,服务器有sata硬盘吗

热门文章

  1. 洛谷P1182 数列分段Section II 二分答案
  2. ant 的 copy 使用
  3. Hawk使用补充说明
  4. centos7安装mariadb
  5. 怎么修改gif图片中的文字[实用]
  6. iOS发布证书找不到了 回来整理一下
  7. vista系统 金山词霸 不取词翻译
  8. 辨别 Windows CE, Windows XP Embedded 和 Windows Mobile
  9. CYQ.Data.ProjectTool 项目配置工具发布(包源码)
  10. java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统--配置中心服务化和高可用...