I bought an English book for kids to learn Python 3 years ago. I spent an afternoon following the routines in the book and felt that Python programming is really very simple. Later, I saw that someone ported MicroPython to the STM32MCU, and also bought a textbook and a matching MCU board for our engineers to experience. Later, I learned that the Xilinx Global University Planning Department was concentrating a lot of resources to port Python to its flagship. On the product Zynq, and made a Pynq board, according to its homophonic board color is pink.
Last year, AI has become hotter, and Python has also become the best introductory language. We also invited Qi Wei, a well-known Python programming master, to teach the basics of Python on Moore Bar.
It can be said that Python will become more and more important in the future hardware and software combined system. If novices of EE want to learn programming languages, I must recommend Python.
Let’s take a look at the "Hundred Thousand Whys of Hardware" article edited from the Internet and have more information for your reference.
--------------------------------
In the early years, although Python was a relatively easy-to-use scripting language and had strong community support, some non-computer professionals chose it as an entry language. Unfortunately, it cannot achieve some very low-level controls, so it is not eye-catching in the hardware field.
But today is different!
The hardware community is also very concerned about Python!
Speaking of Python for hardware development. Many people may think of Raspberry Pi and other support linux systems (there are many examples of Raspberry Pi and Arduino using Python, for example, using RaspberryPi hardware and Python language to complete a robot production.), but now Python has It is completely possible to break away from the system and proceed directly to the development of the single-chip microcomputer.
Use Python language to control MCU
MicroPython is Python that can be run on the microcontroller, and you can develop microcontroller programs through the Python scripting language. MicroPython is based on ANSIC, the syntax is basically the same as Pyton3, and it has its own parser, compiler, virtual machine and class library. At present, it supports 32-bit-based ARM processors, such as STM32F405, STM32f407, etc., which means that the Python language can be directly run on the ARM processor STM32F405, and the Python language can be used to control the microcontroller.
With MicroPython, users can fully access and control the underlying hardware through the Python scripting language, such as controlling LED bulbs, LCD displays, reading voltage, controlling motors, accessing SD cards, etc.
The following article published by EDN in the United States introduces the role of Python in real-time embedded systems: Python'sroleindevelopingrealtimeembeddedsystems.
Python has good cross-platform, such as Linux and Windows, or single-board computers such as RaspberryPi. However, with the increasing popularity of Python, one may ask whether there is also a place for Python in real-time embedded systems. The answer is yes. Below are the five main roles that developers have discovered that Python may play in real-time embedded system development.
Function #1 Equipment debugging and control
In the process of embedded software development, developers often need to analyze bus traffic, such as USB, SPI, or I2C. Some analysis is only for debugging purposes, but sometimes it is necessary to control the bus analyzer and send information to the embedded system. Many bus analyzers and communication tools have friendly user interfaces that can be used to control the tools. They also usually provide a way to develop scripts, which can also be used to control tools. Python is a commonly supported scripting language, sometimes it is an interface to some tools, or used to control tools.
Role #2-automated testing
The ability to send and receive messages in embedded systems through Python control tools makes it possible to use Python to build automated tests (including regression tests). Python scripts can set the embedded system into different states, set configuration files, and test all possible interferences and interactions between the system and the external environment. The advantage of using Python to develop automated tests is that regression testing can develop continuous tests and train the system. Any bugs or unqualified results caused by any code changes will be detected in real time.
Role #3-data analysis
Simply search for Python libraries on the Web, and you will find that there are many free and powerful Python libraries that can be used to develop applications. Python can be used to receive very important embedded system data, and then store it in a database or locally for analysis. Developers can also use Python to develop real-time visualization functions to display critical parameters, or store these parameters for subsequent analysis. One of the advantages of using Python for data analysis is that when the basic work is completed, the implantation of new features will appear relatively simple.
Role #4-real-time software
Python has proven its power and ease of use, and even discovered that it is entering real-time embedded systems as a programming language. Yes, the embedded software itself is written in Python instead of C++/C++. The most widely used version of Python for real-time software is MicroPython, most of which are designed to run on ARM Cortex-M3/4 microcontrollers. MicroPython is not alone. Synapse and OpenMV use both MicroPython and their own Pythonport in embedded systems. Readers who are interested in MicroPython may also be interested in the continuing education courses of DesignNews (sister institution of EDN).
Role #5-learn object-oriented programming
Python is a free programming language that can be used across multiple platforms and is relatively simple for students and non-programmers. This language is different from the C language, it is also modern, and can be structured in a free-form script type, or as a complex object-oriented architecture. Python itself is also very flexible. There is even this scenario: Electrical engineers without programming experience can use Python to write useful test scripts or implement electrical board inspections in the least amount of time.
The learning curve of Python is not steep. Developers who are familiar with the learning curve of Python find that learning Python is easier than learning any other programming language when you have a foundation in other languages. For these reasons, developers should not be surprised when they see Python acting as a programming incubator and absorbing other inexperienced engineers to contribute to the design cycle sooner rather than later.
what? Python+FPGA! ?
Teacher Xia Yuwen recommended a post on WeChat a few months ago, saying that someone has achieved super acceleration performance with Digilent's PYNQ-Z1 board.
In the early years, the development of FPGA was based on the hardware description language. From the beginning of VHDL to the more popular Verilog, the software application also developed from the original assembly language to the current implementation of c/c++. FPGA development path familiar to most FPGA developers. Last month, IEEE included a paper on the use of Python to develop FPGA applications.
At the 25th IEEE International Symposium on the Field of Programmable Computing Machines held in Napa, USA, a short paper entitled "Evaluating the Performance of Fast Development of Heterogeneous Processor FPGA Applications Through Python" won the Best Short Paper Award. This paper mainly discusses the advantages and efficiency of Python development of FPGA applications. The paper aims at Digilent's PYNQ-Z1 board (internal integration of a XilinxZynqSoC), through the PYNQ development environment that supports Python programming and JupyterNotebooks framework, the application of Python to this board Carry out development programming, and finally evaluate the advantages and efficiency of the development results. It is worth mentioning that the authors of this paper are all industry leaders, including senior computer scientist Andrew G. Schmidt, computer scientist Gabriel Weise, and research director Matthew French from the University of Southern California Engineering Technology Science Association. In the thesis, Professor Matthew French mainly used the PYNQ development environment to evaluate the impact on FPGA devices, performance results, and bottlenecks when using Python language to program XilinxZynq devices. In addition, the professors compared and analyzed the results of Python-based development and the existing C language-based development and manual development results.
In the paper, the professors also elaborated on the advantages and disadvantages of the PYNQ development environment:
Secondly, as of now, PYNQ does not support any advanced synthesis, nor can it directly port Python applications to FPGAs. This means that developers still have to use FPGA to create a design prototype, that is, when PYNQ provides an Overlay framework that supports the board's IO interface, any user logic must still be created and synthesized by the developer himself. However, developers can still use advanced synthesis tools or the Python-to-HDL project mentioned above to complete this task, but in the end, developers still need to design and create a bitstream file that integrates Python code based on this design.
It is precisely because of the flaws in PYNQ that the authors of the paper did not simply rely on the existing PYNQAPI interface and overlay. They developed a specific application kernel based on the Redsharc project for research.
What is the result? At the end of the paper, the author gave the evaluation results of Python development Zynq applications. The results show the general image processing pipeline performance of this research through c/c++, as well as the performance results achieved by custom hardware accelerators and Python (shown in the figure below), which helps us better understand the Python+FPGA development environment Performance and performance. It can be seen from the table that the results are very obvious. The speed of implementation through PYNQ is 30 times faster than that of c. What's more, it can be seen from the results that when Python is implemented, there are more effective libraries available, such as OpenCV, Its performance can grow even more.
The combination of Python software implementation and FPGA performance potential is a very meaningful work that will create a vast developer community similar to Raspberry Pi and Arduino. Python+FPGA is a broad field that has not been surveyed-a new and more efficient development space-the field that will attract more system developers to join through the PYNQ development environment.
A few days ago, at the Xilinx OPENHW2017 Innovation Competition and Teacher Summit, Associate Professor Song Tian of Beijing Institute of Technology gave a speech on "Python Programming Language and PYNQ in China", and popularized science about the reasons why Python programming is so popular all over the world.
As an example of the Python programming language, only 21 lines of code are used to complete the processing of an image sketch. Python greatly improves the development efficiency.
The popularity of artificial intelligence and machine learning has made Python stand out from many programming languages.
What are you waiting for?
Life is short, I use Python
Attached 11 major programming language salary rankings
There are many programming languages, but not all have the same needs or wages. The popularity of artificial intelligence and machine learning has made Python stand out from many programming languages. The following will synthesize various sources and provide you with some references based on the relevant salary levels, popularity and prospects of different programming languages ​​in the U.S. market.
Salary level
Use the foreign recruitment website Indeed.com to divide the salary level of programming languages ​​into 9 levels: Based on this result, Ruby/RubyonRails seems to make you earn the most, and Python, C++, iOS and Java are also decent choices. If salary is your main concern, then maybe C, PHP and SQL are not the most ideal choices...
And here is the data from gooroo.io, averaged based on the salary range given by each job posting: Developers who understand Ruby, C++ or Java seem to have higher starting salaries. Python and Ruby developers have the greatest salary potential, which may mean that there is a relatively large gap in the market for good Ruby/Python developers.
Some people may be quite scornful of "paying for a job", but even if you don't pay much attention to salary, the demand for each language (how many job positions) and supply (how many developers understand the language), you have to know how much Some.
Work demands
How likely is it to find a job based on the programming language you are familiar with? The following are job trends from Indeed.com:
It can be seen that C, SQL, Java and Java are often mentioned in job postings, and C#, C++ and Python are also good languages.
On the other hand, if your goal is to work in a startup company, then maybe the job trend of Indeed.com is not the best indicator you should refer to. We found the AngelList website. Here are more positions posted by American startups. Let’s take a look at the programming skills needed by AngelList-based software developers: Once again, Java is at the top of the list. However, American startups seem to prefer Python and Java, and demand for both exceeds Ruby (Ruby was the most popular two years ago), PHP, C or C#.
Supply situation
Let's look at the developers again, according to the data of the website Codementor: Of course, this result does not accurately reflect the actual market situation, but it can be used as a reference. For example, although the mobile application business has been booming for some time, there are still few Objective-C experts. Due to the insufficient supply of Objective-C developers, their salaries are naturally relatively higher.
On the other hand, the supply of PHP in the labor force is large, so employers have more choices and stronger bargaining power in terms of salary. At the same time, there is not as much demand for PHP developers as Java, SQL or Java. Therefore, PHP developers generally have less income. This situation is also reflected in the picture at the beginning of our article (see Figure 2).
Java is a very special example. Despite the largest supply, Java developers are not at the bottom line of the salary tier.
To understand the demand and supply of each language, salary information, we need to look at the major language prospects.
Github programming language migration in the past 16 years: more people switch to Python
What is the future development prospect of a programming language? First of all, it depends to a large extent on the development of its community, because the fresh blood/adoption rate is the guarantee of making the language popular. So let's take a look at what languages ​​people are most interested in:
According to a Google search, interest in using Python has greatly increased in 2016.
Secondly, the number of Github projects can reflect the popularity of the language to a certain extent.
At the same time, we also need to pay attention-developers may have had this experience. After struggling to complete the Nth difficult and obscure project, they thought: "I can do this in this language, but why not change the language? Work more happily?†After analyzing 45 million GitHub users, 393 different languages, and 10TB of source code, WarenLong published a blog post on the blog source{d}, using detailed data and scientific methods to show the past 16 years on Github. Great changes in user programming languages ​​(that is, the situation of changing from one language to another).
Developers who use one of the five most popular languages ​​(Java, C, C++, PHP, Ruby) are most likely to switch to Python, with an average 24% chance.
Over the past 16 years, Python and Java have gradually replaced the C language.
Python became the most popular language for introductory courses in American colleges and universities in 2014
Finally, for readers who want to learn programming languages, we briefly introduce various programming languages.
I. Dynamic Languages ​​(DynamicLanguages)
Dynamic languages ​​are usually easier for beginners to learn because they are flexible and fun. You can quickly build an application from scratch, requiring less code and no hard and fast rules. Because dynamic languages ​​are usually very high-level languages, you will spend less time tangling details and more time learning programming concepts. This is also one of the reasons why dynamic languages ​​are popular with beginners. Beginners generally do Encouraged by being able to build things and quickly see results and get feedback.
Java
Not to be confused with Java, Java is a client-side scripting language mainly used for front-end development. Java is compatible in all browsers and is used to create interactive web applications, usually through libraries such as jQuery and front-end frameworks (such as AngularJS, Ember.js, React, etc.). Java can also be used as a server-side language through the Node.js platform. In the past two years, the Node.js development community has grown a lot, and now you can find a lot of resources here. You can also build hybrid mobile applications in Java by using frameworks such as phonegap. Facebook's ReactNative allows you to build native mobile applications using Java. However, Java is very difficult, because it is a typeless language, so it is difficult to debug. There are also statically typed versions, such as Microsoft's Type or JSX, which are used on React.
Ruby
With Ruby, developers can work happily. The popularity of Ruby is due to the RubyonRails framework, which is very similar to English, and the Rails framework (a full-stack web framework) has "out-of-the-box" tools that make development easier. Therefore, many people will recommend that you learn Ruby first. Ruby is mainly used for back-end development. Some commonly used large websites, such as Airbnb, Shopify, Bloomberg, Hulu, and Slideshare are all built using RubyonRails.
Python
Python is another language that is highly recommended for beginners. Python is also the most popular entry-level introduction language for top universities in the United States. Developers use Python to build desktop applications and web applications. Python is also a good tool for data mining. In addition, Python is especially popular in the academic circles of scientific computing, data analysis, and bioinformatics. Google, Dropbox, Pinterest, Instagram, Reddit, BitTorrent, CivilizationIV, etc. are all built with Python.
Not only that, but Python has been the language of instruction for introductory courses in top American universities since 2014 (IntroductoryTeachingLanguage):
The following is a list of programming languages ​​used in computer-related courses in some of the top universities in the United States:
The use of programming languages ​​in entry-level courses in top universities in the United States
PHP
PHP is a server-side scripting language, which is generally considered beginner-friendly. It is easier to understand what PHP code does, so PHP is easy to learn. Most websites are built with PHP, because this language is specifically for the web. Facebook, Wikipedia, Yahoo!, Tumblr, Wordpress, etc. are all built with PHP.
II. Static language
Applications built using statically typed languages ​​have higher scalability, stability and maintainability. Static languages ​​are generally stricter in finding errors through type checking and require more code to build a prototype. Game engines, mobile applications, and enterprise-level backends are usually built using statically typed languages.
Java
As a universal language, Java is used to build Android applications, desktop applications, and games. Java is also often used as a server-side language for enterprise-level back-end development-90% of Fortune 500 companies use Java. In addition, Hadoop, which is used to store and process big data, is a popular Java-based framework, and companies such as Yahoo, Facebook, and Amazon Web Services are all using Hadoop.
C
C is often used for programming system software and is the common language of operating systems (linguafranca). C affects almost all the programming languages ​​mentioned in this article, especially Objective-C and C++. So, if you know the C language, you may be easier to learn other popular languages. Because C language requires more complex codes to perform simple tasks, it is often difficult for beginners to maintain motivation if C language is the first language. However, in the long run, knowledge of the C language will definitely help your programmer's work.
Objective-C
Objective-C is a layer built on top of the C language, so it is static. That being said, Objective-C can also be used for dynamic typing. Apple's Swift is a static language, compatible with Objective-C, but its static typing makes it more flexible. Swift is inspired by Python, designed to easily write newbies for novices, and aims to fix some of the problems of Objective-C.
C++
C++ is a powerful language based on the C language, designed for programming system software, but is also used to build games/game engines, desktop applications, mobile applications, and web applications. C++ is powerful and fast. Facebook has developed several high-performance, high-reliability components using C++. Many softwares are built in C++, including AdobeSystems, Amazon, Paypal, Chrome, etc. Similar to the C language, C++ is generally considered not so good for beginners to learn by themselves. So, if you decide to learn C++ as your first programming language, it is recommended to discuss with someone or find a mentor.
C#
C# is used in Microsoft's .NET framework and mainly runs on Microsoft Windows. C# is used for web development, game development and general Microsoft development. In addition, Xamarin has been developing an open source project called Mono, which aims to port C# to other platforms and bring better development tools to Linux developers. Recently, you can also use C# to build native mobile apps for iOS and Android through Xamarin.
III. Other
SQL
SQL ("Sequel"), or structured query language, is a query language used to communicate with databases. Although SQL cannot be used to build applications, it is used to manage data in applications that use relational database management systems (RDMS).
1200 - 2000 Puffs (included)
Shenzhen Zpal Technology Co.,Ltd , https://www.zpalvapes.com