免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

每个程序员都应该学习使用Python或Ruby,你怎么认为? [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
41 [报告]
发表于 2012-04-28 11:33 |只看该作者
回复 30# OwnWaterloo


    好吧,那我就只好自己来了……继续讨论一下Python和Ruby,当然还得带上《梦断代码》

最近在写一个Lua的模块,感觉一下子悟到了很多。现在的软件开发都是所谓的”黑盒子“,所谓的”模块封装“。包括Python在内的很多语言都是基于这一点来设计的。可是问题是,目前我只看到函数式设计能真正的”完全封装“,OO其实是不行的——你必须要发送消息,去和其他元素互动。而函数式是连时间在内可以把所有的部分都封装掉的。换言之,一个统一的封装界面可以操纵全部的细节,而这一点非函数式语言很难做到。

所谓的黑盒子,其实不是全黑的,它必须要有接口,一个复杂的模块,会导致接口极难设计,你需要暴露足够多的细节以满足所有的要求。一个简单的例子是ADT,要产生一个ADT你可能得调用ADT_t *ADT_new();但是这意味着没有暴露分配接口、同时也会导致ADT系统内的内存分配(而这和ADT是没有关系的),在积木原则里面,这种”没有关系“的细节理应抽出积木,但是在这里是不好抽出的。要抽出:ADT_init(ADT_t *adt);,你必须要暴露ADT_t的实现细节,或者至少是要暴露ADT的大小和对齐还有stride等等信息,这样的封装最终导致的结果是接口越来越难设计,或者是干脆无法满足具体的要求。封装本身是导致性能下降的一个主要因素,而且也有可能导致维护性的降低,南辕北辙。

解决方案是什么呢?是类似Python/Ruby式的方案:脚本语言提供平台,写很薄(比我以前想的还要薄)的抽象层单纯用于同步脚本和非脚本。是的,仅仅是同步,并不是封装。封装是由两边自己来决定的。这样的设计可以让脚本层面和底层层面都变得很好写。也就是说,好的软件设计不再是”积木式“或者”黑盒式“的,而是”层“状的。你可以暴露足够多的细节,也可以不暴露任何细节,你只需要从一个单纯的source获取数据,然后处理交给sink即可。也可以是双层的。这样不算是”盒子“,倒可以说是管道。我觉得初学者,特别是学习期的人用这种思想(而不是所谓封装、黑盒神马的)去思考问题,设计模块会更简单。关键还是在于上层和底层更加mix的交互。

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
42 [报告]
发表于 2012-04-28 11:41 |只看该作者
回复 30# OwnWaterloo


    不提说服,我们只讨论一下如果(我是说如果)你想要脚本语言进行设计(不只是Python/Ruby),要注意(或者学习)一些什么东西吧。这也是切题的对不对?

加油加油,我们都搞一本收藏好了~~

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
43 [报告]
发表于 2012-04-28 11:42 |只看该作者
回复 35# walleeee


    我们可以把预言贴变成非预言贴嘛 这里2b少(目前为止)怕什么

论坛徽章:
0
44 [报告]
发表于 2012-04-28 13:03 |只看该作者
语言嘛,到底哪个好哪个坏,哪个更优,哪个更有必要学,每个人的想法肯定都是不一样的。
按照咱党的理论来讲,就是不同阶级有不同的立场。更何况我们这些程序员呢?(就跟以前的文人一样酸气都很重)

干着不同的工作,写着不同的Code,总感觉自己用的最好的(谁不感觉自家的孩子好呢?)。

本人做为一个Cer(嵌入式), 还是对python很是推崇的,从在学校起一直在用。 不敢诳论其功能性有多强,但是至少其实用性还是很强的,不管是在windows还是Linux(资深SHELLer你可略过)中,能方便你很多工作。这也是大多脚本语言的优势所在吧。

其实现在很多程序员排他性很重,想我学了这个,已经能解决问题了,为什么还要知道那个? 确实,语言这东西都是相通的,会了一个,其他都是触类旁通的,你尽可以有你的坚持。

但python相对其他语言来说还是比较容易上手的,如果你想在这里谈论它的好坏,建议你不妨先试试它? 或许一见钟情呢?)

论坛徽章:
0
45 [报告]
发表于 2012-04-28 14:48 |只看该作者
回复 43# starwing83


也是。这个也算是比陈二货好多了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
46 [报告]
发表于 2012-04-28 15:03 |只看该作者
回复 41# starwing83


嘿嘿,貌似你现在也偏向"其实不必像OO(你研究的论文里那种)那样绝对封装"了嘛
也不必层层紧锁。

至于size/alignment/stride,这种机械的细节我觉得还是应该交给工具去搞,比如有考虑这个问题的语言。
不过C一开始就把最后一个丢了,C++也没有加上,而其他还会考虑到如此底层的语言就很少了。。。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
47 [报告]
发表于 2012-04-28 15:05 |只看该作者
回复 42# starwing83

我也这样想,也准备这样做。
但在某口水战中消耗了过多的精力……
估计得五一后了……

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
48 [报告]
发表于 2012-04-28 15:07 |只看该作者
回复 39# 无风之谷

没别的意思,就是有点好奇问一下
因为听《软件随想录》——这书还是CU送的  ——里提到《梦断代码》其实是一个悲催的真实故事

论坛徽章:
0
49 [报告]
发表于 2012-04-28 15:11 |只看该作者
回复 48# OwnWaterloo


    确实是一个很悲催 很悲催的 真实故事。。

论坛徽章:
0
50 [报告]
发表于 2012-04-28 16:20 |只看该作者
OwnWaterloo 发表于 2012-04-28 15:07
回复 39# 无风之谷

没别的意思,就是有点好奇问一下


http://snowman.blog.51cto.com/307956/80194

Chandler!!貌似去年还抓来用的,不太好用,
远没Pim Essential好用。对我来说,不晓得它怎么回事,明明就是个SunBird嘛,搞那么庞杂难用。

反正就是很CodeBlock的感觉,大而不精。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP