View Full Version : another "which programming language" question

4th August 2004, 02:54 AM
I know it's been asked a lot, but what programming languages do you guys suggest?

I am self-taught and fluent in VB (though rusty), consider myself quite good at PHP, good at CalcBASIC (for those of you who aren't in high school, its the programming language that comes with the TI graphing calculator. I happen to use the TI-83 version), and school-taught to Programming II in C++ (I have no clue how to do GUI things, though).

I want to start programming apps in Linux, but there is about zero VB support (I know, I know, mono). So I was wondering what you guys thought I should do: continue to learn C++ or start a new language (Java or Python I was thinking, but whatever)?

Some things I would like to see/be able to do in my new language: 1) create a GUI easily (I come from VB, what can I say.) 2) Have a nice IDE or at least some syntax highlighting 3) Have a website like php.net, which is just awesome when it comes to on-line documentation for each function that is well formated and easy to understand.

Of all the languages I've used, I like PHP the most :), but it can't be used to anything besides websites :(.

Any thoughts?


4th August 2004, 02:59 AM
C isn't that different from php. Most gnome stuff is still written in C so i guess it's fairly easy to get going with that. Python is a fun language, especially for people still trying to learn the basics of program (like me), besides, much of Fedora stuff is written in python. like the system-config tools and yum.

I would go with C and/or python.

4th August 2004, 03:06 AM
I agree with Foollish but I am becoming a Python fanboy ;)
check out things like the wxpython and pygame projects for graphical stuff

4th August 2004, 04:14 AM
I haven't tried it, but from what I've seen of Gambas ('http://gambas.sourceforge.net') has certainly impressed me. If you've had at least some experience with C++ (which you indicated), then you might want to try kdevelop and/or qt-designer.

Keep in mind that these are not personal recommendations as I've never used them myself - I do Java (JFC/Swing) UIs the old-fashioned way.

4th August 2004, 06:10 PM
thanks for all the responses...

I couldn't find a nice IDE with GUI Builder for Python (I think wxPython is only a toolkit, but correct me if I'm wrong).

Also, any suggestions for a GUI builder for C/C++?

Gambas looks awesome but I can't seem to get it to install...still going to try to get it, though.

thanks again

4th August 2004, 06:14 PM
Gambas is VB clone, or something like that...
I strongly not recommend VB -> read here (http://www.catb.org/~esr/faqs/hacker-howto.html#closed_lang)

Stick to C++, or Java maybe
I don't know about Python or Pearl...

4th August 2004, 06:29 PM
commonly use in colleges is c++ or java

5th August 2004, 03:45 AM
There is some support for "drag-n-drop" UI in various Java IDE's, but because of the way JFC/Swing is actually used, I find UIs built this way need a heckuva lot of tweaking to the event handling, in addition to those "wizards" writing some very ugly code. But then I'm pretty picky about Java code...

7th August 2004, 06:06 AM
JsVoyager: I would highly recommend that you begin your voyage into OOP (the almighty Object Oriented Programming) through learning python. It is very human readable and will set you up for easily understanding classes and inheritance without worrying about unintelligible pointer memory management. Then you can take all of what you learned into C++ when you feel that you are ready. Plus another great thing about python is the ability to quickly start using modules to create really neat programs that would be much much harder in C/C++ (you can get python ports for OpenGL (pyopenGL), ODE (http://pyode.sourceforge.net/) (an excellent physics and collision detection library), GUI elements (wxWidgets etc...), sockets, xml etc... These allow for you to easily expand without having to go through nearly pointless apps that don't do much besides test out theoretical concepts (ahem C++). Plus there website is well designed at Python (www.python.org) I suggest you start with this tutorial/book: http://diveintopython.org/

BTW: If you want to see what you can do with pyODE, pyGame, and cgkit look at this video (divx) http://i31www.ira.uka.de/~baas/pyode/pyode_tut3.avi pretty cool... :D

7th August 2004, 07:04 AM
The two things I don't like about Python:

1) Code blocks are indicated by whitespace :rolleyes:

2) No strong typing - this encourages sloppy thinking or headaches, depending upon the developer's skill level.

8th August 2004, 03:32 AM
I don't know about Python or Pearl...
It's actually perl, as in Practical Extraction and Report Language or Pathologically Eclectic Rubbish Lister (http://www.cgi-bin.com/Articles/perl.htm) :)

8th August 2004, 05:42 AM
Pathologically Eclectic Rubbish Lister
We have a winnah!

I like strong typing!

8th August 2004, 09:34 AM
:p thank's for the correction
"Pathologically Eclectic Rubbish Lister" :rolleyes:

9th August 2004, 01:50 PM
Python is great if you're more comfortable with BASIC languages than C. None of the BASIC offering for Linux are any thing compared to other platforms. They are BASICally works in progress. I've developed in more languages and platforms than I can count any more, being an old fart. So, if you want to do heavy duty development I'd suggest using C, stay away from the BASICs. If you're interested in scripting play with both Perl and Python, both are great tools. When it comes down to choosing what you want to develop in it's a personal choice. Go with what you feel comfortable with and enjoy learning and creating.

Shadow Skill
31st August 2004, 08:30 PM
Exscuse me but what do you recommend for c++ other than Kdevelop? (Mine appears to be broken because of the lack of KDE's Konsole..is there a way for me to get Kdevelop to use gnome-terminal?) I am incredibly rusty when it comes to c++ I haven't coded in almost two years, but I did learn how to create simple classes (no idea how to create a gui.) and had some knowledge of pointers and header files. Any suggestions IDE and tutorial wise to get me back into the groove of things after my long vacation?

31st August 2004, 09:03 PM
Posting to this thread is too hard to resist ....

I total recommend python. It's scalable to mid-sized applications in a way that VB or Perl isn't. Ruby fills a similar role to python but doesn't have the maturity or as big a 'starndard module library'.

Most mainstream linux distributions include PyGTK (bindings to the GTK GUI-toolkit) out-the-box (well Redhat and Fedora do). If you use the Glade GUI designer program, GUIs are as easy as VB. Actually, I recommend wxPython, particularly if you want to do cross-platform development. Get "wxGlade", a GUI-designer application (written in wxPython) which makes wxPython GUIs a cinch. Actually, GUIs in python usually look much better than anything done with VB since wxPython (& GTK & Qt) all use automatic layout algorithms for nice widget resizing. If neither wxPython or GTK floats your boat, try Qt. It also boasts Qt-designer for simple GUI design. Oh yes, python comes with a Tk-bases GUI toolkit called 'tkinter'. Tk looks crap on linux IMHO, but less so on win32.

For IDEs you've got IDLE (Tk), Boa (wxPython), Eric3 (Qt). KDevelop & emacs both have nice python modes (syntax-highlighting). I do most of my coding in SciTE (the scintilla text editor); it's fast, simple and has some great features. Commerical IDES: Komodo (mozilla XUL based), Wing and probably others.

Finally, if you really need type-safety (not all it's cracked up to be...) (python *is* strongly typed, but it's also *dynamically* typed), try C# with mono. It comes with a neat IDE and looks Way more productive than C++. If python wasn't so good, I'd probably use mono/C#.

31st August 2004, 09:43 PM
Mono has one big problem.
IT will always be 1 step behind M$ Winblowz :rolleyes:

Shadow Skill
1st September 2004, 01:20 AM
How is the portability between M$ .net (c++/c#) and Linux? I am going to be studying either c++ or c#.net at university and I would rather not be forced to stay booted into windows the whole time I am working on my assignments (which can be incredibly long, as you all know with debuging and all.) as I am trying to get more accustomed to Linux.

3rd September 2004, 09:58 PM
Well I am a professional developer and here is my opinion:

1) do not stick to one operating system
2) do not stick to one language ( you will run into situation where you have to use another one because everyone else in your dev' team is)
3) Learn how compilers work

Now that you got those down here is a good layout:

0) Unix scripting / PERL
1) C
2) C++ (learn the language inside out)
2) C in X-Windows, Motif
3) C/C++ KDE or GTK+
4) Visual C++ win32 API
5) Visual C++ MFC (still alot of code floating around you may need to fix)
6) Visual C++ .NET (windows forms is the way microsoft is going in the future, check out the PDC information for more on that
7) C/C++ socket programming
8) insert new languages here....

Thats will keep you busy for a long time. But thats a good start. Alot of concept in GUI programming overlap from system to system, so do not be afraid to try it out.

As for shadow skill, portability between .net and linux is almost non-existant.
Also go the route of C/C++ do not goto C# only.

4th September 2004, 04:12 AM
As for IDE I would say Anjuta (see the C++ IDE poll thread for more detail). And for books check out which has a few C++ books for free to brush up on.

4th September 2004, 05:12 AM
C++ code can be portable between OS's, as long as you have compatible compilers and libraries. (The binaries cannot be portable.) If you have to choose between C# and C++, I would actually lean towards C#. It's a "more modern" OO language (like Java), whereas C++ is still hindered (in my opinion - no flames) by it's C legacy (e.g. memory management). Yes, that means you have to do all your work in Windows, but the skill-set translates back and forth between C# and Java extremely well.

11th September 2004, 07:58 PM
My tools of trade,

Language: Java
GUI Tookit: Java-GNOME or SWT
IDE: Eclipse