|
About Andrew Choi
MIDI Programs
MIDI File Player (External Device)
MIDI Destination Pop-Up Button
Other Programs Cocoa Sample Programs Syntax Coloring Using Flex Algorithms Jazz Chord Analysis as Optimization
|
A blog where I will write mostly about programming in Cocoa and CoreMIDI, and experiences from my ports of Emacs and XEmacs to the Mac OS.
Ive chosen for my accompaniment generation program to support the following list of chords for now. This list is derived from statistics collected over hundreds of BiaB files of jazz standard chord charts obtained from the Web, and represent over 99.5% of the chords used in them. (Maj) Maj7 Maj9 6 69 susSo what should the program do when it imports a BiaB file containing unsupported chords? Currently they are substituted with ones that are supported. Of course this may alter the harmonic intent. The user is informed when substitutions are made. He can then edit the chords in the chord editor. Heres a screenshot of that alert sheet.
Heres a list of books I believe one should read to become good at C++. And yes, you have to read them all except the last few. Next time someone criticizes C++, ask him how many of these books he has read. That will be a good gauge of the credibility of the criticism.
[Read this book to learn C++ quickly.] The C++ Programming Language (Special 3rd Edition). B. Stroustrup. A-W. 2000. [Self-explanatory.] Effective C++ (2nd Ed.). S. Meyers. A-W. 1997. More Effective C++. S. Meyers. A-W. 1995. Exceptional C++. H. Sutter. A-W. 2000. More Exceptional C++. H. Sutter. A-W. 2002. [Read these to learn to use various elements of C++ correctly.] STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library (2nd Ed.). D.R. Musser, G.J. Derge, and A. Saini. A-W. 2001. [Read this to learn to use the STL.] Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library. Scott Meyers. A-W. 2001. [Read this to learn to use the STL correctly.] Modern C++ Design. A. Alexandrescu. 2001. [Read this to learn what C++ templates can do (I know, the book is also about design patterns). If you do not read this book, at least read something about generic programming and templates, e.g., implement your own STL containers, template expressions, etc.] Multi-Paradigm Design for C++. J.O. Coplien. A-W. 1999. [Read about program design using C++.] Design Patterns: Elements of Reusable Object-Oriented Software. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. A-W. 1995. [Of course this is the "gang-of-four" book, and not a C++ book. But with all that C++ youve learned, this book will teach you practical object-oriented design. Design patterns are not software engineering, and will better deliver on the promise of bridging the gap between coding and design.] The Design and Evolution of C++. B. Stroustrup. A-W. 1994. Ruminations on C++. A. Koenig and B. Moo. A-W. 1997. [Read the rationale of design decisions that went into the language.] C++ Gems: Programming Pearls from The C++ Report. S. B. Lippman (Ed.). SIGS Books. 1997. More C++ Gems. R.C. Martin (Ed.). SIGS Books. 2000. Design and Coding Reusable C++. M.B. Carroll and M.A. Ellis. A-W. 1995. Advanced C++. J.O. Coplien. A-W. 1992. Inside the C++ Object Model. S.B. Lippman. A-W. 1996. [(Optional) These are all books of great historical interest. They may be difficult to read because the C++ language was still evolving at the time of writing.]
It turns out to be easier than I thought to integrate my jazz theory classes/accompaniment generation algorithm (written in C++/STL) and my chord editor (written in Objective-C/Cocoa). My application requires only a loose coupling between the two. However with the Objective-C++ compiler, I can imagine that programs with more interdependent C++ and Objective-C components should not be much more difficult to put together.
When I hear people talk about how they prefer one programming language over others, I actually sense a lot of insecurity in the languages they dont prefer. Specifically many people who say they dont like C++ dont really know the language that well. Ill post a reading list in the future to clarify what I mean by knowing C++ well. It consists of roughly ten books.
|
Lists
Less-Known Facts About Emacs
Chinese Restaurants in Calgary
Calgary/Banff Tourist Attractions
Top-10 Reason I Stopped Working on Emacs
Misc
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright © 2003, 2004, 2005 Andrew Choi (Contact Information). | Created with FCBlog |