Saturday, January 01, 2005

Simplicity

There was an interesting thread on our conforums site http://libertybasic.conforums.com recently where we discussed Windows API calls. Someone mentioned that the most useful API calls should all have BASIC equivalents.

I understand the reason this was suggested, but I have to disagree. I don't know how many people come to Liberty BASIC because they tangled with Visual Basic and found it to be too large and complicated. I program in Java for a lot of my work. It's big and unwieldy (it wasn't when it arrived in 1995). I can vouch for small is beautiful.

Most programming tasks don't need a big language.

Another important point to keep in mind is that as we move toward Macintosh and Linux versions of Liberty BASIC, we'll have to be very careful not to add many platform specific commands.

1 comment:

Crypto-Man said...

I heard a very good remark recently and am telling my programmers: "real genius is creating simplicity from chaos, not the other way around".

Liberty Basic is effecting me so profoundly about my ideology about programming. I did start with TI48 programmable calculator in 1977, then BASIC with an acoustic coupler at 150 BPS, APL, Fortran, Pascal, C.
Got one of the first IBM PCs with 16 K, diskette drive in 1981 and BASIC was the only thing. Remember the days of TRS80, OHIO SCIENTICIC, Apple II.

I stopped at C and became more of a manager of my software company and fifteen years later I am regretting it because I am also consumed with my programmers for C++ this, C# that, Oracle, Informix, PowerBuilder what not.

What is sickening me is that with all these things the main objective is lost. It seems like endlessly fattening Windows, and never ending new paradigms and APIs, just as you start mastering something, C++ ends .NET and C# starts. No way to catch up. No time to develop useful software.

In my business, I need to do quick demos, make proof of concepts and these need to be done in one day. And it never gets done with all these fancy stuff. But I can do it in a few hours with Liberty Basic. Clean, crisp, understandable code. Easy to write, easy to debug. I don't need a masterpiece for writing a socket server to switch a transaction from one format to another to demonstrate a new EFT/POS terminal tested for always connected IP mode over DSL. LB gets the job done with sufficient GUI, sufficient speed and most importantly on time.

Now, when my programmers grumble about adding 2 bytes to socket message, or truncate first 4 bytes, I do it in 5 minutes with "00"+Packet$ or MID$(Packet$,4); and tell them go on with your masterpiece, I'll do it with LB.

I am able to do things I have been wanting but never getting eith all those state of the art stuff.

Untraceble triggers, 76 objects on a screen, creating events who knows where it will go and what each of them do. Forms, resources, this, that and at the end of the day what is done for the end user : nothing much really.

So much learning curve, you are not able to teach new programmers real business knowledge. 95% of the time they need learning the environment and language.

And in day to day life there are so many small programs that need to be built. Sometimes, for one use only. Here the objective should be get the job done.

It really makes me sick when I look at Windows directories, what a mess. Everything dumped as millions of unorganised files. 90% of the people use the PC for Internet Browsing,eMail, Word, PowerPoint and Excel. And I wonder, how many people really use more than 10% of the functions of these software and look at size of these programs. No more elegance or efficiency.

Effectively a chaos created for doing simple things and this is not genius. Liberty Basic is Genius. It gets things done. It is the only thing I can show and teach my 12 year old girl that there is more creativity and excitement in writing and exploring your own programs then playing computer games or watching TV.

And beyond this, if you want to do serious stuff, you probably know how to create your functions and DLLs in C or use the Windows API. And, when you do this, there is not much difference in performance as the bottleneck here becomes the Windows itself not LB. I did some benchmarking on different machines from P3 to XEON to see how many transactions per second I can push with LB to send and receive credit card authorisation transactions with TCP sockets and difference was not so much. 25/s with P3 and 35/s with XEON while 6 RISC CPU Sun Solaris can do 50/s. If the real life need is
10 tx/s, why bother with all the mess and develop and test the code in months, when you can do it in days or weeks with LB.

There is nothing that can not be done with LB. You've done an amazing job. I am born again.

../.