I woke up and showered before the time that my girlfriend, Chris, had to go to work. No, you don't understand! I don't have to go to work, and I've chosen not to have a job for nearly a year now. I normally can sleep in...and do.
Well, I am getting over a cold, so my sleep schedule is weird, but that's doesn't fully explain why. My brain is in overdrive (wail like a banshee on fake-plastic guitar controller). Hopefully, it'll all make sense eventually, and this initiative won't fall flat on its face.
My brain is overdrive. The software developing and engineering part. Perhaps I've finally recovered from working at Nameless Software Corporation for nearly eight years. Perhaps it's just a digital-spiritual calling. Whatever it is, these are some very interesting ideas, which will lead me to talk about the namesake of this blog. But that comes later. In due time.
For now, programming-talk. C++ is a great object-oriented language. I take that back. In the hands of strong programmers, it can be a great language. C++, laden with its need to be backwards-compatible with C, really thwarts its own ability to be a great object-oriented language on its own.
Things I like about C++:
- Supports object- and interface-oriented programming paradigms (suited for large scale projects)
- Widely-used (supported, has industry-standards)
- Well-supported over nearly every operating system and chip architecture available (potential for programs to be written for a wide set of environments)
- Compiles to native code (requires no intermediary run-time environment, better application performance)
- Supports the procedural programming paradigm (doesn't scale well for complex projects)
- Supports macros (a common source of bugs or compiler frustration, thwarts the type checker)
- Backwards compatibility with C (an extension of the previous two points; this is not a bad thing in of itself, but there are now two ways to do many things: the C-way and the C++-way, which can cause confusion, and is a source of pitfalls when both ways are used)
- Global variables (decreases code comprehension, flexibility, and abstraction, increases complexity and coupling, the reliance of one module on another)
- Requires creation and maintenance of header files (decreased development efficiency)

No comments:
Post a Comment