正在加载图片...
944 TEACHING THE METHOD $29.4 the short form,they may selectively explore the internals of the class-again under the guidance of the instructor. Abstraction Most good introductory programming textbooks preach abstraction.Many in fact include the word "abstraction"in their titles.This is because the authors,being experienced software professionals and teachers,know that one cannot overcome the difficulties of large-scale software development without making constant efforts at abstraction. Often,unfortunately,such preaching is lost on the students,who simply see it as another exhortation to "be good".You can indeed handle the small programming exercises favored by traditional teaching methods without too much abstraction effort.So why pay attention to the teacher's musings about the importance of abstraction?They will not,or so it seems,improve your Grade Point Average.Only when they have moved to larger developments would the students be in a position to benefit fully from this advice. To preach is not the best way to teach.With the consumer-to-producer strategy, based on libraries,abstraction is not something to pontificate on:it is a practical and indispensable tool.Without abstraction,one cannot use libraries;the alternative would be to go into the source code,which is overwhelming (you would never get to do your own application)and may not be available anyway.Only through the short form with its high- level information and assertions-the library module in its abstract form -can the students take advantage of a library class. Having become used,right from the start,to view classes through abstract interfaces, the students will much more easily apply the same principles when they start developing their own classes. Note once again that these results are only possible in an environment supporting short forms,appropriate documentation and browsing tools,assertions,and distribution of libraries without the source. Apprenticeship The consumer-to-producer strategy is the application to software teaching of a time- honored technique:apprenticeship.As an apprentice you learn from the previous generation of master practitioners of your chosen craft,and once you have understood their techniques you try to do better if you can.For lack of available masters,one-on-one apprenticeship is necessarily of limited applicability;but here we do not need the masters themselves,just the results of their work,made available as reusable components. This approach is the continuation of a trend that had already influenced the teaching of some topics in software education,such as compiler construction,before object technology became popular.In the seventies and early eighties,the typical term project for a compiler course was the writing of a compiler (or interpreter)from scratch.The front-end tasks of compiler construction,lexical analysis and parsing,require such a large effort that in practice the compiler could only be for a very small toy language.Even so, few students ever got past parsing to the really interesting parts:semantic analysis,code944 TEACHING THE METHOD §29.4 the short form, they may selectively explore the internals of the class – again under the guidance of the instructor. Abstraction Most good introductory programming textbooks preach abstraction. Many in fact include the word “abstraction” in their titles. This is because the authors, being experienced software professionals and teachers, know that one cannot overcome the difficulties of large-scale software development without making constant efforts at abstraction. Often, unfortunately, such preaching is lost on the students, who simply see it as another exhortation to “be good”. You can indeed handle the small programming exercises favored by traditional teaching methods without too much abstraction effort. So why pay attention to the teacher’s musings about the importance of abstraction? They will not, or so it seems, improve your Grade Point Average. Only when they have moved to larger developments would the students be in a position to benefit fully from this advice. To preach is not the best way to teach. With the consumer-to-producer strategy, based on libraries, abstraction is not something to pontificate on: it is a practical and indispensable tool. Without abstraction, one cannot use libraries; the alternative would be to go into the source code, which is overwhelming (you would never get to do your own application) and may not be available anyway. Only through the short form with its high￾level information and assertions — the library module in its abstract form — can the students take advantage of a library class. Having become used, right from the start, to view classes through abstract interfaces, the students will much more easily apply the same principles when they start developing their own classes. Note once again that these results are only possible in an environment supporting short forms, appropriate documentation and browsing tools, assertions, and distribution of libraries without the source. Apprenticeship The consumer-to-producer strategy is the application to software teaching of a time￾honored technique: apprenticeship. As an apprentice you learn from the previous generation of master practitioners of your chosen craft, and once you have understood their techniques you try to do better if you can. For lack of available masters, one-on-one apprenticeship is necessarily of limited applicability; but here we do not need the masters themselves, just the results of their work, made available as reusable components. This approach is the continuation of a trend that had already influenced the teaching of some topics in software education, such as compiler construction, before object technology became popular. In the seventies and early eighties, the typical term project for a compiler course was the writing of a compiler (or interpreter) from scratch. The front-end tasks of compiler construction, lexical analysis and parsing, require such a large effort that in practice the compiler could only be for a very small toy language. Even so, few students ever got past parsing to the really interesting parts: semantic analysis, code
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有