Download Jython An introduction by Thinh Le

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Jython
An introduction
by Thinh Le
precursor_Python
!  
Google App Engine
!  
Dropbox
!  
PyGTK (Gnome)
!  
Vim (embedded)
!  
BitTorrent/Morpheus
!  
Civilization/Battlefield
Jython
!  
Interpretation of Python (1997)
!  
Jim Hugunin & Frank Wierzbicki
!  
Python written in C
!  
Rewrite in Java
!  
Runs on JVM
!  
Interpreted Language
!  
Object-Oriented
Scripting Language
!  
Easy to learn and code
!  
Expressive
!  
Minimal structure (less lines of code)
!  
Does not require compilation
!  
Supports functional programming
!  
Runs external programs
Hello World
!  
print Hello, world!
!  
does not need to be enclosed in class or func
!  
Jython does it behind the scenes
File I/O
!  
file = open( fileName.txt , r )
for line in file.readlines():
print line
file.close()
Event Handling
!  
from javax.swing import *
def hello(event):
print Hello, world!
frame = JFrame( Hello There )
button = JButton( Hello , actionPerformed = hello)
frame.add(button)
Method Overloading
!  
from java.lang import Float, Double
foo(Float(9.5))
foo(Double(9.5))
Classes
!  
class Hello:
def _init_(self, name= John Smith ):
self.name = name
def greeting(self):
print Hello, %s % self.name
jane = Hello( Jane Smith )
joe = Hello( Joe )
default = Hello()
jane.greeting()
joe.greeting()
default.greeting()
Advantages/Disadvantages
!  
Readability
!  
Increase programmer efficiency
!  
Code is dynamically converted to Java byte code
!  
eliminate performance issues
!  
Cross-platform compatible
!  
Slow
!  
cannot detect undefined variable (caught at
runtime)
Implementation
!  
IBM WebSphere (App server)
!  
IBM Rational (SDLC)
!  
WebLogic Server
!  
Sikuli Demo
Questions?
Objective-C
• 
An introduction
• 
by Thinh Le
Objective-C
!  
Developed in the 1980s by Stepstone
!  
Superset of C
!  
!  
Any C program compilable as Obj-C
Object syntax derived from Smalltalk
!  
Dynamic typing, message based
Objective-C 2.0
!  
Introduced with Mac OS 10.5
!  
Only supports runtime systems
!  
!  
!  
GNUStep, Cocoa, Cocoa Touch
Supports garbage collectors, properties,
dot notations, fast enumerations
iOS devices (iPhone, iPad)
Classes / Types
!  
Class (methods, instance variables)
!  
Inheritance (can have super class)
!  
No single root class like Java
!  
Object Types:
!  
!  
id, nil, self ( this in Java), super
All C-Types can be used (int, float, short)
Methods / Messaging
!  
Methods on object called via messaging
!  
Sends msg w/message name to receiver
!  
Msg can have return value (0 or nil)
!  
Nested messagess: [[receiver msg1] msg2]
!  
Parameters: [rectangle setX: 5 y: 10]
!  
Dot Syntax: rectangle.width = 15;
Memory / Protocols
!  
Objects created are allocated memory
!  
!  
Must be released when scope ends
Protocols similar to Java interfaces
!  
List of methods independent from class
Protocol - Example
Exception Handling
!  
!  
Similar to Java
@throw myException
@try {
}@catch (NSException *e) {
NSLog(@ Caught %@: %@ , [exception name],
[exception reason]);
}
@finally{ }
Hello World
!  
#import <stdio.h>
int main (int argc, const char *argv[])
{
printf ( hello world\n );
return 0;
}
DEMO
!
http://ideone.com
GO
• 
An introduction
• 
by Thinh Le
What is Go?
!  
Experimental
!  
Tools & packages still in development
!  
Concurrent and Garbage-collected
!  
Systems programming (compilers, web server)
!  
Created by Robert Griesemer, Ken Thompson,
Rob Pike of Google (2009)
Purpose of Creation
!  
Resource demands by applications
!  
Bigger libraries
!  
More dependencies
!  
Growth of clusters in Client/Server systems
!  
Main stream multi-core processors
!  
Internet and networking becoming pervasive
Goals of Go
!  
Efficiency and ease of use
!  
Performance within 10-20% of C
!  
Type safe and Memory safe
!  
Concurrency ( http://langalot.com/ )
!  
Garbage Collected
!  
High-Speed Builds
!  
Fast compilation & linking
Example
!  
package main
import fmt
//package for Printf func
func main() {
//functions have func
keyword
fmt.Printf( Hello World! )
}
Loop
!  
!  
func main() {
sum := 1
i := 1
for i <= 5 {
sum += i;
i++
}
fmt.Printf( Sum is %d , sum)
}
for loop is only loop supported in Go
Functions as Objects
!  
func for_all(arr []int, foo func(int)) {
for i := 0; i<len(arr); i++ {
foo(arr[i]) }
}
func print(i int) {fmt.Printf( %d , i) }
func main() {
for_all([] int {1,2,3}, print);
}
!  
Similar to functional language. ie. Closjure
Structures
!  
type Point struct {
x, y int
}
func main() {
p := Point {10, 20}
fmt.Printf( p value is = %v , p)
}
Methods
!  
type Point struct {
x, y int
}
func (p Point) Print() {
fmt.Printf(“p value is = %v”, p)
}
func main() {
p := Point {10, 20}
fmt.Print()
}
Demo
!
http://ideone.com