免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8259 | 回复: 19
打印 上一主题 下一主题

[其他] 都说脚本语言的开发进度快,为什么C/C++就不能快呢? [复制链接]

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-08 12:09 |只看该作者 |倒序浏览
不都是写代码吗?

我感觉写PHP,JavaScript的速度,跟写C/C++的速度差不太多啊。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2014-02-08 12:27 |只看该作者
回复 1# fender0107401


    脚本语言:
1、语法糖更丰富
2、内置功能更丰富
3、不容易出现一些比较难调试的bug
4、应用开发的库相对更丰富

前两点使得相同的功能,使用脚本语言开发需要的代码行数往往短得多;后两点使得不但应用开发更快,调试时间也会更少。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3 [报告]
发表于 2014-02-08 13:37 |只看该作者
回复 2# MMMIX

Good!

论坛徽章:
13
双鱼座
日期:2013-10-23 09:30:05数据库技术版块每日发帖之星
日期:2016-04-20 06:20:00程序设计版块每日发帖之星
日期:2016-03-09 06:20:002015亚冠之塔什干火车头
日期:2015-11-02 10:07:452015亚冠之德黑兰石油
日期:2015-08-30 10:07:07数据库技术版块每日发帖之星
日期:2015-08-28 06:20:00数据库技术版块每日发帖之星
日期:2015-08-05 06:20:002015年迎新春徽章
日期:2015-03-04 09:57:09辰龙
日期:2014-12-03 14:45:52酉鸡
日期:2014-07-23 09:46:23亥猪
日期:2014-03-13 08:46:22金牛座
日期:2014-02-11 09:36:21
4 [报告]
发表于 2014-02-09 09:56 |只看该作者
你去试下socket的写法,对比下C和脚本语言就知道谁方便了,哈哈

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
5 [报告]
发表于 2014-02-10 11:25 |只看该作者
胶水语言的特点嘛。C/C++更接近硬件,封装低。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
6 [报告]
发表于 2014-02-10 12:57 |只看该作者
资源和库函数越多,越容易。
c语言自己积累了很多自己用的库,所以对于长期使用的人来说,也非常快速。都是找一些已经做好的库(存在的或是自己的)直接使用。

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
7 [报告]
发表于 2014-02-10 16:00 |只看该作者
本帖最后由 shan_ghost 于 2014-02-10 16:04 编辑

语言本身来说没什么根本差别,大家都是与或非三种逻辑+顺序分支循环三个控制结构而已(暂时忽略很少在实际工程中使用的函数式语言)。

既然根脚都一样,那么在实现同样的算法时,需要投入的精力/时间当然也都一样,谈不上什么区别。


真正的区别,主要在于资源管理、库,以及语言/库本身的衍生问题。



常见/简单应用中,资源往往仅限于内存。所以,当c/c++开发者还在绞尽脑汁理顺内存分配/回收逻辑时,有垃圾回收机制的脚本语言设计者已经可以直接开始逻辑编码了。

但,如果资源不仅是内存、或者c/c++开发者搞定了资源问题、或者垃圾回收开销太大(而良好设计的内存池可以直接绕过这种开销)而不得不手动干预,开发效率可能就刚好两样了。



库主要是两个方面,一是程序结构组织(如面向对象框架、MVC框架等),二是基础算法(如排序、查找……以及最常用到的、如字符串相关的一大坨)。

这方面,c/c++的字符串处理功能较为薄弱(其实c++已经不错了……但用string又会牵涉到内存分配等问题,不如脚本语言方便);c还少了个面向对象框架——如果的确需要这个机制,的确不如c++方便。

当然,如果投入一定的精力,是可以找到一些非常棒的基础库的。

不过……由于c/c++太过强大,这些基础库往往易用的就快不了、快的就不太容易用;而且功能往往也比较少。要在这么多库中作出选择,还是颇费精力的——虽然,很多时候随便抓个什么库都比脚本快(也比脚本库功能更多)。


而脚本语言呢,它的用户往往并不怎么关心性能,也不需要太过生辟的功能。所以语言作者/开发社区很容易就能搞出一大筐的各种“标准”库,而且往往直接附带在安装包中。开发者只需一行import就能马上开搞。

如此一来,后者开发速度自然就快了。


当然,以上一旦解决了,由于大家都是与或非三种逻辑+顺序分支循环三个控制结构,开发效率自然扯平。




最后,c/c++几乎可以让人控制到每个细枝末节;但代价就是,解决任何问题,这些细小的方面都可能过来掺上一脚。
c还算好,但指针及其衍生问题已经很让人头痛了。而c++……复杂度爆炸说的就是它。

相比之下,脚本语言虽然一个个粗枝大叶的,需要极限压榨性能时难免力不从心;但做普通开发时,开发者却也因此可以粗枝大叶一些,不必去考虑太多“晦涩”“微妙”的问题。


当然,对c/c++玩的很熟练、懂得取舍的人来说,当然也可以明智的主动裁剪,放弃一些东西——比如说,能事先估计到内存用量上限、且这个上限普通机器都能承受的话,那就干脆一次分配全部内存,然后不写归还逻辑(进程退出时自然会全部归还):这个设计就同时得到了c/c++的执行速度和脚本的开发效率(当然,作出这个设计时,还是要比脚本语言多考虑一些东西的)。




总的来说,在开发流程性的“高级”应用时,由于脚本语言对常见问题有较完善的支持,开发效率的确是比c/c++高很多的,对开发人员的要求也低得多——这类应用本来也不需要什么算法,高级批处理而已。
但,开发算法/内存密集的“核心”“底层”应用时,c/c++可不仅是执行效率高——得益于它的精细控制能力,c/c++在这些方面的开发效率也是远优于脚本语言的。

举例来说,我做过一个对文本做模式分析、然后根据分析结果矫正文本格式错误的东东,用“擅长”处理字符串的脚本语言写了两天(因为没法设计自定义数据结构,只能用list/dict来回套),处理区区几K的数据都要跑5~30秒(因为没有引用,不得不到处疯狂复制/拼接字符串,效率太低了);而用c来写,同样的任务半天就搞定,而且一秒就能处理几十M的数据。



总之,c/c++绝不是什么过时的、没有开发效率单片机语言、底层语言。企业开发用不上倒是真的。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
8 [报告]
发表于 2014-02-10 16:29 |只看该作者
说实话,我从来没感觉自己管理内存有什么压力。

我感觉自己管理挺好的挺好的。

论坛徽章:
0
9 [报告]
发表于 2014-02-10 19:59 |只看该作者
because:
script ---> human
c/c++ ---> machine

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2014-02-10 21:11 |只看该作者
主要问题是自己没能力写库,
用别人的库又

哦草编不过啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP