- 主题:Java农转写cpp发现,写Java比写cpp省心太多了
如果你说的是C++11的那些_ptr,这些东西坑非常多
现代高性能编程的一个基本要求是异步执行,异步错误处理,而C++的智能指针对跨线程的限制很严格,就算手动的跳过了某些限制,也会引发复杂难以诊断的内存和互斥问题。
【 在 stub 的大作中提到: 】
: cpp有智能指针,目前还没发现内存管理有什么问题
--
FROM 27.91.71.*
C++也可以catch一切异常啊
【 在 stub 的大作中提到: 】
: 一个例子,Java中几乎一切可catch,包括0作除数这种。 这样,写业务逻辑,就可以放心大胆的写,而不用担心异常case导致服务出问题。而cpp一不小心就core了。
--
FROM 27.91.71.*
java的垃圾主要是因为缺语法糖,代码被过度设计了
C#的垃圾恰好相反,是语法糖太多而码农不会用,非要按照C++或者java的方式写
【 在 fanci 的大作中提到: 】
: 对,所以Java造垃圾的速度惊人,因为垃圾看上去也是光鲜亮丽的。
--
FROM 155.64.23.*
用SEH
BOOL SafeDiv(INT32 dividend, INT32 divisor, INT32 *pResult)
{
__try
{
*pResult = dividend / divisor;
}
__except(GetExceptionCode() == EXCEPTION_INT_DIVIDE_BY_ZERO ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
return FALSE;
}
return TRUE;
}
【 在 stub 的大作中提到: 】
: 1/0怎么catch
--
FROM 155.64.23.*
SEH也能抓得住内存异常
其实java的异常底层基本上也是这么做的,至于C++委员会为什么不把它们作为正式标准,就属于无数难以理解的奇葩价值观之一了
【 在 stub 的大作中提到: 】
: 除0只是举例。空指针,越界这些在Java都可以catch,cpp全core
--
FROM 27.91.71.*
过去有人讨论过好奇号火星车的核心代码,大头是用python还是什么驱动的transpiler生成的C
老美一共没几杆枪,直接用C写不起也测不干净
【 在 sobe1 的大作中提到: 】
: 所以managed C++才是完美的语言?
:
--
FROM 155.64.23.*
我是觉得C++ CLI这玩意毫无意义,是MS内部为了让C++死忠老头子happy而发明的
这实际上是一种和C#平行的新语言
【 在 hongdiao 的大作中提到: 】
:
: 好歹说个C++ CLI,managed C++那是多少年的古董了。。。
--
FROM 155.64.23.*
有个最简单的优化办法,就是不要每次都make clean
【 在 mopo 的大作中提到: 】
: linus的编译可能跟我们的编译就不是一码事。。
: 随手就能写出git的人,有一百种方式优化编译过程
:
--
FROM 27.91.71.*
比如某资深C++码农写的C#:拒绝使用异常只使用error code,每个json对象都定义data class,每个类都先定义interface,不用linq而是拆解成无数个“可重用”函数。
估计这人也常喷C++效率暴打C#
【 在 a0123456789q 的大作中提到: 】
: 不如C#。在C#里,很难写出 难调试的程序。
:
--
FROM 27.91.71.*
这类程序关键是底层调用专用库,算法本身用什么东西写都无所谓。一般来说选的是写起来最方便的,比如matlab,python。
【 在 hgoldfish 的大作中提到: 】
: 你这还是应用场景错了。。
: 试试拿 java 写内存密集、计算密集的程序,崩是不会崩,但做优化烦死人了。一个单机能搞的事情,经常要搞成集群。
:
--
FROM 27.91.71.*