Interesting discussion about Xojo on Purebasic Forum

Xojo Developers - PureBasic Forums - English

Geoff should read that just to see its not JUST the folks here griping about various aspects of Xojo

4 Likes

I honestly don’t believe Geoff cares about Xojo’s customers, let alone ex-customers who’re dissing his product in a competitors forum.

If he cared, they’d put their resources and attention on to things that customers are asking for, or for things that would improve customers lives. Instead he told customers, either you re-write your app in our “New Shiny” or there’s the door.

3 Likes

I believe that he cares a lot about Xojo itself, but as CEO is to incompetent to realize the importance of current and past customers.

it seems PureBasic is a very fast tool, but also that it is not OOP at all…
how can you then compare it with Xojo ?
programming OOP or not is a complete different kind of programming.

Okay JeanYves compare it then to Java. OOP and full blown. So what? It is not the fact that it is or is not oop. They are discussing the fact that Xojo is in this form discussed. That is, in my eyes, a situation which is something I would await for the community. I know that Xojo is OOP but that are many languages and many concepts. And at the end there is another question: do I get the Job done when using Xojo or something else. There is then no question about top. Only question is: do I get the Job done. and there we are back at Purebasic. When and If it is stable and reliable you can get your Job done. With or without OOP it is possible. So yes, you can compare. Like you can compare Java with Xojo. But looking on the Ecosystem, reliability, stability…I can’t decide for Xojo anymore while there is NOTHING better in Xojo. It is all worse. So, like you can see: it is never a question if the tool is working in the same way. The question should always be do I get my Job done with it or not.

Yes there are intriguing Basic dialects and tools out there but they all have some gotcha or other. Some of them have a primary mandate of VB6 compatibility and a secondary mandate of non-breaking enhancements, one of which may or may not be OOP. For me, OOP is essential to build a system of nontrivial complexity, which I was reminded of recently when doing some recreational retro programming using the EnhComp BASIC compiler for TRSDOS/LSDOS. It (just barely) had local variables (really, only function arguments were local to the function). It was cutting edge for the early 1980s but a much as I liked the intellectual challenge of figuring out how to do things with about 43K of TPA and anything beyond that involving bank switching, there were too many other obstacles to building anything with a large runtime library of code. If I return to that I will probably use the K&R C compiler for that platform rather than BASIC because at least it’s a no-compromises, rigorous language even if it lacks OOP, and you can somewhat work around that lack without weird hacks.

And this would be the problem with PureBasic I think, and some of the others I’ve looked at like FreeBasic … no OOP and/or odd syntax and/or strange evolutionary directions reflecting the whim of its single creator (back to the Perlman Effect, essentially). I search in vain outside @thorstenstueker’s Java stack or maybe .NET Maui for something that even approaches one code base for all desktop, mobile and web uses and even those are not just drag, drop, hook up methods and don’t worry about the details (and no, despite presumably good intentions, Xojo doesn’t fit that description). One has to understand the toolchain and the philosophy and design carefully and probably start with trivial exploratory apps to get a sense of where the weak points are.

One also has to consider the viability of the company or open source project behind the toolchain, over against the ambitiousness of what we really want – one UI design and one code base for all platforms including web and mobile, apart from platform-specific functionality. That’s a big ask.

I have been using Purebasic for about a year now and yes it does have some weird syntax. I started programming back in the day before OOP was even a thing, had to rewire my brain for it and now had to rewire by brain again back to procedural programming. :slight_smile:

Purebasic’s main advantage is speed. The IDE and compiler are both extremely fast and run circles around Xojo. But, at the same time, Xojo is a much bigger and more capable language. It has better (and more) controls and a better GUI designer.

It all depends on what you want to do. I am a hobbyist programmer and have found Purebasic suits my needs (for now) and is a much better value than Xojo. $99 lifetime license, full database access and the ability to create command line programs.

Phil

4 Likes

From what was said here, it seems to me that PureBasic might make a good companion to Desktop Xojo to create console apps/helpers that work with Xojo desktop apps…

Certainly cheaper that buying Xojo Pro to get console!!!

-Karen

1 Like

only for console you can use C. Not that complex and faster …

The latest version now has the option to compile using a C backend and a c compiler. Now you have the choice of fasm and a c compiler.

I’ve been using Purebasic for years for internal tools. I finished a niche client tool a while back that has replaced a Xojo version I wrote about 12 years ago in an early version of Xojo when it still produced an exe with no dependencies if I remember. The Purebasic version is now a small single 3mb executable that runs in the region of five to six times faster.

