X-Git-Url: https://codewiz.org/gitweb?p=wiki.git;a=blobdiff_plain;f=ProgrammingParadigms;h=4892ac8315a3aeaac5ed321b610e4a979c84ba98;hp=be7428a335d5aec6cbec13bb96a791785e359b96;hb=270440097f12280d7a83bdfdc49542f6f8dd54a0;hpb=5b441559522dddf5cb7efc9c2289642ed5a69329 diff --git a/ProgrammingParadigms b/ProgrammingParadigms index be7428a..4892ac8 100644 --- a/ProgrammingParadigms +++ b/ProgrammingParadigms @@ -7,39 +7,36 @@ I frequently use the following paradigms and techniques: - * '''OOP''' - Who doesn't? I've taught object-oriented + * **OOP** - Well, who doesn't? I've been teaching object-oriented programming and object-oriented analysis and design (OOA&D) - as part of my InstructorRole. - I've never been a believer in the pure-OOP religion. - I think OOP has a very broad application in many areas - of CS and that's all. - - * '''Metaprogramming''' - I love template templates. - Oh, yes I do. I must admit this little perversion of - mine. In the past, you couldn't abuse genericity because - your buggy compiler would blow up. Now that compilers - have been fixed, your brain blows up first. + as part of my InstructorRole, although I've never been a true believer + in the pure-OOP dogma. OOP has very broad applicability in many areas + of CS, and that's all. + + * **Metaprogramming** -- I've been in love with templates of templates for a while. + Oh, yes... I must admit this little perversion of mine. In the past, you couldn't + abuse genericity because your buggy compiler would blow up. Now that compilers + have been fixed, your mind melts first. - This is a little useless thing that only Boost would ever - want to carry: + This is a little useless thing that not even Boost would ever want to + carry around: http://www.develer.com/devlib/devlib-current/cxxutil/viterator.h - * '''Functional Programming''' - I'm sorry to admit I - never tried a fully functional approach in a real world - project, but I frequently use "pills" of functional - programming all the time where appropriate. Expecially - in combination with the StandardTemplateLibrary and with - Perl. + * **Functional Programming** -- I'm ashamed to admit I + never tried a purely functional approach in a real-world + project, but I do frequently use "pills" of functional + programming, expecially in combination with the + StandardTemplateLibrary and with Perl. - * '''Design Patterns''' - Like many, I know, use and teach + * **Design Patterns** -- Like many, I know, use and teach the good old GangOfFour patterns and sometimes the more esoteric ones. Actually, I mentioned them only to say that I dislike both code that reinvents them as much as code that abuses them (the SingletonPattern and AbstractFactoryPattern are expecially popular with novices). - * '''Multithreading''' - I tend to use it as a last resort + * **Multithreading** -- I tend to use it as a last resort solution in my designs, because I consider truly concurrent programming extremely hard to understand, debug and extend. Most of my multithreading programming was on the AmigaComputer @@ -49,20 +46,17 @@ I frequently use the following paradigms and techniques: limitations and inefficiencies of the IPC primitives and the broken asynchronous I/O). - * '''Compiler design''' - I'm experienced in writing + * **Compiler design** -- I'm experienced in writing grammars and hand-writing the lexical analyzers and parsers as well as using the usuals automated tools. I understand problems related to AST representation, optimizers, and code generators. See OpenSourceDeveloperRole for GCC contributions. - * '''Kernel development''' - I'm very interested in OS - design problems and I wrote lots of system-level code - and utilities. I even wrote a minimalistic microkernel - for DevLib: - - http://www.develer.com/devlib/devlib-current/kern/ + * **Kernel development** -- I'm particularily interested in OS design. + I wrote lots of system-level code and utilities, including a + minimalistic microkernel which is now being called [[BeRTOS]]. -And of course... +And, of course... - * '''Spaghetti programming!''' + * **Spaghetti programming!**