蜂云软件 蜂云软件
400-800-3688

办公软件定制开发语言及优缺点

发布者:管理员 点击数:459 发布时间:2020-01-09
摘要:办公软件定制开发会用到哪些开发语言,他们的优缺点都有哪些

 办公软件定制开发会用到哪些开发语言,他们的优缺点都有哪些,现在湖北蜂云软件定制开发为您详细介绍。

C

优点:

所有主流操作系统的API都是C API。很多底层API也都是C接口的,比如OpenGL、CUDA。所以你必须通过C来掌控这一切(要么直接的,要么间接的)。

语言比较轻量化,特性少,编译速度快。

基本没有任何额外的运行时代价,执行效率几乎是最高的。

可以不依赖runtime。

各种编译器intrinsics基本都是C接口的,比如SIMD指令。

缺点:

没提供什么像样的建构能力,宏比较弱,不易于构建比较大的体系。

本身没有任何运行时检查,有错误也未必立即死。

各种未定义行为,不太利于新手。

C++

优点:

由于在语言设计时尽量不引入运行时代价,执行效率实际上可以和C一样高。

为数不多的既可以设计复杂系统,又保持极高运行效率的语言。

由于语言几乎兼容C,可以使用C的几乎所有接口和编译器intrinsics。

语言特性多样。

缺点:

由于坚持与C兼容

有各种历史遗留问题。

很多分明应当是语言特性的功能,非得用库实现。

继承了C所有的缺点。同时由于语言复杂化,同样的缺点爆发的时候会更加复杂化。

标准库在最近几年之前,一直是半残。现在标准库的字符串也依然是半残。结果各个架构都自己撸一套标准库。

模板编译炸了会刷屏。

由于语言特性太多:

对于新手极其不友好。

编译速度慢得丧心病狂。

编译器非常难写。现在实质上就微软、GNU GCC、Clang、Intel ICC这几家像样的编译器。

补充一下C++的语言特性。相比于C,主要引入的重要特性有:

模板,这就是巨大一坨东西。

最基本的用法,就是当做模板,用来写通用容器。

有个特别鬼畜的特性:“模板匹配失败不是一个错误”,利用它来实现很多语言特性,比如查看某个类型是否具有某种性质(想办法弄成如果具有,就会匹配到某个模板上,如果不具有,就匹配到另一个模板上)。

新的语言标准允许变长模板,于是越发鬼畜。

作用域自动行为:非基本类型的对象,在退出作用域时,会自动调用析构函数。用这个实现自动释放的句柄类,是C++的一个重要的资源管理的方法。

C++11引入了明确的右值引用、移动语义,用来擦一些恶心的沾满了屎的屁股。

对了还没提到,C++明确区分对象、对象指针、对象引用这三种东西,因此才需要右值引用这张草纸来擦屁股。与之相比,绝大部分的托管语言里面的对象,实际上都是自动管理的对象引用。

相比之下,类、继承、多重菱形继承、虚函数表什么的,简直就是纯洁无害的小白兔。

Java

优点:

用的人多。

包装完好,不那么容易出现难以调试的错误。

在不少条件下,运行效率可以非常高。

库多。

扫描式垃圾回收,心智负担极小。

缺点:

扫描式垃圾回收,不能确定资源回收的时机,集中回收时可能拉低系统响应。

需要runtime,用户未必有。

Python

作为胶水语言,用的人够多。

numpy是标准库,scipy发展完善,有利于数据处理。

数据可视化库比较易用。

缺点:

人在做,天在看,缩进分块留祸患。

没有大括号作为作用域,with ... as ...非常粗鄙,控制能力不足。

最通常的CPython实现,运行效率极其低下,线程是假的,是化学成分的,其实根本就没有多线程。

Matlab

优点:

自带各种数学处理能力。

由于历史积累,集成了极多的功能模块,比如我们经常会用滤波器及其设计器。更复杂的还有各种仿真、有限元工具,都是工业级的。

数据可视化库比较易用。

缺点:

收费且相当昂贵。

自身的运算效率并不算太好。

数组的下标从1开始计数,而且内外顺序和大部分语言都是反的。。。

通常来讲:

Matlab:数学算法开发、原型。

Python:逻辑原型,胶水语言,软件工程自动化完成(实际上我会用Perl)。

C:核心功能。

C++:核心功能,或者干脆搭整个系统。

实际上,复杂系统也可以用C、C++实现各个计算内核、机制,然后暴露脚本接口,用脚本语言组织业务逻辑(Lua用的最多,其次是Python和Javascript)。