本期采访嘉宾:张若愚(HyryStudio)

日本神户制钢综合研究所从事研究开发工作,研究方向为:嵌入式DSP信号处理系统开发,嵌入式MCU控制系统开发,工业控制软件开发,信号处理、数据处理以及生产系统的计算机模拟。

欢迎大家跟帖提问,我们对于跟帖提问的网友给予30积分的奖励。更多访谈请关注ChinaUnix访谈录: http://star.chinaunix.net/

ChinaUnix社区:
     张先生您好!很高兴您能够接受ChinaUnix的采访,能够给大家简单地介绍一下?

HyryStudio:
     我2000年到日本留学,2004年硕士毕业之后一直在神户制钢的综合研究所从事研究开发工作。工作内容主要有DSP和MCU的嵌入式开发,工业控 制软件开发,以及一些信号处理、控制方面的内容。在工作中我逐渐使用Python解决各种问题,目前Python已经是我最主要的开发语言。

ChinaUnix社区:
     在好多技术开发人员眼中,Python可能只是一个脚本语言,现在大量的Python框架的流行,让Python有了向企业 级应用架构进军的机会,但是从您的图书的题目中我们能够看到,Python其实也是科学计算中的一个好手,能够简单地介绍一下Pytho科学计算的历史及 现在的应用前景么?

HyryStudio:
      正如 Eric Jones 为《Python科学计算》所作的序中提到的,Python自从诞生以来就一直和科学计算有着十分密切的联系。前期的许多Python研讨会都是在美国的各个研究机构举办的。Python 1.0诞生于1994年,而目前Python科学计算最核心的扩展库 NumPy 的前身Numeric在1995年就已发布。当时网络应用还未发展起来,Python可能更多的是运用于系统管理脚本以及一些计算任务。在2005年左右 NumPy将当时的两个数组处理扩展库Numeric和Numarray进行合并统一,成为Python科学计算最核心的扩展库。在NumPy基础之上, 发展出了很多Python专用的科学计算扩展库,而许多开源函数库也提供了Python的绑定,例如OpenCV、VTK,这些扩展库也通常会使用 NumPy的数组和Python交换数据。
目前Python在科学计算界的应用已经十分广泛。从2008年开始每年都举办了Python科学计算方面的会议,从中我们可以看到Python在各个领域的运用。而在今年的 PyCon2012 中,科学计算方面的内容更是占据了相当大的部分。
      实际上许多工程师、科学家并非专职的程序员,他们需要一种简单易学、功能强大而且免费开源的开发环境帮助他们解决工作中遇到的实际问题。 Python以及其众多的扩展库就构成了这样一个生态环境。他们可以编写简单的脚本做一些快速的数据处理,或者编写功能完整的计算、仿真应用程序,还可以 将现有的C、Fortran函数库包装成Python的扩展库。每位技术人员都能从Python的生态环境受益。

ChinaUnix社区:       

      其实我们也能够看到,开源软件在科学等领域有很深远的影响,比如在科学计算、生物信息学等方面,都有非常有名的开源软件,能够简单地和我们介绍一些在科学计算方面Python社区有哪些比较有名的项目或者函数库么?

HyryStudio:
      Python一直保持着很强的实用主义,它通常不会去试着重新开发一整套函数库,而是将现有的开源函数库包装成其扩展库。而Python则通过这些扩展库将众多的开源函数库连接在一起,是名符其实的胶水语言。例如由华盛顿大学的教授主导开发的 Sage ,就是一套以代替MATLAB、Mathematica、Maple等商用科学计算软件为目的的开源系统。它通过Python结合了众多的开源科学计算软件,并通过网页浏览器提供了一个与其交互的记事本文档界面。
Python的科学计算扩展库非常多,不同专业的技术人员都可以找到适合自己的扩展库。下面是我经常会用到的一个非常不完全的列表:
•        NumPy + SciPy + matplotlib + IPython : 这几个应该是每位开发者都应具备的扩展库。NumPy提供了多维数组以及众多的处理函数,SciPy提供了各种数值运算功能,matplotlib能绘制 出精美的二维图表,IPython则提供了一个超强的命令行,最新版的IPython还添加于Sage类似的浏览器的记事本界面(notebook)。
•        SciKits : 其中包括许多独立的扩展库,作为SciPy的补充。其中 scikit-learn 是一套机器学习库,包含了比较完善的文档以及众多的实例程序。
•        Pandas : 以Python世界中 R 的替代品为目标的数据分析库。根据其官方网站的测试,Pandas在许多方面的性能都比R要高。
•        ETS : 这是一套Enthought公司开发的函数库,其中的 Mayavi 能很方便地对数据进行三维可视化。
•        OpenCV : 这是一套计算机视觉库,目前的最新版本已经提供了十分完备的Python接口,能够调用OpenCV中众多的图像处理、模式识别函数直接对NumPy数组进行处理。

