Psalm Mizuki

  • Uploaded by: Shawna Gibbs
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Psalm Mizuki as PDF for free.

More details

  • Words: 1,014
  • Pages: 40
Ruby Psalm Mizuki

Summary  Background  What

Ruby is Good for  Design Principles of Ruby  Some Features of Ruby  Surprising/Confusing Things in Ruby

A Little Background  Originated

in Japan during the 1990’s  Developed and designed by Yukihiro Matsumoto  Based on Perl, Smalltalk, Python, and CLU – Multiple paradigms

Things Ruby is Good for  Text

Processing

– File, String, and Regexp classes  CGI

– – – –

Programming

Text-handling classes CGI library DB interface Embedded Ruby and mod_ruby for Apache

Things Ruby is Good for 

Network Programming – Well-designed socket classes



GUI Programming – GUI toolkit interfaces  Ruby/Tk  Ruby/Gtk



XML Programming – – –

Text-handling features UTF-8-aware regex engine Interface to expat XML parser library

Things Ruby is Good for  Prototyping

– High productivity – Prototypes can become production systems by replacing bottlenecks with C-written extensions  Programming

Education

– Based on a variety of different languages – Considered by some as a scripting language, so people can quickly start to write programs

Design Principles  Principle

of Conciseness  Principle of Consistency – Principle of Least Surprise  Principle

of Flexibility

Principle of Conciseness  “I

want computers to be my servants, not my masters. Thus, I’d like to give them orders quickly. A good servant should do a lot of work with a short order.”

Principle of Consistency  Uniform

object treatment  Small set of rules covers all of Ruby

Principle of Least Surprise  Someone

with a basic knowledge of programming languages can learn Ruby quickly  Principle of Least Surprise does not mean that no one will ever be surprised by anything that they see in a language

Principle of Flexibility  Ruby

has a relatively small amount of syntax that is unchangable, and pretty much everything else is done in extensible class libraries  User-defined objects can be treated like built-in ones

Features  Object-oriented

design  Classes with inheritance  Mixins  Iterators  Closures (Blocks)  Garbage collection

Features from Smalltalk Dynamic: no static type information used  Purely object-oriented: all values are objects, including classes 

– All procedures are a method of some object, even things that look like function calls

Designed to be object-oriented from the outset (unlike Perl)  Has garbage collection 

Differences from Smalltalk  No

really weird syntax  Operators follow usual operator precedence (2+3*4 == 2+(3*4))  There is separation between the programming language itself and its interpreter

Features from Perl and Python 

Considered in some ways a scripting language – Support a fast development cycle because compilation isn’t needed – Require less code to get things done – Strong set of built-in libraries that supports text and file handling

  

Syntax Portable Free

Differences from Perl  Fewer

sigils  Less context-dependent  Fewer implicit type conversions  While most Perl functions exist in Ruby, they are organized into class libraries  Slightly slower, but more concise

Differences from Python  Don’t

use indentation to structure

code  No conversion between small and large integers  Don’t need to maintain reference counts in extensions  More syntax  Faster

Features  Object-oriented

design  Classes with inheritance  Mixins  Iterators  Closures (Blocks)  Garbage collection

Inheritance and Mixins  Ruby

uses single inheritance to avoid problems with multiple inheritance  Uses mixins to get something similar to multiple inheritance, without the problems that can be introduced by multiple inheritance

Inheritance and Mixins  Mixin:

similar to an interface in Java, but you provide the implementation  Have no explicit superclasses  Cannot be instantiated  Also called modules (actually type module when defining a mixin in Ruby code)

Features  Object-oriented

design  Classes with inheritance  Mixins  Iterators  Closures (Blocks)  Garbage collection

Iterators 

Don’t use loops to iterate over objects – Only loops that are implemented in Ruby are the while loop and until loop



Objects are in charge of their own traversal – This avoids errors with indices



Use code blocks to customize behavior of iteration

Features  Object-oriented

design  Classes with inheritance  Mixins  Iterators  Closures (Blocks)  Garbage collection

Closures (Blocks) A

block is code that is either found between curly braces or between a do and end  Similar to anonymous methods  Can be passed around as parameters and stored in variables  Great for transactions  Inspired by Lisp

Features  Object-oriented

design  Classes with inheritance  Mixins  Iterators  Closures (Blocks)  Garbage collection

Garbage Collection  Uses

a mark and sweep method of garbage collection  Scans C stack and registers – This way extensions don’t need to maintain reference counts or protect local variables  No

INCREF/DECREF and no mortal

Some Surprising Things  Duck/Dynamic  Scoping  Truth  Open

classes

typing

Duck Typing  If

it walks like a duck and quacks like a duck, then it must be a duck  Define an object by what it can do, not its type  Powerful for prototyping – Can customize as development progresses

Scoping  Use

sigils to determine the scope of a variable  Can make things slightly awkward if you’re used to Perl

Scoping Scope

Prefix/Sigil

Global variable $

Example $global

Instance @ @instance variable Local variable Lowercase or _ local/_local Constant

Uppercase

Class variable @@

Constant @@class_var

Truth  In

Ruby, everything except for nil and false is considered true

Open Classes  All

classes can be edited  Even core classes  If you don’t know what you’re doing, this can be very, very bad… – If you do know what you’re doing, however, this could be fun and convenient

Questions?

References  



“About Ruby.” http://www.ruby-lang.org/en/about/. “Ruby From Other Languages.” http://www.ruby-lang.org/en/documentation/rub . Yukihiro Matsumoto. “The Ruby Programming Language.” http://www.informit.com/articles/article.aspx?p= .

References  Yukihiro

Matsumoto. “The Top Ten Reasons Why the Ruby Programming Language Sucks!” Ruby-Doc. 2003. 1 November 2009. < http://ruby-doc.org/docs/The%20Top%20 >.

Thank you for your time and attention.

Related Documents

Psalm Mizuki
June 2020 5
Psalm 18.30
June 2020 4
Psalm 24.4
May 2020 6
Psalm 121
November 2019 27
Psalm 23
October 2019 19
Psalm 19
October 2019 17

More Documents from "Eric Cepin"