- 主题:今天才惊闻,原来STL对容器的迭代器未设越界保护
C++ 一直都这样子啊。
c++ -> java/c# -> python/php/ruby
业界的主流语言存在这三种生态位。
但越来越多的人认为在 c++ 和 java 之间,应该再开辟新的生态位。所以才会有 go,rust,nim, crystal, kotlin native, julia, v 这几门新语言。
以前的 d 语言是最早意识到这个生态位的。但是语言设计得太过于复杂,搞得跟 perl 似的。所以没流行起来。
如果 vb6/delphi 能沿着 native exe 这条路好好搞下来。现在说不定都是一霸了。
【 在 wanllow 的大作中提到: 】
: 当然信息是来自于AI,向大家求证:
: 迭代器的偏移运算operator(iterator pos, iterator_diff n),如果n非常大,STL没有限制加法的结果处于begin()和end()以内,还有++ --这种运算也没有做边界保护。
: 为什么C++要这样做? 为什么不限制菜鸟程序员的违规操作?
: ...................
--
修改:hgoldfish FROM 59.61.198.*
FROM 59.61.198.*
go 有 gc.
上面列的几种语言里面,好像还真的只有 rust 适合进内核。
【 在 wanllow 的大作中提到: 】
: 是这样吗?那为啥linux内核开始接收rust,却没有go?
--
FROM 59.61.198.*
Go 和 Java 和 dotnot 肯定不一样啊。
前者 native 语言,后两个是虚拟机语言哪有可比性。
【 在 buildtolast 的大作中提到: 】
: rust和c++一个生态位,Java虚拟机越来越优秀,现在基本java/go/c#一个生态位。
--
FROM 59.61.198.*
差远了。
无论 java/c# 怎么吹 jit/aot,这俩都是虚拟机语言。在启动速度、内存开销上面就是没办法和 native 语言相比。
【 在 buildtolast 的大作中提到: 】
: 经过jit之后,其实也大差不差。
--
FROM 59.61.198.*
最近几年还真是在乎内存。
CPU/GPU 核心数量被农企和核弹厂搞到百核万核。
SSD 被国产致钛打到 1TB 两三百块钱。
但内存的延迟、带宽、容量一直上不去。瓶颈来到了内存。
【 在 buildtolast 的大作中提到: 】
: 现在谁还在乎内存啊
--
FROM 120.32.141.*
大家都不用 stl 吗?
不用 stl 自己造 map<> shared_ptr<> 吗?
C++ 语言+标准库加起来才相当于不带任何标准库的 Python.
所以要用好 C++ 语言还得附加很多第三方库上去。
【 在 mopo 的大作中提到: 】
: stl的哲学是你不学就没资格用,挂了就是你的责任,觉得难用也是你的问题,所以稍微大点的项目基本不会用原生stl,要么boost要么公司自行封装的库
--
FROM 59.61.198.*