ChinaUnix社区:
      因为科学计算的特殊性,能够简单介绍一下Python在这个领域有哪些优势以及应用的场景,这个语言本身将来会有哪些进步呢?

HyryStudio:
      大多数工程师、科学家使用科学计算软件的目的都是为了快速解决其工作中遇到的问题,而不是开发出一套完整的软件。这就是为什么MATLAB这样的商 用科学计算软件十分流行的原因。而Python在这一点上实际上和MATLAB十分相似,我们也可以使用Python众多的扩展库快速写出一次性的数据处 理、运算的脚本。然而由于Python语言的一些高级特性,以及众多的科学计算之外的扩展库,我们可以将积累下来的一次性脚本进行改造,为它们提供命令行、GUI、 数据库、网络等众多接口,最终成为一套完整的工具包或者实用的计算软件。而且由于是开源的自由软件,我们可以在任何系统中安装Python环境,运行我们 的程序。我工作中所接触的所有计算机以及家中的电脑中都安装了Python环境,随时有了一个想法都可以立即打开电脑实现试试看,这对于需要授权的商用软 件来说是无法想象的。
      目前Python正处在2.x版本和3.x版本并存的时代,3.x将2.x中一些不合理、过时的设计剔除掉,为将来更好的发展打下良好的基础。然而 3.x并不兼容2.x,因此许多扩展库需要进行不小的改动。Python社区目前的当务之急是将众多的扩展库迁移到3.x版本之上。在科学 计算领域,NumPy已经移植成功。这为其它依赖于NumPy的扩展库铺设了一条光明之路。
一直以来,开发者们对Python的执行效率颇有微词,因此Python科学计算方面的社区在未来或许会更致力于运行效率方面。目前较为实际的解决方案是用编译型语言编写核心计算函数,然后对其进行包装,让Python调用。而 Cython 则可以将Python程序转换成C语言程序,并且可以通过一些特殊的编译型语言的语法,将程序的运行速度提升到C语言级别。此外另起炉灶的 PyPy 则通过JIT编译,提高Python程序的运行速度。根据目前的测试,平均能提速5倍,而对于纯数值的运算提升数十倍也是可能的。现在PyPy社区正致力于NumPy的移植工作,一旦移植成功,Python科学计算就又多了一种选择。

ChinaUnix社区:
      能够谈谈目前的工作么,国内外的科研院所的工作氛围相比,有何区别?以及大家对开源软件的看法和对软件版权的态度和意思。

HyryStudio:
      我的工作内容比较繁杂,但是大多数都会使用到Python,我曾写过一篇博文专门介绍 Python如何帮助我高效完成工作 。
我不了解国内的研究所的情况,而日本的研究所也就仅能就我所知做一些介绍。首先日本的许多专门从事软件开发的公司都比较保守,很多新开发的系统仍然 会使用10多年前的开发工具,例如VB 6.0、VC 6.0。一些大公司的商用项目还会使用.net 2.0或是Java 1.4这样N年前的平台。
      我所在的研究室并非专门从事软件开发,专门写程序的只有我一个人。同事们通常会使用Excel做数据处理,一些较复杂的东西会用MATLAB做。但 是由于MATLAB十分昂贵,因此整个20多人的研究室只有2台电脑安装了MATLAB,作为MATLAB专用机器,在日本的公司里是绝对不能用未授权的 软件的。
      如上所述,这种环境很不适合研究开发工作。这样他们也会自己寻找一些开源软件作为替代,例如 Scilab 。我所在的研究所的工作环境在日本来说还是比较宽松的,能够比较自由地选择软件。我在5年前左右开始大量使用Python进行开发,并且取得了很好的效 果。经过这些年的积累,同事们也对Python的能力有所了解了。最近我们已经开始定期举行Python学习会,在研究室内部推广Python的使用。因 此一款开源软件要获得大家的认可需要较长的周期和一些实际的成果。

ChinaUnix社区:
      国内相关的开源相关的科学技术的图书也不是很多,能够谈谈原因么?

