免费注册 查看新帖 |

Chinaunix

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

《Python科学计算》有奖图书试读活动,欢迎大家参与!(获奖名单已公布) [复制链接]

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

刚才看到有人吐槽日语……  于是想到了"方言",于是关于标准化的定义……


c? a: b 是标准化, c? :b 是方言。

int x, y;
...
是标准化(C89)

int x;
...
int y;
...
是方言。


另一方面,例如: http://www.haskell.org/haskellwiki/Haskell_programming_tips 里面的
2.1 Don't reinvent the wheel
2.2 Avoid explicit recursion
2.3 Only introduce identifiers you need
2.5 Don't overuse lambdas
等等,都有标准化的例子。

也就是说,标准化是建立一套习语,尽可能地使用它以利于经过合理训练的程序员之间交流。
而不是以拉低下限,一次又一次地重复手工解释这些习语的方式达到利于交流的目的。

例如 http://bbs.chinaunix.net/thread-3679331-1-1.html
lz就是在寻求一种标准化的方式,也许是rotate+fill,可惜的是C/C++标准库没有提供有效的方式。
而2楼的做法就倾向于一次又一次的重复发明轮子,是反标准化的。

对有合理训练的程序员来说,遵守这种标准化可以让代码易写、易读、少bug、简练且高效。



对这两种标准化的定义我都是尽量去遵守的。除非必要否则不使用扩展、不重复发明轮子。

论坛徽章:
3
卯兔
日期:2013-08-15 13:17:31处女座
日期:2014-01-10 11:35:23双子座
日期:2014-01-25 02:16:06
12 [报告]
发表于 2012-03-08 22:06 |只看该作者
先看,下周一再来回复。

论坛徽章:
0
13 [报告]
发表于 2012-03-08 22:09 |只看该作者
大家好,我是本书的作者,若抽选到参与奖,请跳过。

不过我可以回答一下这些问题,

1,您在工作中使用Python做啥工作?

我工作的内容大致分为三种:MCU、DSP嵌入式开发,工控软件开发,一些控制和信号处理的算法研究

嵌入式开发
********

开发嵌入式程序主要是C语言和少量汇编,但是Python也派上了大用处,例如可以用它先模拟算法,设计滤波器,绘图。也可以设计一些调试工具,例如通过串口、CAN通信实时观察芯片内存中的数据,有时候调试比较复杂的东西时,甚至可以用pywinauto自动化界面操作,按照一定逻辑排查错误。在这些工作中,Python起到辅助作用。

工控软件开发
*********

工控软件开发主要是通过一些AD,DA,DIO,电机驱动扩展卡,监控传感器,控制电机,读取并分析数据。这些程序原先是采用VC 6.0编写的,界面设计一直很成问题,一个好的绘图控件都没有。后来我改用C#,提高了一些开发效率,但是C#语法比较麻烦,一段时间不接触就忘记了。后来就改用Python,问题是那些扩展卡都没有Python的演示程序,因此需要自己动手用ctypes库调用扩展卡的DLL驱动程序。一旦和扩展卡打交道的程序写好之后,剩下的就是Python的强项了。

* 用PyQt, wx可以很方便地制作界面,界面要求不高时,也可以用TraitsUI。

* 绘图工具可以用Chaco, Mayavi, matplotlib,如果要求绘图速度比较高的话,可以用guiqwt,这个是对Qt的qwt绘图库的包装,速度要比其它的都快。

* 如果需要做图像处理,那么OpenCV就派上用场了。

* 如果需要高效计算的话,一般可以用NumPy解决,解决不了的就用Cython或者SWIG写一个扩展。有时还需要用多进程模块multiprocessing。

* 数据存储可以用sqlite,如果是大规模的数据,可以用pyTable保存成HDF5格式。

使用Python能够解决绝大部分的工控软件的需求。

算法研究
******

Python开发快,比较适合研究算法,虽然执行的时候会很慢,不过也可以通过NumPy, Cython或者寻找一些现成的扩展库改善。当算法比较成型时,再用C, C++改写。

