I have attached a non-trivial example of a cross platform (B4A and B4J) application that uses many cross platform techniques and focusses on a selectable and an editable B4XTable. I am posting this example in the spirit of "Why I like B4X!" rather than following the suggested template.
1. There are over a 1000 statements in the attached example, but only 8 "#if B4A #else if B4J #end if" sections. All 8 sections are one or two lines that affect how things look on a smaller screen.
2. The suggested method for cross-platform development (A project folder with the App as a linked class and 3 folders , B4A, B4J, B4i, with platform specific main modules and designer files) worked flawlessly and helped me to develop this project in a week (I am not as fast as Peter Simpson).
3. The rich set of open-source libraries (internal and modifiable cross-platform libraries) allowed me to find out how to customize elements for my needs without having to re-invent the wheel.
4. The Forum has been of tremendous value, all my questions were resolved by searches and without me needing to post a question.
5. There are a few "special" language constructs that I find extremely valuable, such as:
a. the Type statement
b. $"Smart Strings"$
c. Collections - Map, List, Set, and the Array function.
d. For Each x As ... In Collection
e. the Wait For construct - absolutely brilliant (I have partially implemented it in JavaScript, but it's not pretty!)
f . the unifying B4Xview object that hides many platform differences in the GUI
g. the impressive community effort that allows for multi-lingual programming (easy to take for granted)
h. the Icon and Color picker, the implementation of Awesome and Material fonts, the standard use of Unicode allowing for characters like
APL = "←⍳⍴⌷↑↓/\,⌽⍉⌹?~∨∧⍱⍲=<>≤≥≠≡∪∩+-×÷%|⌈⌊○⍟*!∊≢⍪⊖⊂⊃⍋⍒⊤⊥⍕⍎⍬⊣⊢⎕⍞⌿⍀∘∇⍫⍝⍨'⋅"
6. Although there are separate IDE's for each platform, they are identical in looks and action.
7. Debugging is easy in the IDE, with breakpoints, debug mode, and the Try construct. But also the ubiquitous Log statement that converts items on the fly. The log that can be put on the clipboard.
8. The intellisense suggestions and auto-complete are the best I've seen, and often lets me avoid searching for properties and methods in the documentation.
9. The copy/paste of views in and across the designers saves hours of mind-numbing design work.
10. The re-use of layouts makes dynamic creation of views a breeze - even for complicated views such as CustomListView, CodeView, or the Table view.
11. I have used B4R for robotic projects, B4J for statistical analysis projects, and B4A for an automatic texting system, for speech synthesis/recognition, and for a neurological test app. At no time did I have to be concerned about the power and versatility of the B4X as a programming language.
12. I have extensive experience with diverse procedural programming languages (Fortran, Assembler, Cobol, Lisp, APL, Algol, SNOBOL, Basic, VB, JavaScript). While I was able do eventually what I needed to do in each, the B4X language is more natural to me than any of these. For me, a strongly typed language works best, but B4X's automatic conversion of type where appropriate is a real gift. I also like that it is simple to re-cast a type when necessary. I also don't miss "void" and "{}" and ";"
13. Erel Uziel, the author/designer of B4X, is extremely responsive to the needs of Forum community members, and is willing to modify and release new versions of libraries and IDEs at a rate that is unparalled by other software companies. [Probably because he doesn't have to get approval from superiors or take it through committees!]
14. As I am sitting here in front of my large desktop screen, and my Samsung tablet to the right, my Oscilloscope to the left, and my robotic toys on the shelf behind me, I feel that I am in a perfect place in time and space. I think I'll fire up B4J and start writing an APL interpreter for my tablet, just for fun. I'll write it in B4J, and every once in a while I will run it (the same class) on the tablet. APL is perfect for the tablet. APL has very little typing and powerful functions - in 1972 I had a MCM-700 which ran APL on a 16k microcomputer with 40 character LED line display and two cassette tape drives (see attached picture). I am pretty sure my android tablet version will be better. I'll use BBCodeView as an user interface for long (and smart) text and dynamic views and B4XTable for flat databases.
I thank all community members for making this possible.
William
1. There are over a 1000 statements in the attached example, but only 8 "#if B4A #else if B4J #end if" sections. All 8 sections are one or two lines that affect how things look on a smaller screen.
2. The suggested method for cross-platform development (A project folder with the App as a linked class and 3 folders , B4A, B4J, B4i, with platform specific main modules and designer files) worked flawlessly and helped me to develop this project in a week (I am not as fast as Peter Simpson).
3. The rich set of open-source libraries (internal and modifiable cross-platform libraries) allowed me to find out how to customize elements for my needs without having to re-invent the wheel.
4. The Forum has been of tremendous value, all my questions were resolved by searches and without me needing to post a question.
5. There are a few "special" language constructs that I find extremely valuable, such as:
a. the Type statement
b. $"Smart Strings"$
c. Collections - Map, List, Set, and the Array function.
d. For Each x As ... In Collection
e. the Wait For construct - absolutely brilliant (I have partially implemented it in JavaScript, but it's not pretty!)
f . the unifying B4Xview object that hides many platform differences in the GUI
g. the impressive community effort that allows for multi-lingual programming (easy to take for granted)
h. the Icon and Color picker, the implementation of Awesome and Material fonts, the standard use of Unicode allowing for characters like
APL = "←⍳⍴⌷↑↓/\,⌽⍉⌹?~∨∧⍱⍲=<>≤≥≠≡∪∩+-×÷%|⌈⌊○⍟*!∊≢⍪⊖⊂⊃⍋⍒⊤⊥⍕⍎⍬⊣⊢⎕⍞⌿⍀∘∇⍫⍝⍨'⋅"
6. Although there are separate IDE's for each platform, they are identical in looks and action.
7. Debugging is easy in the IDE, with breakpoints, debug mode, and the Try construct. But also the ubiquitous Log statement that converts items on the fly. The log that can be put on the clipboard.
8. The intellisense suggestions and auto-complete are the best I've seen, and often lets me avoid searching for properties and methods in the documentation.
9. The copy/paste of views in and across the designers saves hours of mind-numbing design work.
10. The re-use of layouts makes dynamic creation of views a breeze - even for complicated views such as CustomListView, CodeView, or the Table view.
11. I have used B4R for robotic projects, B4J for statistical analysis projects, and B4A for an automatic texting system, for speech synthesis/recognition, and for a neurological test app. At no time did I have to be concerned about the power and versatility of the B4X as a programming language.
12. I have extensive experience with diverse procedural programming languages (Fortran, Assembler, Cobol, Lisp, APL, Algol, SNOBOL, Basic, VB, JavaScript). While I was able do eventually what I needed to do in each, the B4X language is more natural to me than any of these. For me, a strongly typed language works best, but B4X's automatic conversion of type where appropriate is a real gift. I also like that it is simple to re-cast a type when necessary. I also don't miss "void" and "{}" and ";"
13. Erel Uziel, the author/designer of B4X, is extremely responsive to the needs of Forum community members, and is willing to modify and release new versions of libraries and IDEs at a rate that is unparalled by other software companies. [Probably because he doesn't have to get approval from superiors or take it through committees!]
14. As I am sitting here in front of my large desktop screen, and my Samsung tablet to the right, my Oscilloscope to the left, and my robotic toys on the shelf behind me, I feel that I am in a perfect place in time and space. I think I'll fire up B4J and start writing an APL interpreter for my tablet, just for fun. I'll write it in B4J, and every once in a while I will run it (the same class) on the tablet. APL is perfect for the tablet. APL has very little typing and powerful functions - in 1972 I had a MCM-700 which ran APL on a 16k microcomputer with 40 character LED line display and two cassette tape drives (see attached picture). I am pretty sure my android tablet version will be better. I'll use BBCodeView as an user interface for long (and smart) text and dynamic views and B4XTable for flat databases.
I thank all community members for making this possible.
William
Attachments
Last edited: