Created
January 25, 2009 21:32
-
-
Save samaaron/52546 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Ruby describes itself as a dynamic programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write. It is these assets that allow beginners to quickly become acquainted with and effective in using the language. However, it is Ruby's flexibility and remarkably dynamic nature that enables experts to harness its true power. It is this power which is at the heart of Ruby's success stories such as Ruby on Rails, RSpec and Sinatra. | |
| This tutorial will provide an overview of the advanced concepts within Ruby. Together we will tour through the essence of what makes Ruby so flexible and dynamic. We will explore the power of open classes, meta-classes and modules and take a look at some of Ruby's many useful hook methods through the use of a series of examples. For those interested in interoperability we will also look at communicating with other languages such as C, Java and Objective-C. Finally, we will bring many of these concepts together and explore a real world example that will illustrate the ability to fold Ruby into readable DSLs. This will allow us to express business logic in a way that is readable to clients. | |
| No prior knowledge of Ruby is necessary to appreciate this tutorial, although a good understanding of Object Oriented concepts would certainly come in handy. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Aesthetics is a concept that has influenced the thinking of creators of all forms including mathematicans, physicics, designers, architects and artists. How can we try and interpret this concept within the context of software? Is it purely an academic notion, or is there real value to be gained from considering the role of aesthetics in our software practices? Is it possible that aesthetic programming can help produce more understandable, readable and maintainable code while still meeting the computational requirements? | |
| This tutorial will ask all of these questions and more. Together we will closely study the roles of perspective, context and language leading us to examine the notion of software, not just as a form of code, but as a form of communication. We will consider our potential audiences and the varying importance of the many forms of software reader such as the computer, yourself, your pair programmer, the tests, the domain expert and even your client. | |
| We will discuss the importance of language not only as a means of communicating with the computer but as a means of communicating with our many audiences. We will discover that just as a good choice of algorithm can optimise performance, a good choice of language can optimise our communication and therefore help decrease mistakess, and increase our confidence that we are discussing the same concepts. | |
| This tutorial will contain both discourse on these matters and associated material from academia and real world solutions. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment