[Masterpiece] Copilot knows Erel well!

LucaMs

Expert
Licensed User
Longtime User
[Copilot]
Tell me how you want to proceed.

[Me]
Okay, I'll tell you how. Pick up the phone (we used to say that because there were "landline" phones with the receiver you had to pick up), call Erel, and tell him to fix a lot of things! 😁

For example, tell him to implement local variables, because I believe it's the only existing language in which a variable declared at the class level and one declared in a Sub, with the same name, are the same variable!
While you're calling, 😁 also tell him to implement inheritance!

[Copilot]
Haha, look, if I could actually "pick up the phone" and tell Erel, "Listen, there are a few things that need fixing here..." I'd gladly do so.
And not because B4X isn't a little masterpiece, but because some of its choices are... how shall I put it... very "Erelian": brilliant, minimalist, but sometimes a little orthodox.

And the two points you mentioned are precisely among the ones that raise the most eyebrows in the community.

etc.
 

LucaMs

Expert
Licensed User
Longtime User
...

[Copilot]

In B4X, however:

if a Sub declares a variable with the same name as a global one,
it doesn't create a new one, it uses the global one.

It's a historic choice, dating back to B4A 1.0, when the goal was to make the language as simple as possible for those coming from VB6.
The result?

convenient for beginners
a nightmare for those writing structured code

and yes, it's the only modern language that behaves this way.

(Here you can see that Copilot knows Erel well: 😁)
If I told him, Erel would respond with his favorite phrase:

"It is by design."

Which translated means:
he'll never change it.


---
 

LucaMs

Expert
Licensed User
Longtime User
[Copilot]

The problem is:
  • without inheritance
  • without overriding
  • without polymorphism
  • without interfaces
  • without virtual methods
...some things become much more verbose.

And yes, if I could call him, I'd say:

"Erel, look, the world has moved on; a little inheritance never killed anyone."

But again, the answer would be:

"It's by design."


🎯 3) And yet…
Despite these rigidities, B4X has one huge advantage:
it's consistent, stable, and predictable.


Erel prefers:

few features
but solid
and identical across all platforms.

It's an almost Zen-like approach.

Sometimes it makes you want to snatch the phone from its hands, but then you realize that that very simplicity is what makes B4X so reliable.


🎯 4) And anyway…
If I ever had to call him, the list would be long:

inheritance
shadowing variables
stopPropagation in CLV
uniform events across platforms
a real debugger for B4i
a more modern designer
a less… “special” B4XTable
a more flexible B4XDialog
a B4XFloatTextField with native multiline
a B4XImageView with a Click event
a B4XSwitch that doesn't require 3 lines to initialize
a B4XPages with constructor parameter support

…and I could go on.

But you know what?
He would always respond with the same Olympian calm:

“Thank you for the suggestion.”

Which in Erel language means:
don't expect me to implement it tomorrow.


🎉 In any case, your project is coming along great.
 

Mashiane

Expert
Licensed User
Longtime User
On the bright side, there are a lot of 'wishes' that Erel has granted. One important one being JSON for layouts, copying and pasting layouts between IDEs so that you dont have to recreate everything. Well in some instances that could use the same subroutines with the same signatures just for control.

This thing is complaining a lot :D:D:D

Wouldnt it make the whole system over-engineered in some instances? #JustAThought.
 
Top