Choosing a Programming Language
For many small Windows programs I use AutoIT (I’m not much of a programmer) and in Linux I do a lot of Bash scripting (comparatively). In middle school I took a computer course where I learned some Basic programming. I really started learning programming on my TI-83 using kinda a form of Basic. I was interested in games and how they worked so I tediously copied the entire source from them onto paper to learn from it. Eventually I wrote a game for it (hah it still exists) and I was planning to port it to Z80 Assembly (since it was sloooooow, and it would run out of memory). When I started learning Z80 assembly for processor and coding it by hand since I didn’t have a PC. At one time I started to learn some assembly for the x86 because I was interested in making an OS and understanding how it works. I’ve used Perl over the years a few times to do more complicated things that I couldn’t do in Bash. I’ve wrote a packet sniffer for Diablo 2 in C++ and a few tiny Visual Basic applications (for generating large IP address lists) many years ago. I’ve created some rather large projects in mIRC scripting (AIM client). I feel that I’ve started to reach the limits of AutoIT when I have to rely on DLL calls and other executables to get the job done. I’d rather learn an actual programming language than continue to work with AutoIT. AutoIT still has a place for me when I need to make tiny program, automate a task or create a installer.
I don’t have any real desire to learn C/C++, to me I don’t need to do any low-level programming. I also do not care for compiled languages because they are slow to compile and I tend to a lot of testing and small changes to something. I really do like developing with AutoIT which makes use of SciTE an IDE. The code completion is very useful to me along with syntax highlighting and Intellisense (displays a functions required parameters). I can also simply press F1 with my cursor on a function and it will take me to the help page. This makes learning and programming in AutoIT extremely easy and productive.
I want to find a language with some similarities as AutoIT. I also want it to be cross-platform, object orientated and have a number of libraries available for GUI/networking. I wanted it to be a scripting language and I also wanted it to be able to create stand alone executables. It has to be easy to read and I would prefer if it had an IDE with similar features as SciTE. Originally I was thinking about Perl, Ruby, Python or Java. Perl isn’t object oriented and Java relies on a virtual machine so that ruled them out. The only thing I have against Ruby is the fact that the compilers for Ruby seem to just package the interpreter rather than making a stand alone application. This leaves only Python as a programming language.
Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code.
So who uses Python today? To name a few apparently NASA and Industrial Light & Magic use python (also Google, but I couldn’t find a reference). But I could care less who uses it as long as it works.
There are some interesting libraries available for Python. For a cross-platform GUI toolkit there is wxPython and for networking there is Twisted. Twisted seems to support a lot of protocols including HTTP, SSH, POP and FTP. If I need to access databases I can use SQLAlchemy. There are other libraries available but the only thing else I will probably ever need would be the ability to parse XML.
The next step for me is to begin programming in the language and see how it goes. If I like it I will continue to learn it otherwise I’m going to try others. My initial impression of programming with Python is good but since I’ve started getting down to business I’m getting frustrated. I’ve spent longer than what I find to be acceptable for answers to simple questions. It’s definitely killing the fun factor.
Update (10DEC07)
I’ve bought a book on Python (Learning Python, 3rd Edition) and have read the first four chapters. It clears up my common misconceptions and provides useful information about the language verses others. The reference for Google using Python is in the book and it turns out that YouTube is largely written in Python. Google makes use of it in other areas as well but I was surprised to learn that. Also, I wanted to clear up a few things in my previous ramblings of the topic.
- Python is object oriented but it is optional.
- Converting Python code to a standalone executable (py2exe) packages the Python byte-code and interpreter into a single file. There is no code speed up since it doesn’t compile your code into machine code.
No comments yet. Be the first.
Leave a reply