Fog Creek Software
Discussion Board




Picking a programming language to play with

I have limited programming experience. I used Basic, Pascal, Fortran, and C in college (~20 years ago), but avoided programming through most of my engineering career because I didn't like it. I did use a little C on a large-scale system once, but mainly did simple bug fixes and really didn't write/architect much. I also used VBA along with Access and Excel to create an information system that eventually was quite successful. I upsized it to SQL Server and it was able to process about $100M in orders per year. Although this was my greatest success, it was still pretty much an ugly, home-grown system.

My problem is now that I really need/want to get back into programming. There are clearly too many problems that I have to deal with on a daily basis that could really use a programmatic solution. Thus, I really want to start using a language/system to start solving these problems. Here is my criteria:

- Must be free or cheap (<$100)
- Must run on Windows 2000/XP
- Must be easy to pick up the basics with either a casual glance at the manual, an easy to follow primer, or only about 1-2 days of reading.
- Must have a way to create a GUI
- Should be able to create programs that run almost anywhere (using a VM or RT environment is okay).
- Should be able to make Windows system/API calls to determine things such as the status of running applications/threads, etc.

I realize that languages are personal choices and that most of you will probably pick from experience. What I want however is for you to assume that I'm your relative and that I really don't know much about programming. What would you recommend to me as a hobbyist programmer who uses Windows and who wants to create simple Windows programs (with or without a GUI)? Please don't start a language battle. I just want some good suggestions. Thanks!

Too Little Time
Thursday, July 10, 2003

I can really recommend Python, the most sane programming language I know. Sadly it's probably a little bit more difficult to create an UI in than with some Microsoft language, but on the other hand you can use it on more platforms.

It also has a great community and very good online documentation, plut it's free and open.
See http://www.python.org if you are interested. 

Ulf Ekström
Thursday, July 10, 2003

http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en

http://www.icsharpcode.net/OpenSource/SD/Default.aspx

Just me (Sir to you)
Thursday, July 10, 2003

You are an engineer with at least 20 years experience whose programming background includes a $100 million/year order system and you want to automate some tasks but are unwilling to shell out more than $100 for software.

Hmmmm

TI-35 is probably your best bet.

Whitey
Thursday, July 10, 2003

I second the vote for Python, it costs you nowt and works well. It is an easy language to learn, but you're not constantly running into language limitations and there is a _very_ comprehensive builtin library that will let you do a lot of useful stuff.

Don't know what it is like to use for creating a GUI program, however. A GUI library called wxPython is said to be very good; I've not used it specifically, but I've used the C++ version of the same library (wxWindows) and found it excellent, which is why I mention it. Python has some inbuilt method of creating GUIs, but the widgets do not look like the default Windows ones.

Tom
Thursday, July 10, 2003

I've had to use tcl/tk an awful lot in my role as a tools programmer, and it fits those requirements.  It's easily extensible, too.

van pelt
Thursday, July 10, 2003

Give REBOL a try. It's a simple, fun, practical, very tiny, very self-contained, very platform independent language.

Here's a little program parses links from the JOS homepage and displays them in a text box. Other languages would require a significantly more work (and libraries!) to achieve the same task.

REBOL [title: "JOS Example"]

Site: http://www.joelonsoftware.com/
Str: read Site
Blk: copy []
parse Str [any [
    thru {href="} copy Link to {"}
  (append Blk Link)] to end
]
  ; convert local links to valid URIs
foreach Item Blk [if not find Item "http://" [insert Item Site]]
  ; purge duplicates
Blk: sort unique Blk

view layout [
  origin 10x10
  h1 "JOS Links" navy underline [browse Site]
  TL: text-list data Blk 500x180 font-size 14

across
btn "Launch" 100x24 green [
    either attempt [TL/picked/1] [
        browse to-url copy TL/picked/1
    ][
        alert "No link selected."]
    ]      
btn "Close" 100x24 red [unview]
]

