不要重新发明轮子

如果您喜欢这篇文章,可以在我自己的博客上阅读此文章。

重新发明轮子是一个成语,但由于使用了非常隐喻而无效。 这是因为轮子是在整个历史上已经成功地重塑了无数次的事情之一。

我们使用的材料已经从无数类型的石材和木材改变为无数的金属合金和碳基物质。 车轮的内容和比例已更改。

从某种程度上来说是圆形,完整和宽大的轮子。

到具有数百个辐条的完美圆形,薄而空心的辐条。

车轮与之交互的组件(例如轮胎和车轴)发生了变化,促使成千上万的车轮重新设计以与之配合使用。 使用该车轮的地形和机械也发生了巨大变化,从而引发了许多其他车轮发明。

确实,即使车轮的基本形状也不安全,从好的旧圆形车轮到方形的车轮都有变化。

设想数以百万计的车轮的重新发明及其所取得的进步的最好方法是思考如何一直使用它。

轮子已经从略微减轻劳力的好奇心变成了我们赖以生存的重物,以安全地降落重达数千吨的飞行堡垒,并携带大规模毁灭性武器,如果这些轮子碰巧失效,它们可能意味着文明的终结。

车轮现在可以足够小,以至于无法被人类感知,并且具有足够的通用性,可以在任何类型的地形上运送坦克,
足够强大,足以支撑火车以每小时500 km / hr的速度连续奔跑数小时,并且足够聪明,可以使机器人穿越其他行星无法预测的地形。

对于发明第一个轮子的家伙和女孩的道具,考虑到当时的情况,他们做得很好。 但是,我很高兴当我的出租车到达时,不会在靠近那些轮子的地方使用任何东西。

让我们将其重新绑定到编程中

我希望对隐喻的解构能促使人们想到这种成语在软件方面是多么毫无根据。 有史以来创建的最广泛使用和必不可少的软件是对车轮的重新发明 。

Linux是Unix的翻版,MariaDB是MySQL的翻版,MySQL是PostgreSQL / OracleDb的翻版。

现代C ++是C ++的重塑,它是C的重塑(是B的重塑,是BCPL的重塑)。 Rust是现代C ++和C的重塑。Clojure是LISP的重塑。 LISP是IPL和Lambda演算的重塑。 Haskell是System FC的重塑,是System F的Lambda演算的重塑。 DOT是OO的重塑,Kotlin是Java的重塑。

Vim是Vi的重塑。 Wayland是Xorg的重塑。 Systemd是大约500种不同软件的重制。 Ubuntu是Debian的重塑。 Arch是Gentoo的重塑,甚至OS X的核心也是BSD的不幸重塑。

我可以继续努力,尽我所能……

软件的许多进步并不是通过添加到现有的代码库来实现的,而是要在代码库上重申并提出更好的东西。 这就是为什么在GitHub上每个流行的存储库都有数百个fork的原因。 对于可以想象的任何用例,您都有数十种工具可供选择。

根据自己的需要发明自己的轮子,而且,谁知道,也许最终公众会认为这是一个更好的轮子。

尽管计算机科学中的大多数进步恰恰与重新发明轮子有关,而不是创造出全新的东西,但人们常常不愿“重新发明轮子”。

更改是渐进式的,我们会重复重申一个已经存在的概念,并对其进行缓慢的修改并使其变得更好,直到您甚至无法理解从最初的状态到现在的状态。 令人惊讶的是,这样做花了我们很多时间,这是编程的好处,没有资源短缺,无论您的发明多么疯狂,您都可以创建它。

相反,我们应该关注的是,告诉人们如何以及何时重新发明轮子。 我已经允许自己整理一个快速清单。

当没有轮子适合您的购物车时重新设计轮子

就是说,与其设计一个劣等的软件或产品来应对现有的库,不如创建所需的库或工具,否则很可能还会有人需要它。

这种方法可能需要更长的时间,但它可能很有趣并且可以带来更好的产品。

显然,您必须有一定的灵活性并选择自己要打的仗,否则,您最终会成为坚持要求他们必须编写自己的列表和向量的C个“程序员”之一,或者是参与其中JavaScript“开发者”之一每天有100,000次以上的is_odd库下载。

画线的地方是一个悬而未决的问题,没有一个答案。

一个很好的例子是Julia ,它是一种编程语言,除了三个方面都与Python非常相似:

  • 无需虚拟环境即可轻松部署。
  • 向量运算要快得多
  • 设计时考虑了大规模并行性。

它结合了虚拟环境, Cython ,正确使用C / C ++库,一些编码准则以及一点耐心,可以“理论上”完成工作。