I have a lifetime license for both Purebasic and Livecode, between the two they have both so far have covered everything I’ve needed.

I don’t and won’t ever touch Xojo with a barge pole.

2 Likes

Personally I don’t think PureBasic’s lack of OOP is a big deal - you can define structures, extend structures, nest structures (including having a linked-list of a structure inside another structure), …

And you can organize related code in Modules, then just make the first parameter of each function in the module take a pointer to the relevant data structure.

So you go from:

ObjectName.Method(params, ...)

to:

ModuleName::Method(*data, params, ...)

or if you prefer not to use modules you can just use a similar naming convention to that which you often see in C:

Namespace_Method(*data, params, ...)

PureBasic’s included GUI widgets ( or Gadgets in PB ) are quite limited but one of the forum members, Thorsten1867, has contributed a really nice set of alternatives that are available to download free of charge from here

PureBasic also has a sister product, SpiderBasic, that shares the same syntax and can be used for creating web front ends or Android / iOS apps ( via Cordova ).

PureBasic includes libraries for both CGI and FastCGI too so with web you’ve got both front end and back end covered ( with no client events being sent to the server :+1: )

1 Like

I agree, lack of OOP is not a real big deal. You just have to think differently and there are many ways to simulate it if its really important. You can use interfaces to simulate objects and methods. I found it a bit clunky when I tried it though and went back to just using modules.

Phil

It is not a big deal for solving small scale problems with small scale codebases. And yes for larger needs you can “simulate” OOP, but then you will end up doing that in your own particular way which takes time to design and properly document and makes it harder for others (or you, after enough time away from the code) to get up to speed with your work. One of the hallmarks of maintainability in your code is the ease or difficulty with which you can wrap your brain around the problem space – now, or six months from now. I think that the standard OOP metaphors are best for that. Or some widely embraced alternative like pure functions, if that’s your thing. I mean if I loved PureBasic that much I guess I would accept it warts and all, just like my wife accepts me, lol. But there are lots of other toolchains that don’t make you jump through hoops or learn strange new metaphors.

Exactly. You use whatever tool that best suits you and the problem at hand. For me, that’s Purebasic, for you that’s something else. There is no right or wrong here.

Phil

1 Like

Hobby developer here. Could you explain what you mean with OOP? I guess it’s object oriented? And PureBasic is not? What does it mean? Does it mean you cannot have classes at all?

What I was describing was a similarity not a simulation. As I see it the real difference is procedural programming separates data from behaviour whereas OOP bundles them together.

In current times when so many applications are backed by remote procedure calls to web services again effectively what you have is data separated from behaviour. The front end sends structured data (JSON or XML) to the back end for processing.
e.g.:

{
	"id": "ABC123",
	"service": "horseRacing",
	"method": "listMarkets",
	"params": {
		"countries": ["GB"],
		"marketType": "WIN",
		"startTime": {
			"from": "2023-02-23 11:00:00",
			"to": "2023-02-23 20:00:00"
		}
	}
}

Which maps quite nicely to PureBasic’s Module::Method(*data)
And PureBasic has the ExtractJSONStructure() command to convert JSON directly to a structure too.

Yes it is the organization / association of data with behaviors. I can live without inheritance to an extent because deep inheritance hierarchies is usually (though not necessarily) a code smell. To me it is the facilitation of composition rather than inheritance that is OOP’s strongest feature. So if a language has namespaces and/or module functionality and/or interfaces such that you can achieve the organization of your architecture and code and thoughts similar to OOP, that might suffice. It also needs local variables, of course, but that’s almost a total given today and hardly needs mentioning.

In fairness, there is one very popular language today that is not, in the strictest sense, object-oriented: JavaScript. Its reliance on prototyping as a pseudo-inheritance mechanism breaks encapsulation. Yet people have written commercial software that runs in the browser with it, including impressive spreadsheets and word processors.

Mind you, I have been coding for 40 years now so it’s not like I haven’t built large systems in procedural languages vs OOP. I’ve also built significant systems without the aid of interactive debuggers and without unit test frameworks or IDEs or a lot of other things, but I don’t necessarily want to go back to doing things in those ways, either. I don’t prefer prototyping to actual inheritance for instance; I put up with it when I have to write client-side code that is guaranteed to run in any browser.