View Full Version : Programming Advice - How to learn?

20th March 2004, 12:07 PM
Ok. I know HTML/Javascript/Css, PHP/MySQL, the basics of Delphi and C#.

But i want to move on from Windows and start programming in Linux. Could someone say, with my current minimal experience, what languages i should have a go at first?

Thanks all the same

20th March 2004, 12:31 PM
For example you can use Kylix. It is the analog of Delphi in Linux. You can download it from Borland's website.

20th March 2004, 03:11 PM
For php/mysql/HTML/Javascripts/Css
in gnome: bluefish
in kde: quanta (quanta is a little better IMO)

For C#, mono, mono is still early in development.

20th March 2004, 11:07 PM
Yeah, i know about mono.

Thanks for the advice (Both of you).

I'll go fetch me a copy of Kylix Now.

21st March 2004, 09:30 PM
I would recommend perl and C++ (with some python) those are the languages I see the most when using linux.

21st March 2004, 10:01 PM
Which is the easiest to learn, with only PHP/C#/Delphi experience?

21st March 2004, 10:57 PM
Errmm.. I don't know any of those :D but I think that C# is somewhat similar to C++ and PHP is closest to perl. But I would recommend C++ first (for a more powerful language) and the perl (to use in scripts and in web page development as well).

21st March 2004, 11:35 PM
Since you already know the basics of programming you should be able to get started in almost any language. I would try c++ and python. c++ because its really powerful, python because a lot of great stuff is beeing developed in python these days, especially fedora-spesific stuff like yum or the system-config tools.

22nd March 2004, 02:27 AM
Yeah, Thanks.

I think i'll learn Python and go from there.


2nd April 2004, 12:39 AM
If you'd like not to be attached to a single platform, whether it's Linux or any other, you should learn Java.
Take a look at the J2SE (java.sun.com) and at a nice IDE like Netbeans (www.netbeans.org). They're both free. Your Java programs may run on multiple platforms, even on PDAs and mobile phones, with no re-writing or re-compiling at all.

2nd April 2004, 05:56 AM
I'd second the recommentation for Java - it's extremely similar to C# (because C# is *ahem* modelled after it). C++ is a whole different kind of animal. For scripting languages, Python seems a lot more straightforward. Perl can/does get very obtuse with umpteen different ways of doing exactly the same thing. Another very handy thing to learn is shell-scripting (e.g. bash). You can do some very interesting (and useful) things will shell scripts...

5th April 2004, 07:26 PM
hehe... Yes... "Modelled after"... :)

My thoughts exactly, it's a "modelled after" platform!... ;)

11th April 2004, 02:22 PM
Sinces you have former experience in programming, i would recommend C++ or just C.

Good Luck !

- DreamCodeR

11th April 2004, 02:41 PM
If you decide to use C++, take a look at the Qt libraries. Launch "Programming -> More Programming Tools -> Qt Designer", give it a try, read http://doc.trolltech.com/3.1/how-to-learn-qt.html if you need to learn how to use it. The Qt libraries allow you to easily build GUIs that run on every major OS.

11th April 2004, 02:58 PM
What about developing for gtk? How do you find out about that one?

11th April 2004, 03:12 PM
I never did anything for GTK. It'd be nice to know. From The Gimp (http://www.gimp.org) site, I found the link to The Gimp Toolkit website: www.gtk.org. Tutorials and an API Reference Manual are available.
But the GTK isn't cross-platform, is it?...

Another cross-platform GUI framework that may worth a look at is wxWidgets (http://www.wxwindows.org).

A problem with the Qt version that comes with FC1: it's only free for Open Source projects. And the database libraries are only present in the full (comercial) version.

12th April 2004, 12:11 PM
GTk is multi platform.

13th April 2004, 10:45 PM
Ug, I did some reading on the GTK manuals from www.gtk.org, and found out that working with the GTK widgets is very simple. It can be used with plain C (Qt is a C++ library). Its very easy to create widgets and lay them on "horizontal boxes" or "vertical boxes", specify actions, nest widgets, etc. And if you installed the Fedora Core "Development Tools", then you have Glade installed. Glade is very nice: it allows you to build the interfaces with a WYS/WYG, drag-n-grop interface, and then creates the C code for you. I honestly recommend it for everybody looking for an easy-to-learn, easy-to-use graphical interface library in C.

Could someone please test it on Windows, or other O.S.?...

EDIT: Anjuta (http://www.anjuta.org) is a nice IDE for GTK projects. It's GPL, and it uses Glade to draw the GUIs. There are binaries available for FC1 from SourceForge.

14th April 2004, 08:43 AM
Well i know that you can get GIMP for windows, so it must work.

Looks like Qt it is for me then! I've learnt to program in C++.

14th April 2004, 02:31 PM
You can get gtk for windows, it even has a windows theme so that it looks good. gaim for windows includes gtk.

14th April 2004, 03:16 PM
Oh yea, I spotted this (http://www.osnews.com/story.php?news_id=6701) on OSNews today showing that there is now C++ support for gtk.

22nd April 2004, 12:40 AM
That GTk looks very nice for desktop apps.

I'm a C# Programmer for work, and I'm interested in linux programming as well. I checked out those GTk links and they are fantastic. Nothing like getting up and running quickly in a new environment!

22nd April 2004, 09:35 AM
Yes it does. I've been playing around with it in the last few days. And it has a great advantage over Qt: it's free even for commercial use.

I've been using the Anjuta IDE to write code, and Glade to quickly draw the interfaces. It works amazingly well! :)

One small problem: the GTK manuals (from gtk.org) aren't complete. Many widgets aren't documented. So you have to dig into the APIs... :(

Now, a question: if you want your C program (GTKbased) to run both on Linux and Windows, you have to compile the Windows version on Windows, right? But there's no Gcc for Windows. Can you use Visual Studio? Has anyone managed to do it?

26th April 2004, 10:16 AM
I would also strongly recommend learnig C++, you can use it with GTK+ actually gtkmm (http://www.gtkmm.org) or QT.
Read and learn tutorial, it's great for start.

9th May 2004, 10:07 AM
@fjleal: afaik you can use any C/C++-Compiler (standard versions!) for windows to get your GTK-based project up and running. I myself used the visual-C++-compiler (ver 6.0) for various Qt-based projects and it worked pretty well ...

PS: Qt is also free for Win-platforms, but you can only use older versions for free (problems with QT downwards-compatibility)

11th May 2004, 06:24 AM
My advice, considering your experience and your desire to eventually code on Linux, is to:

1) go buy this book (http://www.amazon.com/exec/obidos/tg/detail/-/0130384747/qid=1084252847/sr=1-1/ref=sr_1_1__i1_xgl14/104-0701623-0283101?v=glance&s=books)

2) make sure you have g++ installed (gcc) on Fedora

3) use your favorite editor and gcc and learn as you go in that book. If you want something more Visual Studio to start with, then install KDevelop as well.

I highly recommend you start your introduction to programming and OOP with C++, in my humble opinion Java just makes a beginner sloppy from the get go, I think it's better to approach Java after you have become disciplined in C++.

Hope this helps. And with whatever you decide to do, good luck!

13th May 2004, 01:28 AM
Deitel's books are awesome. I got a Java How to Program and it's very simple to understand (except on some points where you don't know what the hell the author is talking about).

For C++ i recommend http://www.cplusplus.com, it'll give you a quick easy and rather good start on that language.

Now... between Java and C++ i choose C++ first for the same reason as theurge mentioned. It's a lot more simple (yet not less powerful).

24th May 2004, 10:41 PM
To whoever mentioned it a few posts ago, I believe that Cygwin has a gcc compiler built in.

Its interesting; I'm new here and as such I'm catching up on a few posts 'n stuff. When the question was brought up about how to learn how to program in Linux, I was actually surprised to see people jumping straight on the gui-fied bandwagon. My first thought to the post was to have the person learn vi, gcc, and c. Gui it up later but learn the basics first.

Dunno, maybe I've just lived in Kernel-land for too long :)

25th May 2004, 04:44 AM
Originally posted by Badger
Dunno, maybe I've just lived in Kernel-land for too long :)

No, you're "old-fashioned" (like me) - you need to learn to crawl before you can walk. But, I think the assumption is that the OP (original poster) already "knows how to program" (I'm too lazy to go back and check) and was looking for similar toolsets.

25th May 2004, 09:21 AM
crackers wrote
I think the assumption is that the OP (original poster) already "knows how to program"
Yes, and from my experience, you can't advice a Windows programmer, used to a GUI IDE only, to open a text console to do whatever may be needed, no matter how simple it may be... ;)

26th May 2004, 04:03 AM
Hey - let's be (somewhat) nice about it, okay? He/she is at least willing to learn, yes?


30th May 2004, 02:51 PM
Yes, cygwin (for Windows) does have the gcc complier, for c, in it. I've been using it for my "ANSI C" subject at university. Only recently did I discover that Linux would have been a better OS for me to use for that on my home PC :-)

Cygwin is at:


Have fun

16th July 2004, 12:07 PM
Try Mingw (http://prdownloads.sourceforge.net/mingw/MinGW-3.1.0-1.exe?download) install it with Msys (http://prdownloads.sourceforge.net/mingw/MSYS-1.0.10.exe?download). Make sure you install MinGW first.

20th July 2004, 02:33 PM
For a tutorial and examples of gtk+ look in /usr/share/doc/gtk+-devel-1.2.10. I found these very useful when I was learning gtk+. It's in my fedora distribution and I had the same or similar in my RedHat 7.1 so you probably have it also.

20th July 2004, 03:04 PM
c++, also i would recommend a book call Programming Solid Code, it's not language specific but teach you how to develop a great algorytm and way of development in a very organized way which will help you makes important decision on each solutions :)

21st July 2004, 09:15 AM
As far as I can understand there are tree languages to chose between if you are using Linux:

The question is: which one to chose.

My native laguages are: VBA/VB6/VB.Net and SAS. Just now I am reading a book about Java (Sam: Learn Java in 21 days). I am not that sure that Java is the best choise. Any sugestions?

21st July 2004, 09:30 AM
but what you wan't to program? it depends - the language choice depends on what you need. in Linux you have plenty of them but coding (as far as I know with my poor coding skills) is not about language but experience.

for system administrations stuff (scripts and so on) probably perl and python (and others - shell, awk, sed etc.) are good. but if you know Java very good you can also do system administration with Java-shell...

for user applications programing probably you will choose python, c++, Java and so on.

for system stuff like kernel, daemons - C.

for web - PHP, Java, Python, Perl

for beginnig I think everything is good, try Java or Python. you probably are looking for nice high level language that let's you code fast and does it job...

21st July 2004, 05:34 PM
Python looks like it's a reasonable "beginner" language (I'm far too jaded to make that kind of judgement any more), but one of the reasons I tend to shy away from non-typed languages (Python, Perl) is because it's very easy to get confused as to what the contents of a variable are (e.g. "type" - string? integer? other?) at any given state of the program.

Java is being taught in universities (and some high-school level, I think) as the first language. However, there's recently been a revival of (wait for it!)

:eek: assembly :eek:

as the introductory course. I learned that stuff "second" (Fortran first), but that learning experience has been invaluable in a very long and varied career as a professional developer - know any other 48-year old code pounders? ;)

3rd May 2005, 04:31 PM
I'm just going to throw this out there... Since I switched from Windows to Linux, I've been severely handicapped by not knowing C++, or at least how to compile -- If you want all your hardware to work, it may come to pass that you need to compile your own drivers. These are written in C++. I've used Java and C++ -- I don't believe that Java makes you sloppy -- in fact, learning how to use Java probably teaches you how to develop better.. the language forces "good development practices" -- decided that they were good by a convention of senior level C++ and like developers -- That said, C++ would be my recommendation to learn first -- It is far more useful for Linux. Otherwise, you are stuck with the RPMs that come with the distro -- which is sometimes a better idea anyway, but once in a while you'd like to gamble with the latest package of some sort -- like Gimp 2.2.6, in my case... I'd like to take the gamble, but I don't want to upgrade to Fedora Core 3 until I have the time to see the project through...

These are the views of a junior level Java2 developer, and a C++ dabbler. (They do not necessarily reflect the opinions of the forum as a whole. :) ) Another thing -- I saw a comment somewhere that learning C++ in java (possibly using gcc) exposes you to more than a GUI like Visual Studio (shudder) ---- which can actually be beneficial in understanding what is going on behind the scenes -- I think he was discussing the way files are linked during compilation -- His final statement was that understanding this will separate him from the developer that just can't figure out (through the GUI) what is going wrong with the compilation. I don't know how accurate the statement is, but I thought I would pass it along... it's worth a thought.

7th May 2005, 06:43 PM
His final statement was that understanding this will separate him from the developer that just can't figure out (through the GUI) what is going wrong with the compilation.
I'd say that statement is entirely accurate. However, it's actually applicable to a lot more than just the compilation steps. If you're doing anything more complicated than a couple hundred lines of code, you have to really know how the language-of-choice works within it's operating environment, especially when you have a problem staring you in the face. That's one of the reasons why I always advocate "learn the language first, then pick an IDE."

I've actually conducted interviews where a candidate with all the appropriate alphabet soup buzzwords were on the resume, but when asked to write a simple program -- by hand -- on a white-board leaves them totally incapacitated. They didn't even know the basic stuff in the Java API - they always left it to the IDE to "prompt" them. (Yes, I can be an absolute monster when conducting an interview.)

11th May 2005, 09:40 PM
i want to get a good grip on linux programming (application/system side) ... not interested in web stuff. I have lots of experience in C/C++ (work, school etc). I believe I will be starting with Python and Bash scripting. Move on to some GUI development ... and stay as FAR away from perl in the meantime lol/

one thing I really want to get into is building drivers... first off because I hate ndiswrapper and I want to write a driver for the broadcom integrated wireless cards in laptops. :) any ideas where to start with that?

11th May 2005, 11:07 PM
one thing I really want to get into is building drivers... first off because I hate ndiswrapper and I want to write a driver for the broadcom integrated wireless cards in laptops. :) any ideas where to start with that?
First, contact Broadcom and get the hardware specs for the card. Remember to tell that you intend to write a GPL driver and refuse to sign any non-disclosure agreements that would prevent open-sourcing your work.

Good luck :)

12th May 2005, 01:25 AM
As a graduate research assistant I can vouch for the fact that java is being taught at the introductory level. Interestingly though the university is shifting the program outline to include python as a pre-intoduction programming course. Why?

Think about what all it takes to write and complie a "Hello World" application in java....
First we need a class declaration. Does this mean that we should divert and dicuss OOP?
Then I suppose we should declare a public static void main....Should we again divert again and discuss what exactly each of these keywords mean?

Java is my personal language of choice but if someone is looking to undertake a new language python might just be the most friendly. To write the "Hello World" program in python all you need is :

print "Hello World"

12th May 2005, 02:17 AM
Java is being taught in universities (and some high-school level, I think) as the first language. However, there's recently been a revival of (wait for it!)

:eek: assembly :eek:

as the introductory course.
I can vouch for assembly. We were taught assembly in second-year college. At the time we all thought it was pretty useless. However, we soon found it extremely useful knowledge. Especially when combined with the multitude of digital design courses we took afterward. Some of our course work included designing a simple 8-bit cpu, microcode, and assembly, then implementing it in vhdl, synthesizing it to an fpga and running sets of commands to test it out.

