Bit Rot Bits don’t rot It would be better if they did Dynamically typed languages can help us rot them
Copyright 2005-2006 Gilad Bracha
Software requires Maintenance We expect software updates with bug fixes new features
Dynamic update is standard practice for, e.g., OS vendors
Copyright 2005-2006 Gilad Bracha
First, Pester
Copyright 2005-2006 Gilad Bracha
Then, ask for ID
Copyright 2005-2006 Gilad Bracha
Then, legalese
Copyright 2005-2006 Gilad Bracha
Then, the coup de grace
Copyright 2005-2006 Gilad Bracha
But wait, there’s more
Copyright 2005-2006 Gilad Bracha
Expect better Make maintenance as transparent as possible No questions, hassles Nothing should ever boot or reboot
Always up to date Like a web app/service
Copyright 2005-2006 Gilad Bracha
Web Apps have downsides System software has to be local UI issues Depend on network being: Reliable Fast Cheap
Still make you “reboot” - it’s called: session expired Copyright 2005-2006 Gilad Bracha
Software Services Combine advantages of web services and traditional client applications Always Available (even w/o network) Always Up to date
Run locally, think globally
Copyright 2005-2006 Gilad Bracha
Dynamically Typed Languages to the Rescue Lots of experience with updating code on the fly Much easier to do in the absence of mandatory static type system
Copyright 2005-2006 Gilad Bracha
Self Modifying Code Makes people nervous Lots of issues: What happens if the modified code is still active (on the stack) What happens to instances of modified classes schema changes, representation invariants Security
Copyright 2005-2006 Gilad Bracha
Self Modifying Code Needs structure Mirror based Reflection
Much easier if program is quiescent This does not mean waiting until the program restarts.
Copyright 2005-2006 Gilad Bracha
When is the Program Quiescent? Many applications perform data synchronization over the network Synchronizing with server Provides reliable backup, audit trail Allows access from multiple devices Supports collaboration
Copyright 2005-2006 Gilad Bracha
Synchronization Natural point for program update Applications are quiescent Transition is user-visible
Program as Data Sync program as well as data
Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization All persistent data is sync’ed Data is persistent if it is reachable from a persistent root, and not marked transient
Transient data is lazily recomputed after every sync This can be enforced with aid of context free syntax, e.g., transient f [initExpr] Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization
Criticisms of orthogonal persistence do not apply
Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization Criticisms of orthogonal persistence do not apply Data outlives Program:
Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization Criticisms of orthogonal persistence do not apply Data outlives Program: Program and data live as long as the service
Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization Criticisms of orthogonal persistence do not apply Data outlives Program: Program and data live as long as the service Transient data pollutes database:
Copyright 2005-2006 Gilad Bracha
Orthogonal Synchronization Criticisms of orthogonal persistence do not apply Data outlives Program: Program and data live as long as the service Transient data pollutes database: transient data is zapped at every sync
Apr 15, 2010 - Re-entrancy. The Java compiler originally had static state. Not a problem as a batch compiler. Broke down completely when integrated into IDE.
Apr 15, 2010 - Can be optimized to JVM int by compiler .... Startup. Memory management. 39 ... out a static variable that held a database session. That code.
Oct 27, 2004 - Mainstream programming languages incorporate mandatory type systems. ... Of course, we all know that such type systems should not fail. A good type .... sis, University of Washington, Department of Computer Science and.
KPMG's software testing services provide thorough testing, consulting and delivery services to clients that help them improve their software quality, help ensure user satisfaction, reduce time to market and enhance the software testing return on inve
Nov 23, 2009 - tank was hit with a rocket-propelled grenade (RPG).[26] ... Shalit became the first Israeli soldier captured[5] by Palestinian forces .... At the start of the Gaza War, Hamas claimed that Shalit had been wounded by Israeli fire.[67].
Development model. Public. Private. Public/private. Vendor. Community. Aggregate. Software license. Reciprocal. Permissive. Elements of an open source.
Nov 23, 2009 - TV anchor ends his daily newscast by mournfully reciting how many days the soldier has ..... http://www.haaretz.com/hasen/spages/1153080.html ... Institute of Jewish Studies, which has the complete text of Rabbi Golinkin's.
Type classes were originally developed in Haskell as a dis- ciplined alternative to .... Type class declarations express generic programming concepts (Bernardy et al. ...... Science of Computer Programming, In Press, Cor- rected Proof, 2008.
Type classes were originally developed in Haskell as a dis- ciplined alternative to .... programming as the CONCEPT pattern, and show how im- plicits make the ..... private information about Apple objects is available for the method definition.