曾经有一个模拟项目的动态性比较高,用Python比较容易实现,运行速度虽然尚能接受,但是有时需要进行上百次模拟运行时,就需要等待很长时间了,因此决定用C++重写。而我的C++水平有限,不知道该如何设计,我最后采用Python动态输出C++代码,调用C++编译器编译成DLL,然后通过ctypes动态载入。由于每次根据用户的设置都会生成C++代码,因此使用的C++功能很基础,没有继承,虚函数等东西,我想能最大地提高程序的运行速度。最终程序的运行速度比Python版本提高了10-20倍(Python版本已经足够优化,使用了NumPy, SciPy的一些高速运算函数,否则纯粹的循环、判断和数值运算的话,C要比Python快几百倍)。

2,你认为Python相对于其他语言工作在处理你的工作的时候有优势有哪些?

* 扩展库非常丰富,而且都能看到源代码,源代码有时候比文档更管用。

* 便携性,我在U盘中安装了一个portablepython,并将所有会用上的扩展库都放进去了,这样无论到哪台机器上,都能运行我的Python程序。

* Python语法优美,用Python写程序是一种享受。

3,谈谈你阅读完样章的感受

这本书的编写历时近3年,是我在工作中自学的一个总结,因此成书时间拖得比较久。如果真要写的话,书中介绍的每个扩展库都可以写出一本书来,因此这本书只能起到入门、打基础的作用。读者可了解到足够多的库,但是具体到实际工作中的某个问题时,还需要您自行查找文档,甚至分析库的源程序。在解决问题的同时所学习到的才是最有用、最牢固的。

也许您会怀疑花许多时间学习一门新的语言,以及那么多不太出名、甚至文档都不全的扩展库是否值得。那么你可以看看我的经验:我在工作中一边自学一边用来做实际的项目,这几年下来我感觉我的开发效率比用C#时高出3-4倍,比用VC时高出7-8倍。而我获得的回报就是,每天都能不用加班,并且写出了这本书,更重要的是,我还有更多的时间陪伴家人了。

欢迎到本书的论坛共同探讨Python科学计算方面的问题。 http://www.zeuux.org/group/scipython/

论坛徽章:
49
15-16赛季CBA联赛之福建
日期:2016-06-22 16:22:002015年亚洲杯之中国
日期:2015-01-23 16:25:12丑牛
日期:2015-01-20 09:39:23未羊
日期:2015-01-14 23:55:57巳蛇
日期:2015-01-06 18:21:36双鱼座
日期:2015-01-02 22:04:33午马
日期:2014-11-25 09:58:35辰龙
日期:2014-11-18 10:40:07寅虎
日期:2014-11-13 22:47:15申猴
日期:2014-10-22 15:29:50摩羯座
日期:2014-08-27 10:49:43辰龙
日期:2014-08-21 10:47:58
14 [报告]
发表于 2012-03-08 22:25 |只看该作者
HyryStudio 发表于 2012-03-08 22:09
大家好,我是本书的作者,若抽选到参与奖,请跳过。

不过我可以回答一下这些问题,



欢迎作者现身哈

论坛徽章:
8
双鱼座
日期:2014-07-30 09:28:14辰龙
日期:2014-08-22 14:14:43水瓶座
日期:2014-12-02 15:36:392015年亚洲杯之朝鲜
日期:2015-02-06 09:28:592015亚冠之全北现代
日期:2015-09-10 14:40:18青铜圣斗士
日期:2015-11-18 09:22:56黄金圣斗士
日期:2015-11-26 09:17:2615-16赛季CBA联赛之新疆
日期:2016-08-15 17:00:22
15 [报告]
发表于 2012-03-09 08:52 |只看该作者
本帖最后由 20032007 于 2012-03-09 23:50 编辑

1,您在工作中使用Python做啥工作?
我是个业余编程的,主要是工作中写点小软件,方便自己或同一个项目组的同事用,去年开始用python做一些简单的数值处理,以前倾向与用matlab,因为matlab在计算方面效率高,现成的代码很多,但是matlab写gui比vb麻烦,交给别人用的时候异常麻烦。
后来了解到了python,开始尝试用一用。
2,你认为Python相对于其他语言工作在处理你的工作的时候有优势有哪些?
感觉和matlab比,上手的难度差不多,都比较容易,扩展包多,容易找到,和matlab的工具箱差不多,写界面的时候,比matlab容易一点,但还没有vb那么容易。vb写界面是容易了,但处理数据的时候效率太低,很多时候算几分钟都没有响应。当然python还有一个很重要的优势,就是版权。
3,谈谈你阅读完样章的感受
若愚大哥的这本书,初稿和样章我都有,样章很精美,老实说,这本书不是一本入门级的书,我这种菜鸟读起来有难度,但书中介绍了很多扩展库和资源,倒是像一本工具书,遇到困难的时候,可以翻一翻,查一下有哪些方向的扩展库可以利用。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
16 [报告]
发表于 2012-03-09 13:24 |只看该作者
本帖最后由 renxiao2003 于 2012-03-10 10:23 编辑

又回复一下 ,参照18楼。

论坛徽章:
0
17 [报告]
发表于 2012-03-09 13:25 |只看该作者
回复 1# send_linux


    1,您再工作中使用Python做啥工作?
日常Linux服务器的维护脚本,定期自动清理过期日志,删除临时文件,分析日志,相对shell的简介实现,Python 更加的有扩展上的优势;
某些Linux服务的状态监控脚本混合与Nagios做到实时的业务监控。

    2,你认为Python相对于其他语言工作在处理你的工作的时候有优势有哪些?

Python的语法相对比较容易入手、学习起来灵活,代码结构编写的清晰,易于整体的维护;


    3,谈谈你阅读完样章的感受

Python的科学工程计算对于IC企业的研发阶段的测试很有溢出,之前的专业测试中就使用很多Python的科学计算工程来实现基于TTCN的一致性测试工作。《Python科学计算》非常适合从事一致性算法验证的测试工程师来研读,其中体积的图形化显示也是非常适合Python脚本开发的使用,将数据处理图形化显示对于日志的处理将会非常有溢出。本书的溢出就是告诉使用Python要灵活使用资源。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
18 [报告]
发表于 2012-03-10 10:22 |只看该作者
1,您再工作中使用Python做啥工作?

我在工作中使用的最多的还是使用Python来做一些系统维护和管理类工作,增强SHELL的功能。暂时还没有使用它来做科学计算。
2,你认为Python相对于其他语言工作在处理你的工作的时候有优势有哪些?

Python语言相对于SHELL的优势在于,他是脚本语言,同时他也是面向对象的语言,对于有面向对象开发的人员来说,更宜于入手;同时,他的数学计算强于SHELL和其它脚本语言,在数学计算方面更强大。
相对于编译型语言如JAVA,C来说,不需要进行编译,学习容易,编写方便,在做系统维护方面功能远远强于这些编译型语言。
3,谈谈你阅读完样章的感受

从样章来看,这本书很适合于Python的入门及已经在使用Pytho语言的开发人员。对于初学者,能够很好的进行入门指导,包括环境的搭建,入门级学习。而对于已经有一定从业经验的人员来说,这本书也有很好的参考价值,能够让你更好的了解这门语言的优秀之处。能更好的写出性能更高的程序。

论坛徽章:
0
19 [报告]
发表于 2012-03-10 21:26 |只看该作者
Python和C/C++是我工作中的主要语言,用MATLAB的时候也很多。Python基本上完成两个工作,一是偶尔写点脚本自动化一些Linux的工作,二是替代MATLAB。前者主要是一些文本处理,其他的就主要是些数值计算,大多数时候就是为了快速验证一些想法。
优点就是能够很快地写出来,语言都比较简单,很快就能验证一些方案是不是可行。另外,用ipython,也可以交互处理。
样章读得不多,不过之前我已经把网上能找到的全部阅读过了,例子大多也自己写过,有代表性也很有实际用处。

论坛徽章:
0
20 [报告]
发表于 2012-03-10 21:28 |只看该作者
Python和C/C++是我工作中的主要语言,用MATLAB的时候也很多。Python基本上完成两个工作,一是偶尔写点脚本自动化一些Linux的工作,二是替代MATLAB。前者主要是一些文本处理,其他的就主要是些数值计算,大多数时候就是为了快速验证一些想法。
优点就是能够很快地写出来,语言都比较简单,很快就能验证一些方案是不是可行。另外,用ipython,也可以交互处理。
样章读得不多,不过之前我已经把网上能找到的全部阅读过了,例子大多也自己写过,有代表性也很有实际用处。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP