C++对C的兼容产生的严重质疑个人感觉,模板的产生纯粹是因为数据类型规定的太细。数值竟然根据不同大小有11
C++对C的兼容产生的严重质疑
个人感觉,模板的产生纯粹是因为数据类型规定的太细。数值竟然根据不同大小有11种类型。这导致了从函数的参数类型到算法都产生了大麻烦。通过增加模板来解决代码重复的问题,是对c++的增量式修改,而非系统性修改。而泛型则是增量式修改原则逼出来的又一个东西,具体的结果是STL。
数值型类型有十多种类型的本质是什么?本来是应该按照性质来划分数据类型的:布尔、字符、数值。但是当年的计算机的空间是个问题,为了节省空间把其中的数值型类型按照空间来划分了。于是一系列的问题就来了。根子大概不只是当年的计算机的空间太稀缺,而是可以从C语言追溯到汇编语言——把一切东西都看做地址空间。C向CPP的OO化变身不彻底,也可能是为了兼容C,酿成了苦果。是不是,假设增加一个弱长度数值类型:number,一切都可以解决?一个证据是,动态语言(弱类型语言)绝不存在什么模板和泛型的问题,更没有诺大的STL。
当然如果非要说空间越节约越好那么我也没什么好说的,但是现在呢?
引用和指针:抛弃对C的兼容,彻底OOP后的C++,指针操作“*”和“->”、引用操作“&”应该去掉。因为对象的赋值规定为引用而不是clone。是不是可以考虑?这个问题不是个大问题,主要是上面的第一个问题。
抛弃对C的兼容,彻底OOP后的C++,会从拥有四个子语言(《Effective_C++第三版》语)减为OOC吗? C++
[解决办法]
这点我深感赞同,我是做图像处理的,偶而也得做大量的低阶操作
c++这时能帮的上忙的地方主要是type safe的问题可以借由template轻松搞定
以及资源可以靠RAII帮忙管理
我感到头痛的是很多人不管任何情况都是“c with classes”再说
提到c++有更好,更安全,且大部分情况效能都更好的解法时
他们的反应都是“我不屑奇技淫巧,c才是神”(大意如此)
不然就是”我懒得学那么多,程式能动就好了“
写出来的代码水平就跟某复制帝一样高
即使bugs再多还是那一句“我不屑奇技淫巧,c才是神”
不晓得有没有, 比较类似的东西就macro和void*吧,可是这跟template差的远了
没了template我有很多generic的演算法都得作废了
用在设计class(policy base design之类的)倒是比较少
他们的c++名作中有那一本提倡的风格是“c with classes”?
有那一本推荐你应该把c++当c使用?
如果你读了他们的书还看不出来他们反对"c with classes"
并看出"c with classes"在大部分的时候在c++中都是一种anti pattern的话
那我也真服了你了
怕你真的没看过,推荐一些吧
BJARNE
Knowing C is a prerequisite for learning C++, right?
http://www.stroustrup.com/bs_faq.html#prerequisite
herb
Sutter: C++11 kicks old-school coding into 21st century
http://www.theregister.co.uk/2011/10/11/new_c_plus_plus_published/
andrei的话请阅读
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
meyers--effective 系列
c++ primer 5--lippman