HyperLEX 2002 Official Web-site
HyperLEX
- perhaps the most advanced
multi-dictionary A.I. software
in the Whole Wide World today
by George A. Stathis (c) 2002

Try out our
Free Demo 
by clicking:
YES!
I AM interested to try out the world's best software dictionary, and if I find it less than adequate, or second-best in any way, I have a right to say so, criticising the product freely within the (censorship-free) "comments zone" of the author's site, where all product defamation will be left unpunished -by the author's crazily creative manners!
 
 

After trying out our Free Demo,
you can also click our sponsors
and also click...

YES

I admit it ! HyperLEX IS the END
of dictionary software
-as we know it !
 

 

This site also contains original
SOURCE CODE for PROGRAMMERS

Using the programming techniques described in this site, I am happily able to revive and to re-release HyperLEX 2002, an enhanced innovative new version of HyperLEX, which was THE best software dictionary (in its home country Greece) during the early nineties: The only one with true HyperText, amazing speed and "real speech", at a time (1991) when lexical software was crawling!

HyperLEX 2002 has outstanding new innovative features that place it -now- in the "Top Quality Range" of World Dictionary Software, not just the limited Greek market.

And all this, thanks to... both LPA and PDC!

     
     
    WARNING:
    CREATIVE GENIUS AT WORK !
    - Do not throw eggs, 
    tomatoes and... spam!
    ;)
    Geeks are sensitive human beings, members
    of a "Much Misunderstood World Minority"
    (besides, some of  us make good music, too!)

    So, meanwhile (after you've downloaded the Demo, laughed with my humourous lines, etc. etc.) you can...
     

  • Jump to my other web-sites - to enjoy my Music Compositions, Soundfonts, Artwork, etc
 

and now for a...

SOFTWARE TECHNOLOGY UPDATE
( The Software Expertise behind "HyperLEX 2002"  )
-and of  HyperLEX 2.* (circa 1992)



 

1) Mixed-Language Programming History

A lot of lexical data available on-line today was ("once upon a time" -in pre-web days) either unavailable, or else partially available in scattered (quite often error-ridden) forms. So I had to write special code using PDC Prolog as well as Pure Assembler routines linked within it, for purposes such as merging multiple "raw word-definition lists" with specialised dictionaries, ending up with machine-readable lexicons that could be "digested" by my software dictionary "HyperLEX" which served them "cooked" to a (pre-web-) public. In this "lexical cookery process" I discovered ways of extracting useful information from originally (almost) useless sources, such as Page Data from scanners (using error-prone scanners and OCR software of the early nineties) or dictionaries with incompatible internal structures (most of them begging for more clever human intervention - or more clever A.I. software).

So my chosen methodology was "mixed language programming" in two main programming languages, both of them extremely powerful, but in entirely different ways:

1) a very fast and efficient "slave language" (Assembler  - the fastest one possible!)
and
2) a powerful and expressive "master language" (PDC/Visual Prolog)
These two, when linked together, offered the best of each other's worlds:

Assembler Speed and Efficiency together with Prolog High-Level ("A.I.") Expressiveness.

I actually ended up mixing other languages, too: 'C' (and very occasionally some C++). All my 'C'-code was always pre-compiled into automatically generated Assembly language (using the "-S" option of Borland's compilers) and then this (automatically generated Asm-) code was hand-optimised whenever necessary, e.g. removing references to standard 'C' functions and replacing them with faster ones written in Asm, e.g. see my web page on Assembler code for searching strings within strings (in the older 16-bit Assembly Source-code section of this site).

Bear in mind that the early nineties and late eighties was still an era when CPU-speed economy mattered a lot! It wasn't (like today) an era of... bad programmers writing sluggishly slow software wasteful in both space and time to be... absolved of its Sins by ultra-fast... God-like hardware!       (sigh :-) those were the days, my friend!...)
 
 
 

 
 

2) PDC Prolog and Visual Prolog

