| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python的进击(上)-- IC工程师的软实力 -> 正文阅读 |
|
[Python知识库]Python的进击(上)-- IC工程师的软实力 |
作为一个IC后端工程师,常年需要和工具、数据库和unix打交道,零零总总算下来也学(被)会(迫)了好几种脚本语言:perl,shell,TCL等。在项目的反复捶打下,确实提高了不少工作效率,受益匪浅! 软件工具不比IC设计工具,更新换代比较快,优秀的语言层出不穷,对于使用多年脚本语言的IC工程师而言,可能已经很久没有碰过大学里边学习过的高级语言了吧。 基于过往IC设计的工作诉求,python对于IC设计有点杀(实)鸡(在)用(太)牛(强)刀(大)的感脚。芯片工程师的大部分的工作都是针对明码报告、数据的整合和抽取(应该没有小伙伴去研究DDC之类文件的数据结构吧)。 python是种什么语言?从代码解析的原理上讲还是一个类脚本语言,因为在使用的时候用户需要指定python解析器(interpreter )的位置,解析后就可以直接执行。不用像高级语言那样需要编译(build)和链接(link),譬如C。对于C这种语言,对应的工具就是编译器(compiler ),譬如很老很老的TurboC2.0。
一解析器步就可以生成CPU可以识别的机器码,出发执行,速度比较快
多一步操作,编译会稍慢,但是生成的机器码是针对当前运行环境CPU的,程序跑起来自然是很溜。 可以看到,python具备脚本语言的快进快出,同时也有类似高级语言的运行效率,兼顾开发时效性(realtime)和运行速度(CPU time),如此的语言怎能会被工程师们忽略? python的优势语法简单且规范python 语法简单,剔除了一些缀子(譬如:$, set)和尽量减少括号(譬如if等循环语句,用缩进和空行组合来替代传统的括号/end/then之类的写法)。所以说python可能是最省键盘的高级语言之一。 丰富的数据类型数据类型是一个语言的基础面。python的数据类型非常灵活和多变。数据的引用和回收机制可以让计算机的管理和用户的使用双双提高效率。
类似的,数组套接数组成二维、甚至多维数组。同样,数组和字典也可以互相嵌套。更有趣的是,对于数组这种变量,也不要实现定义长度,可以随时裁剪和追加,对于变量使用的的各种调整提供了非常便利的操作可能。 所以变量的调整和改变更像是调整了这个指针而非变量本身。这种对象共享式结构对于不可变变量(string/tuple)非常好用也方便内存管理。但是对于可变变量(list/dict)而言,对象的改变会引起连锁反应,用户需要慎重使用变量赋值和变量内容更新。 面向过程(Procedure Oriented)编程和面向对象 (Object Oriented)编程基于自然界的一个较简单的思维,任何事件都是时间的积累,譬如:文章的从头开始阅读,时间越长,阅读的行数越多。基于此传统的程序方法是使用面向过程(时间线)来进行程序开发。这里边有很多好处,结构比较好理解,程序顺序易梳理,可读性强。 通过下面的图示可以简单理解一下面向过程和面向对象编程的框架 譬如C语言就是面向过程编程的语言,相应的C++、java,python等是面向对象编程的语言 python提供了丰富的类别和接口,这让面向对象编程变得可能,至于用户是采用python来做面向对象还是面向过程编程,完全在于用户的场景和处理方法,简单的总结:面向过程容易理解和开发,面向对象容易扩展和维护。 丰富的模块和生态在网络、社区和git中,python具有非常多的模块(model),很多高大上的模块广受好评,甚至之前的一些支持C的模块现在也提供了对python的支持。【摘录自: Python有哪些实用的模块? 侵删】 1. Requests. The most famous http library written by kenneth reitz. It’s a must have for every python developer. 2. Scrapy. If you are involved in webscraping then this is a must have library for you. After using this library you won’t use any other. 3. wxPython. A gui toolkit for python. I have primarily used it in place of tkinter. You will really love it. 4. Pillow. A friendly fork of PIL (Python Imaging Library). It is more user friendly than PIL and is a must have for anyone who works with images. 5. SQLAlchemy. A database library. Many love it and many hate it. The choice is yours. 6. BeautifulSoup. I know it’s slow but this xml and html parsing library is very useful for beginners. 7. Twisted. The most important tool for any network application developer. It has a very beautiful api and is used by a lot of famous python developers. 8. NumPy. How can we leave this very important library ? It provides some advance math functionalities to python. 9. SciPy. When we talk about NumPy then we have to talk about scipy. It is a library of algorithms and mathematical tools for python and has caused many scientists to switch from ruby to python. 10. matplotlib. A numerical plotting library. It is very useful for any data scientist or any data analyzer. 11. Pygame. Which developer does not like to play games and develop them ? This library will help you achieve your goal of 2d game development. 12. Pyglet. A 3d animation and game creation engine. This is the engine in which the famous python port of minecraft was made 13. pyQT. A GUI toolkit for python. It is my second choice after wxpython for developing GUI’s for my python scripts. 14. pyGtk. Another python GUI library. It is the same library in which the famous Bittorrent client is created. 15. Scapy. A packet sniffer and analyzer for python made in python. 16. pywin32. A python library which provides some useful methods and classes for interacting with windows. 17. nltk. Natural Language Toolkit – I realize most people won’t be using this one, but it’s generic enough. It is a very useful library if you want to manipulate strings. But it’s capacity is beyond that. Do check it out. 18. nose. A testing framework for python. It is used by millions of python developers. It is a must have if you do test driven development. 19. SymPy. SymPy can do algebraic evaluation, differentiation, expansion, complex numbers, etc. It is contained in a pure Python distribution. 20. IPython. I just can’t stress enough how useful this tool is. It is a python prompt on steroids. It has completion, history, shell capabilities, and a lot more. Make sure that you take a look at it. IC工程师的抉择如文章开头所言,一般的IC芯片工程的大部分时间的处理对象都是纯文本的数据,这也是为什么前边提出来的脚本语言:TCL、shell、perl在IC设计领域里流行的一个原因。 随着工作的节奏越来越快,数据量越来越大,传统的脚本语言慢慢也会遇到一些障碍。譬如:大数据的处理和归集、友好的图表展示、具有GUI界面的胶水粘合器、office全家桶以及PDF等富文本文件编辑等等 在过往,perl一直是一个效率不错的脚本语言,但是正如某位大咖所言:perl是一个文学家构建出来的,而python则是由一个数学家开发出来的。维护过perl程序(即便是自己写的perl脚本)的工程师对此一定深有体会。 在初接触phtyon后,笔者对IC工程师的脚本语言的选择,有下面一些建议
本章词汇
【敲黑板划重点】
参考资料Mark Lutz Python 学习手册 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 10:20:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |