需要我们来关注的开源软件推荐

发布时间:2024-05-17 12:10:20 来源:ub8登录1.0 作者:ub8登录1.0 ub8登录1.0

  文章标题《需要我们来关注的开源软件推荐》这一个话题不是很好理,先按着自己的思路试着写些东西。这篇文章有点流水账,大家多包涵。

  我们知道需要我们来关注的开源软件实在是太多太多,选择这个题目也让自己有点为难。不过,试着去理一下对自己来说还是有蛮多收获的,不管正确与否,或许也对大家有所启发和帮助。

  本Chat所选的45个开源软件,它们可能不是最流行的,但具有一定的代表性,它们是众多开源软件中的很小一部分。

  从这么多开源软件中进行筛选有不少困难,要求我们有个好的思路和方法去有步骤、系统化了解和学习,本Chat就是和大家一起交流和探讨这一个话题。希望这篇文章起到抛砖引玉的作用,这里我们只交流、讨论一些思路和方法,并不深入到某个具体项目,这个会留在以后的课程与大家一同学习交流。

  开源软件在操作系统、云计算、大数据、编译器、数据库、移动、汽车工业等领域取得了巨大成功,已成主流,这篇文章就先围绕着这一些内容展开。

  开源软件的重要性就不用多说了,它是IT工业的基础。它和我们每个人、每天的学习、工作、生活都息息相关,个人会使用的互联网、物联网、车联网都广泛的依赖于它们。

  先来看看,如何去寻找开源软件,我这里介绍一个可能是最有效的方式:通过GitHub上AwesomeGitHub Topics的方式去获得,它们已对一些流行热门的开源软件做了梳理和筛选,方便你的选择。这里的开源软件数量足够你在整个职业生涯中去了解、学习和实践的,而且还在持续增加中。

  我们先来看看有层次、系统化的了解、学习、搭建软件堆栈和平台的重要性和必要性。

  在我们的工作中,或许都有过这样的经历:前一个团队或核心成员使用的是这个框架或那个平台,新来的团队或核心成员因为自身情况将会使用不相同的框架和系统重构或替代前面的产品和架构体系。我自己就经历过用Java平台全面替代台的经历,其代价也是巨大的,这样的替换相信我们大家也都有碰到过。若经常性的因为人员变动或其它因素而导致产品和体系架构总是变来变去,带来的研发成本就会一直上升,且因没有在稳定框架和基础架构上的持续实践和积累,团队的技术沉淀没有,框架和平台价值的体现也就少的可怜,也不能吸引到优秀的人才聚在一起。

  所以层次化、系统化的了解、学习、构建公司的技术体系和平台架构就显得很重要,这是公司技术委员会或团队Leader的必修课。

  举个简单例子:大家可从Anaconda开始Python数据分析之旅,它减少了安装、维护各种Python软件包和版本的工作量和带来的各种不方便,毕竟它整合好了几百个Python软件包。

  根据公司发展趋势和战略目标,拟定多年计划,不要仅仅只解决眼前问题,要考虑框架、架构、平台的长期有效性与持续发展,不要深度锁定商业服务供应商,尽可能使用开源软件,并可以方便的替换其中部件和重构;

  从StackOverflow、知乎等专业网站通过搜索的方式迅速了解一下你所关注的开源软件的基本特性和大家讨论的热点;

  以Ecosystem的方式去思考和组织你所关注的开源软件的知识体系,这里给个参考:Node.js ecosystem

  在学习和实践的过程中,大家可借助印象笔记或Wiki等方式对不断学习和实践的开源软件做持续的整理。我个人是通过Wiki的方式不停收集、整理各种开源软件和相关资源的,这样的一个过程持续了11年,有几千个条目,近4000万的浏览量。

  本篇文章参考框架涉及的45个开源软件都有Wiki条目进行跟进和维护,不少条目都持续维护了很多年,接下来我们就对它们一一做个大致了解:

  此外,要紧跟所关注开源软件的Conferencce技术大会,这是了解开源软件最新进展和成功应用的一个非常好的方法。我在这里也整理了一些开源软件历年大会幻灯片资料,很有参考价值,欢迎各位收藏。

  这三个框架都是比较大而全的,覆盖某个领域的大部分应用场景和技术堆栈,它们带来的好处是快速的开发效率和生产力,但同时与会失去灵活性和自由度。喜欢用很多小软件、小工具解决不同问题的用户通常不会选择这些大块头或者说全堆栈的软件平台。

  注意这里的long-term support (LTS),很多开源软件都采用这样的版本支持服务,如:Ubuntu它在你的版本选择中非常重要。

  Django的内容和讨论的话题都很多,入门这块可从Django book 2.0 的中文开始,它把Django重点、要点和内容组织的都很好。

  2011年,诺基亚出售Qt业务给Digia,该公司将接手Qt商业授权和服务业务,诺基亚也将移交大约3500家商业客户。

  Maya、Google Earth、Skype、Telegram、魔兽争霸官方对战平台、网易炉石盒子等都基于Qt构建。Qt在汽车、自动化、医疗、数字电视机顶盒、物联网、移动应用领域都有广泛应用。其中,Qt Automotive Suite值得更多关注。

  Qt应用目前主流的开发思路是:用QML(Qt Quick)构建交互界面,用C++实现业务逻辑,这也是推荐Qt的一个重要因素。

  Meteor是基于JavaScript的框架,用于Web客户端、服务器端以及移动应用。Meteor应用会对数据的变化作出即时响应,因此你将获得即时响应体验,同时,一致的构建过程、前后端统一的包系统和单个命令的应用部署过程,将在从设计到发布的每一环节上为你节省时间。

  我想,这幅图对Angular2有用,对Meteor等其它框架的学习也有一定的参考价值。

  说到选择哪个框架,涉及的就是各种比较,本篇所列举的45个开源软件和项目也是各种比较的一些总结,所以生活在开源软件的世界里,比较就是家常便饭。若是作为开源软件的开发者和维护者,要做的工作也就更多了,除编程基本功扎实,维护和Bug修复外,不停的学习其它优秀的同类项目也是一门必修课,从别人身上学习优点,但又不能完全照搬,需考虑自身项目的个性和特性,又要兼顾通用功能和特性的整合,在保证项目代码和版本稳定的同时,又要不断调整和平衡新版本的需求和特新,又要很好兼容老版本,其过程想想都觉得难。所以一个成功的开源项目,除了独特的个性外,还要平衡和兼容好共性,在这里给开源软件开发者致个敬。

  这节话题结束前,放一个Angular2 相比 Vue 有什么优势?项目对比的分析,是Vue作者写得,挺有趣,大家可看看。

  说到企业应用,首选Java语言。除了Java语言,这几年因为数据科学和机器学习的热潮,极大的推动了Python语言在企业的普及。此外,XML作为企业应用的数据表示、存储、转换的标准已被广泛采用,而且各行各业的XML规范已经很成熟和稳定。

  odoo是近几年发展非常迅猛的开源ERP/CRM套件,使用Python、XML、PostgreSQL构建。之前,写了篇odoo:开源 ERP/CRM 入门与实践的文章,大家可看看,普及一下odoo的基础知识。

  OSGi是Java模块化的非官方标准,很强大,也复杂。它是很多开源软件的基础架构,如:Eclispe;也在工业界有很多应用,BMW汽车的应用控制管理系统就采用OSGI作为其底层架构, 这套系统主要用来控制汽车上的音箱、灯光等设备,总共由1000多个Bundle构成,但BMW汽车的应用控制管理系统启动时间却只需要3.5秒。

  Adempiere是一个很主流的开源ERP/CRM系统,也是一个完整的企业应用套件和堆栈。

  Adempiere衍生自Compiere,因为Compiere越来越封闭和私有,就有了现在的Adempiere,很多开源软件也都是这样产生的。同时,Compiere也失去了可能成为No.1开源ERP/CRM的机会。

  类似的故事还有很多很多,当前是个开放开源的时代,封闭自嗨的基本都会走向衰败。就连很封闭的苹果和腾讯也在不断调整自己的开源、开放战略,并陆续推出一些开源软件。

  Moqui的作者是Apache OFBiz的设计者和开发者,在企业数据模型和流程上有非常深的造诣。Moqui基于OFBiz十多年来的项目实施经验以及作者的设计、开发和方法论,包括纯粹的关系 数据层以及面向服务的逻辑层。Moqui框架的核心代码只有OFBiz核心框架代码的15%左右,提供了更多有意义的功能和更多的高级工具,使用Groovy和Java语言。

  Mogui是一个企业ERP/CRM的生态系统,一个类似地球:地核、地幔、地壳的的构造结构。

  Moqui Framework: 核心 Core,就像 Linux 的 Kernel 内核一样

  Moqui Mantle,地幔业务构件: 一组通用的、可作为你各种场景业务系统的基础业务构件集合,包含:

  通用业务服务库,Universal Service Library (USL)

  通用业务过程/流程库,Universal Business Process Library (UBPL)

  Moqui Crust,地壳(插件):主题皮肤、 综合的工具集、不一样的行业的应用支持、大公司规模支持、业务领域支持等

  初步体验了Moqui,感觉使用它构建应用很快,大部分工作就是编写XML、脚本和构件,描述数据、业务和流程。介绍它是因为以往大多数企业应用都是硬编码实现、数据、业务、编码紧耦合,而Moqui采用XML定义模型、服务和流程,提高了总系统的可描述、可维护性。Moqui支持如下的几种类型的构件:

  实体 entities : 贯穿于整个业务系统中的关系数据模型(直接用模型,无需复杂的对象关系映射)

  界面 screens 和 表单 forms : 用于基于 web 的应用界面或者其他用户接口(通用方式是基础构件描述存放在 XML 文件中,或者用户指定扩展存放于数据库中)

  界面转换 screen transitions : 用于配置页面到页面的流转以及设置页面跳转时,业务处理过程的必要输入

  服务 services : 远程调用的方式运行内部逻辑交互或者曝露外部的服务

  ECA(事件-条件-行为 event-condition-action)规则 : 用于类似实体、服务操作以及 email 信息接收等系统级事件触发

  除了开发者日常使用的一些大块头IDE外:Eclipse、Visual Studio、Xcode等,这类小巧、轻盈的编辑器也备受程序员喜爱,它们是Emacs、Vim、Atom。

  Emacs的设计目标就是,你装了个Unix或者Linux系统,不需要装任何其它软件,只要装一个Emacs就够了,它能帮助你完成所有的任务。也就是说,除了编程,你还可以用它写论文、做幻灯片、浏览网页、收发邮件、聊天、听歌、看照片、玩游戏……目前,好像除了直接在Emacs里看电影还不行,其它的都实现了。(ps:这一段是直接引用,因为太赞同)

  Visual Studio Code是我很喜欢的,它很强大和易用,拥有庞大的插件库和资源。

  Anaconda是个大的数据科学软件堆栈和平台,当然,你也可以再一次进行选择自己去搭建。

  使用Python进入数据科学领域的同学就可从Anaconda入手,主要是方便。它提供GUI和命令行两种方式,使用包管理工具Conda,如安装pandas、Jupyter:

  Pandas是很重要的数据科学Python软件包,基于NumPy构建,简化了以NumPy为中心的应用开发。NumPy的基础是数组和矢量计算,NumPy的ndarray是一种多维数组对象,利用数组进行数据处理。

  CDH除没有HDP那样开放开源外,其它都很类似。Cloudera有很强的商业化解决方案和服务能力,取得了很好的商业经济价值,应该是目前最赚钱的Hadoop商业化公司,同时也开源了众多优秀的开源软件,如:Impala

  HDPCDH文档都组织、整理的不错,可作为了解、学习大数据、Apache Hadoop的一个重要资源。

  在这里提一下ODPi项目,这是Linux基金会下的一个项目,成员包括HDP的开发商Hortonworks。

  鉴于Linux基金会的成功运作和治理能力,ODPi可关注,以ECO的思考方式去了解整个大数据市场,国内已有大数据公司来此占位。

  TensorFlow在GitChat人工智能板块已有了最多的课程和介绍,它的重要性就不多说。

  TensorFlow官方文档中文版可作为你学习TensorFlow的重要参考,英文好的直接跳过。

  编程语言入门有Hello World,机器学习入门有MNIST。MNIST是一个入门级的计算机视觉数据集,它包含各种手写数字图片。它也包含每一张图片对应的标签,告诉我们这个是数字几。你可从MNIST开始你的机器学习,熟悉神经网络和MNIST数据集,去构建一个深度卷积神经网络。

  ps:一个小道消息:MS因为内斗严重很难发力,所以用CNTK,Torch,TensorFlow,MXNet,Caffe的都有,自家的CNTK很难形成规模。

  相对于TensorFlow这种重量型的后端,MXNet的轻量化路线使得可以我们在花费Google brain 1/10的人力的情况下做到类似TensorFlow技术深度的系统。(MXNet开发者李沐)

  那到底选择哪个深度学习框架呢?或许贾杨清同学的这段话会给你个答案,他是Caffe(Caffe2)的作者,同时也是TensorFlow的开发者和贡献者。

  另外我还要强调的是我最近每个演讲都会提到的“unframework”,或者说“unix philosophy”的观点:framework不重要,重要的是技术,这也是我一直主张把核心软件比如说Gloo,NNPACK,FAISS这些单独放出来,不放在框架里面的原因 - 每个框架都可以拿这些软件来优化,这才是做community的道理。老实说,Caffe我也参加了,TensorFlow我也参加了,C2我也参加了,最重要的是大家开心,能学习到技术,能用得方便。

  说到机器学习、深度学习,我想表达自己的一个观点。当前,我们都在关心机器学习,其实,我们也应该更多关心一下如何让我们自己更高效的学习,成为一个学习机器。当然,这里的学习机器是有更多思考和创造力的那种。未来是机器学习和学习机器相互学习、共同促进的世界,谁更聪明,谁就有更多支配和主导权,大家相辅相成,共同进化。

  AGL是Linux基金会项目,基于Tizen项目构建,最初由韩国三星主导,现在为Linux基金会项目。

  这张图很重要,它把AGL、Tizen和GENIVI三者以AGL UCB的方式融合在了一起。

  百度Apollo开放平台被称为“汽车界安卓”,我想这个应该在成功后再被称。

  百度Apollo开放平台通过阿波罗基金专注于汽车行业及无人驾驶领域的人民币股权投资,简单讲就是砸钱和收购,快速形成一定规模。

  目前,Apollo基金第一期20亿已到位并在快速运行,目前已完成数个项目的投资。也将在未来3年完成100亿&100+个项目的投资。总之就是有钱,无人驾驶创业的同学们这也是很快变现的方式。

  我们都知道自动驾驶这件事是个很复杂、非常庞大的工程,可有人一个人就干成了,天才黑客George Hotz自己开发了一套汽车无人驾驶系统,而且成立了公司Comma.ai专注这件事,点开网页看实测效果还是很不错的。

  Robot Operating System(ROS)是一个应用广泛的机器人系统和开源软件框架,ROS的基础原理是无需改动就能够在不同的机器上复用代码。ROS提供了一个标准的操作系统环境,包括硬件抽象、底层设备控制、通用功能实现、进程间消息转发和软件包管理等。

  随着ROS 2.0的开发,ROS能够兼容除Linux之外更多的操作系统,如Windows、Android;能够支持从工业计算机到Adruino开发板等各类型的硬件;能够采集RGB-D摄像头、普通摄像头和很多类型的传感器数据;能够驱动类人形机器人、四轴飞行器等各类型的机器人。新版本的ROS在采用SOA架构的基础上,集成了MVC框架,更加有利于机器人人机交互界面的开发和机器人控制。

  由于ROS极大的开放性和包容性,它能够兼容其他机器人开发工具、仿真工具和操作系统,使之融为一体。这使得ROS持续不断的发展壮大,并成为应用与影响力最广泛的机器人软件平台。

  学习ROS,掌握一把通往未来的钥匙。(ps: 这部分内容取自《ROS机器人程序设计》(原书第2版))

  关于市场占有率:作为一家拥有近37年历史的嵌入式操作系统开发商,QNX在车载信息娱乐系统或车联网系统占据超过50%的市场占有率,QNX是仪表盘背后的隐形王者,大家可关注下。

  云计算对所有的计算资源、存储资源、网络资源进行系统管理,用数据库进行各种很多类型数据的存储和处理。以消息队列作为数据传输和应用交互的机制,Web Server将各种服务以RESTful的方式部署。

  这里主要粗略地介绍IaaS、PaaS两种主要的云计算服务模型,其代表有:OpenStack、OpenShift

  OpenStack可以说是Linux之外规模最大的开源项目,有大量公司和开发者参与构建这个开源云平台生态系统,也有很多OpenStack发行版可供用户选择,国内用户可关注这几家OpenStack供应商:

  ”Google加入OpenStack体现了对于数据中心控制平面的争夺已结束,以容器为代表的应用形态与以虚拟化为代表的系统形态将会完美融合于OpenStack之上,并与软件定义网络和软件定义存储一起统治下一代数据中心。“

  OpenShift能给用户所带来什么?可参考红帽OpenShift的业务价值。

  总结起来:加快产品、服务研发和交付时间,减少研发成本,增加企业收入,降低基础架构投资,获得更高的投资回报率。

  在我们运作开源软件商业化服务时,开源软件需要有个好的商业包装。开源软件对我们研发人员很熟悉,但很多最终用户和客户却不了解,他们可能根本就不了解什么开源软件,你给他们大谈开源软件,他们会一脸茫然。若你把开源软件以类似这样的方式讲给他们听,效果可能会更好,也更加容易成交业务,所以基于开源软件做商业化服务的同学很有必要建立起这样的思维模式,将好用、强大的开源软件做更好的商业包装。这方面的成功公司有很多,你可更多跟进Red Hat、Ubuntu、MongoDB、Hortonworks等开源软件公司,它们把开源和商业融合都做得相当出色。

  此白皮书也可作为开源软件商业经济价值分析的参考,大家基于开源软件做商业化公司和运营时可参照这样的思路思考下去。

  Docker容器和Kubernetes容器编排已成为企业交付软件和服务的行业标准,OpenShift可直接作为企业DevOps & CI/CD的基础设施, 成为部署微服务的多租户平台。

  Red Hat也在积极推动区块链技术在OpenShift的应用部署,与BlockApps的合作,为其提供区块链平台的PaaS基础设施。

  OpenShift生态系统已初具规模,这可增强大家选型的信心。不过,因为OpenShift的平台规模也比较大,定制化和扩展的难度也会加大。这也是我们常碰到的问题,选个大块头的开源平台堆栈,还是选自由装配和维护各种小软件的融合方式。这是两种不同的思路,团队Leader和技术团队要仔细评估和做出平衡。

  SaltStack是 Python开发的开源配置管理和自动化工具,SaltStack提供了一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度快,服务器之间秒级通讯。

  更好地使用云服务,包括EC2、Azure及OpenStack等,支持更大规模云计算平台部署;

  使用ZeroMQ消息队列,管理端Master,客户端Minion,怎么样做数据交换和消息传递的。

  Ansible基于SSH协议传输数据,Saltstack使用消息队列zeroMQ传输数据,MQ通讯和SSH通讯,速度相差大约几十倍。

  Riak数据库以Riak Core、Riak KV、Riak TS、Riak S2的方式提供了构建分布式系统、键值存储、时序存储、对象存储的核心软件基础设施。

  Riak公司在数据库对比选型上做了充分的工作,把几乎主流的开源数据库都对比了一下:

  多范式、多流派(面向对象、模版、函数式、过程式)的混合式语言设计方法帮助C++成为解决复杂、多样性问题的编程语言首选。

  多模型数据库OrientDB(对象模型、键值模型、文档模型、图模型)让其集多种数据库类型于一身,使其能应对多种应用场景,减少多种数据库部署运维带来的开销和成本,OrientDB这样的多模型设计是否也能像C++这样被大多数开发者所认可与接受?

  可扩展、超快OLAP引擎:Kylin是为减少在Hadoop上百亿规模数据查询延迟而设计;

  Hadoop ANSI SQL 接口:Kylin为Hadoop提供标准SQL,支持大部分查询功能;

  交互式查询能力:通过Kylin,用户都能够与Hadoop数据来进行亚秒级交互,在同样的数据集上提供比Hive更好的性能;

  多维立方体(MOLAP Cube):用户能在Kylin里为百亿以上数据集定义数据模型并构建立方体;

  与BI工具无缝整合: Kylin提供与BI工具,如Tableau,的整合能力,即将提供对其他工具的整合。

  Apache Kylin已成功部署于百度、美团、网易、京东、唯品会、中国移动、中国电信、国泰君安、华泰证券、联想、OPPO、魅族、去哪儿等公司,支撑着用户行为分析、流量日志分析、电商分析,广告效果分析,实时分析等基于数据仓库及多维分析(OLAP)技术的数据服务。是传统数据仓库、商业智能技术在互联网公司大规模应用的真实案例。

  在这篇文章中,我们多次提及生态系统。这个大家多重视,逐步建立起层次化、系统化、平台化的思考方式。

  AMQP的愿景是:从任何发布者到任何感兴趣的消费者之间的信息,通过一条软件总线实时动态的连接起来。

  RabbitMQ就是要实现AMQP愿景的开源软件,AMQP的就如同电话交换机的架构,选择Erlang也在意料和情理之中。Erlang是一门消息并发编程语言,它为通信而生。

  XMPP是一个有着18年历史的开放消息标准,被大范围的应用于物联网、即时通信、社交网络和实时Web领域,支持众多的开发语言和操作系统。

  Apache Kafka 是一个高吞吐量的分布式消息系统,使用 Scala 开发,它已是企业应用和大数据ECO中的核心组件,它是消息、数据、实时流的中心Hub。

  由阿里巴巴捐赠给Apache基金会的RocketMQ也在健康的发展着,和Kafka很类似,大家下来可做些对比评估和选型。

  此外,ZeroMQ大家也可多关注,上面介绍的SaltStack就使用ZeroMQ作为传输机制,且大量的开源软件中也包含了ZeroMQ的使用。

  OpenMessaging项目由阿里巴巴发起,与雅虎、滴滴出行、Streamlio公司共同参与创立的分布式消息中间件、流处理领域的应用开发标准,目前已正式入驻Linux基金会。

  消息队列是重要的基础设施,因为它解耦、连接各种数据、应用和服务,充足表现互联网连接一切的本质。

  个人很倾向使用Erlang开发通用的Web Server,因为Erang分布式、消息、并发、可伸缩、容错方面的天然优势,有兴趣的同学可尝试基于Cowboy构建。

  我们只关心图中上面BSD和GNU家族的东东,下面的都是商业的UNIX操作系统,我们就不考虑了。

  BSD家族最具代表性的就是FreeBSD,它是GNU/Linux之外最可靠的选择。它强大、稳定、坚如磐石,也是苹果操作系统的重要组成部分。

  XNU是个混合内核,包含两部分:BSD和Mach。macOS在剥离了Cocoa、Carbon等东西后,剩下的叫Darwin,它包含POSIX兼容、UNIX线程、进程实现。

  XNU内核是macOS和iOS的核心,由三个主要部分所组成的一个分层体系结构:

  OpenWrt是适合于嵌入式设备的一个Linux发行版,国内主流的路由器:如极路由、小米路由器、魅族路由器、魔豆路由器等都基于OpenWrt构建。相比Android系统,OpenWrt被认为是更为适合智能设备和机器人的软件平台,被誉为下一个时代的Android,值得更多关注。

  虚拟机技术在操作系统、程序设计语言和计算机体系结构中占据了重要位置,它是系统与进程的通用平台。

  在“进程级“ 虚拟机技术可用于实现动态二进制翻译、平台无关的网络计算等能力;而在“系统级,可以在同一个硬件平台或一个服务器集群上同时提供多个操作系统环境。

  可以说,Solaris Zone是操作系统虚拟化做得最出色的解决方案,只可惜。

  GCC和LLVM的体系很庞大,其内容、细节和知识点太多太多,留在后续的课程我们学习交流,后面有推荐的编译器书籍大家可参考。

  Babel 是一个通用的多用途 JavaScript 编译器。更确切地讲是源码到源码的编译器,通常也叫做“转换编译器(transpiler)”,简称转译。

  Babel 能把用最新标准编写的 JavaScript 代码向下编译成当前可用的老版本,Babel 能够让你提前使用 JavaScript新标准。

  虚拟机技术极大的丰富和繁荣了编程语言的生态系统,我们大家都知道JVM平台有很多编程语言,可能你不知道有超过200多种编程语言运行在JVM平台上,它们共同繁荣了JVM生态系统。

  JVM和.NET两大平台外,值得大家更多关注的是Erlang及其虚拟机生态系统。

  在上面,Erlang被多次提到在Riak数据库、RabbitMQ消息中间件、Cowboy web server中的应用,Erlang的天然优势就是:分布式、消息、并发、可伸缩、容错。你可以在笔记本上轻松创建300万个进程。

  Java、Scala、Clojure是JVM平台上三种主流的编程语言,它们的定位是怎么样:

  F#和OCaml是ML函数式编程语言的两种主要方言,有时F#和OCaml的程序是可以交互编译的。

  F#支持高阶函数、柯里化、惰性求值、Continuations、模式匹配、闭包、列表处理和元编程。在早期,F#作为一门适合于金融和计算密集型的语言而闻名。现在,F#既用于算法密集型应用程序,也用于主流业务应用程序。在算法密集型应用程序中,正确性至关重要,而主流业务应用程序则在很大程度上受益于F#支持领域建模并让非法状态不可达。

  好了,我们走马观花般的过了一遍这45个开源软件,主要让大家大致了解和认识一下它们。

上一篇:开发app是什么专业 下一篇:编写C语言用那个软件好?