SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
Swift Rocks!
Anton Mironov Software Engineer at
1
Everything started with
Low Level Virtual Machine
2
Recent Objective-C
features
• Blocks (closures)
• Automatic Reference Counting
• Literals
3
Swift is a next next step
4
Genius behind all of this
PhD Chris Lattner @clattner_llvm
5
Swift is based on
• Objective-C
• Haskel
• Ruby
• Python
• C#
• and many others
6
First Lines of Code
print("Hello World!")
7
First Lines of Code
print("(name), I am your father")
8
First Lines of Code
var name = "Luke"
print("(name), I am your father")
9
First Lines of Code
var name = "Luke"
let role = "father"
print("(name), I am your (role)")
10
Operators
let a = 3
let b = 4
let sum = a + b
11
Operators
infix operator + {
associativity left
precedence 140
}
func +(lhs: Int, rhs: Int) -> Int
12
No Autocasting
let a = 3
let b = 4.5
let sum = a + b
13
No Autocasting
let a = 3
let b = 4.5
let sum = Double(a) + b
14
Auto casting can be Evil
NSEventModifierFlags modifierFlags
= NSApp.currentEvent.modifierFlags;
BOOL isControlKeyPressed
= modifierFlags & NSControlKeyMask;
if (isControlKeyPressed) {
NSLog(@"Control pressed");
} else {
NSLog(@"Control NOT pressed");
}
15
Branching
if 0 == number % 2 {
print("even")
} else {
print("odd")
}
16
Branching
let string = (0 == number % 2)
? "even"
: "odd"
17
Branching
switch numberOfApples
{
case 0:
return "none"
case 6...10:
return "just right"
case 42, -1:
return "let me see"
case let value where (1 == value % 2):
return "that's odd"
default:
return "this is unacceptable"
} 18
Collections: Array
let arrayOfInts = [5, 4, 3, 2, 1]
19
Collections: Set
let setOfInts: Set<Int> = [
5, 4, 3, 2, 1
]
20
Collections: Dictionary
let dictionaryOfNamesByDigit = [
5: "five",
4: "four",
3: "three",
2: "two",
1: "one"
]
21
Cycles: Precondition
var i = 0
while i < 5 {
print("value (i)")
i++
}
22
Cycles: Postcondition
var i = 0
repeat {
print("value (i)")
i++
} while i < 5
23
Cycles: Counter
for var i = 0; i < 5; i++ {
print("value (i)")
}
24
Cycles: Enumeration
let arrayOfInts = [5, 4, 3, 2, 1]
for value in arrayOfInts {
print("(value)")
}
25
Objective-C: Null Object
Pattern
id operation = nil;
[operation start];
26
Swift: Optionals
let operation: NSOperation? = nil
operation?.start()
27
Swift: Optionals
if nil != person {
return "Hello (person!)"
} else {
return "Hello to nobody"
}
28
Swift: Optionals
if let nonNullPerson = person {
return "Hello (nonNullPerson)"
} else {
return "Hello to nobody"
}
29
Swift is Great for
Imperative Programming
30
Functions
func name(args) -> ReturnType {
…
}
31
Functions: named
arguments
func buildMessageForPerson(
person: String,
role: String) -> String
{
return "(name), I am your (role)"
}
let message =
buildMessageForPerson("Luke",
role: "father"
)
32
Functions: default values
func buildMessageForPerson(
person: String = "Luke",
role: String) -> String
{
return "(person), I am your (role)"
}
let message = buildMessageForPerson(
role: "father"
)
33
Functions: multiple return
func divide(
a: Int, _ b: Int
) -> (result: Int, modulo: Int)
{
return (a / b, a % b)
}
let result = divide(11, 4).result
let modulo = divide(11, 4).modulo
34
Functions are First
Class Citizen
35
Functions as arguments
Simple Example
func add(a: Int, b: Int) -> Int
{ return a + b }
func mul(a: Int, b: Int) -> Int
{ return a * b }
func runMathOp(a: Int, _ b: Int,
op: (Int, Int) -> Int
) -> Int { return op(a, b) }
let value1 = runMathOp(4, 3, op: add)
let value2 = runMathOp(4, 3, op: mul)
36
Functions as arguments
Simple Example
func runMathOp(a: Int, _ b: Int,
op: (Int, Int) -> Int
) -> Int { return op(a, b) }
let value1 = runMathOp(4, 3, op: +)
let value2 = runMathOp(4, 3, op: -)
37
Swift is Functional
Language
38
Imperative Style
let names = ["Luke", "Chuwy", "Baker"]
var messages = [String]()
for name in names {
let message =
buildMessageForPerson(name, "father")
messages.append(message)
}
print("(messages)")
39
Functional Style
let names = ["Luke", "Chuwy", "Baker"]
let messages = names.map {
buildMessageForPerson($0, "father")
}
print("(messages)")
40
Closures
func buildOperation(multiplier: Int
) -> (Int -> Int) {
func multiply(value: Int) -> Int {
return value * multiplier
}
return multiply
}
let operation = buildOperation(3)
let value = operation(4)
41
Just use Functional
Paradigm
42
Type System
43
Type System Classification Criteria:
Parameters Passing and Ownership
• By Value
let a = 3
• By Sharing (by reference to shared object)
let userDefaults =
NSUserDefaults.standardUserDefaults()
• By Reference
let operation = myFunction
let c = operation(a, b)
44
Type System Classification
Criteria: OOP
• Encapsulation
• Inheritance
• Polymorphism
45
Type System Classification
Criteria: Access Control
• Public - visible for importers
• Internal (default) - visible within module
• Private - visible within file
46
Type System Classification
Criteria: Objective-C compatibility
• partial
• none
47
Types
• tuple
48
Types
• tuple
• function
49
Classes
class Transport {
} 50
Classes
class Transport {
let name: String
} 51
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
} 52
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
init(name: String) {
self.name = name
}
} 53
Classes
class Transport {
let name: String
private var velocity: Double = 0.0
init(name: String) {
self.name = name
}
func beep() {
print("Beep!")
}
} 54
Classes
let transport = Transport(
name: "kinda boat"
)
55
Classes
let transport = Transport(
name: "kinda boat"
)
transport.beep()
56
Classes
let transport = Transport(
name: "kinda boat"
)
transport.beep()
transport.speed = 10.0
57
Classes
class Car: Transport {
var color: String = "Red"
}
58
Classes
class Car: Transport,
Paintable,
Movable
{
var color: String = "Red"
…
}
59
Classes Strong Reference
class Person {
var transport: Transport
}
60
Classes Weak Reference
class Car: Transport {
weak var passanger: Passanger?
}
61
Classes Unowned
Reference
class Node {
unowned var parentNode: Node
}
62
Structures
struct Point2D {
var x: Double
var y: Double
init(x: Double, y: Double) {
self.x = x
self.y = y
}
}
63
Structures
var point1 = Point2D(x: 1.0, y: 2.0)
var point2 = point1
point1.x = 3.0
// (point1.x != point2.x)
64
Structures
let point1 = Point2D(x: 1.0, y: 2.0)
// point1 is immutable
65
Structures
struct Point2D {
var x: Double
var y: Double
…
mutating func multiply(
mult: Double) {
self.x *= mult
self.y *= mult
}
}
66
Structures are everywhere
• Int, Bool, UInt64, Float, Double, …
• String
• Array, Set, Dictionary
• …
67
Enums
enum TokenStatus: String {
case None = "none"
case Valid = "valid"
case Invalid = "invalid"
case Expired = "expired"
var shouldRefetch: Bool {
return .Valid == self
}
}
68
Enums (Unions)
enum FileSystemError: ErrorType {
case InvalidURL(NSURL)
case InvalidPermissions
case UnknownErrorCode(Int)
}
69
Enums (Unions)
switch fileSystemError {
case .InvalidURL(let URL):
print("Invalid URL (URL)")
case .InvalidPermissions:
print("Invalid permissions")
case .UnknownErrorCode(let code)
where code == -150:
print("I've seen this error somewhere")
case .UnknownErrorCode(let code):
print("Something gone very wrong (code)")
}
70
Protocols
protocol Drawable {
var boundingRect: NSRect { get }
func draw()
}
struct Polygon: Drawable
{
var points = [NSPoint]()
//MARK: Drawable
var boundingRect: NSRect? { ... }
func draw() { ... }
} 71
Generic Functions
func min<T: Comparable>(
lhs: T, _ rhs: T
) -> T
{
return lhs < rhs ? lhs : rhs
}
72
Generic Types
struct Point<T: FloatingPointType> {
var x: T
var y: T
}
73
Extensions
extension NSDate
{
var myBirthday: NSDate { … }
}
74
Protocols + Extensions
+ Generics = ❤
75
Swift
Objective-C
76
Simple or Complex?
77
Swift on Prod
78
Just use It!
79
Thank you!
Anton Mironov Software Engineer at
amironov@macpaw.com
80

