Abstract: 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. These properties allow beginners to
quickly become acquainted with, and effective in using, the language.
At the same time, Ruby's flexibility and remarkably dynamic nature
enables experts to harness its true power - the 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 venture 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 look at a real world example
illustrating the ability to fold Ruby into readable Domain Specific
Languages, allowing 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.
Abstract: Aesthetics is a concept that has influenced the thinking of creators
of all forms including mathematicans, physicists, 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 software practices? Is it possible that aesthetic programming can
help produce more understandable, readable and maintainable code while
still meeting performance 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 that software is, not just a form of
code, but a form of communication. We will consider our potential
audiences and the varying importance of different readers, 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, intentional and unintentional, 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 mistakes, 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.