I got back from 4D Summit 2018 in Washington DC and thought I’d post a few of 
my thoughts and comments about this year’s summit. 

I went to JPR’s advanced class and he made a statement at the end that I think 
really sums of 4D v17. He said this is the biggest update in the history of 4D. 
Bigger than 4D v3 and 4D Server v1 with multiple processes and windows. And v17 
is only the beginning of the changes that are coming.

There are more features and changes that are far along in development that will 
be released in v17 R releases and in v18 that will position 4D as the premier, 
cross-platform RAD package combining an integrated client/server database that 
has a ORDA interface. There is nothing out there can come close to it. 
Particularly when you realize this is a cross-platform solution. Compiled, 
native macOS and Windows versions of a piece of software from the same source 
code. Integrated, powerful client/server database included. The same piece of 
software can run as a single-user application or as a client/server 
application. Tell me who else is doing that? And don’t forget “4D for iOS” as 
the delicious cherry on top! We’ve got a software application development 
system that is going to be very hard to beat. 

What is ORDA? It is not a “a historical sociopolitical and military structure 
of Mongol Eurasia”. This is a new term that 4D has created. It stands for 
Object Relational Database Access. I’m guessing in a few years if you Google 
ORDA that will be for number one link.

ORDA is coming to the 4D language. That is why we have the “dot notation” 
option for the method editor. It is needed for ORDA. I think a quick way to 
summarize ORDA is to say “if you know how Wakanda did database access with 
JavaScript that is what ORDA is in the 4D programming language”. 4D is bringing 
the advanced object oriented database access that Wakanda has to 4D. This is 
going to change the way you will WANT to program in 4D.

I say “want” because if you are happy using the 4D language the way it is now 
and has been for 25+ years you are free to continue to do that. JPR calls it 
“classic 4D”. It will continue to work exactly as it has before.  But if you 
use the new ORDA method you will reap many benefits. Easier to read code, fewer 
lines of code, complete control of exactly what relations are used between 
tables to retrieve data and big speed improvements. That’s right, using ORDA to 
accomplish a relational database lookup and data retrieve task can in many 
situations be much faster than doing the same thing with a series of “classic” 
4D language commands. So for all you “speed hounds”, you are going to want to 
use ORDA. (Side note: when Laurent designed the 4D v11 database engine he had 
in mind ORDA and planned for the optimizations. This thing has been in 
development for many, many years.)

If you have used Wakanda or know how it accesses the 4D database in an object 
oriented way, you already know how to use ORDA in 4D. That’s because it uses 
basically same syntax as Wakanda. In my opinion this the beginning of bringing 
all that is great about Wakanda and making it an integral part of 4D. Use it if 
you want, or ignore it and continue to use the classic programing language. Or 
use them both. You have a choice.

When I heard about the 4D Summit Advanced class and that JPR would also joined 
by Laurent I knew something special was coming to 4D. (Laurent had to be there 
because the subject matter was so new and broad that JPR would not have answers 
to all questions. And that turned out to be true.) I thought they were going to 
introduce a new language to 4D. JavaScript for 4D. My visions were that there 
would be “Begin JavaScript” and “End JavaScript” commands like they “Begin SQL” 
and “End SQL” commands that would let you write JavaScript and do fancy things 
like you can do in Wakanda with JavaScript. I was wrong. There is no JavaScript 
support in 4D, and there probably never be — outside of web areas. 

Many, many changes to the 4D language are coming. I sat at a table with Laurent 
and some other 4D developers at lunch one day and Laurent said the new 4D 
language will be “JavaScript inspired”. He intends to add features to the 4D 
language so that it will be even better than JavaScript! Inheritance, error 
handling, custom data classes and the list goes on and on. The days of the 4D 
language not getting updated are over. The changes are just getting started. 
Reminds me of that movie where the character says “Badges? we don’t need no 
stinking badges”. JavaScript? We don’t need no stinking JavaScript. We are 
going to have something better. This is good news!

