Fog Creek Software
Discussion Board




What language for a new project?

I have a database utility that I want to write. I think it's got room to be successful in both MS and *nix worlds, against all the standard databases.

I'm a MS guy, proficient at C# - part of the reason I want to multiplatform* this is to broaden my skills.

It needs robust data access (DML & DDL) to at least SQL Server, Oracle, and MySQL, and it's going to have a fairly intricate UI.

My options:
1) Write it in C# then migrate. Gives me fast to market, but defeats the purpose of the exercise. :)
2) Java. Do Java UI's still suck? Or can that negative aspect of Java be addressed now?
3) Delphi/Kylix

Thoughts?

Philo

*take that, you verbifying detractors!

Philo
Thursday, July 03, 2003

At least Java UI's sucks much less than before. If you haven't tried it for a while it might be worth checking out.

/Daniel

Daniel
Thursday, July 03, 2003

If you know C# that Java is a fairly easy transition from a language standpoint. So that might be your best bet.

The database I work with most today (Progress) runs on some 37 different platforms and they use Java for a lot of DB management. So it can be done. The UI however is still poor. That is the price you pay for "run anywhere" I guess.

Maybe C# and Mono? I know Sourcegear  is working with them so they can port Vault to *nix. I'm just not sure how much UI stuff they have in there yet. Maybe Eric could chime in on this.

Marc
Thursday, July 03, 2003

Philo,

Why excatly do you want to learn mysql, etc- ? Do you think it will give you an edge when you contract?

To answer your original Q, java & mysql...

Prakash S
Thursday, July 03, 2003

many java apps suck, but then so does normal native xyz toolkit apps.  Sucking is not related to the tool, so mcuh as the programmer imo.

delphi/kylix: win32/linux x386, very nice language, rad etc

java: most platforms (hence dbs themselves e.g. oracle use java (and suck, but see my first para))

php: want it to be an intranet-type app?  I guess you're righting more of a tool though, right?

wxwindows:  surprisely, this has database access and cross platform and is a nice c++ toolkit, great for snappy uis too.  http://www.wxwindows.org/manuals/2.4.0/wx497.htm

My choice: delphi for the tools, java for the skills and wxwindows for the surprise

constructive comment
Thursday, July 03, 2003

re: Java and UI:
I just created a desktop app using Java Swing for the UI (1.3.1, which is not the latest).  It works pretty well.

The one thing I'd caution you about is that if you attempt to use the Windows Pluggable Look and Feel, you will be extremely frustrated. The libraries just don't do everything correctly for the Windows PLAF.

The default look and feel, "Metal," works much better, and it looks pretty good. It's just different.

Additionally, this app. had a server component using JDBC to access and Oracle database. Had no problems, and it was nice and fast.

Lauren B.
Thursday, July 03, 2003

