热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于开源集中在中低端市场的我的看法

2019独角兽企业重金招聘Python工程师标准来这不久,像宏哥发表的一些有质量的老帖子,都没有翻过,今天看到别人翻出的关于开源产品

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

来这不久,像 @宏哥 发表的一些有质量的老帖子,都没有翻过,今天看到别人翻出的关于开源产品集中在什么样的市场的帖子,我也就此话题发表下我的观点。

首先,关于@宏哥 的原帖内容,我表示认可。因为,所谈的内容属实,从某个角度上得出的结论也正确。

下面我从其他的角度来谈谈开源和市场的问题。说开源和商业公司闭源的最大区别,我觉得应该是面向的目标不一样。开源之所以能称为开源,不单单是源码 开放,更多的在于不同群体的组织化开发行为。例如,你一个人A,不算,你不仅A了,还传播A,导致一群人A,那么你就犯法了。但一群人A,口味总有差异。 要想能传播的A,至少也是德艺双馨的陈摄像师或空老师的作品。即便这样,也会因为有特定人群的不同品味表示拒绝。

而商业公司,公司化行为就是赢利,因此存在非常明确的客户或客户群。你要什么我给什么。我的目标就是让你爽。别人爽不爽另谈。

由此,开源通常是在两种情况下,具备良好的开发和使用价值。

1、明确的一个共用目标。例如IM。还有视频编解码。大家可以了解一下XVID,和DIVX的历史就知道了。现在流行的FFMPEG,你们看到的国 内绝大多数的无论是网页的视频播放,还是各种播放器,可以肯定,几乎百分百有开源的代码在里面,如果是泛PC平台,不是特定的嵌入式平台。我甚至相信,百 分百的这些商业企业,只是做了局部修改,核心是否有特定优化都很难说,原因不是技术。

2、非明确目标,但存在共性的通用件。例如linux和阿帕奇本身。mysql也算成功的一个。从我对数据库的定义来看,mysql也是个数据库。如同只有VFS的OS,仍然是个OS一样,即便功能不足,但基本功能都有,MINUX也是OS。我也是从这个学起的。

这些非明确目标的通用件,如果作为商业公司来看,确实无法直接拿来用。因为这些通用件并不是为了特定客户的需求所设计的。而是作为一个平台化的东西,更通用的给予最终开发者以方便和支持。

别人为什么要参与你的开源项目,因为你的开源项目能和自己60%-80%的设计目标或所需要的底层接近,由此,参与到项目中开发,并针对自己的目标中,别人也需要的东西,组织进开源项目。

由此,总结,开源的价值在于重叠各个开发目标中的通用型,降低了开发人员的成本这个很难说,但可以有效的形成一些事实标准,方便后续的面向具体客户的业务响应。并针对共性部分进行高质量的设计,这块反倒是闭源代码项目的劣势。

而对于中高低端市场,这个划分规则,每个人有每个人的看法。这里并不想参与讨论最正确的结论。就我的态度,市场本身没有中高低端之分。但从收益,和技术复杂度,可以按照两个标准分。

1、收益多少。

2、技术难度大小。

从产品收益多少来看,如果把开源的代码直接对应,那么几乎可以肯定是低端的。既然都开源的代码,拿来就能用的话,怎么可能还有什么产品收益呢。而商业领域则不同,会有定制化的工作涵盖,包括定制化的稳定性检测,性能扩充等。不过这些工作又有多少是基于非开源的代码之上呢?

如果不谈收益,谈技术难度大小。例如,淘宝的后台系统,可以说相当复杂了。另外,还有一个实际应该比较复杂,但是究竟怎么样,我不知道的系统,铁路 订票网站。不谈后者,就谈淘宝的去这个化,去那个化。如果想去这些商业软件,不依赖开源的技术,重启炉灶,如同你想A,打算重新配DNA育种,过18年后 再找陈老师拍A,一样不靠谱。

如果从技术难度上来看,还有一个就是这个项目的通用型。GCC,不单单是个C编译工具链。这就是开源的。GCC可以说是支持平台最广泛的。难道技术复杂度不够高?

由于开源的自身的特点,因此更多的强调共性方面的技术开发难度和深度。而不是特性方面。由此,在独立拿出来,和特定目标的商业软件比较,是没有可比性的。

