Live data from Hacker News

dBase: 1979-2026

delphinightmares.substack.com

61–70 of 88 posts

Re: dBase: 1979-2026

#61
dBase was one of my first exposures to databases. As a largely penniless computer-obsessed kid in the late 80s/early 90s I was big into sending off for any freebies offered in the ads of the pages of UK BYTE.

Somehow I scored a (stripped down?) copy on multiple floppies that I couldn't even use, as an Amiga owner - but incredibly, this freebie came with a fantastic paper manual which I devoured.

Re: dBase: 1979-2026

#62
It was interesting to read some of the history and this was a fun era to live through for developing database applications where most of what you needed was contained in the database application itself. But I'll disagree that mismanagement was the primary cause of decline of systems such as dBase, FoxPro, and Paradox. By the late 80's they were all starting to show the strain of implementing multi-user access via some sort of file server hosting. Read consistency and transaction isolation is pretty hard to implement and I still remember how early versions of Paradox would simply restart a query executing on a workstation if another user updated a table. When things like PowerBuilder and the relatively inexpensive WATCOM SQL server arrived there was no turning back for anything other than simple applications.

Re: dBase: 1979-2026

#63
post #32

Earlier quoted context omitted.

Perhaps this is why BASIC originally used LET in the form LET X = X + 1, to imply a calculation rather than equality.

The = for assignment is FORTRAN’s fault. In the beginning there was no equality, just assignment, and FORTRAN (being just a FORmula TRANslator after all) made the somewhat dubious decision to use = for that (punch card space being sparse and symbols limited and all). When FORTRAN gained equality it went for .EQ. out of practicality and necessity. Many others followed suit but used the somewhat more pleasant == instea…

I would prefer

X is 5

X is x + 5

Re: dBase: 1979-2026

#64
post #32

Earlier quoted context omitted.

Perhaps this is why BASIC originally used LET in the form LET X = X + 1, to imply a calculation rather than equality.

The = for assignment is FORTRAN’s fault. In the beginning there was no equality, just assignment, and FORTRAN (being just a FORmula TRANslator after all) made the somewhat dubious decision to use = for that (punch card space being sparse and symbols limited and all). When FORTRAN gained equality it went for .EQ. out of practicality and necessity. Many others followed suit but used the somewhat more pleasant == instea…

I would prefer

x is 5

x is x + 5

Re: dBase: 1979-2026

#65
> Bizarrely, to protect dBase, there was no compatible Turbo C++ objects integration in dBase (you could import OBJ files from Microsoft C++). There was no way to natively use dBase from Turbo C++ or TurboPascal.

I'm guessing dBase was itself built using Microsoft's compilers, so pulling in other code from the same compiler was plausible. Not a product choice re: the Turbo compilers, just a disjoint path dependency between two acquired product lines (Ashton-Tate's dBase, and Wizard C).

This is the reason that Clipper, a third-party dBase compiler, could only link against .OBJs from particular versions of Microsoft C. Clipper compiles to p-code whose interpreter is implemented in Microsoft C; "linking" a Clipper program is actually linking a Microsoft C program with a static array comprising the Clipper compiler's output. So you can mix in a .OBJ expecting that version of the Microsoft C runtime library. Not a .OBJ expecting the Turbo C++ runtime library.

Re: dBase: 1979-2026

#66
post #31

Earlier quoted context omitted.

I think parent was alluding to mutability.

While I'm a big fan of immutable design, it makes some algorithms much more expensive and ultimately DRAM is mutable. And the example we're talking about could be a loop counter!

A tail-recursive loop handles loops just fine, and is just as efficient. This is a perfect example of the misconceptions that mutable-first programming languages have caused.

> ultimately DRAM is mutable

Ultimately the CPU executes machine code, but I don’t see you directly writing that. You’re cherry-picking to defend an indefensible position.

Re: dBase: 1979-2026

#67

Earlier quoted context omitted.

The = for assignment is FORTRAN’s fault. In the beginning there was no equality, just assignment, and FORTRAN (being just a FORmula TRANslator after all) made the somewhat dubious decision to use = for that (punch card space being sparse and symbols limited and all). When FORTRAN gained equality it went for .EQ. out of practicality and necessity. Many others followed suit but used the somewhat more pleasant == instea…

I would prefer X is 5 X is x + 5

How do you feel about ADD 5 TO X GIVING X?

I kid, of course, but "X is x + 5" brings Prolog to mind with all the unification and bidirectionality that implies.

Re: dBase: 1979-2026

#68
post #47

Shapefiles, the legacy multifile file format for geospatial stuff that is still an incredibly important interchange format since it has basically universal support is built around DBF files. So despite it being an incredibly old file format it's still used constantly in the GIS world and it's probably not going to go away because while it's not a good format, it does basically everything at to at least a mediocre lev…

Of course the modern replacement is just sqlite.

Re: dBase: 1979-2026

#69

Earlier quoted context omitted.

The = for assignment is FORTRAN’s fault. In the beginning there was no equality, just assignment, and FORTRAN (being just a FORmula TRANslator after all) made the somewhat dubious decision to use = for that (punch card space being sparse and symbols limited and all). When FORTRAN gained equality it went for .EQ. out of practicality and necessity. Many others followed suit but used the somewhat more pleasant == instea…

I would prefer x is 5 x is x + 5

But x isn’t x + 5. If anything, it should be “x becomes x + 5”.

Re: dBase: 1979-2026

#70
post #32

Earlier quoted context omitted.

Perhaps this is why BASIC originally used LET in the form LET X = X + 1, to imply a calculation rather than equality.

The = for assignment is FORTRAN’s fault. In the beginning there was no equality, just assignment, and FORTRAN (being just a FORmula TRANslator after all) made the somewhat dubious decision to use = for that (punch card space being sparse and symbols limited and all). When FORTRAN gained equality it went for .EQ. out of practicality and necessity. Many others followed suit but used the somewhat more pleasant == instea…

> ALGOL decided to stick close to mathematical tradition

And now we have all 3 in Python (=, ==, and :=) which makes me sad.

Post reply on HN