In my mind, Java for UI stuff is just a bad idea. My evidence is the program MagicDraw (which we use for drawing UML diagrams). We run it on workstations running windows NT. We have version 4.51, which has a copyright date of 2001 on it. Now, I have a Logitech wheel mouse connected to my workstation (It's actually my mouse - I like them enough to bring my own). Everything on this machine works just spiff with the wheel mouse - Except MagicDraw. Why? As far as I can tell, Java insulates the app so much from the actual UI that whatever normally happens with a wheel mouse and a scroll bar is getting lost.

So please, for the sake of the users who have a slightly non-standard configuration: Don't use Java for the UI stuff. Please!

Michael Kohne
Thursday, July 03, 2003

Just to clarify - the application I'm working on is a database utility, so the more databases it can work with, the broader my market.

And I really want to *nix enable it to broaden my professional background - I can best recommend technologies if I've actually played with multiple technologies. :-)

Philo

Philo
Thursday, July 03, 2003

Michael - good point, both for Java and testing in general. However, I'm not sure you can blame Java for how a two-year-old application ignores the scrollwheel. ;-)

Philo

Philo
Thursday, July 03, 2003

If you want to see how spiffy Java GUIs can be, check out the Intellij IDEA IDE.[1] (And the IDE is amazing as well!) The JGoodies toolkit [2] looks pretty sharp too.

[1] http://www.intellij.com/
[2] http://www.jgoodies.com/

Chris Winters
Thursday, July 03, 2003

I highly recommend the Qt toolkit for GUIs. It is very simple and has interfaces with several languages. For languages, if this is a personal project do it in a language you are NOT comfortable with.

Tom Vu
Thursday, July 03, 2003

I'll second the recommendation to check out IntelliJ. It's a great tool with a great UI, and it recognizes my scrollwheel!

IntelliJFan
Thursday, July 03, 2003

Check out SWT, the Java GUI toolkit that comes with Eclipse -- http://www.eclipse.org -- it runs on all major platforms, uses native controls, and is extremely responsive.

Rob Warner
Thursday, July 03, 2003

Have you considered using Python?

Regarding Java:

-  There are some Java apps now with very nice Guis.  Take a look at http://java.sun.com/products/jfc/tsc/sightings/S01.html#5 .

If this isn't good enough for you, there is always SWT: http://www.eclipse.org/swt/

-  VB6 IDE doesn't work with the Wheelmouse either.  Plenty of Java applications do work with the wheel mouse.

Ged Byrne
Thursday, July 03, 2003

Java 1.4.2 includes a really nice XP look and feel. It looks just about perfect. Of course, your non-XP users still get the old, lame look and feels.

Fred2000
Thursday, July 03, 2003

It is strange, but getting the application up and running for one platform (the one you know the best) would be my bet.

Some good feedback and a good dose of iterative design.

Then, you can start working on the other platforms.

Your mileage will vary on the above concept, but I find getting something working, and some good feedback is the way to go. When the features, and ideas starts settling down, you are then ready to start porting the product for the other systems.

I can’t know if you have this option, or you will (or have to) develop for both systems as you go along.

I say this, as then the first project becomes the design spec for the other platforms.

As for the other tools...darn, I can’t help you. I do have lots of software running on Linix..but we are talking strictly green screen data base stuff (and non sql!).

Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn

Albert D. Kallal
Thursday, July 03, 2003

Concerning the suggestions before, I would like to second jgoodies.com.  That site has a swing look and feel that looks great, and comes with layout managers that explain how to actually produce a good looking gui.  As far as the mouse wheel not working with java, that feature was added in 1.3 I believe.

mph
Thursday, July 03, 2003

Nahh, dump Java.  Try Python with one of the newer windowing systems.  I started this being tongue in cheek, but it actually makes sense.  Python is flexible enough to talk to about any db backend you have, and it's pretty easy to learn.  You can distribute the .pyc files to keep your source to yourself.

Snotnose
Thursday, July 03, 2003

Here's another vote for Python. You can use the wxWindows package to get decent cross-platform GUI, or QT if you're willing to pay for a GUI toolkit. There are database drivers available for most databases. And Python is flexible and powerful enough to do almost anything you could want.

And it's a lot more fun to code in than Java is, IMNSHO.

Chris Tavares
Thursday, July 03, 2003

Second vote for Python here.

It's extremely portable, entirely open and free, and has a huge, high-quality library. It compiles down to Java byte code if you insist, and lately even to "specialized" compiling to native x86 code, which can sometimes beat out the best optimizing compilers because it does not in run time (It's like JIT, on steroids).

I assume a Python.NET will eventually be out as well.

Database support is good, and if you need a database you can easily embed the pure-python Gadfly database or the completely free SQLite.

And it's the language that scales best to any size project, both large and small. Spend 4 hours reading the tutorial from Python.org. You won't regret it.

Ori Berger
Thursday, July 03, 2003

Do it in whatever language that looks best on your resume.  You will most likely end up hating whatever language that you use anyways.

Flamebait Sr.
Thursday, July 03, 2003

Lisp :).

Jim Rankin
Thursday, July 03, 2003

...for reasons, read anything by Paul Graham.

Jim Rankin
Thursday, July 03, 2003

you could use java/JDBC, and do the interface as
servlet or JSP.
(well, that would need a web server to run, but is that a problem, nowadays?)

Michael Moser
Thursday, July 03, 2003

another vote for wxWindows
<g> _love_ wxWindows...


java is still pretty bad...I haven't seen a non-trivial java application yet that was not instantly recognizable as being a java app///

FullNameRequired
Thursday, July 03, 2003

Another cross platform choice is ... PERL.
(CGI for UI and logic).

Michael Moser
Thursday, July 03, 2003

Perl - the "write only" language...

[g]

Philo

Philo
Thursday, July 03, 2003

Smalltalk.

James Ladd
Thursday, July 03, 2003

I second that. VisualWorks Smalltalk 7.1 is cross-platform, has good bindings to many database engine and is one of the most productive development environment I've ever seen. It's only drawback is the price...
but if you aren't going to sell this utility, you may use the Non-Commercial version for free.

Just be careful... if you get infected with the Smalltalk virus, going back to C# won't be easy :-)

Giovanni Corriga
Thursday, July 03, 2003

> Perl - the "write only" language...

How do you figure?

Matthew Lock
Thursday, July 03, 2003

every language can be a write only language.

in other words, you can produce good code and bad code, in any language.

Michael Moser
Thursday, July 03, 2003

Due to the power of Perl in "inlining", Perl hackers often delight in minimizing silly things like linefeeds.

I've lost count of the number of times I've heard Perl gurus arguing "I can do it in three lines of Perl" "Oh yeah? I can do it in two." (What's DeCSS? Seven lines, I think?)

Those same people are the ones I've on occasion heard "I can't read this to debug it, I'll just rewrite it."

Agreed - you can code poorly in any language, but I think Perl's the only language you have to know really well to really write unmaintainable code. ;-)

Philo

Philo
Friday, July 04, 2003

Perl's power is it's brevity, or succinctness.

Check this Philo "Succinctness is Power" http://www.paulgraham.com/power.html

Matthew Lock
Friday, July 04, 2003

At the end of that article, he asks:

"Are there languages that force you to write code in a way that is crabbed and incomprehensible? If anyone has examples, I would be very interested to see them."

IMO perl is one of those languages.  While it doesn't "force" you to write unreadable code, it seemingly encourages it.

Of course, to each his own.  To me a scripting language should be obvious.  I have better things to do than stay current with a scripting language and spend time learning all its idiosyncrasies.  I can forgive a language like C for some of its oddities, because it is powerful enough that I would use it a lot.  I use perl mainly for support in development, to do some quick and dirty job, and thus to me it is a secondary tool.  And every time I have to go back to perl, I've forgotten some weird construct, or some idiosyncratic behavior, and it really annoys me.

Plus, most of my co-workers are the same way.  And thus they write horrendous perl code (which is the "default"), and when I have to modify that stuff it annoys me even more.

I'm probably using the wrong tool for the job, but that's what every developer on the team has installed, and I don't use it enough to be too worried about it.

Andy
Friday, July 04, 2003

I felt the same way about regular expressions. For a long time I used them so infrequently that I would always forget the syntax. One day I sat down and properly learned them and never looked back.

Regular expressions probably have the most cryptic and weird syntax of any computer language this side of Prolog, but you could hardly say that it's regular expressions fault if I keep forgeting their syntax. Ditto with Perl.

I think most of the "Perl is write only" arguments are from newbies who hack out a quick script, then forget what they did 6 months later.

Matthew Lock
Friday, July 04, 2003

Right, that's basically what I said.  We don't care about perl, we just need to get the job done somehow, and it's there.  So we use it and get pissed off at it when we have to read it again.

Is there such thing as a "perl programmer"?  I mean someone who writes perl full-time.  I see scripting as a secondary task, and one that shouldn't require a lot of effort to decode syntax.  A quick and dirty job should be obvious.  What I would use it for is stuff like copying a directory tree structure, doing rough source analysis, copying files around based on their attributes/existence, etc.  If I was using Unix I guess the OS would handle a lot of this, but we're using Windows.

Incidentally it's not really regular expressions that trip me up.  I just have to find a webpage with all the codes listed and I'm fine.  It's all the other shortcuts and whatnot.  The use of $_ and $_[0] or whatever is atrocious, both because some functions operate on those variables by default, and it lets the programmer skip thinking about a decent variable name, which might give you a clue as to what it stands for.

If something is a parameter to a function, I want to see it.  Likewise, I want to know what that variable holds.  A name is a good way to indicate that.

The argument of it saving programmer effort is totally false economy.  If you can't be bothered to think of a decent variable name, or typing an extra parameter, then I don't know what to say.  Code is read many more times than it is written.

Andy
Friday, July 04, 2003

Two things.
1. My next door neighbour is a professional perl-head!
2. My own language of choice would be Ruby, but failing that I would add my vote for Python. The productivity you can get with a modern dynamically typed language is obscene!

regards

treefrog
Friday, July 04, 2003

And again, a big vote for python here.... really, try it and will want to do every project in Python :)

yes, is has interfaces to every imaginable db. coding in python is just great. You have a lot of gui's to choose from nowadays. I'd recommend wxPython (wxWindows wrapper for python). It's very crossplatform (unix,linux,windows and mac i believe).

There is also a nice ide with "gui-painter" it's called Boa Constructor if I recall correctly.

really, give it a try

Guyon Morée
Friday, July 04, 2003

Shhh... Will you all please shut up about Python / wxPython / Boa - you're ruining my competitive advantage!

Sleepy
Friday, July 04, 2003

I'm considering python/wxWindows for something at the moment, and its nothing to do with Zope though it might have applications there.

I'm attracted to use Perl in much the same way as I was attracted to C twenty some odd years ago.  The obfuscation argument is as valid for Perl as it is for C, that is, its pointless.  Once you understand the syntax properly you don't recurse the symbols up your own bum even if you can.

Perl's terseness is useful because of its nature, an interpreted scripting language thats wonderful at handling strings.

As to which language for a database app, it depends on what kind of UI you want and in that case it isn't then so much which language as it is which cross platform UI library.

If you want a nice long learning curve then consider XUL/XPCOM or use wxWindows on top of whichever language binding suits you best.  If you use any of the C family then you'll likely get much more bound up in the differences between platforms than in some system which encapsulates it all.

So if you don't want the over the cliff experience of XUL/XPCOM and any other language you can get bound into that (C,C++,perl,python, java, javascript), and you don't like Perl, then the python+wxWindows would be a reasonable choice.

Btw, the reason I'm not seriously considering XUL at the moment for my choice is that it has to work with IE.

Simon Lucy
Sunday, July 06, 2003

Personally I find Python the best for any application for which it is suited.

Neil Bloh
Sunday, July 06, 2003

*  Recent Topics

*  Fog Creek Home