|
|
| About site: Programming/Metaprogramming - Automated Code Generation |
Return to Computers |
| About site: http://c2.com/cgi/wiki?AutomatedCodeGeneration |
Title: Programming/Metaprogramming - Automated Code Generation Page on the original (Ward) Cunningham & Cunningham, Inc., Wiki. |
|
|
|
|
Code_Generation_is_a_Design_Smell Controversy page on the original (Ward) Cunningham & Cunningham, Inc., Wiki.
| A_Comparative_Analysis_of_Meta-programming_and_Aspect-Orientation Investigation of language constructs to support improved separation of crosscutting concerns. By Jeffrey G. Gray, Assistant Professor, University of Alabama, Birmingham. [PDF]
| Eclipse_Modeling_Project Focuses on evolving and promoting model-based development technologies by providing unified set of modeling frameworks, tooling, standards implementations; EMF, modeling framework and code generator t
| OGI_Staged_Programming_(SteP)_Project Mustang Project; researches theoretical and applied aspects of metalanguages, via higher-order, typed languages that provide special support for building, manipulating, executing code. Pacific Softwar
| Tim_Sheard\'s_Page Researches the design, implementation, use of metaprogramming systems, created MetaML, many links on functional metaprogramming, NSF papers. Portland State University, Computer Science Department.
| Todd_Veldhuizen_@_Chalmers Has study, Active Libraries and Universal Languages, on libraries active in compiling; rather than make unique languages for each purpose, build libraries to give domain-specific syntax, optimizations
|
|
| Alexa statistic for http://c2.com/cgi/wiki?AutomatedCodeGeneration |
Please visit: http://c2.com/cgi/wiki?AutomatedCodeGeneration
|
| Related sites for http://c2.com/cgi/wiki?AutomatedCodeGeneration |
| The_Art_of_Metaprogramming,_Part_3__Enterprise_Metaprogramming Methods and uses of metaprogramming in Scheme language, how macros are programmed and can make large-scale programming easier. Explores limits of metaprogramming, describes MDA and problems it solves, | | The_Art_of_Metaprogramming,_Part_2__Metaprogramming_Using_Scheme Methods and uses of metaprogramming in Scheme programming language, see how macros are programmed and how they can make large-scale programming tasks easier. IBM developerWorks. (January 26, 20 | | The_Art_of_Metaprogramming,_Part_1__Introduction_to_Metaprogramming An under-used programming technique is writing programs that generate programs or program parts. Covers: why metaprogramming is needed, some components of it, building a code generator; language-sensi | | Are_You_Missing_out_on_Code_Generation? Writing EJBs by hand wastes effort and time; using the passive wizards in today's IDEs is as bad. Solution: use active code generation. Learn why this is a good idea despite the FUD against it. DevX. | | Alex_Faaborg__Microformats A series of blog posts giving an extensive introduction to microformats and how these are to be handled in Firefox 3. | | hResume_Project WordPress plugin to display a resume marked up in a hResume microformat. | | Microformatique A blog about microformats. | | Microformats_Icons Icons to use for microformats. | | Operator Firefox extension to handle microformats from within your Firefox. Contains intro, changelog, and user comments. | | Technorati_Microformats_Search Searchtool for contacts, reviews or events that searches through pages that have been marked up with microformats. | | Why_Microformats Site with an introduction to Microformats and home to the WebCards Firefox extension. | | Wikipedia__Microformats Explanation of microformats with examples of it's usage. | | WP_Microformatted_Blogroll WordPress Plugin to create a microformatted XFN-hCard. | | XML_com__What_Are_Microformats Micah Dubinko asks what microformats are and whether they are here to stay. | | About_Microsoft Get information about the company, including a company profile, its mission and values, business strategy, and community affairs programs. | | Microsoft__Careers The company's career portal. Includes jobs categorized by products, with online profiles and resume submission. | | Microsoft_Corporation Main site for product information, support, and news. | | Microsoft_PressPass Site intended for journalists, including press releases, speeches, and events. | | Microsoft_Research Corporate research division. Includes projects and publications, news and history, and job opportunities. | | MSFT_Investor_Relations Includes investor news and events, reports and filings, and stock quotes. | | MSN Portal for shopping, news and money, e-mail, search, and chat. | | Pom1 An open source Apple 1 emulator for Windows. | | The_Acorn_Preservation_Project Preservation of Acorn software, books, magazines and manuals, with the emphasis on faithful and accurate digital copies of the original cassettes, disks, packaging and documentation. | | 6502Em A commerical BBC/Master/Compact/Electron emulator for RISC OS 3.1 or above. | | WinFellow An open source emulator for Windows. | | Atari800MacX A Mac OS X port of Atari800. | | IT_Governance,_Ltd__--_ISO20000 UK firm explains the new international IT Service Management standard, ISO20000, and provides books, tools, training and consultancy. | | International_Supercomputer_Conference International Supercomputer Conference. Heidelberg, Germany. | | SCXY_Conference_Series The International Conference for High Performance Computing and Communications. Information about current conference and publications of previous conferences. | | dream_in_code Articles, tutorials, and forums for web developers and programmers. | | The_Fellowship_of_Hobbyist_Programmers A community for coders interested in collaboration, education, and fun. | | Gepard_Studio Sources (Pascal, Delphi, C, Java), games (Java,C). | | IBM__developerWorks An online collection of tutorials, sample code, standards, and other resources provided experts at IBM to assist software developers using open standards and cross-platform technologies. | | Sitereview_org Programming site reviews posted by users. | | Undocumented_Printing Various information for developers on windows printing. | | Developer_City__Free_Programming_Resources__Libraries A variety of free libraries, with or without source code, for: accessing databases (with/without ODBC, SQL), encryption, graphics/images, compression, fonts, GUI's, 3D engines, 2D engines, and sockets | | Amit\'s_Game_Programming_Information Descriptions of algorithms for artificial intelligence, path finding, game design, objects, hexagonal tiles, threads, and text games. | | GameProgrammer_org Contains tutorials about game development featuring OpenGL, Direct3D and Win32 SDK programming. | | Lode\'s_Computer_Graphics_Tutorial Computer graphics tutorials about fractals, fourier transform, demo effects, software 3D engines, raycasting, etc. Examples (with C++ source code). | | Razor Team of security researchers. Features news, original papers and advisories, presentations they have given, and tools they have written. |
|
This is now2007.com cache of m/ as retrieved on 2008.11.23 now2007.com's cache is the snapshot that we took of the page as we crawled the web. The page may have changed since that time.
|
Automated Code Generation Automated Code GenerationFalls into three categories (arguably!):
Templating - source code is generated to be edited. One-shot code generation. Often supported to some extent in IDEs and editors.
Round-Tripping - source code is generated to be edited, but the edited code may be re-imported into the generator to affect future generate-edit cycles. Most often found in CASE tools e.g. RationalRose?, TogetherJ.
Compiling - source or binarycode is generated but is not intended to be edited. Eg JavaServerPages?, compilers of all kinds.
My own personal preference is for compiling, as long as the compiled code supports the OpenClosedPrinciple? to some extent - often the 'compiled' code will not do everything you need it to do out of the box. For this reason, many projects will develop their own code generation systems in order to gain control over what is being generated.
Typical uses of automated code generation are in CASE tools for 'roughing out' a system and in interface layers where a small amount of information can be used to generate all of the repetitive code required (eg IDL->CORBA code, WSDL->SOAP support, OO-RDBMS mapping, Tables->Forms)
Many problems can be eliminated with InstallableCodeGenerators?. Instead of a tool generating code or most of the code, instead the the parse tree is made available and problem specific code generators can be run against the specification. For example, a FiniteStateMachine? description can be generic, but the code generated can be customized by target environment. In my FSM generator I have installable code generators for C, C++, and for different OSs and different middleware layers. In my dreams I think developers would work at the specification layer with a few select others working at the code generation layer. -- AnonymousDonor?
In circuit simulation tools, evaluating the state of the circuit is often the bottleneck. So my circuit simulator reads in the circuit description, parses it, generates code, compiles it and dynamically links with it. Code generation at runtime is great! The funny thing is: the simulator is written in Python and it is blindingly fast, since all the computation happens in code that is completely special-purposed C code for the problem at hand. -- StephanHouben?
I was at a talk on Friday about a system where you could generate IDL.
So you type in some stuff, generate IDL, generate Java from the IDL, and compile.
The presenter proudly announced that from 3000 lines of input they could generate 28000 lines of source code.
I had to ask why would you want to - if you could possibly get away with 3000 lines, you should take that option.
I think this is not the simplest thing that could possibly work, I think it is a case of WeightMakesRight?.
-- JohnFarrell?
"X thousand lines of code automatically generated for you" strikes me as a waste, and misses the point:
Why would you want X copies of Y lines of code to maintain (X*Y), instead of calling Y lines of truly reusable code?
Code generation is often little more than CopyAndPasteProgramming?.
Consider the conversion from C to assembler - "X thousand lines of assembly code automatically generated for you from C" - you don't maintain the assembly, just the C. Where do you get (X*Y)? I doubt you would end up needing to edit 84 million lines of code. Aren't they saying you worked with the 3000 lines, and treated the 28000 lines as C treats assembly?
I subscribe to the notion that code generation is often a language smell - we need code generation because our language does not have all the types of abstraction we want. Because the language has a smell, though, does not always mean we should not use it. If we decide it is the best compromise for a task, and code generation would make it better, then that is our best option. Since there is not and never will be a language with all the abstraction capabilities we would like.
Actually, Lisp is that language, since macros are built-in code generators that allow you to create any new syntax you want.
I imagine there will always be a place for code generation to improve on a language.
There's another purpose for code generation, though, and that's generating the same code in different languages. If we, for instance, extract all our abstractions for a UI into metadata, perhaps, we can interpret the metadata directly on the fat client, but that's not practical for the HTML front-end, so we can use the same metadata to generate the HTML.
-- Steve Jorgensen
Instead of generating code from some input file, your program can interpret the instructions in that input file. An interpreter is easier to write, maintain, and deploy than a code generator. You can squeeze better runtime performance out of code generation, but few projects require that extra performance.
Compilation of a major programming language entails a totally different economy than does AutomatedCodeGeneration? for a single project. A extraordinary amount of effort and expertise goes into creating a C compiler, and everyone who uses that compiler leverages the result. That's very different from AutomatedCodeGeneration? that's used only a handful of times.
See also CodeGeneration?, CodeGenerationIsaDesignSmell?
CategoryAutomated? EditText of this page(last edited November 27, 2004)FindPage by searching (or browse LikePages or take a VisualTour)_uacct = "UA-2377314-2";_udn="c2.com"; urchinTracker(); |
|
| |
Page | on | the | original | (Ward) | Cunningham | & | Cunningham, | Inc., | Wiki. | |
http://c2.com/cgi/wiki?AutomatedCodeGeneration
Automated Code Generation 2008 November
dvd rental
dvd
Page on the original (Ward) Cunningham & Cunningham, Inc., Wiki.
Rules
|
© 2005 Internet Explorer 5+ or Netscape 6+
|
|
Recommended Sites: 1.
Arts -
Business -
Computers -
Games -
Health -
Home -
Kids and Teens -
News -
Recreation -
Reference -
Regional -
Science -
Shopping -
Society -
Sports -
World
Miss Gallery
- Top Anime Hentai
- DVD rental by mail
- Mobile Phones - Mortgage Calculator - Western Union Money Order - Repair Bad Credit - Problem Mortgage
|