The programmers have their own preferences on programming languages. Me? I personally enjoy C, Perl and PHP because of my working experience in electronics engineering and web programming. Here I will summarize the language capabilities for hardware programming. Different programming languages are designed for specific purposes. The process languages are suitable for hardware programming. Do not get me wrong. OOP are also used for hardware programming as well. C++, Java and Python are good samples for OOP programming, for hardware as well. But some special purpose programming languages are not suitable for hardware programming, for example, markup language like HTML or XML. They are only for data exchange and web programming.
Google directory offers huge resources for programming languges for different purposes.
GCC, the GNU Compiler Collection
Microsoft Macro Assembler MASM for X86
The GNU binutils are collection of binary tools, including as, the GNU assembler.
Delphi is created by Borland, maybe we can call it as "Visual Pascal", it is a bad name, but this nickname is comparable to Visual C++, now it is owned by Borland's subsidiary CodeGear. I am not an expert of Pascal. But it is as powerful as C++. It is used to write device driver in many cases.
BASIC is very popular among programming beginners. There are different BASIC approaches in the programming world, BASIC compiler and BASIC interpreter. The first one is similar like C/C++, the BASIC compiler will compile and build executables file, and normally this kind of BASIC compiler will support inline Assembly. The latter one is popular in most of the modern systems, Visual BASIC in Windows, and MONO project in Linux. There are some BASIC tool chains available on well-known embedded systems, including 8051, PIC and Symbian. Please check related user manual for BASIC programming capability for hardware.
History of BASIC
I am not familiar with the hardware programming capacity in Java. But I do know Java supports some hardware ports and programming interfaces, including serial port, IrDA, Bluetooth, TCP/IP. I believe hardware support should be done in Java VM, instead of Java code running on VM. According to Sun's design specification, the hardware support should be achieved via JNI (Java Native Interface), which is normally written in C/C++. That is why a programmer should check JSR documents for specific Java VM. Different VMs have different hardware programming support. And Java is very popular in the embedded systems, from mobile phone to STB, and even robot and toy. So if a specific hardware platform offers JNI, a programmer can use that.
A resoure for Java technology.
VBScript from Wikipedia
Perl, as a process programming language, is well-known for its regular expression of text manipulation. But Perl has a huge application module inventory, CPAN. It gives the potential of hardware programming with Perl. The hardware support covers serial port, TCP/IP. In the CPAN operation system interfaces section, many modules are available for support hardware programming in RS232, modem, USB, chip card, parallel port, Dallas 1-wire and system calls. BTW, Perl is also quite useful in IC hardware design with hardware description languages.
The Perl Directory at perl.org. Links and other helpful resources for new and experienced Perl programmers.
Comprehensive Perl Archive Network (CPAN).
ActivePerl Pro Studio for Windows. Everything you need to develop, debug, and deploy professional Perl applications.
Python is very popular recently, not only in web programming, but also in general purpose programming. I just started to learn Python, but I know Python can be used in programming serial port and TCP/IP communication. And Python is available in some embedded systems like Symbian mobile phones. There are some initiatives of trying to use Python as a hardware description language due to its concurrent behavior.
Home page for Python, an interpreted, interactive, object-oriented, extensible programming language.
ActivePython is the industry-standard Python distribution, available for Windows.
Repost: Jan 16th, 2009