HyryStudio:
     国内科学计算软件方面的书籍大都是介绍MATLAB的(其实日本也差不多)。这一方面和我国的软件版权环境有关,另一方面MATLAB这样的商用软 件更加会做市场推广工作,例如为大学提供廉价的MATLAB,以及十分详尽的文档。而开源软件的开发者多半将精力放在软件开发上,因此入门文档、手册以及 市场推广方面都与商用软件有较大的差距。这就需要我们这些开源软件的受益者多做宣传和推广工作。只要能做到文档丰富、对初学者友好,我想开源软件会更加有 市场的。

强调实用主义——采访Python专家HyryStudio相关推荐

  1. Python专家编程

    Python专家编程 一.CPython CPython是一个默认的.广泛使用的Python编程语言的实现.CPython是用C语言写的.除了CPython,还有两个高质量的Python实现:一个是J ...

  2. 年薪百万的阿里P9 Python专家快速带你入门Python

    年薪百万的阿里P9 Python专家快速带你入门Python 本文的目的是尽可能地用简洁的语言介绍 Python 编程语言,以帮助初学者能够快速入门Python.下面,让我们开始吧 什么是 Pytho ...

  3. 微软独家采访Python之父! 大爆料13个问题,快来看看龟叔的怎么说!

    公众号后台回复"图书",了解更多号主新书内容作者:菜鸟哥来源:菜鸟学Python 作为Python之父的龟叔,从加入微软到现在,已经有半年的时间了.微软也是在龟叔入职的半年之际,独 ...

  4. 51CTO采访Cisco专家何凌:实现整体虚拟化

    2008年11月4日,北京,VMware 2008虚拟化用户大会在北京国际饭店会议中心火热召开.作为此次大会的主要参展商Cisco在产品技术展区向用户展出了Cisco Nexus系列产品.Cisco展 ...

  5. 机器学习,就用Python!五大专家详解其优势何在

    编译 | AI科技大本营(公众号ID:rgznai100) 参与 | 林椿眄 编辑 | 明明 [AI科技大本营导读]Python 语言是机器学习领域最优秀的编程语言之一,现在它正挑战着 R 语言在学术 ...

  6. python怎么算阶乘_python专家写阶乘 ()用python计算阶乘

    请编写一个程序实现分享n的阶乘(即n.),并打印输出结果.要分享包括两个函def little_than_50(x): if x 语言很多时候是假的,一起经历过的事情才是真的. 这个用python写的 ...

  7. 值得收藏的45个Python优质资源(附链接)

    授权自AI科技大本营(ID:rgznai100) 本文共4157字,建议阅读7分钟. 本文为大家挑选了适合初学的45个Python的优质项目. 热门资源博客 Mybridge AI 比较了18000个 ...

  8. 值得收藏的45个Python优质资源

    REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API https://www.udemy.com/rest- ...

  9. 对比了 18000 个 Python 项目,这 TOP45 值得学习!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 图片来源:edureka.co 翻译 | 林椿眄 编辑 | Donna 出品 | 人工智能头 ...

最新文章

  1. 如何优雅的使用 phpStorm 开发工具
  2. python3.x安装cv2失败
  3. 命运(HDU-2571)
  4. 多软件启动器 v1.0
  5. JS针对图片加载及404处理
  6. THUPC2019划水记
  7. 【转】乐观锁和悲观锁的区别
  8. SpringBoot @Value 读取配置,太强大了!
  9. SQL Server2005杂谈(5):将聚合记录集逆时针和顺时针旋转90度(行列互换)
  10. java scjp考试_通过Java认证 SCJP 考试之精辟总结
  11. uds协议之can总线程序升级
  12. 阅读开源引擎源代码的方式学习游戏引擎好吗?
  13. JS实现省市县三级联动
  14. 下一清分日期是几年前_我驾驶证有违章我是在清分之前处理的清分日期过后才交的罚款那我那个分还能不能清零那个分还能不能清零?-免费法律咨询-华律网...
  15. Java实现OPC通信
  16. Python之父退休,龟叔与Python的渊源
  17. JavaFx笔记二:布局
  18. pr模板.mogrt格式安装方法
  19. Map 和ConcurrentMap 线程不安全和线程安全证明
  20. Python:如何方便地用Python发outlook邮件

热门文章

  1. 《给研究生的学术建议》14——答辩
  2. qt编写网易云界面(5)----搜索框的实现
  3. 一些黑防的VIP教程,绝对可下,迅雷下载
  4. Minimun Snap的matlab实现(含代码)
  5. 如何使用Tera Term Language (TTL)
  6. echart 世界地图发光_echarts世界地图设置高亮
  7. 基于SSM的外卖订餐系统
  8. 网络系统集成与综合布线复习资料
  9. eclipse + sakai
  10. python编程从入门到实践第二版答案(第三章)