Weitere ähnliche Inhalte

Was ist angesagt?

Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기진성 오
 
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...John De Goes
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecLoïc Descotte
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data scienceJohn Cant
 
Collection v3
Collection v3Collection v3
Collection v3Sunil OS
 
미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정SeungChul Kang
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocamlpramode_ce
 
Scalaz 8: A Whole New Game
Scalaz 8: A Whole New GameScalaz 8: A Whole New Game
Scalaz 8: A Whole New GameJohn De Goes
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadOliver Daff
 
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵Wanbok Choi
 
One Monad to Rule Them All
One Monad to Rule Them AllOne Monad to Rule Them All
One Monad to Rule Them AllJohn De Goes
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final TaglessJohn De Goes
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayKevlin Henney
 
The java language cheat sheet
The java language cheat sheetThe java language cheat sheet
The java language cheat sheetanand_study
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlinintelliyole
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?osfameron
 
1.2 Scala Basics
1.2 Scala Basics1.2 Scala Basics
1.2 Scala Basicsretronym
 

Was ist angesagt? (20)

Swift 함수 커링 사용하기
Swift 함수 커링 사용하기Swift 함수 커링 사용하기
Swift 함수 커링 사용하기
 
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
The Easy-Peasy-Lemon-Squeezy, Statically-Typed, Purely Functional Programming...
 
