5 facts about taylor swift taylor swift facts taylor swift facts with picture
Introducing Swift - and the Sunset of Our Culture?
-
Upload
dankogai -
Category
Engineering
-
view
6.890 -
download
2
description
Transcript of Introducing Swift - and the Sunset of Our Culture?
Introducing Swift - and the Sunset of Our
Culture?
2
Introducing Swift
3
Hello, world!use v5.16; say "Hello, world!";
6
Hello, world!println("Hello, world!") // no main() required
7
FizzBuzz#!/usr/bin/env perl -l print+(Fizz)[$_%3].(Buzz)[$_%5]||$_ for 1..100 !# http://developer.cybozu.co.jp/takesako/2007/05/fizzbuzz.html
8
FizzBuzzprintln(1) println(2) println("Fizz") println(4) println("Buzz") println("Fizz") println(7) println(8) println("Fizz") println("Buzz") println(11) println("Fizz") println(13) println(14) println("FizzBuzz") println(16) println(17) println("Fizz") println(19) println("Buzz") println("Fizz") println(22) println(23) println("Fizz") println("Buzz") println(26) println("Fizz") println(28) println(29) println("FizzBuzz") println(31) println(32) println("Fizz") println(34) println("Buzz") println("Fizz") println(37) println(38) println("Fizz") println("Buzz") println(41) println("Fizz") println(43) println(44) println("FizzBuzz") println(46) println(47) println("Fizz") println(49) println("Buzz") println("Fizz") println(52) println(53) println("Fizz") println("Buzz") println(56) println("Fizz") println(58) println(59) println("FizzBuzz")
9
FizzBuzz - Lowest IQprintln(1) println(2) println("Fizz") println(4) println("Buzz") println("Fizz") println(7) println(8) println("Fizz") println("Buzz") println(11) println("Fizz") println(13) println(14) println("FizzBuzz") // cf. https://twitter.com/dankogai/status/494976616796127232
10
FizzBuzzfor n in 1...100 { let f = n % 3 == 0 ? "Fizz" : "" let b = n % 5 == 0 ? "Buzz" : "" let fb = f + b; println(fb.isEmpty ? "\(n)" : fb) }
11
FizzBuzz - funcfunc fizzbuzz(n:Int) -> String { let f = n % 3 == 0 ? "Fizz" : "" let b = n % 5 == 0 ? "Buzz" : "" let fb = f + b; return fb.isEmpty ? String(n) : fb } for n in 1...100 { println(fizzbuzz(n)) }
12
FizzBuzz - methodextension Int { func fizzbuzz() -> String { let f = self % 3 == 0 ? "Fizz" : "" let b = self % 5 == 0 ? "Buzz" : "" let fb = f + b; return fb.isEmpty ? String(self) : fb } } for n in 1...100 { println(n.fizzbuzz()) }
13
FizzBuzz - getterextension Int { var fizzbuzz:String { let f = self % 3 == 0 ? "Fizz" : "" let b = self % 5 == 0 ? "Buzz" : "" let fb = f + b; return fb.isEmpty ? String(self) : fb } } for n in 1...100 { println(n.fizzbuzz) }
14
FizzBuzz - subscriptclass FizzBuzz { subscript (n:Int)->String { let f = n % 3 == 0 ? "Fizz" : "" let b = n % 5 == 0 ? "Buzz" : "" let fb = f + b; return fb.isEmpty ? String(n) : fb } } let fizzbuzz = FizzBuzz() for n in 1...100 { println(fizzbuzz[n]) }
15
FizzBuzz - generatorextension FizzBuzz : SequenceType { func generate() -> GeneratorOf<String> { var n = 0 return GeneratorOf<String> { if n == 100 { return nil } return self[++n] } } } let fizzbuzz = FizzBuzz() for s in fizzbuzz { println(s) }
16
FizzBuzz - optionallet fizzbuzz = [ 3:"Fizz",5:"Buzz",6:"Fizz",9:"Fizz", 10:"Buzz",12:"Fizz",0:"FizzBuzz" ] for n in 1...100 { println(fizzbuzz[n % 15] ?? "\(n)") }
17
FizzBuzz - functionallylet fizzbuzz = [ 3:"Fizz",5:"Buzz",6:"Fizz",9:"Fizz", 10:"Buzz",12:"Fizz",0:"FizzBuzz" ] Array(1...100) .map { fizzbuzz[$0 % 15] ?? "\($0)" } .map { println($0) }
18
FizzBuzz - operatorinfix operator => { associativity left precedence 95 } func => <A,R> (lhs:A, rhs:A->R)->R { return rhs(lhs) } let fizzbuzz = [ 3:"Fizz",5:"Buzz",6:"Fizz",9:"Fizz", 10:"Buzz",12:"Fizz",0:"FizzBuzz" ] Array(1...100).map { fizzbuzz[n % 15] ?? "\(n)" => println }
19
Demo
let Swift =Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list. - Chris Lattner
IMHO, it looks more like Perl6 than any other!
let Swift =
let Swift = what.perl6.was.supposed
.to.be!
Script Languages vs "Compiler" Languages
24
http://www.perl6.org/archive/talks/2000/als/talk.html25
Write Run Type Languages
Compiled Harder Faster Static C, C++, Java
Scripted Easier Slower Dynamic Perl, Ruby, Python,JS
26
Write Run Type Languages
Compiled Harder Faster Static C, C++, Java
Ideal? Easier FasterStatic + !
Type Inference
Swift?
Scripted Easier Slower Dynamic Perl, Ruby, Python,JS
27
The Sunset of Our Culture?
28
29http://danielvdende.com/gdc2014/
30http://danielvdende.com/gdc2014/
Bottom-up languages are "discovered"
• Perl for those C is too hard • Perl for those awk is too limited • PHP for those who considers perl too hard • Python for those who considers perl too easy • Ruby for those who cosiders -> too much
31
Top-down languages are "delivered"
• Java by Sun -> Oracle • JS by Netscape -> MS -> Google and Apple • Dart and Go by Google • Swift by Apple
32
How Apple Delivers Their Products
• Release a few good products • Microsoft: C#, F#, Silverlight, TypeScript… • Google: Dart and go • Facebook: Hack? What the Heck? • Apple: Swift
• Among a few good products, languages are the fewest • Only two since 1984 - HyperTalk, AppleScript (I
know Dylan but only its name)
33
How Apple Delivers Their Products
• "Innovation is not about creating something extraordinary today: it is about making something ordinary tomorrow" — @chibicode
• "We’d be lucky if we sold 10 million iPhones" — steve Jobs • More iPhones are sold in a month these days
34
How Apple Delivers Their Products
• "Swift is an innovative new programming language for Cocoa and Cocoa Touch." • Then why "lldb -repl" invokes Swift? • I coundn’t find anything special to Cocoa and
Cocoa Touch in Swift.
35
Swift is a general purpose language
• Emits native code. • UnsafePointer<()> • @asmname • Inherits libc and Foundation • rejects legacy syntax of (Objective-)?C • Will it achieve C++ and Java did not — replace
C? Time will tell…37
Will Swift go OSS?• No promise. Just guesses. • clang is OSS
• lldb -repl • Swift itself is not platform-specific • Once OSS, you can never close it
• Android 3.X has set a very bad example
38
Top-down >
Bottom-up?• Perl6 = Still Crazy After All These Years • Perl5: two years just to add subroutine signature • Swift: two weeks to change T[] to [T]
39
A language for getting the jobs done
• But who gives you the job? • And if your job giver offer you a lanugage, who
can resist?
40
There’s more than one language to do it
• OS X bundles more languages than any other OS • Perl is there to stay
• /usr/bin/perl -v # 5.18.2 as of Yosemite DP6 • Available even without Xcode!
• Among others • ruby 2.0.0, python 2.7.6, php 5.5.14…
• But mind the mindshare and mindshift
41
that’s it (for now)for q in questions { q.answer() }
42