dBase-derived languages in general were a lot of fun. And incredibly productive, basically taylor-made for cranking out CRUD apps.
I do ponder sometimes why we don't have something quite like that these days. Oh, people do try, but it's never that simple, and there are always a lot of moving bits with plenty of friction between them. The ease with which I could collect a bunch of data from a form and shove it into a record in a table somewhere in FoxPro is still unmatched (remember SCATTER/GATHER MEMVAR?).
>dBase-derived languages in general were a lot of fun. And incredibly productive, basically taylor-made for cranking out CRUD apps.
Yes, true. I did a good amount of XBASE (which is the generic term for dBASE, Foxpro, Clipper, etc., and I worked on all 3 of those) in my early programming days (along with Turbo Pascal and Turbo C) - including a very interesting line-of-business app for a switchgear manufacturer's factory - that one was in Visual Foxpro and using a Novell Netware LAN and Windows. Was on site there for around 10 months for the project. Turned out to be ~180 KLOC in size and had a lot of features, from CRUD to parameterized SQL reports of all sorts to somewhat advanced (for the time at least) decision-support sort of stuff, plus production planning.
>I do ponder sometimes why we don't have something quite like that these days.
There actually are a few options (maybe you are aware of them). Harbour project, Flagship (both names are probably plays on Clipper), and a few others. There are also both paid and free libraries that can read and write XBASE formats. My own xtopdf toolkit includes DBFReader, a class that can read dBASE files, both the metadata and data.
I know that Harbour is a re-implementation of Clipper with some added features, but not much else.
I think it's less about the DBF file format and xBase syntax, and more about the high-level conceptual approach, with the language built around concepts like database cursors and mapping data (rather than relegating it all to a library). If this stuff is to be redesigned from scratch in a modern environment, it would have to deal with contemporary data sources - meaning SQL RDBMS - and the syntax could definitely be more consistent and less crufty.
I think you're right on that. Having the database-related features built-in to the language makes a difference. A bit like how REBOL has many data types built-in (~45, IIRC [1]). And if not now, I guess over time, Red will have them too.
I don't, but I'd like to. Most of the online documentation on Foxpro is old, and doesn't convey the magic that I've seen happen with it. I'd love to see some combination of Delphi with Foxpro, probably with LISP syntax and Qt bindings. And a little bit of sugar from haskell and kona languages.
What made Turbo Pascal great was the help system. For every single standard library function, it had a snippet of code that you could cut, paste, run, and tweak.
FoxPro also had a great help system, including context help with F1 for whatever was under the cursor. It wasn't quite as good as TP, because it didn't have true hyperlinked text - but it had a separate section in each article just for links ("See Also"), and it had very fast keyword search, so it was "good enough" in practice. And yes, also tons of examples!
I'd love to hear more about your thoughts on this. I couldn't find an email address in your profile, but I have an address in mine, so please shoot me an email.
I'm pondering about build a Fox-in-spirit. I still mantain that NO programming tool today is good for database-development, and we need a modern take on the dbase.
My idea is build a relational language with a lot of the ideas of fox but with a modern syntax.
If somebody wanna to talk about this, and maybe help, I'm open!
Judging by the all comments and the upvotes in this thread, it looks like it's a more popular sentiment than I expected - so, sure? But this is probably best discussed in a setting more convenient than HN comments.
Why don't you make a small github organization and drop a link here? I've done some programming language work on the side, and I've been wondering a little about stuff like this.
I have the same sensation, I moved to systems and mobile development but I would feel a bit lost if I went back. I catch myself reimplementing xBase-style utility functions like date and string manipulation in other languages, since they felt so sane in comparison. But I wonder that part of this nostalgic sensation was the result of an era that was simpler - no Internet, Web sites were a luxury, security was a distant concern, etc.
What would it take to make a good dBase style environment? Would PicoLisp be an example? (granted it's a LISP, but it seems to have a focus on simplicity and CRUD style things)
Funny that you mentioned Clipper. It's a language that you don't hear about a lot anymore, but it was the first language I learned as a kid (my Dad built point of sale and inventory applications in it for local companies as side work), so it holds a special place in my heart.
Mine too. The fact that it had both dBASE-like functionality (was a superset, in fact) plus could generate EXEs was just a great combo. Like in other countries (I'm sure), plenty of small businesses in India relied (and some probably still do) on small custom Clipper apps (such as POS, inventory, etc.) created by small software consultancies or freelancers. You could tell it was written in Clipper by the typical color scheme and look of the form and by the status bar, when you were at such a shop to buy something. And the speed of data entry by the operators, in those apps (without any GUI clutter to slow things down), was phenomenal.
I had a pretty good chuckle at this comment. I couldn't agree more. While I loved Delphi, VB, TurboPascal, ASIC and DJCPP back when they were in vogue, I feel like starting new projects in a decaying ecosystem is a bad idea. Soon enough you'll find stuff there aren't any libraries for, outdated database drivers, or hit a wall when trying to do something most modern runtimes make incredibly easy (something as simple as making an HTTPS request.) At that point you hit a diminishing ROI from using the language you love and it becomes a matter of productivity.
I wouldn't say things like "gratuitous negativity" to anyone's face IRL. That would come off as annoying at best when two adults are trying to have a conversation.
>What is the purpose of the parent comment? To score a point? To show us all the commenter is smarter than the vulgus?
To defend their technology/language of choice, who they felt was undeservingly dismissed as obsolete?
>The same point could have been made without the condescension.
I think the "less competition" is a valid point. People that dismiss languages as "old" or not fashionable enough, often miss opportunities in niche areas -- case in point all the COBOL jobs.