thoughts/post/2013-03-09-adding-1-and-1-i...

42 lines
2.0 KiB
Markdown

# Adding 1 and 1 in PHP
An amusing demonstration; it is my hope that [readers will not take this PHP
library seriously][0]. This is likely a parody of the over-engineering that
often takes foot in Object-Oriented development (a game of "how many GoF[^4]
design patterns can we use in this project" anyone?).
[0]: https://github.com/Herzult/SimplePHPEasyPlus
<!-- more -->
That is not to say that "OOP is bad" (just as object-oriented developers often
consider procedural code bad, when they may just be terrible at writing
procedural code). Indeed, I wrote [an ECMAScript framework for Classical OOP
(ease.js)][1]. The problem is that, with the excitement and misunderstandings
that surround "good" object-oriented design, designers are eager to
over-abstract their implementations (I have been guilty of the same thing).
Object oriented programming is often taught to novice CS students (often with
the reign of Java in schools)---teaching practices that can be good principles
when properly applied and in moderation---which [I have also seen contribute to
such madness][2].
Abstractions are highly important, but only when necessary and when they lead to
more concise representations of the problem than would otherwise occur (note
that some problems are inherently complicated and, as such, a concise
representation may not seen concise). I'm a strong advocate of DSLs when
abstractions begin to get in the way and increase the verbosity of the code
(languages with strong macro systems like lisp help eliminate the need for
DSLs written from scratch)---design patterns exist because of deficiencies in
the language: They are "patterns" of code commonly used to achieve a certain
effect.
[Criticisms against OOP are abundant][3], just as every other paradigm.
[1]: http://easejs.org
[2]: http://c2.com/cgi/wiki?TextbookOo
[3]: http://c2.com/cgi/wiki?ArgumentsAgainstOop
[^4]: Design Patterns: Elements of Reusable Object-Oriented Software. ISBN
0-201-63361-2. Gamma, Helm, Johnson and Vlissides (the "Gang of Four").