Now that I've graduated, I spend a great deal of time trying to expand all areas of knowledge from circuit design and analysis to C/C++/Assembly design and programming to business principles and documentation practices... That is - when I'm not busy looking for a job :eek:

... Hey, the more you know ...

I also use that knowledge regularly when programming the embedded microcontrollers in my robots. Current project is an autonomous 20dof hexapod robot with 16-bit microcontroller constructed (per my design) from carbon fibre and aluminum. I've been meaning to create a website for it, but haven't yet found the time / motivation.

Hmmm, where was I before I started rambling? Oh yes, assembly... yup, it's handy.


28th August 2005, 01:52 AM
I'm looking for a free VHDL compiler here and there, downloaded GHDL 2 days ago and had failed to install yesterday. Argh! Could you give me some advice? FC4 with GNOME of my box, GCC3.2&GCC4.0
Thank you in advance!

28th August 2005, 03:40 AM
GHDL combined with gtkWave make a very respectable open source vhdl design / simulation environment. I've used this combo for a while now. You can find the GHDL install text at: http://ghdl.free.fr/INSTALL

Recently, Xilinx has released a Linux version of their ISE WebPack design suite. It offers a solution for complete start to finish design and implementation. This is what I use most often. Too bad Altera doesn't offer free licenses for their Linux version of Quartus.


28th August 2005, 03:47 AM
Is there any other requirement of this binary version?
I was required to compile gcc when intalling from source package. And BTW, where can i find gtkWave?

23rd September 2005, 07:43 PM
I would say, coming from a windows background myself, that GTK+ is a pretty good start. You can actually use C# with GTK+, though there is much more support for C or Python it seems. I think the C# binding is called GTK#.

But if you use Glade (http://www.glade.org) it's similar to the rapid application development you're familiar with in Delphi or VB. Even better if you ask me. Glade is just for the GUI, and using libglade, you can use just about any language out there (even PHP) to code all the rest.

Good places to start would be...

I've also got a GTK+ forum started just recently at http://gtkforums.micahcarrick.com

Good luck.

24th September 2005, 03:38 AM
Have you ever tried Python? It seems funny and not very difficult, futhermore, it works very well with Linux.