Again, I think it was not good approach for learning programming. While I had seen OOP, most of the other students had not. And building such a complex software with PP made them thinking the PP way.
That is why I have always thought post-secondary programming courses/certifications were something of a joke. Yes you can learn some interesting things in computer science but most of what they teach you is strictly from a scientific perspective, but learning more about the business of software would do developers far greater good.
XP, Agile, Design patterns, etc...I have seen very few ciriculum follow this...if anything they usually only introduce developers to the concepts and then go right back to focusing on algorithms and basically studying and implementing things like Longest Common Sub-sequence, etc.
I ask myself now, why would I need to learn or know how Longest Common Sub-Sequence or Huffman compression works, when as a developer I can just find a third party library that does it for me?
From an engineering perspective, it makes sense to teach the student how to think about problem solving at a finite level, thus adavanced algorithms. Unfrotunately I would say 90% of developer jobs are not focused around problem solving at this level (unless you land a gig with google). Instead programmers would be better off learning about the business of software, RAD, open source, methodologies, etc.
It's interesting that I (intentionally) tried to build my OOP-like framework with structures and pointers to functions. I even implemented some inheritance like features. Well, I succeeded building it, but it was very hard.
Gtk+ from what I remember is implemented using C but adheres to some OO practices and principles.
In C/C++ especially, when you have exceptions and RTTI when using objects. It's runtime type information and virtual functions that really make OOP what it is (true polymorphic programming) but that distinction is almost non-existant in PHP as your intrinsically given RTTI, etc by virtue of being a dynamically typed language/interpreted environment.
http://api.drupal.org/api/file/develope ... oop.html/7
The section on polymorphism is interesting.
this is directly analogous to having the class of an object determine its behavior when a message is sent to it. Drupal itself handles the same introspection tasks required of an OOP language's runtime library.
Perhaps, but then why re-invent the wheel? Nodes are quite possibly more than classes, but might include templates and other things which are not easily expressed using objects alone, but the high level concept of polymorphism still applies, so why not take it a step further and make your actual code polymorphic too? If it works at a higher level, why doesn't it work at a lower level as well?
I'm not ctually asking anyone, I'm just saying, polymorphism is obviously a natural solution to a problem, so much so, Drupal has emulated the behavior, but as I understand at one layer/level higher than brick and mortar classes.
So, if I had to start learning programming now, I would have preferred to start with pure OOP language like Java,
While it makes little sense these days to write anything in assembler, I don't nessecarily consider the experience a total waste. Certainly it taught some practices which would be considered bad these days, and in some cases totally futile (ie: bitshift for division/multliplcation by factors of two) like any experience, it's given me a certain appreciation for low level architecture that I otherwise wouldn't have.
That being said, I don't regret learning C/C++ and/or even ASM...procedural and/or OOP. I do however regret wasting time learning Cobol, Pascal and other vertical market languages which did nothing but introduce me to a different syntax. Learning a different paradigm on the other hand, was a good experience.