tags:

views:

679

answers:

7

Recently I found out that the company a friend of mine co-owns uses 4D, which I've never heard of before. They swear by it, but they're non-technical and what they say about it sounds like memorized marketing blurb. Unfortunately the 4D website also seems devoid of any actual information and is filled with words like "comprehensive", "solution", "platform" and "integrated" instead.

Since that thing is rather expensive and uses a custom language that I don't have much inclination to learn just for one project, I'm cautious about it and I'm wondering if anyone had any experience with it? Would you recommend it? What is it good for? What competitive advantage would I gain by learning it as a programmer, or using it as a company?

+3  A: 

I'll be wary of investing too much into something like this. On the good side, if that's what your company uses learning it will pay dividends. But the skills you learn will be hard to use in other places.

Tundey
+2  A: 

After looking at https://www.4duk.com/products/ataglance.html, I'd recommend you stay clear - it looks like one of those products that's going nowhere.

It reminds me of the time I was made use a development platform called Witango - absolute nightmare to use, and all apps had to be rewritten in .NET very shortly afterwards.

Invest your time learning something more mainstream/employable.

Galwegian
+11  A: 

4D has been around for a long time (~25 years), so it's much older than e.g. MySQL. Think of it as a professional version of Microsoft Access: It has its own Pascal-inspired host language, its own relational database engine, a very mature IDE for rapid GUI development and a custom runtime which allows for true "write once, run anywhere" (anywhere being Mac OS (X) and Windows, that is). Nowadays, it also understands SQL, there's a server version and even an integrated web server. It's fairly powerful, so the comparison to Access probably does not do it justice.

Today, I believe it's mostly used for legacy apps which are as old as 4D is. I don't think I would learn it again today, much less start new projects with it, since you can get the same functionality and then some by stacking up open source components.

Simon
Are there really open source IDEs out there which let you create a database and hook up a GUI as fast as 4D? I don't know the open source tool scene that much - I'm not trolling!
Andy Dent
I don't know of any open-source IDE that would do that. I think comprehensive IDEs that do everything are a personal preference thing. I'd rather choose my own IDE than have to use the vendor-provided one.
Pies
@Pies: It's not the IDE per se but its Access-like ability to build application GUIs in a visual environment. Apple's XCode can do this as well, but only on/for Mac OS X. I'm not aware of any cross-plattform tool for this, however I never really looked for any options.
Simon
@Simon: Well, if you need that kind of functionality above everything else and are willing to pay a price in money, developer mindshare, versatility, etc. then you should probably check out 4D.
Pies
@Simon REALbasic is even better than 4D at putting together cross-platform GUI however they have removed their database bindings (part of a long-term cleanup of the core) and so for database apps it's not a rival - you have to map SQL results yourself. I'm working on a port of my OOFILE c++ frameworks to make that kind of thing trivial, started by getting the report-writer going.
Andy Dent
+4  A: 

I used to do some very serious 4D work, one of the systems I wrote is still in use as an enterprise system about 16 years later. I got frustrated because they were taking years to come out with the new object-oriented version of the language and I was writing thousands of lines of code to use a third-party table control.

4D delivers cross-platform, very high-performance client-server systems using a proprietary server. The database model is much more set-oriented than SQL and pulls the sets all the way into the core language. It does a nice job of delivering code to the clients because it compiles all procedures to native code which is cached locally and updated on-demand when it is out of date.

The language and GUI environment have their quirks but the flip-side is that there will probably be a good living to be made from supporting it as a legacy platform. if you can get someone else to pick up the tab for the tools, it may be a useful addition to your consulting toolbox. You have to consider how much business-specific code is gonna be out there for a unique product with that long a history!

An engineer for whom I have huge respect was recently hired by 4D which says a lot about their commitment to the future, hiring this kind of guy.

I've been working a lot with legacy systems recently, doing a port from old Mac stuff to WPF and the contrast between the mostly-unused complexity of Visual Studio and old Mac tools reminded me of 4D. I'm also porting my OOFILE C++ database and reporting frameworks to REALbasic - the OOFILE set-oriented operations came directly from what I loved about 4D and this too made me think I was too harsh in this answer originally.

The thing to remember about 4D is that it was set-oriented from the beginning (written by a mathematician) and much easier to use for many things than SQL. The deployment model of 4D Server is a superb combination of desktop app and network provision - compiled components are cached on the desktop and automatically sent to a client when needed. There's no need to shutdown or actively push or deploy updates. The GUI model of 4D was frustrating but looking at the site today, they have solved most of the issues that I had to use third party solutions for years ago.

Andy Dent
So basically you recommend learning it to either support legacy systems (how's that for a dream job) or to work for someone willing to spend many thousands of dollars for easily replaceable the software. I'm not convinced :)
Pies
But I guess it could be a nice job if I didn't like programming as much as I do :)
Pies
I think you're probably speaking from a position of ignorance when you say "easily replaceable"? I know that the quote to replace just part of the main system I wrote in 4D came in at about 4x what it cost to develop.
Andy Dent
I meant that it's easy to use other software stacks, which are more popular and often free, instead of 4D.
Pies
+1  A: 

I've heard it's 33% better than 3D....

Drew Hall
+2  A: 

In my opinion, there is no reason to begin learning 4D unless you want a simple database app and are unable or unwilling to learn how to create GUIs in a bigger language. The main advantage that 4D has is that the built in functionality between the UI and the database can handle most of what is needed. If you want something quick, small, and inhouse, you can get by with 4D but if you need to develop a powerful commercial application you will run into a few walls. If you need something that 4D doesn't provide automatically it will be very difficult to get it working.

I consider the language completely archaic. It works for what it does but our product has become limited by the language and database itself. We keep running into weird quirks and have to code our way around them.

I have experience in 4D 2003 and 2004 but we haven't upgraded to the latest version because of the costs. It is extremely expensive. Each customer needs to buy licenses for each computer that needs to run the software. Our product costs over $1000 for a new office because of the licenses. When a new version of 4D is released every single customer has to pay to upgrade their licenses.

MrHen
+3  A: 

Avoid it like the plague. My company uses it and it's just a constant exercise in frustration. It performs no where near as well as the sales pitch would have you believe, and documentation is either non-existent or not helpful.

Jason
sad to hear that. Performance was amazing many years ago
Andy Dent