6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Mon Apr 29, 2024 1:01 pm

All times are UTC




Post new topic Reply to topic  [ 63 posts ]  Go to page Previous  1, 2, 3, 4, 5
Author Message
PostPosted: Tue Jan 05, 2016 6:19 pm 
Offline

Joined: Tue Nov 10, 2015 5:46 am
Posts: 215
Location: Kent, UK
BigEd wrote:
I read an interesting anecdote from someone who'd roped some recent CS graduates into a technical endeavour, something to do with writing device drivers. They knew Java, they were competent at that level, but it turned out they had no idea how computers worked and could not operate in C. (I hope they were able to learn quickly.)

Sometimes we have too many layers of abstraction, and sometimes we have too few.
My team works extensively close to the hardware, including writing device drivers under both RTOS and Linux (and others), and we're also finding that new graduates (from prestigious universities) lack practical computer architecture knowledge (address bus, address space, interrupts, user vs kernel)... With the exception of students who purposefully selected certain study units.
I believe this is a consequence of computer science being such a broad subject and especially with the modern focus on client-server and web technologies.
I used to think that this lack of knowledge is a damn shame, but in fact students who are interested in operating systems or embedded systems will find their way to it, whilst those interested in search, data analytics, distributed systems, graphics, parallel completing, AI, web front-end, servers, languages, etc, etc will follow a different path.
These kids are smart... And they pick things up.


Top
 Profile  
Reply with quote  
PostPosted: Tue Jan 05, 2016 6:59 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10793
Location: England
It's a fair point - in a large field you can't know everything. I'm not sure what the basic common ground should be - and indeed, some CS degrees are very vocational and some are more academic.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jan 06, 2016 9:15 am 
Offline

Joined: Mon Jan 26, 2015 6:19 am
Posts: 85
sark02 wrote:
I don't think there's much serious debate on whether or not OO has value for projects of significant size and complexity. "Object Oriented" is a point of view - an abstraction model - a way of breaking down a system into pieces and then understanding the relationships between those pieces. It's what software engineers do every day, and it's not scary.

This is what bothers me. Windows and their components as well as real life objects which can be categorized are ideal candidates for OOP. However, to expect programmers to view every aspect of programming as a collection of objects only serves to detract from the value of OOP languages in general since it is implied that a procedural approach is impossible.

Wrapping variables inside a struct or class does not automatically make something an object. For example, in database records, a struct is simply a convenient way of organizing the information contained in that datase. It doesn't make the record resemble some physical object. And in a class like java.lang.Math, would anybody seriously call that an object instead of a collection of maths functions?

Once it is realized that one can still adopt a procedural approach and use objects where naturally convenient, the value of using an OO language becomes more apparent.

sark02 wrote:
This thread was about Object Oriented dispatch - a language neutral topic, so this car has veered way, way of the road. The core question from the poster was as relevant, I think, as the implementation of Forth's NEXT primitive. It is the sequence of operations needed to call a class-specific method, and is at the very core of an OO implementation. So, what is the best way to implement a class-specific vtable or similar object-type-specific jump table on the 65816? If anyone is still interested in that question, I would suggest reading the first message of the thread.

The OP was discussing ways to implement jump tables and indirect pointers to functions on the 65816. This of course is necessary if you want "polymorphism" (where a pointer to one type of object is made to point to a descendant of that object) since you may not know until run time what type of object the pointer will end up pointing to.

Me? I still like pushing the destination address on the return stack and executing RTS. It works a treat on the '02 but there may be better ways on the 65618 with its 16 bit index registers and relocatable Z-page.

This discussion shows that OOP has some slowdown factor because you can't make direct function calls from an object. That may be a consideration in a system where timing is critical. The C code equivalent that I posted above still allows direct function calls. You could probably still implement polymorphism in C (with a similar degradation in performance).


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 63 posts ]  Go to page Previous  1, 2, 3, 4, 5

All times are UTC


Who is online

Users browsing this forum: No registered users and 29 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: