qtcling - 一种更好的C++和标准库

简介: 作为一个程序员或编程技术爱好者,你是不是开始厌倦了各种虚拟机语言和脚本语言??no vm scripting

作为一个程序员或编程技术爱好者,你是不是开始厌倦了各种虚拟机语言和脚本语言??no vm scripting

它们要么不是C系的。需要你重新学习一套语法。如python,c#,java,js之类….

可这是多大的资源浪费啊,要知道,C是这世上唯一的通用基础语言的教学典范啊(pascal也算吧。。。),计算机专业的学生和非专业的人士都是靠它入门的。学习曲线上自然希望以后学的高级语言也是基于它的为佳。相信很多人都在为适应开发而不断学习新语言的需要而苦恼,而且,大量第三方模块需要binding to c才能使用,而且即使转化后也只是运行在某个托管的环境下,还需要带一个宠大的执行环境才能完成发布或运行。是的,就是那个可恶的虚拟机。这种用内存和CPU资源模拟软件计算机的方式,简直就是在OS上再造了一层执行时。这种过度封装对有技术洁避的极客来说还能怎么忍受呢?

要么,像这类语言,语法上个个宣传它们是通用脚本语言,可还是专用性很强,如PHP大多都用于WEB as dsl,这造成的结果是不通用且怪异,而另一些语言,它们还可能变得越来越宠大和复杂,这是因为为了迎合日益复杂的应用的开发需要,它们需要不断集成,纳入各种新元素到语言生态中去,像java,其生态链已经进入到很完善的地步了,它们还可能无节制地膨胀。没有一个干净的典范开发方式和语言核心存在。这与CPP强调的保持一个干净核心的原则相左。

所以说,虽然它们有组件特性,可能有REPL环境,有脚本特性,可是在以上这二个巨大的缺点面前。那些好的方面也背上了不好的光环。有没有一种基于C系的解释型或带REPL的语言环境,既有传统CPP的好处,又可以直接在这种语法上无改地,或尽量少改地作脚本编程或解释编程呢?可喜的是,这并非技术的桎梧。可以有:

1,第一种是tcc,据说它的编译速度之快已达到了解释语言的级别。可实际上,它只是编译速度足够快而已,称不上,也不可能称得上是解释语言。略过。

2,然后就是我们的cling了。cling/clang是cern代替cint而开发的,基于jit,jit是一种能模拟REPL的技术,当然cling一个光吐吐的编译器还不够,cling/clang可以直接调用C系模块(call into libraries),用户使用其内置的宏语法就可以测试。这使得在cling下组建自定义的CPP开发环境尤为现实,大多脚本语言都是先出来编译器,然后其它是binding C的,cling天然有纳入各种库的能力,所以有条件建设成为一个完善的语言系统,cern rootsys就是这样。

cling需要整合各种第三方库,原始的cling支持的库和扩展十分有限,一个在windows上不支持#include 的cling编译器语言是没意义的。一个具体的第三库如QT的整合,因此也可能需要面临各种问题,

等等,亲,你不是说cling是基于标准CPP实现,可以直接调用c系模块的吗,是的,但是局限也是有的:

1,可能模块有特殊的扩展。如qt的源码不是标准的clang能理解的,是受moc转化过的,带pme字典信息的。这种肯定需要转化过来。

2,有一些受clang特殊限制的,如内联汇编在clang中还不能工作得很好,使用了这种技术的QT库自然需要动点小手术修正,因此对qt源码的改造是需要的。

话说,克服了整合qt到cling,这足以成为一个十分实用的qtcling语言了,有了qtcling,从此我们的Cer就得福入门了,只需要学习一门语言,一种典范 – QT式基于PME的OO,我们就可以做系统编程和应用编程了,甚至是脚本编程。


(演示视频请通过点击右下原文链接查看)

下载地址(本站下载):

qtcling

http://www.shaolonglee.com/owncloud/index.php/s/wh3yzswLrtNhwaa/download?path=%2F&files=qtcling.rar


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
3月前
|
消息中间件 存储 开发工具
消息队列 MQ产品使用合集之C++如何使用Paho MQTT库进行连接、发布和订阅消息
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
5天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
23 11
|
6天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
14 3
|
17天前
|
C++
fedora安装静态c和c++库
fedora安装静态c和c++库
|
1月前
|
算法 数据可视化 机器人
Pinocchio - 开源多刚体动力学 C++、Python库
Pinocchio - 开源多刚体动力学 C++、Python库
48 2
|
18天前
|
C++
C/C++静态链接pthread库的坑【-static -pthread】
C/C++静态链接pthread库的坑【-static -pthread】
|
24天前
|
C++
C++标准库探索
C++标准库探索
32 0
|
2月前
|
C++
C++一分钟之-文件系统库(fs)的使用
【7月更文挑战第18天】C++17的`<filesystem>`库简化了文件系统操作,包括`path`类和`directory_iterator`。`path`用于表示路径,`directory_iterator`用于遍历目录。常用功能有路径拼接、分解,创建/删除目录,以及遍历。错误处理、跨平台兼容性和性能是使用时需考虑的关键点。示例代码展示了如何初始化`path`、创建目录、删除目录以及处理异常。
66 1
|
1月前
|
编译器 C++ 开发者
Visual Studio属性表:在新项目中加入已配置好的C++库
通过以上步骤可以确保Visual Studio中新项目成功地加入了之前已配置好的C++库。这个过程帮助开发者有效地管理多个项目中共享的库文件,提升开发效率。
44 0
|
2月前
|
存储 安全 Linux
网络请求的高效处理:C++ libmicrohttpd库详解
网络请求的高效处理:C++ libmicrohttpd库详解