In fact, PDC Prolog (originally Borland's "Turbo Prolog") was designed with speed and efficiency considerations in mind, from the very beginning. It broke away from established Prolog standards and conventions at the time it was created, and "heretically" sacrificed certain features that other Prologs took for granted: E.g. the ability to assert and retract clauses that contain variables is an occasionally useful but very speed-consuming feature of Standard Prolog, which PDC replaced with an "indirect mechanism" (of translating variables into certain types of constants that could be re-interpreted by special code offered as an "Inference Engine PIE", callable whenever necessary).

PDC Prolog's Danish creators took such iconoclastic steps solely for the sake of achieving a speedier operation,  generating faster executable files than other Prolog compilers (most of them... crawling, at the time when PDC was created). The goal of PDC Prolog's inventors was to create a serious Industrial Strength Development Tool, not an "exotic academic pet" behaving well only in the company of academics consulting their... interpreter!  PDC was the only Prolog compiler which generated efficient executables, capable of seriously competing with 'C' and PASCAL "industry-standard" compilers of the late eighties and early nineties. Moreover, it was always easy to link Assembly language code with the PDC compiler, and my good-old- PDC Prolog 3.31 is still useful today: - It creates fast programs with assembler routines easily mixed into them, within a few minutes.In my opinion, "PDC Prolog" has been a grossly underestimated software development product, much ahead of its time (1990-1993).

PDC Prolog's successor Visual Prolog, followed in the mid / late nineties, and has been my favourite one for new reasons: One new reason is the "VPI interface" for creating Windows applications using the Visual Prolog IDE, a semi-automated environment. Another reason is that in Visual Prolog it's still easy to use Assembler routines, but -this time- 32-bit Assembler, which can do... wonderful new things for programmers, given its Flat memory model with unlimited RAM access, limited only by Silicon: Browse my 32-bit assembler source-code for some examples!
 


3) LPA Win-Prolog

However, recently I had close encounters with yet another very good Prolog compiler, LPA Win-Prolog, excellent as regards expressiveness as well as high efficiency, particularly for Windows 32-bit programming. LPA Prolog is not "yet another Prolog dialect" but a proper Standard Prolog, "aspiring to Edinburgh specifications". It includes those meta-programming facilities which PDC/Visual Prolog lacks (or can handle by tedious extra programming). 

LPA Prolog also has brilliant built-in predicates (e.g. "LPA Prolog RAM buffers are more efficient than Strings").

LPA (London Programming Associates) is one of the friendliest Research and Development companies in the UK, which combines the highest possible standards of A.I. expertise (Brian Steel -the technical director- being an Assembly language expert as well as an A.I. and Prolog pioneer) with the highest possible humanistic standards of. behaviour towards company personnel ! (e.g. my... foot was literally saved by the company's insistence to take me to a hospital for an immediate operation, the morning after a serious injury: a tendon-fracture caused by... excessive Techno-dancing! :-) )

So, back in the spring of 2001, while working for LPA, I realised that the LPA Prolog compiler does exactly those wonderful things which I always... dreamed of doing, in PDC/Visual Prolog, but got lost in the work-load of having to do them "from scratch indirectly" using PDC tools like the "PIE interpreter". Of course LPA Prolog doesn't offer certain important features that PDC/Visual Prolog does, e.g. the ability to link "*.OBJ" files compiled in other languages within its executables. LPA Prolog also lacks certain useful Visual Prolog predicates that I find almost indispensable; you can read about these in "Emulating PDC/Visual Prolog predicates within LPA Prolog".

To cut a long story short, I became increasingly aware of a complementarity beteen these two compilers. Learning LPA Prolog's "secret charms" made me more appreciative of Visual Prolog's uniqueness and efficiency, as well.

And at some point in time, while planning the implementation details of a big A.I. project (for which LPA had hired me) I uttered a comment that sounded like a coffee-break joke: "Why don't we write parts of our code in Visual Prolog and Assembler, and then link them up with LPA Prolog, to do the damned thing quicker?"
 

(ha ha, not so funny. eh? :-) )


 

4) The  21st Century HyperLEX Implementation

What started as a joke when I worked in LPA's premisses, ended up as a serious useful programming stategy:

Having decided to re-design and re-release my old dictionary software "HyperLEX" for the 21st century, striving now (in the middle of already fierce competition) for a "world breakthrough in dictionary speed and efficiency"...

I ended up using both these Prolog compilers at the same time linked together: LPA Prolog, as well as PDC DLLs (containing 32-bit ASM).  I wrote these DLLs in Visual Prolog  5.1 Pro (a compiler which was kindly donated to me by PDC in the late 90's) and compiled the 32-bit Pure ASM code with TASM.