Scala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar ProkopecScala presentation by Aleksandar Prokopec
Scala presentation by Aleksandar Prokopec
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
 
Collection v3
Collection v3Collection v3
Collection v3
 
미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정미려한 UI/UX를 위한 여정
미려한 UI/UX를 위한 여정
 
Introduction to functional programming using Ocaml
Introduction to functional programming using OcamlIntroduction to functional programming using Ocaml
Introduction to functional programming using Ocaml
 
Scalaz 8: A Whole New Game
Scalaz 8: A Whole New GameScalaz 8: A Whole New Game
Scalaz 8: A Whole New Game
 
Functor, Apply, Applicative And Monad
Functor, Apply, Applicative And MonadFunctor, Apply, Applicative And Monad
Functor, Apply, Applicative And Monad
 
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
[Let'Swift 2019] 실용적인 함수형 프로그래밍 워크샵
 
One Monad to Rule Them All
One Monad to Rule Them AllOne Monad to Rule Them All
One Monad to Rule Them All
 
The Death of Final Tagless
The Death of Final TaglessThe Death of Final Tagless
The Death of Final Tagless
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
 
The java language cheat sheet
The java language cheat sheetThe java language cheat sheet
The java language cheat sheet
 
MTL Versus Free
MTL Versus FreeMTL Versus Free
MTL Versus Free
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlin
 
Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?Is Haskell an acceptable Perl?
Is Haskell an acceptable Perl?
 
Collection Core Concept
Collection Core ConceptCollection Core Concept
Collection Core Concept
 
1.2 Scala Basics
1.2 Scala Basics1.2 Scala Basics
1.2 Scala Basics
 
Hammurabi
HammurabiHammurabi
Hammurabi
 

Andere mochten auch

Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hackraft
 
Ахмед Сулейман - How to boost mobile product development speed
Ахмед Сулейман - How to boost  mobile product  development speedАхмед Сулейман - How to boost  mobile product  development speed
Ахмед Сулейман - How to boost mobile product development speedHackraft
 
Яна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходЯна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходHackraft
 
Мария Крючок - Sexy twitter
Мария Крючок -   Sexy twitterМария Крючок -   Sexy twitter
Мария Крючок - Sexy twitterHackraft
 
Іван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsІван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsHackraft
 
Любомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeЛюбомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeHackraft
 
Олександр Краковецький - UWP
Олександр Краковецький - UWPОлександр Краковецький - UWP
Олександр Краковецький - UWPHackraft
 

Andere mochten auch (7)

Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)Hardware workshop with Lampa (Arduino intro course)
Hardware workshop with Lampa (Arduino intro course)
 
Ахмед Сулейман - How to boost mobile product development speed
Ахмед Сулейман - How to boost  mobile product  development speedАхмед Сулейман - How to boost  mobile product  development speed
Ахмед Сулейман - How to boost mobile product development speed
 
Яна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароходЯна Пролис - Team lead. Человек и пароход
Яна Пролис - Team lead. Человек и пароход
 
Мария Крючок - Sexy twitter
Мария Крючок -   Sexy twitterМария Крючок -   Sexy twitter
Мария Крючок - Sexy twitter
 
Іван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communicationsІван Соболєв - Debugging recruitment communications
Іван Соболєв - Debugging recruitment communications
 
Любомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs OfficeЛюбомир Косенко - Freelance vs Office
Любомир Косенко - Freelance vs Office
 
Олександр Краковецький - UWP
Олександр Краковецький - UWPОлександр Краковецький - UWP
Олександр Краковецький - UWP
 

Ähnlich wie Swift rocks! #1

Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...GeeksLab Odessa
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoMuhammad Abdullah
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software DevelopmentNaveenkumar Muguda
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016Codemotion
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldWerner Hofstra
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Charles Nutter
 
CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35Bilal Ahmed
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to GoJaehue Jang
 
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티JaeYeoul Ahn
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, SwiftYandex
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesCharles Nutter
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?Tomasz Wrobel
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxDavid Rodenas
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional ProgrammingYuan Wang
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayUtkarsh Sengar
 
Monadologie
MonadologieMonadologie
Monadologieleague
 

Ähnlich wie Swift rocks! #1 (20)

Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
Java/Scala Lab: Анатолий Кметюк - Scala SubScript: Алгебра для реактивного пр...
 
Introduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demoIntroduction to kotlin + spring boot demo
Introduction to kotlin + spring boot demo
 
Yin Yangs of Software Development
Yin Yangs of Software DevelopmentYin Yangs of Software Development
Yin Yangs of Software Development
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
JavaScript in 2016
JavaScript in 2016JavaScript in 2016
JavaScript in 2016
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)
 
Scala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereldScala: Functioneel programmeren in een object georiënteerde wereld
Scala: Functioneel programmeren in een object georiënteerde wereld
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
 
CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35CS101- Introduction to Computing- Lecture 35
CS101- Introduction to Computing- Lecture 35
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
Go 프로그래밍 소개 - 장재휴, DomainDriven커뮤니티
 
Introduction to Kotlin
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
 
Denis Lebedev, Swift
Denis  Lebedev, SwiftDenis  Lebedev, Swift
Denis Lebedev, Swift
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for Dummies
 
(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?(How) can we benefit from adopting scala?
(How) can we benefit from adopting scala?
 
Scala
ScalaScala
Scala
 
Introduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicoxIntroduction to web programming for java and c# programmers by @drpicox
Introduction to web programming for java and c# programmers by @drpicox
 
Functional Programming
Functional ProgrammingFunctional Programming
Functional Programming
 
Python Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard WayPython Workshop - Learn Python the Hard Way
Python Workshop - Learn Python the Hard Way
 
Monadologie
MonadologieMonadologie
Monadologie
 

Kürzlich hochgeladen

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 

Kürzlich hochgeladen (20)

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 

Swift rocks! #1