If simplicity is important to you, along with "write once run almost-anywhere", check out REBOL ( http://www.rebol.com ). It has an interactive console (paste the above script) and you can learn a heck of a lot in a single sitting.

Edoc
Thursday, July 10, 2003

It's probably a good idea to pick something different just so you have a new way to approach problems in your other languages. Squeak [1], an implementation of Smalltalk, probably fits the bill nicely. (It can do GUIs, I'm not sure about the Win32 monitoring stuff...)

Another task for the slightly (?) masochistic is to go through SICP [2]. The full book text is online but if you need a hard copy you can probably get one from an impoverished CS student on half.com or amazon.

[1] http://www.squeak.org/
[2] http://mitpress.mit.edu/sicp/

Chris Winters
Thursday, July 10, 2003

Hmmm.. some of your goals are in conflict:


"- Should be able to make Windows system/API calls to determine things such as the status of running applications/threads, etc.
"

BUT,

"- ...run almost anywhere (using a VM or RT environment is okay).
"
If you're planning to use Windows API calls, it will NOT be portable.

I recommend looking very closely at what your constraints are and what you need most.

E.g. if you're writing a fairly simple program and TIME and MONEY are your constraint, VB 6 would be fine.

However, if the program is quite complicated (20,000 lines+) something else would be better.

You can't satisfy every need with one langauge.  I.e., if you want it easy to use, cheap, platform independent, powerful, etc.  Good LUCK!

Entrepreneur
Thursday, July 10, 2003

Chris, going through SICP is less masochistic now because video lectures have been released:
http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-lectures/

anon
Thursday, July 10, 2003

I've just ordered a copy of RealBASIC (www.realbasic.com) for "play time" simple UI development. Might be close to what you're seeking.

HeWhoMustBeConfused
Thursday, July 10, 2003

Borland Delphi?  A jump from Pascal to Object Pascal, with a great GUI builder to boot.

constructive comment
Friday, July 11, 2003

Ruby. A really nice language to play with. It has a reasonable library at present (not as big a s Python's, but with several GUI options, database access, xml, etc, etc), a few good books (I reccomend the Pickaxe book  by Andy Hunt and Dave Thomas), and the Ruby Developers Guide), and it has some really nice simple powerful ways of doing stuff.

If not Ruby, then Python.

treefrog
Friday, July 11, 2003

You should definately give purebasic a try.

http://www.purebasic.com

- Costs 59 euro (download and try for free.)
- Produces a single, small executable that will run on any flavour of 32bit windows.  XP skins are supported.
- Its Basic.  You'll be writing GUIs in no time.
- Viusal Designer included to provide drag and drop.  Generated code is very easy to understand and modify.
- As I've said already, it all compiles to a single EXE.  Registration includes the Linux version, so porting is easy.  All you have to do is avoid windows specifics like API calls.
- Full windows API available once registered.  No VB style declares needed.  You don't even have to include Windows.h.

PureBasic also includes native support for ODBC.  This makes database programming very easy.

I love this language.  Its also good for writing games :)

Ged Byrne
Friday, July 11, 2003

Get your self a copy of Perl. It will teach you a new way of thinking about programming in lists and hashes.

Matthew Lock
Friday, July 11, 2003

Thanks everyone for the excellent advice. I have lots of ideas to investigate now.

And Whitey, don't be jealous. I'm sure you'll accomplish something special too once you're out of college.

Too Little Time
Friday, July 11, 2003

BTW, my requirements weren't a contradiction. I said the system SHOULD be cross platform and it SHOULD be capable of drilling down into Windows. These are not MUSTs.

Too Little Time
Friday, July 11, 2003

Ged you forgot :)

Take a look at Lingo ( http://www.lingolanguage.com ), I'm tidying up the website and will have a new d/ld in a few days. It's designed to be:

- easy to get going
- useful for non-trivial tasks

Bill Rayer
Saturday, July 12, 2003

If you look at http://brucethegoose.blogspot.com you'll see my slowly building list of programming languages. Most are free, though there's the odd commercial package in there.

Bruce M. Axtens
Friday, July 09, 2004

*  Recent Topics

*  Fog Creek Home