但是茱莉亚(Julia)开箱即用地完成了这些事情,而且只是一种工作。 最终节省了大量时间,并使开发变得更加愉快。 它可能是21世纪最神奇的语言之一。

如果最近没有重新发明过,请重新发明轮子

重新发明轮子的另一个原因是,最近没有人尝试这样做。 这可能意味着当前的车轮非常好,不需要进行重大改进,但这通常意味着有很多人想要一个更好的车轮,而他们却没有时间或意愿制造。

由于我们当前的技术和思维框架无法找到更好的解决方案,因此常常会以一种不完善的方式“解决”问题,然后将其抛在一边。

纵观几年后的此类问题,人们通常会发现,该技术已达到高速发展,并且可以以更好的方式解决它们。

图像识别就是一个很好的例子,图像识别被认为是“经典”分类器的工作。 这些分类器进行了大量的改进,到2010年,使用fisher内核之类的东西效果很好。

从精确度,可训练的标签数量和训练时间的角度来看,您距离用来检测癌性肿瘤或驾驶汽车的东西还很远,它介于聪明的鹦鹉和大象之间。

直到有人想到让不那么流行的卷积神经网络轮转以使用现代GPU并改进最初在90年代开发的一些图像识别模型。

著名的AlexNet&Co于2012年问世,在短短几年内,它引领了当今令人惊叹的图像识别技术的发展。 如今,在中等规模的数据集上,我们实际上可以胜过人类。

如果车轮是专有的,则重新设计车轮

许多伟大的开源项目就是这种情况,例如Linux,GCC和git,它们只是对已有软件的重新发明。

但是,它们在某些方面更好,并且是开源的,这意味着更多的人使用它们并为它们做出了贡献。 从而使它们成倍地变得惊人,Swift成为各地的上乘选择。

如果您认为这很有趣,请重新发明轮子

重塑完美的车轮也没有错。 您可能会失败,但是您会更好地理解为什么选择当前设计,并且您可能会学到很多。

毕竟,已经解决了许多有趣的问题,但是再次解决它们可能非常令人愉快。 数以百万计的人竭力证明勾股定理或创建“新的LISP”,可以说,大多数人最终只是重新发明了更重的轮子或类似轮子,但只要他们喜欢它,就不会有任何危害。 。

如果您的车轮稍微好一些,那么您刚刚做了一些可以通过做自己喜欢的事情来帮助人类的事情。

结论

出去那里,重新发明轮子。 因为它肯定可以做一些改进。

每当有人告诉您您所做的事情没有用时,请提醒他们您所做的事情是我们领域不断发展的基本过程之一。

只要您认为自己要解决的问题,就已经由更好的人以更好的方式解决了。 请记住,一个31岁的书呆子对天体物理学或数学知识不多,只有几千万美元,却以数十美元或数十亿美元的预算羞辱了NASA,CNSA,ESA,Roscomos,美俄军方和许多其他“享有声望”的组织。数以千亿计的PHD和数十万名工程师为之工作。

通过发明一种价格更便宜,功能更强大,更安全,更简单,更快速制造的火箭 ,它可以在一颗行星的厘米精度范围内降落。

因此,也许您在开发一个更直观,更漂亮JavaScript绘图库,一个更快的Python JITC,一个更便宜的ALU生产,一个更好的shopify版本或一个更高效的查找表实现方面大胆尝试,不是吗?毕竟牵强。

如果您喜欢这篇文章,您可能还会喜欢:

  • 停止将来的校对软件

翻译自: https://hackernoon.com/please-reinvent-the-wheel-7690ccc454bf

不要重新发明轮子

