English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Language > Coders. AMOS

 
 
Thread Tools
Old 10 August 2021, 00:58   #1
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
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.
Retro1234 is offline  
Old 10 August 2021, 01:57   #2
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
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.)
Samurai_Crow is offline  
Old 10 August 2021, 02:36   #3
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
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.
Retro1234 is offline  
Old 10 August 2021, 04:18   #4
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
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!
Samurai_Crow is offline  
Old 10 August 2021, 07:31   #5
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,770
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.
Tigerskunk is offline  
Old 10 August 2021, 17:52   #6
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
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.
Retro1234 is offline  
Old 10 August 2021, 19:46   #7
mrv2k
Registered User
 
Join Date: Apr 2020
Location: England
Age: 53
Posts: 431
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.
mrv2k is online now  
Old 10 August 2021, 20:01   #8
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
Quote:
Originally Posted by mrv2k View Post
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.
Sounds great, I will definitely have a look some time in the future, I know there are still versions of Basic still being produced, but I just wanted to start thread for two/three reasons
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.
Retro1234 is offline  
Old 11 August 2021, 01:27   #9
redblade
Zone Friend
 
redblade's Avatar
 
Join Date: Mar 2004
Location: Middle Earth
Age: 40
Posts: 2,127
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.
redblade is offline  
Old 11 August 2021, 02:06   #10
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
BOOPSI is an OOP plugin system.
Samurai_Crow is offline  
Old 11 August 2021, 12:47   #11
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
Quote:
Originally Posted by Samurai_Crow View Post
BOOPSI is an OOP plugin system.
i'd like to have a look at that have you got any more info, links?

was it commercial?
Retro1234 is offline  
Old 11 August 2021, 15:12   #12
Samurai_Crow
Total Chaos forever!
 
Samurai_Crow's Avatar
 
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
Quote:
Originally Posted by Retro1234 View Post
i'd like to have a look at that have you got any more info, links?



was it commercial?
It's part of Kickstart 2+ implementation of Intuition. Reaction uses external BOOPSI classes to implement its gadgets.
Samurai_Crow is offline  
Old 12 August 2021, 00:12   #13
Retro1234
Phone Homer
 
Retro1234's Avatar
 
Join Date: Jun 2006
Location: 5150
Posts: 5,773
Quote:
Originally Posted by Samurai_Crow View Post
It's part of Kickstart 2+ implementation of Intuition. Reaction uses external BOOPSI classes to implement its gadgets.
How do you know things like that ill check it out.
Retro1234 is offline  
 


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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 21:18.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.08520 seconds with 15 queries