1 / 13

Wired:  Any advice for young programmers?

Wired.com:  Any advice for young programmers? Stroustrup:  I guess giving advice is easy compared to taking it. Know your fundamentals (algorithms, data structures, machine architecture, systems) and know several programming languages to the point where you can use them idiomatically.

cmarlowe
Download Presentation

Wired:  Any advice for young programmers?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wired.com: Any advice for young programmers? Stroustrup: I guess giving advice is easy compared to taking it. Know your fundamentals (algorithms, data structures, machine architecture, systems) and know several programming languages to the point where you can use them idiomatically. Know some non-computer field of study well — math, biology, history, optics, whatever. Learn to communicate effectively in speech and in writing. Spend an unreasonable amount of time on some difficult topic to really master it. Try to do something that might make a difference in the world. Taken from an interview with Bjarne Stroustrup: http://www.wired.com/thisdayintech/2010/10/1014cplusplus-released/

  2. Logical Architecture

  3. Logical Architecture • Logical Architecture – the large-scale organization of the software classes into packages, subsystems, and layers • Layer – a grouping of classes, packages, subsystems that has cohesive responsibility for a major aspect of the system

  4. Logical Architecture • Typical layers in an object-oriented system: • User Interface (UI) • Application logic and domain objects (domain layer) • Technical services • Note: UML can be used to draw package diagrams

  5. Fig. 13.2

  6. Guideline: Design with layers • Organize logical structure of system into discrete layers of distinct related responsibilities • Collaboration and coupling is from higher to lower layers; lower-to-higher coupling is avoided

  7. Guideline: Design with layers • Benefits of using layers (p. 204): • Separation of concerns • Related complexity is encapsulated and decomposable • Can replace a layer with new implementation with little disruption • Lower layers contain reusable functions • Some layers can be distributed • Aids in development by teams Key: separation of concerns

  8. Guideline: Design with layers • Domain layer – application logic layer that contains domain objects • Where domain model get realized • Layers vs. partitions • Layers are horizontal slices • Partitions are vertical compartments within a layer

  9. Fig. 13.6

  10. Guideline: The Model-View Separation Principle • Model-view separation principle • Do not connect non-UI objects (domain objects – the model) directly to UI objects (the view) • Do not put application logic in the UI elements • Model = the domain layer • View = UI objects • Model objects should not have direct knowledge of view objects (however, observer pattern accommodates this)

  11. Guideline: The Model-View Separation Principle • Domain layer – encapsulates information and behavior related to application logic • UI layer – only responsible for input, output, and catching GUI events • Why? Review motivations p. 210

  12. Relation between SSDs, System Operations, and Layers • The messages sent from UI layer to domain layer will be messages in SSDs • SSDs define the public interface (the API) of the domain layer (model)

  13. Fig. 13.8

More Related