不要重新发明轮子_请重新发明轮子相关推荐

  1. 美国人发明电子计算机是哪一年,电子计算机是哪一年发明的_是谁发明的

    电子计算机简称电脑,由美国人莫克利.艾克特在1946年发明,在当时这第一台计算机重量是30吨,占用地面的面积是170平米,基本上无法轻易搬动,而且运算速度极慢,每秒只能进行五千次运算,仅仅是用来计算弹 ...

  2. 不要重新发明轮子_是否重新发明轮子

    不要重新发明轮子 Design is a profession that thrives on creativity. Us designers are constantly trying to in ...

  3. python安装轮子_如何安装这个轮子?

    我设法安装了pip,但当我使用pip安装下载的控制盘时,它会打印:C:\Python34\Scripts\pip install pygame-1.9.2a0-cp34-none-win_amd64. ...

  4. python安装轮子_自己动手造“轮子”---python常用的几个方法

    前言:由于工作内容的原因,经常需要些python脚本,久而久之,发现有一些方法经常用到,于是就自己动手编辑了一些常用的.大众的.通用的方法.小弟不才,但也希望能为开源做做贡献. 最后再附上代码哈: 一 ...

  5. 发明计算机作文300字,发明作文300字

    发明作文300字 导读:作文简介,有一天,我回到外婆家,外婆杀了一只又大又肥的鸭子,我和妈妈还有外婆一起拔鸭毛,我拔了一根翅膀上长长毛... 如果觉得写得不错,记得转发分享哦! 欢迎大家阅读<发 ...

  6. 计算机发明审查指南,涉及计算机程序发明的客体审查基准剖析

    一.引言 专利法第二条第二款对授予专利权的客体做出了规定"专利法所称的发明,是对产品.方法或者其改进所提出的新的技术方案",然而"技术"是一个较为抽象的概念,其 ...

  7. 推石磨机器人_[我爱发明]机器人推石磨豆花机 豆花西施(发明人邹属民)

    本视频由CCTV提供 [我爱发明] 20151113 豆花西施 本期视频主要内容: 来自四川泸州的邹属民,发明了一种由机器人推石磨制作豆花的机器.整套机器人系统,采用纯机械齿轮连杆结构,没有任何电子控 ...

  8. 二十年后我发明了保姆机器人作文_我想发明保姆机器人作文700字

    随着我们社会的进步,许多高科技产品孕育而生.我也想来发明一种机器人,可以帮助人类干活. 我想发明一种机器人 --"保姆机器人."妈妈说我总是爱异想天开,我可不这么认为,我们生活在高 ...

  9. 赵铁安烧饼机器人_河南农民发明烧饼机器人历时六年花费达60万元,有人出20万想买...

    2016年9月23日,在河南省洛阳市老城区,农民赵铁安正在调试机器.六年前,赵铁安开始琢磨为妻子发明烧饼机,他说发明这个"饶饼机器人"只想让妻子减轻劳累.赵铁安一边干活一边吃着的就 ...

  10. 赵铁安烧饼机器人_洛阳市民发明打烧饼机器人

    □记者李曼文图 本报讯机器人服务员.机器人保安--随着电子智能技术的发展,越来越的人工智能项目融入到了我们的日常生活当中,智能机器人的出现已经不再是一个新鲜的话题,然而,机器人烧饼师傅这个新鲜的组合大 ...

最新文章

  1. 最详细的Vue Hello World应用开发步骤
  2. 计算机应用基础寒假作业,计算机应用基础理论试卷寒假作业.doc
  3. 在二维数组中查找一个数
  4. mysql修改用户密码1133_后台修改mysql用户密码后无法连接
  5. 用java自动化访问百度测试_java+eclipse+selenium+百度搜索设置自动化测试
  6. 5 可隐藏的侧栏_家居中5种隐藏式设计,实用、高级、省空间
  7. 华为云服务器入门初体验
  8. 考研数学一之高数上册学习计划
  9. 微信微订货店:品牌支持,走在同行业的前列。代理,仅仅是寻求双赢
  10. 一公司的面试题(泛型和数组的问题)
  11. sass用法快速入门
  12. Python自动化办公之操作Excel文件
  13. 技嘉 B85-HD3 4590 OC 引导文件 基本完美
  14. python标准库os中用来列出_Python标准库os中的listdir()函数用来列出指定目录中
  15. java栈和队列的区别是什么意思_java中栈和队列的区别是什么?
  16. 去除字符串中所包含的空格(包括:空格(全角,半角)、制表符、换页符等)
  17. sql字符串转时间-日期区间查询
  18. 开发中mock什么意思_开发中
  19. 安徽工业大计算机学院,安徽工业大学计算机学院来计算机学院交流学生工作
  20. 视频知识点(14)- 来,咱们聊一聊 I 帧和 IDR 帧的区别

热门文章

  1. Google浏览器插件
  2. mysql 关于 不可重复读与幻读的解决方案
  3. crr树不同步数期权定价 matlab,CRR二叉树模型及例题
  4. python 断言详细讲解用法及其案例_python断言_python 断言_python断言案例 - 云+社区 - 腾讯云...
  5. 客户端之H5拉起第三方app并跳转到指定页面
  6. Android 打开第三方APP
  7. 从html源码中获取图片链接地址和视频链接地址
  8. python josn数据解析
  9. GPIO推挽输出和开漏输出模式区别详解
  10. SAP-MM-PA精解分析系列之供应商(02)-账户组解析