热门标签 | 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



推荐阅读
  • VS用c语言连接mysql,c语言连接mysql完整演示
    #include#includeintmain(){MYSQL*conn;创建一个指向mysql数据类型的指针connmysql_init(NULL);mysql的初始化if(!c ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • Word2vec,Fasttext,Glove,Elmo,Bert,Flairpre-trainWordEmbedding源码数据Github网址:词向量预训练实现Githubf ... [详细]
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社区 版权所有