Ubuntu and Programming
Ubuntu is a great development platform. You can easily program in C/C++, java, fortran, python, perl, php, ruby, tcl, lisp ... and many more.
Scripting languages are usually easy to learn and use. They are called scripting languages because they are interpreted instead of compiled to machine language like C/C++ for example.
Perl is very popular with web programmers and system administrators. One of Perl's main features is regular expressions. Most languages now include regular expressions but Perl is particularly powerful when processing a lot of text. Perl is already installed on your Ubuntu system by default. Visit the Perl website for more information. Perl has a large number of extensions written for it; visit cpan.perl.org to find them.
PHP is the language that put the "P" in LAMP, which is the technology that runs most of the internet (Linux, Apache, mySQL, PHP). PHP is a powerful and flexible language, it is used extensively to run high performance web sites such as Facebook and Yahoo, however it is also great for writing system admin scripts too. It has full support for Perl Regular Expressions as well as Object programming. PHP is much newer than Perl so it has not seen as much use by system administrators, it is not pre-installed on Ubuntu but you can easily add it using the Synaptic Package Manager to Install PHP5. There are 3 versions of PHP available, PHP5-cli is for running programs on the command line, you can use this to create ncurses programs and even daemons. PHP5-cgi and libapache2-mod-php5 are for web servers. There are a huge number of libraries and extensions along with excellent documentation available on the www.php.net web site.
Out of the box Ubuntu comes with Python and many extension modules. Python is very powerful and easy to use. In fact it is the preferred language by most of the Ubuntu developers. You can easily play with python interactively. Start a terminal and type python[enter]. For a more elaborate tutorial and other useful information about Python, visit http://www.python.org
Ruby is a "dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write." Check out http://www.ruby-lang.org for more. Ruby is also installed by default on your system.
You might want to install the irb package to use the ruby interactive interpreter.
This is a collection of other extremely useful languages.
C and C++
C is not usually a great language to begin programming with but it is the most powerful programming language in popular use. If you need speed and efficiency, C is the best choice. The Linux kernel, the heart of the Ubuntu operating system, is written in C. C++ is mostly an extension of C. C++ has the main advantage of being an Object Oriented language. (With some talent C can also be used for OOP). To use C and C++ you will need to install the build-essential package.
sudo apt-get install build-essential
You can now compile C and C++ programs with gcc and g++. Read their respective man pages for more information.
Gambas is similar to Microsoft's Visual Basic (and almost compatible), but example with object extensions. With Gambas you can very easily and quickly develop programs for GTK+ and Qt4 environments. Gambas has very easy to use Visual Basic like IDE for building graphical user interfaces. And Gambas includes many example programs to ease learning.
With Gambas you can easily develop programs using:
- Databases: MySQL, PostgreSQL, ODBC and SQLite
- OpenGL (fast 2D and 3D graphics)
- CGI web applications
- V4L (Video 4 Linux can be used to control example webcam)
- External libraries
- etc etc
Gambas has comprehensive localization features, like build in translation application. Also Gambas programs are faster to execute than equivalent Python and Perl programs.
Java was created by Sun Microsystems and is now used all over the place. The beauty of Java is its power, combined with its portability. Programs written in Java can usually be run across multiple operating systems on multiple machine architectures without a need to recompile like C/C++, as long as there is a Java Virtual Machine available on the desired OS and platform. Java is a popular language to learn due to its object oriented nature, cross platform abilities and the fact that instructing a virtual machine can often be easier than instructing a real machine. One of the most comprehensive development environments for Java is Eclipse, which you can find in the Ubuntu repositories along with many plugins.
Java was originally created as a proprietary format, this is no longer the case since Sun founded the OpenJDK project.
Mono is a Free Software implementation of Microsoft's .NET system. If you are familiar with languages such as C# then you will like Mono. Mono Devel is in Ubuntu and can quickly create extremely powerful programs which, if coded accordingly, can even be run on Microsoft Windows. Mono is relatively new to the programming world, but its power has attracted many popular projects like the Beagle "desktop search" tool, the Banshee media player and the F-Spot picture/photo organizer.
The vb2Py project is developing a suite of conversion tools to aid in translating existing Visual Basic projects into Python. Visit the project's sourceforge.net homepage here.
You might want to try to port your Visual Basic project to Gambas project. Differences between Visual Basic and Gambas are listed here: http://gambasdoc.org/help/doc/diffvb?show&v3
IDE (Program Editors)
Integrated Development Environment -- these provide the editor and debugger which help with creating programs. The editor usually has special features such as syntax highlighting and auto-completion to make it easier to write code. Ubuntu has support for many popular IDE's. These editors are not pre-installed, you can install them using the Synaptic Package Manager.
Anjuta is a software development studio with lots of features. It is a great GTK+ IDE with a GUI designer, debugger, source editor and version control.
Bluefish is a GTK+ HTML editor for the experienced web designer. Its features include nice wizards for creating tables and forms. This is not truly an IDE, but it can be very useful for creating web pages.
CSSED is a specialized tool that can be useful for web site development. It is an editor and validator, that tries to ease the process of CSS Style Sheet editing. It features syntax highlighting, syntax validation and auto-completion.
EclipseIDE is one of the most well known open source IDE's, it supports development and debugging in many different languages. This is a very large program with a complex user interface that can be daunting for inexperienced programmers.
Geany is a small and lightweight integrated development environment. It was developed to provide a small and fast IDE. Supports syntax highlighting for C, Java, PHP, HTML, Python, Perl, Pascal. Geany is a good editor but it does not support interactive debugging.
Netbeans is not as well known as some of the others but it has some excellent features. It supports writing and debugging programs in Java, C/C++, PHP, Ruby, UML, and more. It also does a great job with context sensitive HTML when it is embedded in other code.
There are many other editors/IDE's available, just do a search in the Synaptic Package Manager.
Infrastructure / Tools
In addition to the support for programming languages, Ubuntu also provides a great test environment. One of the special features of Ubuntu is that it also has a Server Edition which uses identical software, this means that you can develop your software on your Ubuntu Desktop and then deploy it to a Ubuntu Server and have full confidence that you won't run into any compatibility problems because both systems are running the same programs.
Apache is one of the most popular web servers on the internet. It comes pre-installed on Ubuntu Desktop and Ubuntu Server.
mySQL is one of the most popular database systems, it is fully supported on Ubuntu Desktop and Ubuntu Server.
VirtualBox enables you to create a virtual computer that runs inside of your physical computer. The virtual computer has it's own operating system and network connection, etc.. This is an ideal way to set up various test environments for your software development and web site testing requirements.