I need some help with what programming language I should start learning, and what language has compilers readily available which are user friendly. I'm trying to wean myself off of Windows and the Visual series as well. I've taken Visual Basic, and I have started to learn c#. I'm still confused as to what direction I should go though. I've read where people have said Python is a good language and Linux friendly, but I would like to hear what other people have to say. The reason I posted this under the Linux Applications and Software board, is for the question about ease of use I suppose. ANY feedback is appreciated.
Well, if you plan to write programs for Linux the choice is yours. You can use virtually any programming language, be it a popular modern language or a really old obscure one.
The real hard-core *nix programmers use a text editor like vi, scite or emacs to write their source-files and use the command-line to compile/build their programs. But there are IDE's available for most languages too, so you don't have to work with the command line if you don't want to!
If you're used to using an IDE like Visual studio. Then there are things like Monodevelop for C#, Code::Blocks for C/C++, Eclipse/Netbeans for Java, Idle for Python, Gambas for BASIC etc.
Most of the IDE's that I've seen in *nix are fully featured, generally well documented and pretty easy/intuitive to use. And there are plenty of learning resources posted all over the web for most languages too!
With regards to which languages are typically used for what in Linux:
Much of the underlying system is written in C and assembly (e.g. the Kernel and the core Linux OS components/tools). So if you plan to do low-level OS stuff (kernel modules, drivers etc) then C is a must and some knowledge of assembly may help too!
nasm is the main compiler used for assembly AFAIK.
The core of the Gnome desktop environment is C based.
The core of the KDE desktop environment is C++ based.
User-space/desktop applications can be programmed in virtually anything.
C and C++ are probably the most popular choices for application development in *nix.
gcc is the C compiler
g++ is the C++ compiler
Again, there are also several IDE's available for c/c++ too, which act as front-ends for gcc/g++.
C# is increasingly used for applications. Monodevelop is the only C# IDE I'm aware of on *nix. C# apps run on the Mono runtime. But you should be aware that some distro's don't include Mono!
Python is usually built into most *nix distros nowadays, regardless of the desktop environment and can be used for everything from sys-admin scripts to full desktop applications and even games!
Then there's Java, Basic (using the Gambas IDE), Haskell, Ruby, Perl, Lisp, Lua, Fortran, Pascal, Eiffel... Like I said, virtually any programming language you can think of! It all depends on what you want to do. (The desktop environment you want to target, the types of application you want to develop etc!)
Ultimately, it's completely up to you!
Thank you for the answer! It wasn't so much as to program for linux, but as to what IDE's that are available for the code itself, so you answered that as well with the examples that I could use. I am used to the visual studio series being able to see my form and easily mod it, however, I played with python some tonight and the ease is amazing. I'm not writing full fledged programs yet, but I can tell the learning curve isn't as steep as I thought it might be. I'll be sure to check these examples out. +1 for the great answer.