GREG NEELEY on 6 Sep 2007 12:42:11 -0000 |
David, Yesterday, the first controller model ordered arrived, and I was able, using the USB interface on this "stick"controller (model category was MSP430 Ultra- Low-Power MCU)to get a simple looping C language construct compiled and loaded as flash to the stick, which resulted on execution to an LED flashing in the housing containg the device as a "dongle", hanging off of a USB port on the PC housing. This is quite trivial (only a few LOC), but if you are interested in experimenting with this yourself, you can order an eZ430-F2013 Development Tool from TI. This is quite reasonably priced at $30. In poking around yesterday with the documentation, I was pleased to find that Texas Instruments Corporation is at least supporting C++ in building code for loadable flash modules, so some of our Texas friends in controller engineering are beginning to see the value of OOP. I will warn you that there are some "organizational problems" with the drivers available and source code examples available, and with the way in which source code examples can be downloaded from TIs website, but I'm hopeful that in playing around with the device, most of these problems will work themselves out. To your question, the word "model" is a loaded word. The problem is that the French would use the "nuance" and would have five or six different words for model. In English, we have a single word "model" to represent five or six different objects (another loaded word). For example for "model": 1) An RDBMS abstraction, with entities; 2) A person who appears in advertising for clothing products; 3) Categories of cars produced by a given auto manufacturer, for example, the state asks you for the "make" and "model" of your car; 4) A scaled down version of an aircraft, such as an "airplane model", a.k.a. a toy. The list goes on. When I say "model controller" or "model of controller", I was thinking along the lines of number 3) above, which lends itself well to inheritance from OOP. All controllers manufactured by TI share some characteristics in common, so inheritance from a base class is strongly suggested. Will keep you updated on what is going on. -GreginKC --- David Bogus <davidbogus@gmail.com> wrote: > Advantages of using language with introspection or > reflection to > generate code in a language or subset that doesn't > have it. > > First off testing. > > Testing where you don't have to register your tests > or suites is taken > for granted until you have to do every time every > test. Its about once > every other week that you forget to register a test, > When working in > that environment step one is write a test with > explicit fail and watch > it fail. That verses extend some class and follow a > naming convention, > and let the automagic happen. > > Changing behavior of things for tests. > Lets say we are using a simplistic widget library on > some small device > lets say a dvd player. So just for grins we want to > make sure that > people can use it in many languages. Here is the > kind of test I would > like to write. > > def testSwitchLanguage > languages.each do |language| > all_menus = > menu.new(language).menu.recursive_text > all_menus.each do | menu | > assert(language.words.contains(menu.text)) > end > end > end > > Now suppose when we call our simplistic widget > library it takes the > string but doesn't allow us to get it back. > (Imaginary reason it > generates a bitmap immediately and frees the string > ) So we go and > write wrapper that delegates to the simplistic > widget library but > records the calls and can tell us what text the > widget contains. > > Now I'm sure using introspection in your generated > code would be > awesome but thats a bit more complicated. Its not > all that hard to > have your dsl generate some defalut method on your > objects like ones > that says what method the object understands. > > Then you can start with just tracking pointers and > keeping a > "omniscient" object that keeps all objects. Next > thing you know you'll > start wanting to be able to do dynamic composition. > So you take two pointers and check that no messages > collide then you > generate an code that delegates to on to the > appropriate pointer. > > Of course this is part way along that slippery > slope to writing your > own language. > > Question for Greg, what is the type of problem your > solving? I'm > unclear about "controller models" and what that > means to you. > > > > Dave > > > -- > Dave's Definitions: Morning, is after I've slept for > more than four > hours. Lunch is the second meal of the day no matter > the hour of > consumption. A long drive is one longer then you > have last slept. > Ineffable, if you don't understand I couldn't > possibly explain it. > _______________________________________________ > To unsubscribe or change your settings, visit: > http://lists.phillyonrails.org/mailman/listinfo/talk > _______________________________________________ To unsubscribe or change your settings, visit: http://lists.phillyonrails.org/mailman/listinfo/talk
|
|