从哲学辩证的角度来看,没有优点,缺点之分。从项目主持,运行角度来看,最小的投入,最大的产出,是目标。由于开源是共性强,差异性弱的特点,因此,利用开源,集中满足客户差异性需求,才是有效的发挥开源特点的方式。

最典型的一个例子就是,oracle,可以说这个产品非常优秀。优秀在什么地方。对于广泛的数据库应用需求,均可以提供良好的,稳定的,大负载的支 持。但极端的对比时,就有问题。如果是特定客户,或特定客户群的任务。针对这类特定客户的数据库的支持,则oracle的产品就无法做到最优方案。

由此我也说过。如果针对特定的目标任务,如果拿基于开源的代码进行改造出的来的产品,在技术指标上和oracle来对比,简直可以说在欺负oracle。这就如同商业软件产品和开源的半成品模块做对比一样。

可能你会说,你野鬼是不是喝高,首先我不喝酒,其次没有彪狂。我就举个简单例子。

曾经优化工作中,有个条C代码语句。类似如下

(a*b+c)>>d;

由于DSP虽然有并发度,但是乘法器和移位器之间,存在3个cycle的延迟。如何解决掉移位工作。经过特定情况分析,在特定目标计算集合里,确实移位可以去掉,等同于

((a*b+c)*e)>>8

>>8有专门存储转移指令可以处理,e和d 都是常量。由此就变成了。

a*B + C

基本上基于这个优化策略,速度必自动编译器提高了4倍左右。DSP上,C代码的最高优化,和我汇编的优化,差异8到20倍,是很正常的。不是我的能 力比C的编译器强,而是C语言在描述一些问题时,无法更好的利用硬件特性进行。但C是高级语言,强调的是跨平台的逻辑描述能力,难道我就能认为C这个类似 开源的东西不好吗?显然抬杠了。如果不用特定寄存器,在非并发CPU上手工优化,你几乎没有机会超过C编译器性能的 15%。

我这里强调的并不是算法本身。类比,客户的任务也是一样,如果客户的数据库的特性导致很多数据情况并不存在。则特定的优化可以有效的发挥价值。不仅简化了数据结构,业务结构,也简化了计算方法和计算步骤。

由此,特定客户群的数据库优化后的产品,如果就此特定任务去 和 oracle这种商业级的产品比,确实欺负后者了。但是面对通用的客户目标,又有什么资格和oracle比呢?

而特定的商业级的产品和开源产品也是一样。

产生差异的原因就是在于,一个是具备特性的,一个是更看中共性的。这里重复一下@宏哥 观点的看法,还是对的。由这个观点,继续推导,也说明,开源要想真正被客户良好的使用,在最后还是要有个特定客户群的特定任务定制的工作。否则也确实会被 沦为“中低端”的市场。毕竟,开源的产品,更多的是半成品的方式出现。例如 ccflow。我相信,ccflow中间还有很多BUG和不足。同时,也不可能拿出来,针对某个特定客户的任务有良好直接的解决。但是我也相 信,ccflow的类似开源项目的继续,在成熟后,可以为更多的定制化的flow任务,所提供良好有效的支撑。

最后重复一句,开源的项目,无论是开发的目标,重点,还是价值,都在于共性部分。由于不同角度,不同水平的开发者的接入,可以有效的提高共性部分代码的质量。这是传统商业闭源产品所不能比拟的。


转:https://my.oschina.net/luckystar/blog/67096



推荐阅读
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Python错误重试让多少开发者头疼?高效解决方案出炉
    ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
  • 在C语言程序开发中,调试和错误分析是确保代码正确性和效率的关键步骤。本文通过一个简单的递归函数示例,详细介绍了如何编写和调试C语言程序。具体而言,我们将创建一个名为 `factorial.c` 的文件,实现计算阶乘的功能,并通过逐步调试来分析和解决可能出现的错误。此外,文章还探讨了常见的调试工具和技术,如GDB和断点设置,以帮助开发者高效地定位和修复问题。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 单片机编程为何偏爱C语言
    尽管现代有许多高级编程语言如Java、Python等,但单片机编程依然广泛使用C语言。本文将探讨C语言在单片机编程中的优势及其原因。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 如何撰写数据分析师(包括转行者)的面试简历?
    CDA数据分析师团队出品,作者:徐杨老师,编辑:Mika。本文将帮助您了解如何撰写一份高质量的数据分析师简历,特别是对于转行者。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ... [详细]
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
author-avatar
胡慧君孟勋欣怡
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有