10 August 2021, 00:58 | #1 |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
Amos is a joy to use.
Was sorting some stuff out today, converting to Java and had to load up Amos and Amos is just Art it is just such a joy to use and do stuff quickly.
I'm still at a loss at how OOP won over some advanced Basic maybe VB but that's a different story, Amos is just such a pleasure to use. That's all. Last edited by Retro1234; 10 August 2021 at 01:05. |
10 August 2021, 01:57 | #2 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
The promise of OOP was reusable code. It turns out that apart from some middleware and standard runtimes, most code isn't all that reusable.
The reusable parts of compiling languages can be converted into an Amos extension with just a little glue and know-how in assembly. It turns out the Amos 3D extension was originally written mostly in C. (It might have been faster if it weren't.) |
10 August 2021, 02:36 | #3 |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
hello sir, I would gladly like your opinion on my thoughts of OOP and I have many
alot of it just seems quite pretentious and full of buzz words for example inheritance, it seems to me every language has inheritance you can write a routine or use a variable that you can call again and again in any language I don't see how this and abstraction are exclusive to OOP. Any code can be reused if it coded in a tidy manner for example I wrote Tile collison routine that I tried to keep tidy in Amos I have since converted it to Blitz and Java with only small changes to the Syntax. I really don't see how these concepts are being coined for OOP. Any code you keep tidy and not in a spaghetti can be broken in chuncks that can be combined again and again reused over and over again. I'm at a loss at how this is OOP exclusive the only thing I can say is it is a departure from very early code that was one huge! list that had to be scrolled through, in this way Amos was well ahead of it's time with it's user interface and departure from numbered lines and use of procedures but I'm not just talking about Amos. Although I'm not a huge fan of the Backbone game engine that was written in Amos the coder wrote it in chunks that can be pasted to together depending on your choices in the GUI. Java as a whole has very little flow to me and having spent so much time with Amos, Qbasic and VB I really don't see how OOP really brought anything new I was already using these principles long before I just didn't have fancy names for them. rant over please give your opinion as I would value it. Last edited by Retro1234; 10 August 2021 at 03:59. |
10 August 2021, 04:18 | #4 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
For starters, I tried writing a framework for AmigaE, the only thing remotely BASIC-like for the Amiga that supports OOP syntax. I ran into all sorts of bugs with the OO functionality because I was apparently the first one to attempt to push the limits of code reuse since the Amiga Foundation Classes in the late 1990's. AFC couldn't even load on the shareware version of AmigaE because it was so bloated. Furthermore it was closed-source and couldn't be fixed.
The main reason that object-oriented code is slower than conventional structured code is the vtables. The inheritance chain is resolved at runtime and is difficult to "devirtualize" at the compiler level. When calling a method the function call loads the class vtable pointer and the "this" or "self" pointer into registers, then it does an array lookup in the vtable to fetch the function pointer and only then does it finally call the subroutine... using an indirect jump to the function pointer. Since all 3 stages of calling the subroutine are dependent on one another and the start address of the subroutine can never be branch predicted, the caches thrash like crazy and pipelines stall too. You might as well forget you are running a fast CPU and get something glacial for the difference it makes. There was another reason that's largely been dealt with on newer compilers and that's the calling overhead on getters and setters. In the trivial case a getter would have to be called by use of the vtable again, execute a subroutine with a single load instruction contained in it, then return the value. The reason that doesn't hurt as much is that modern compilers are more aggressive about inlining trivial getters and setters so that the calling overhead is eliminated and register loading optimizations are exposed in the process. It's reasons like this that modern languages like Go and Rust are toning down the OOP rhetoric and implementing more primitive implementations of the same concepts. They consistently outrun Java and .Net languages because of it. Even C++, as a mainstay among gamers, is losing ground to the newcomers. While most game developers have figured out that to use templates rather than inheritance in most cases, the existence of "Heizenbugs" that only show up in release mode or can't be traced by a debugger for whatever reason. Does this answer your concerns about OOP? Oh and as a disclaimer, I've become a Rust programmer in the last week and a half and my simple singly linked list still won't compile. My iterator implementation may contain stale pointers if the node they point to gets deleted. The compiler caught it for me! Using OSS Code (the open source version of VS Code) intellisense flashed the error before I even hit compile! |
10 August 2021, 07:31 | #5 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,803
|
Depends.
Some concepts of OOP like inheritance are not of much use to me (and I have read a couple of times since the early 00s, that you should not use them much anyway since they lead to heavy coupling), but I use other stuff like polymorphic object functions in ASM each and every time I code a game. Sounds high concept, but in reality a simple 68k asm struct object update function is exactly that. OOP isn't necessarily only the C++ idea of it... It's more like a huge toolset where you take some useful parts, and leave the more high concept trash behind. |
10 August 2021, 17:52 | #6 |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
While I still find it pretentious and probably always will, I think I'm starting to understand that OOP is more just a state of mind for "Good" practice.
|
10 August 2021, 19:46 | #7 |
Registered User
Join Date: Apr 2020
Location: England
Age: 53
Posts: 455
|
I use Purebasic which is a procedure based modern version of Blitz Basic. I used to code a lot in AMOS in the early 90's and then really fell out of coding. Purebasic has re-lit my coding fire and I use it to write loads of little programs. The beauty is it's simplicity. To open a window, use the OpenWindow command and give it a size and some flags. No messing about with includes or loading dll's and other libraries.
|
10 August 2021, 20:01 | #8 | |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
Quote:
1)I've not used the Amiga much lately and it was a real pleasure to mess about with Amos, AmigaDos and WinUae 2) How pretentious I find Java and OOP - did I mention that at all 3) And just how great Amos was especially Amos Pro, the user interface the Sprite editor etc everything about it was well ahead of it's time really, well beyond QuickBasic etc, The GUI reminds be more that anything of something like Ms Word. I think a advanced Basic should of taken the lead but it lost to OOP, it is what it is but what I will say is something like Amos, VB have a manual a set of rules etc although I'm not a great one to read manuals it is there not like Java where you have to ask on Stackflow and get 10 different arrogant twats give 10 totally different answers because there is no manual or standard it's totally bizzare it seems to not follow any kind of real logic but they claim it's better it's OOP. |
|
11 August 2021, 01:27 | #9 |
Zone Friend
Join Date: Mar 2004
Location: Middle Earth
Age: 40
Posts: 2,130
|
I think that is why BASIC took enough, it was easy enough to learn and make programming fun and enjoyable.
I've never used AMOS but a lot of people seem to like it which is good, even some of the tools for AB3D were coded in AMOS. I think some of the map editors for Rainbow Islands/Alien Breed were coded in AMOS/STOS. I found OOP a bit difficult to get used to in the beginning as I was trying to compare it to C, too me an object seemed like a struct, and then when I started work with Visual C# and all the built in search functions (lambda??). I think that NeXTStep was the game changer with their interface builder which seemed to have focused heavily on OOP, M$ seemed to rip off some of the gadgets for Win95. Some of the gadtools.library look and feels looks like NeXT Step. Using the gui builder for M$ Basic for apps was good as that could help speed up Application development for businesses. |
11 August 2021, 02:06 | #10 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
BOOPSI is an OOP plugin system.
|
11 August 2021, 12:47 | #11 |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
|
11 August 2021, 15:12 | #12 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,223
|
|
12 August 2021, 00:12 | #13 |
Phone Homer
Join Date: Jun 2006
Location: 5150
Posts: 5,887
|
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[Wip] Amos Professional X : Bring AGA to Amos Pro! | freddix | Coders. AMOS | 53 | 22 July 2023 09:53 |
The Joy of Buttons. | Arne | Amiga scene | 15 | 06 June 2021 19:43 |
AMOS Files from Writing RPG's in AMOS | supercruiser | request.Other | 0 | 21 April 2020 13:03 |
f/s Amiga Amos Programming books / Disks / Easy Amos & other Books *mega collection!* | fitzsteve | MarketPlace | 4 | 23 May 2012 04:35 |
Where's the amos.library on the 3-disk AMOS set? | andreas | support.Apps | 0 | 15 November 2001 16:04 |
|
|