Rust语言的异步编程模型和协程支持
通用的注重性能的现代编程语言都在慢慢地加入对异步编程和协程模型的支持,作为一门强调性能和零成本抽象的语言,Rust自然也不甘落人之后。 可能是因为Rust语言社区出于对自身特殊的生存周期管理机制多带来的其它语言所有没有的额外的编译器实现复杂性,以及开放语言生态系统中的功能开发优先级(它迄今为止还在快速演进中)考...
通用的注重性能的现代编程语言都在慢慢地加入对异步编程和协程模型的支持,作为一门强调性能和零成本抽象的语言,Rust自然也不甘落人之后。 可能是因为Rust语言社区出于对自身特殊的生存周期管理机制多带来的其它语言所有没有的额外的编译器实现复杂性,以及开放语言生态系统中的功能开发优先级(它迄今为止还在快速演进中)考...
作为一门秉承零成本抽象这一极具挑战的目标为语言设计核心的静态变成语言,用Rust语言来编写一些文本处理程序可以不需要可以优化就能达到很高的性能。 但是如果我们对已经写就的文本处理程序的性能不甚满意,觉得不够快或者想将它推向性能更高的境地,即需要进一步优化,可能还不得不额外下一些功夫才能做到。
新的C++语言标准的演进越来越强调静态编译(即运行期计算)的优势,因为这一发展方向无疑更贴合现代的C++语言Zero Cost Abstraction的目标; 可惜这样做有个非常明显的副作用就是给编译器带来了巨大的挑战,乃至于稍微复杂一点的项目也动辄需要数个小时才能编译完成。
微服务架构模式是当今炙手可热的企业软件架构范式,经过最近几年的广泛的讨论和优缺点争辩之后已经随着 云原生架构 的逐渐火热而日益呈现星火燎原之势。 抛开这些争论不谈,假设我们需要实现一个微服务架构的服务,是否该用C++语言或者是否能用C++语言呢?
C++20的功能特性已经于3月份冻结,显然这次终于来了一波大的改进,而不再是像之前C++14/C++17那般小打小闹的做小步快跑,尤其是三个讨论很久的大feature终于被合入主干;并且这些feature终将会极大地影响后续C++代码的书写方式。
C++17 推出已经有将近3年的时间,速度快一些的公司才慢慢采纳了6年前的C++14进入正式的生产环境。 程序员们的一个大福利就是终于不用外挂第三方库(无论是准标准的boost还是其它形形色色的其它第三方库)就可以直接方便地使用标准库自带的<regex>来写代码; 这显然比直接使用原始而笨拙的stri...
不同于传统的工业标准的C++/Java语言缓慢的更新节奏(最近几年大家都加快了演进的节奏),Rust从一开始就采用了滚动发布的模型, 基本上是按照固定的步伐每个六个星期就会放出来一个新版本,并且从正式发布了1.0开始,最近两年来一直是保持向后兼容的。 社区在2018年初的时候,就约定好会在18年发一个大版本出来,...
C++标准的演进和推出速度过慢一直被内外社区批评,甚至当第一个21世纪的语言标准终于于2011年发布的时候,标准委员会的人都自嘲说我们是一门计算机语言,所以0x需要用十六进制数表示。 进入了第二个十年之后,社区的老学究们终于决定引入时髦的"发布火车"的模型,滚动地推出新的功能,之后新的语言标准总算按照一个大版本一...
最近遇到一个麻烦而繁琐的操作,需要从工作用的缺陷跟踪系统中导出报表,分析其中的一些数据模式,分类整理后用更好的方式整合出来; 本来这类反复重复的零碎工作,如果不是很复杂,依赖于Excel本身的强大的表格计算功能是很容易自动化的(在线系统比较古老仅仅支持CSV格式导出), 只是内部的字段量比较多,并且有很复杂的相互...
公司里面进来切换到了一个新的Backlog管理工具来管理日常的需求和项目规划,可惜新的工具虽然是名门之秀的JIRA(来自于澳大利亚的IT公司confluence),但是访问起来却异常痛苦, 经常一个页面打开需要等待大半天还是不是崩溃。有些心急的同时已经默默地回到了老的方式,导出数据到Excel然后打开Office...
9月份对于C++社区而言绝对是个令人振奋的收获季节。
最近在参与某开发小组的团体代码审查会的时候,发现组内的一线开发工程师对于何时应该做空指针检查并没有很清晰的认识;然而这在Java社区里早已经是个老生常谈的争论 。
可变状态的泛滥往往被认为是软件维护灾难的元凶之一,尤其是当过程封装遇上多线程,普通的面向对象编程技巧完全不堪大用,因为继承/封装/多态等手法针对的都是程序组织上的处理措施,具体到底层实现上,传统的C/C++/JAVA依然依赖过程式实现跟操作系统打交道。
Kotlin语言是大名鼎鼎的JetBrains公司(就是可以甩Eclipse数条大街的IntelliJ IDEA背后的公司)出品的现代的编程语言,之前已经在IDEA中蹦达出来很多次了;只是最近随着Google在其2017年的I/O大会上将其列为Android平台官方支持的语言而窜上了热点。
Java8是日益臃肿、略显老态的老牌程序语言对日益流行的新的函数式编程范式的反击; 它采用了巧妙的技术让自己面向对象的古老躯体也套上了函数式编程的舞鞋再度翩翩起舞,焕发新的光彩。
静态、强类型而又不带垃圾收集的编程语言领域内,很久没有新加入者参与竞争了,大概大部分开发者认为传统的C/C++的思路已经不太适合新时代的编程需求,即便有Ken Tompson这样的大神参与设计的golang也采用了GC的思路来设计其新一代的语言;一方面垃圾收集技术和即使编译技术一直在发展和完善,另一方面是大量的未...
文本处理是Python/Ruby这类脚本语言的重头戏之一,而强大的正则表达式支持对于文本处理来说也是必不可少的。Ruby的设计很多方面沿袭perl,正则表达式方面也不例外。
和其它的面向对象语言类似,ruby的类方法也分为_class method_ 和 instance method, module和class具有相当大程度的相似性, 但是用于重用module中定义的方法时( 同样也有 class method 和 instance method 之分 ),又有一些微妙的差异。
Class和Module是Ruby中的两个重要概念。作为一个纯OO语言,class的概念自然容易理解,即为object的抽象;而module则明显有别于其它语言地提供了mixin方法来解决多继承缺失带来的不便 - 集成多个基类的接口并维持IS-A关系以及LSP替换.
lazy evaluation 是函数式编程中的一个重要概念,和传统过程式语言中的cache/state变量恰恰相对;其对应的数值/运算仅仅在用到的时候才实际运算,如果没有调用就什么也不会做。对于构造起来比较昂贵的对象,lazy evaluation可以有效避免cache带来的额外开销,因为只要需要的部分运算被执...
Rake - the make in ruby world
blocks&&closure ruby的blocks和closure特性明显有别于其它的语言,其closure本身是__real closure__,所绑定的context是共享的而非copy,其设计思路和_lisp_的相同;blocks本身则可以用于实现closure。二者的关系如下所述 li...
看得再多也不如自己动手试,最近有闲就打算认真研究一下ruby语言了。Pragmatic programmer中说,需要一年学一门新语言一遍改造思想,去年浅浅的学了javascript的皮毛,今年可以看看ruby这个有lisp之风的OO语言了。