One example of a change in the 4D language is the “For each” loop control 
structure. Super useful and needed when dealing with objects and containers. 
More is coming. The doors to the 4D Engineer’s cages in France have been opened 
and they are going to begin running wild attacking problems and limitations we 
have had for many years with the language. Making things easier to do. And 
making things that were not possible before, possible now. This is good news!

So you want an example of ORDA and changes to the 4D language? Here’s one form 
JPR’s advanced class. (Hope I am not doing copywriter infringement here.) 

You have a table called “Employee”. Just one table. It has a “managerID” field 
and has a relation back to the “ID” field of the same table. (Yeah, that’s not 
possible in the current version of 4D, but it is in v17.) The name of the 
relation is “manager”. Find all Employees working for a manager whose 
“firstname” is “Laurel”. Here is how you would do it now:

QUERY([Employee];[Employee]firstname="Laurel")  // First Query 
ARRAY LONGINT($arIDs;0)
SELECTION TO ARRAY([Employee]ID;$arIDs)
QUERY WITH ARRAY([Employee]managerID;$arIDs)

That gives you a selection of [Employee] records. Here is how you do it via 
ORDA in v17:

$entSel:=ds.Employee.query("manager.firstname = ‘Laurel’ “)

That is it. One line of code. That gives you an entity collection which is very 
much like a selection of records. And this is faster than QUERY, SELECTION TO 
ARRAY and QUERY WITH ARRAY. 

And it can be recursive. Say you want to find the managers of the managers 
whose name is “Laurel”. You do it like this:

$entSel:=ds.Employee.query("manager.manager.firstname = ‘Laurel’ “)

4D Summit 2018 would not be complete without mentioning 4D for iOS. I called it 
the “delicious cherry” and it is. This is a component that 4D is creating to 
allow you to create an iOS application. The potential here is huge. They are 
only at the beginning of the development of this product. They have not decided 
on the pricing yet. Total feature set it still unknown. But we got a taste of 
what is possible with this component. 

The component is preinstalled in v17 and is integrated into the “File” menu so 
you can select a menu item to create a new “iOS Project”. That opens a window 
that lets you define the project. Select tables and fields you want to provide 
access to in the iOS application. Select templates for how it will look in the 
list views and detail views. Then click a “Build” button. That generates a 
complete XCode project folder with all needed files, tells XCode to build the 
project and then launches the built iOS application in the iOS Simulator 
application on your Mac so you can test it. It connects to a 4D Server using 
the 4D Mobile interface. Data is cached to the iPhone and saved to a “local 
data store” so it is fast and does not required a constant connection to 4D 
Server to use it. First version of 4D for iSO is read only, but later versions 
will allow changing data on the iPhone and having it automatically sync back to 
4D Server. 

This is a real iOS application created by XCode. So you can build an app and 
submit it to the Apple App Store if you want. Make a million bucks if you can. 
Or you can submit to the Enterprise App Store and distribute it privately to 
select people in the company you are developing it for. The wheels start 
turning in your mind about what is possible now. I already have one client that 
is begging for an iOS app to access their 4D Server application. I think this 
will be the ticket to making that happen for a price they are willing to pay. 
And they will pay me for this instead of another iOS application developer that 
I would have to contract to build the iOS app. This is good news!

4D Summit 2018 was a big event. Many new technologies were presented. They gave 
a hint of roadmap for the future and what was possible. Spending an hour at 
lunch with Laurent was inspiring. Work that he and the 4D Engineering team have 
doing for the last 5+ years are now coming to fruition. Things are ready to be 
put into a production product and distributed to developers. He built it for us 
to use. He wants it to be right and of high quality. It is something he is 
proud of. You can tell that when you speak to him about it. He is excited about 
what is going to be released. And he’s not done yet. He has more in the 
pipeline. This is just what is ready now. More is coming. This is good news!

Tim

*****************************************
Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com
*****************************************

**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to