编程语言的心智负担!你学编程得有多大的压力快来测试一下~

本文从心智负担的角度比较不同编程语言,包括内存越界、宏、内存管理、数值类型、类型约束、项目维护、多线程编程、内存泄漏和IO超时等问题。C/C++因直接内存操作和宏使用带来较高心智负担,而Java/PHP等有GC的语言降低了内存管理的压力。动态类型语言在项目维护和多线程编程上可能增加心智负担,而异步IO模型则减少了超时问题。
摘要由CSDN通过智能技术生成

很多编程语言对比的文章,总喜欢比较各种编程语言的性能、语法、IO模型。本文将从心智负担这个角度去比较下不同的编程语言和技术。

内存越界

如:C语言、C++(C with class)

C/C++可以直接操作内存,但编程必须要面对内存越界问题。发生内存越界后,程序会直接core dump,开发者需要使用gdb工具分析内存错误的原因,如果内存越界是偶发的,比如由于数据同步问题造成,数亿次中会出现一次,解决起来非常困难,甚至需要顶级专家才能找到问题原因。

心智负担:10

现代C++提供了STL库包含大量容器,另外C++支持引用语法,不再需要直接操作指针,降低了内存错误读写的风险。使用现代C++的编程风格可以避免此问题。但由于C++没有完全从语法层面移除指针,不够彻底。

 

C/C++程序中经常使用预定义宏实现一些逻辑,导致可读性变差。有些情况下会嵌套多次宏的使用,展开后变得极其难读。

心智负担:6

因此在C/C++中建议使用enum或static inline函数代替宏。

 

内存管理

如:C语言、C++

C/C++语言,需要手工管理内存,malloc/new申请的内存要与free/delete成对使用。申请的内存忘记释放,就会出现内存泄漏。

心智负担:8

Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值