SlideShare uma empresa Scribd logo
1 de 26
i
SWIFT PROGRAMMING LANGUAGE
BY
OKEKE HYACINTH AFAM
ESUT/2014/155247
A SEMINAR REPORT SUBMITTED TO THE
DEPARTMENT OF COMPUTER SCIENCE
FACULTY OF APPLIED NATURAL SCIENCES
ENUGU STATE UNIVERSITY OF SCIENCE AND TECHNOLOGY,
ENUGU
IN PARTIAL FULFILMENT OF THE REQUIREMENT FOR THE AWARD OF
BACHELOR OF SCIENCE (BSc)
DEGREE IN COMPUTER SCIENCE
MAY, 2017
ii
ACKNOWLEDGEMENTS
I wish to thank my seminar supervisor in the person of Mrs Edith Ugwu for her guidance and
patience throughout this seminar report writing, and also the lecturers in computer science
department who are bent on giving us the best in academics. A big thanks goes to my parents they
are my fortress and to the Almighty God the giver of life and wisdom.
iii
ABSTRACT
This seminar topic Swift programming language discussed to an extent Swift programming
language which is a new programming language from Apple that powers all Apple devices, with
much emphasis on the features that made it the programming language of choice by Apple. Features
of modern programming language embedded in Swift and discussed in depth in this material
include: file handing, optional and chaining, value types, protocol oriented programming, libraries
runtime and development, memory management and debugging
. Swift adopts safe programming patterns and adds modern features to make programming easier,
more flexible, and more fun. Swift’s clean slate, backed by the mature and much-loved Cocoa and
Cocoa Touch frameworks, is an opportunity to re imagine how software development works. Apple
laid the foundation for Swift by advancing the existing compiler, debugger, and framework
infrastructure. Simplified memory management with Automatic Reference Counting (ARC). The
framework stack, built on the solid base of Foundation and Cocoa, has been modernized and
standardized throughout. Objective-C itself has evolved to support blocks, collection literals, and
modules, enabling framework adoption of modern language technologies without disruption.
Building from this common ground, Swift introduces many new features and unifies the procedural
and object-oriented portions of the language. Friendly to new programmers. It is the first industrial-
quality systems programming language that is as expressive and enjoyable as a scripting language.
It supports playgrounds, an innovative feature that allows programmers to experiment with Swift
code and see the results immediately, without the overhead of building and running an app. Swift
combines the best in modern language thinking with wisdom from the wider Apple engineering
culture. The compiler is optimized for performance, and the language is optimized for development,
without compromising on either. It is designed to scale from “hello, world” to an entire operating
system.
iv
TABLE OF CONTENTS
Cover Page…………………………………………………………………… i
Acknowledgment……………………………………………………………… ii
Abstract………………………………………………………………………. iii
Table of Contents ……………………………………………………………… iv
1.0. INTRODUCTION …………………………………………………………… 1
1.1 background 6
1.2 objectives of the seminar……………………………………………… 7
1.3 significance of the seminar……………………………………………… 8
1.4 scope of the seminar ………………………………………………… 9
1.5 constraints and limitations…………………………………………… 10
1.6 seminar report organisation……………………………………………… 11
2.0 LITERATURE REVIEW…………………………………………………..…………… 11
3.0 DISCUSSION……………………………………………………………………… 12
3.1 features………………………………………………………………… 13
3.2 file handling……………………………………………………………… 14
3.3 optionals and chaining…………………………………………………… 15
3.4 value types………………………………………………………………… 17
3.5 protocol oriented programming…………………………………………… 19
3.6 libraries runtime and development………………………………………. 21
3.7 memory management………………………………………………………. 23
3.8 debugging and other elements…………………………………………… 25
3.9 performance………………………………………………………… 26
4.0 CONCLUSION………………………………………………………………… 27
5.0 REFERENCES………………………………………………………………… 28
1
1.0 INTRODUCTION
Swift language is at the core of Apple Software Engineering, it is a modern programming language
that leverages on the weakness of existing languages it combines procedural and object oriented
features seamlessly. The success of Apple devices is attributed to the programming language at it’s
core which is Swift, though evolved from C and Objective C programming languages swift is
optimised for modern software engineering having simple but powerful libraries . Software
products powered by Swift are among the best in the market offering rich user experience, security,
unequalled graphics and free from virus attacks. With an exponential growth of developers in the
open source community coupled with research funding from Apple and many other contributors to
expand the swift library to make it more powerful, Swift is the programming language of the future.
2
1.1 BACKGROUND
Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple
Inc. for iOS, macOS, watchOS, tvOS, and Linux. Swift is designed to work with Apple’s Cocoa
and Cocoa Touch frameworks and the large body of extant Objective-C (ObjC) code written for
Apple products. It is built with the open source LLVM compiler framework and has been included
in Xcode since version 6. On platforms other than Linux, it uses the Objective-C runtime library
which allows C, Objective-C, C++ and Swift code to run within one program.
Swift is intended to be more resilient to erroneous code (“safer”) than Objective-C, and more
concise. However it supports many core concepts that are associated with Objective-C, notably
dynamic dispatch, widespread late binding, extensible programming and similar features. For
safety, Swift helps address common programming errors like null pointers, and provides syntactic
sugar to avoid the pyramid of doom that can otherwise result. More fundamentally, Swift adds the
concept of protocol extensibility, an extensibility system that can be applied to types, structs and
classes. Apple promotes this as a real change in programming paradigms they term “protocol-
oriented programming”.
Swift was introduced at Apple’s 2014 Worldwide Developers Conference (WWDC).It underwent
an upgrade to version 1.2 during 2014 and a more major upgrade to Swift 2 at WWDC 2015.
Initially a proprietary language, version 2.2 was made open-source software under the Apache
License 2.0 on December 3, 2015, for Apple’s platforms and Linux.
In March 2017, less than three years after its official debut, Swift made the top 10 in the monthly
TIOBE index ranking of popular programming languages.
3
1.2 OBJECTIVES OF THE SEMINAR
Swift is a modern programming language and having it’s roots from C and Objective C
programming languages this material intends to throw light on the following
I. Feature rich enumeration
II. Type Inference
III. powerful structs
IV. Shorthand argument names
V. objects and properties
VI. extensions
4
1.3 SIGNIFICANCE OF THE SEMINAR
Swift language has proved very successful over the years evident in Apple products, this
success is attributed to a lot of features the Swift language has a modern programming
language from a programming language and into a full blown operating system for all type
devices even for servers, Swift has the following features that made it stood out over a short
period of time:
• can make custom operators named anything with these symbols: “/ = - + * % <> ! & | ^ .
~”
• Rare feature: literal convertibles
• Statically compiled
• Small runtime
• Flexible, Predictable, Efficient
• Transparent interaction with C and Objective-C
• Easily deployed to previous versions of iOS and OS X
• No non-deterministic JIT or GC pauses
• Native code with no artificial abstraction enabling bare-to-the-metalprogramming
• stricter type rules allow the compiler to optimize method lookups
• smart compiler knows when objects can skip the heap
• more efficient register usage (no _cmd parameter, for one)
5
1.4 SCOPE OF THE SEMINAR
This material covers limited aspect of the Swift programming language for the purpose of this
study, Swift is vast to cover in this material only the fraction necessary to study was culled.
At the time of this writing some major improvements might have been added and some features
might have also been removed to the language thus rendering some topics, features and constraints
mentioned in this material null.
6
1.5 CONSTRAINTS AND LIMITATIONS
Swift is walled inside of apple though it went open source recently Apple still controls the
library of swift language limiting developers from contributing to the lot.
Multi-paradigm languages can always have the problem of redundancy.
Operator overloading and custom operators are controversial features of the Swift language,
this impedes performance and inconsistency in operator declaration and use.
Swift has been said to suffer from redundancy due to compatibility issues. Before you can
write Swift codes or develop efficient programs using Swift language the hardware and
software must be compatible in most cases only Apple powered operating systems are
compatible though there is recent support for Linux operating systems.
Basically Swift only supports Apple and Linux environments with other dependencies not to
be mentioned here.
7
2.0 LITERATURE REVIEW
Swift is a new programming language for iOS, OS X, and watchOS app development. Nonetheless,
many parts of Swift will be familiar from your experience of developing in C and Objective-C.
Swift provides its own versions of all fundamental C and Objective-C types, including Int for
integers, Double and Float for floating-point values, Bool for Boolean values, and String for textual
data. Swift also provides powerful versions of the three primary collection types, Array, Set, and
Dictionary.
Like C, Swift uses variables to store and refer to values by an identifying name. Swift also makes
extensive use of variables whose values cannot be changed. These are known as constants, and are
much more powerful. Constants are used throughout Swift to make code safer and clearer in intent
when you work with values that do not need to change.
In addition to familiar types, Swift introduces advanced types, such as tuples. Tuples enable you to
create and pass around groupings of values. You can use a tuple to return multiple values from a
function as a single compound value.
Swift also introduces optional types, which handle the absence of a value. Optionals say either
“there is a value, and it equals x” or “there isn’t a value at all”. Using optionals is similar to using
nil with pointers in Objective-C, but they work for any type, not just classes. Not only are optionals
safer and more expressive than nil pointers in Objective-C, they are at the heart of many of Swift’s
most powerful features.
Swift is a type-safe language, which means the language helps you to be clear about the types of
values your code can work with. If part of your code expects a String, type safety prevents you from
passing it an Int by mistake. Likewise, type safety prevents you from accidentally passing an
optional String to a piece of code that expects a nonoptional String. Type safety helps you catch and
fix errors as early as possible in the development process.( Platforms State of the Union, Session
102, Apple World- wide Developers Conference, June 2, 2011)
8
3.0 DISCUSSION
Development of Swift started on July 2010 by Chris Lattner, with the eventual collaboration of
many other programmers at Apple. Swift took language ideas “from Objective-C, Rust, Haskell,
Ruby, Python, C#, CLU, and far too many others to list”.On June 2, 2014, the Apple Worldwide
Developers Conference (WWDC) application became the first publicly released app written in
Swift.A beta version of the programming language was released to registered Apple developers at
the conference, but the company did not promise that the final version of Swift would be source
code compatible with the test version. Apple planned to make source code converters available if
needed for the full release.
Swift reached the 1.0 milestone on September 9, 2014, with the Gold Master of Xcode 6.0 for
iOS.Swift 1.1 was released on October 22, 2014, alongside the launch of Xcode 6.1 .Swift 1.2 was
released on April 8, 2015, along with Xcode 6.3.Swift 2.0 was announced at WWDC 2015, and was
made available for publishing apps in the App Store in September 21, 2015.Swift 3.0 was released
on September 13, 2016.
Swift won first place for Most Loved Programming Language in the Stack Overflow Developer
Survey 2015and second place in 2016.
In December 2015, IBM announced its Swift Sandbox website, which allows developers to write
Swift code in one pane and display output in another. During the WWDC 2016, Apple announced
an iPad exclusive app, named Swift Playgrounds, intended to teach people how to code in Swift.
The app is presented in a 3D video game-like interface which provides feed back when lines of
code are placed in a certain order and executed. (“Swift Has Reached 1.0”. Apple. September 9,
2014. Retrieved March 8, 2015.)
9
3.1 Features
Tradition suggests that the first program in a new language should print the words “Hello, world!”
on the screen. In Swift, this can be done in a single line:
print("Hello, world!")
This is similar to codes written in C or Objective-C, this syntax looks familiar in Swift, this line of
code is a complete program. There is no need to import a separate library for functionality like
input/output or string handling. Code written at global scope is used as the entry point for the
program, so no need for a main() function. In Swift also there is no need to write semicolons at the
end of every statement.
Use let to make a constant and var to make a variable. The value of a constant does not need to be
known at compile time, but a value must be assigned to it exactly once. This means constants can be
used to name a value determined once but use in many places.
var my Variable = 42
my Variable = 50
let my Constant = 42
A constant or variable must have the same type as the value to be assigned to it. However, you
don’t always have to write the type explicitly. Providing a value when you create a constant or
variable lets the compiler infer its type.
Swift is an alternative to the Objective-C language that employs modern programming-language
theory concepts and strives to present a simpler syntax. During its introduction, it was described
simply as “Objective-C without the C”.
10
By default, Swift does not expose pointers and other unsafe accessors, in contrast to Objective-C,
which uses pointers pervasively to refer to object instances. Also, Objective-C’s use of a Smalltalk-
like syntax for making method calls has been replaced with a dot-notation style and namespace
system more familiar to programmers from other common object-oriented (OO) languages like Java
or C#. Swift introduces true named parameters and retains key Objective-C concepts, including
protocols, closures and categories, often replacing former syntax with cleaner versions and allowing
these concepts to be applied to other language structures, like enumerated types (enums).
3.2 File handling
Swift supports five access control levels for symbols: open, public, internal, file private, and
private. Unlike many object-oriented languages, these access controls ignore inheritance
hierarchies: private indicates that a symbol is accessible only in the immediate scope, file private
indicates it is accessible only from within the file, internal indicates it is accessible within the
containing module, public indicates it is accessible from any module, and open (only for classes and
their methods) indicates that the class may be sub classed outside of the module.
3.3 Optionals and chaining
An important new feature in Swift is option types, which allow references or values to operate in a
manner similar to the common pattern in C, where a pointer may refer to a value or may be null.
This implies that non-optional types cannot result in a null-pointer error; the compiler can ensure
this is not possible. Optional types are created with the Optional mechanism—to make an Integer
that is nullable, one would use a declaration similar to var optional Integer: Optional<Int>. As in
C#, Swift also includes syntactic sugar for this, allowing one to indicate a variable is optional by
placing a question mark after the type name, var optional Integer: Int?.Variables or constants that
are marked optional either have a value of the underlying type or are nil. Optional types wrap the
11
base type, resulting in a different instance. String and String? are fundamentally different types, the
latter has more in common with Int? than String.
To access the value inside, assuming it is not nil, it must be unwrapped to expose the instance
inside. This is per- formed with the ! operator:
let my Value = an Optional Instance!.some Method()
In this case, the ! operator unwraps an Optional Instance to expose the instance inside, allowing the
method call to be made on it. If an Optional Instance is nil, a null- pointer error occurs. This can be
annoying in practice, so Swift also includes the concept of optional chaining to test whether the
instance is nil and then unwrap it if it is non-null:
let my Value = an Optional Instance?.some Method()
In this case the runtime only calls some Method if an Optional Instance is not nil, suppressing the
error. Normally this requires the programmer to test whether my Value is nil before proceeding.
The origin of the term chaining comes from the more common case where several method
calls/getters are chained together. For instance:
let a Tenant = a Building. Tenant List let their- Lease = a Tenant. Lease Details let lease Start =
their- Lease?.start Date
can be reduced to:
let lease Start = a Building. Tenant List. Lease Details?.start Date
The ? syntax allows the pyramid of doom to be avoided.
Swift 2 introduced the new keyword guard for cases in which code should stop executing if some
condition is unmet:
12
guard let lease Start = a Build- ing. Tenant List?.lease Details?.start Date else { //handle the error
case where anything in the chain is nil //else scope must exit the current method or loop }
//continue, knowing that lease Start is not nil
Using guard has three benefits. While the syntax can act as an if statement, its primary benefit is
inferring non- null ability. Where an if statement requires a case, guard assumes the case based on
the condition provided. Also, since guard contains no scope, with exception of the else closure,
lease Start is presented as an unwrapped optional to the guard’s super-scope. Lastly, if the guard
statement’s test fails, Swift requires the else to exit the cur- rent method or loop, ensuring lease
Start never is accessed when nil. This is performed with the keywords return, continue, break, or
throw.
ObjC was weakly typed, and allowed any method to be called on any object at any time. If the
method call failed, there was a default handler in the runtime that returned nil. That meant that no
unwrapping or testing was needed, the equivalent statement in ObjC:
Lease Start = [[[a Building tenantList:5] lease Details] start Date]
would return nil and this could be tested. However, this also demanded that all method calls be
dynamic, which introduces significant overhead. Swift’s use of optionals provides a similar
mechanism for testing and dealing with nils, but does so in a way that allows the compiler to use
static dispatch because the unwrapping action is called on a defined instance (the wrapper), versus
occurring in the runtime dispatch system.
3.4 Value types
In many object-oriented languages, objects are represented internally in two parts. The object is
stored as a block of data placed on the heap, while the name (or “handle”) to that object is
represented by a pointer. Objects are passed between methods by copying the value of the pointer,
13
allowing the same underlying data on the heap to be accessed by anyone with a copy. In contrast,
basic types like integers and floating point values are represented directly; the handle contains the
data, not a pointer to it, and that data is passed directly to methods by copy- ing. These styles of
access are termed pass-by-reference in the case of objects, and pass-by-value for basic types.
Both concepts have their advantages and disadvantages. Objects are useful when the data is large,
like the description of a window or the contents of a document. In these cases, access to that data is
provided by copying a 32- or 64-bit value, versus copying an entire data structure. However,
smaller values like integers are the same size as pointers (typically both are one word), so there is
no advantage to passing a pointer, versus passing the value. Also, pass-by-reference inherently
requires a dereferencing operation, which can produce noticeable overhead in some operations,
typically those used with these basic value types, like mathematics.
Similarly to C# and in contrast to most other OO languages, Swift offers built-in support for objects
using either pass-by-reference or pass-by-value semantics, the former using the class declaration
and the latter using struct. Structs in Swift have almost all the same features as classes: methods,
implementing protocols, and using the extension mechanisms. For this reason, Apple terms all data
generically as instances, versus objects or values. Structs do not support inheritance, however. The
programmer is free to choose which semantics are more appropriate for each data structure in the
application. Larger structures like windows would be defined as classes, allowing them to be passed
around as pointers. Smaller structures, like a 2D point, can be defined as structs, which will be pass-
by-value and allow direct access to their internal data with no dereference. The performance
improvement inherent to the pass-by-value concept is such that Swift uses these types for almost all
common data types, including Int and Double, and types normally represented by objects, like
String and Array. Using value types can result in significant performance improvements in user
applications also.
14
To ensure that even the largest structs do not cause a performance penalty when they are handed
off, Swift uses copy on write so that the objects are copied only if and when the program attempts to
change a value in them. This means that the various accessors have what is in effect a pointer to the
same data storage, but this takes place far below the level of the language, in the computer’s
memory management unit (MMU). So while the data is physically stored as one instance in
memory, at the level of the application, these values are separate, and physical separation is
enforced by copy on write only if needed.
3.5 Protocol-oriented programming
A key feature of ObjC is its support for categories, methods that can be added to extend classes at
runtime. Categories allow extending classes in-place to add new functions with no need to subclass
or even have access to the original source code. An example might be to add spell checker support
to the base NS String class, which means all instances of NS String in the application gain spell
checking. The system is also widely used as an organizational technique, allowing related code to
be gathered into library-like extensions. Swift continues to sup- port this concept, although they are
now termed extensions, and declared with the keyword extension. Unlike ObjC, Swift can also add
new properties accessors, types and enums to extant instances.
Another key feature of ObjC is its use of protocols, known in most modern languages as interfaces.
Protocols promise that a particular class implements a set of methods, meaning that other objects in
the system can call those methods on any object supporting that protocol. This is often used in
modern OO languages as a substitute for multiple inheritance, although the feature sets are not
entirely similar. A common example of a protocol in Cocoa is the NS Copying protocol, which
defines one method, copy WithZone, that implements deep copying on objects.
In ObjC, and most other languages implementing the protocol concept, it is up to the programmer to
ensure that the required methods are implemented in each class. Swift adds the ability to add these
15
methods using extensions, and to use generic programming (generics) to implement them.
Combined, these allow protocols to be written once and support a wide variety of instances. Also,
the extension mechanism can be used to add protocol conformance to an object that does not list
that protocol in its definition.
For example, a protocol might be declared called Supports to String, which ensures that instances
that conform to the protocol implement a to String method that returns a String. In Swift, this can be
declared with code like this:
protocol Supports To String { functoString() -> String }
This protocol can now be added to String, with no access to the base class’s source:
extension String: Supports to String { func to String() -> String { return self } }
In Swift, like many modern languages supporting inter- faces, protocols can be used as types, which
means variables and methods can be defined by protocol instead of their specific type:
var some Sort Of Printable Object: Supports to String ... print(some Sort Of Printable Object .to
String()) (The Swift Programming Language. Apple. June 2, 2014. Retrieved June 2, 2014. Lay
summary)
It does not matter what sort of instance some Sort Of Print- able Object is, the compiler will ensure
that it conforms to the protocol and thus this code is safe. This syntax also means that collections
can be based on protocols also, like let printable Array = [Supports to String].
As Swift treats structs and classes as similar concepts, both extensions and protocols are extensively
used in Swift’s runtime to provide a rich API based on structs. For instance, Swift uses an extension
to add the Equatable protocol to many of their basic types, like Strings and Arrays, allowing them to
16
be compared with the == operator. A concrete example of how all of these features interact can be
seen in the concept of default protocol implementations:
func !=<T : Equatable>(lhs: T, rhs: T) -> Bool
This function defines a method that works on any instance conforming to Equatable, providing a not
equals function. Any instance, class or struct, automatically gains this implementation simply by
conforming to Equatable. As many instances gain Equatable through their base implementations or
other generic extensions, most basic objects in the runtime gain equals and not equals with no code.
This combination of protocols, defaults, protocol inheritance, and extensions allows many of the
functions normally associated with classes and inheritance to be implemented on value types.
Properly used, this can lead to dramatic performance improvements with no significant limits in
API. This concept is so widely used within Swift, that Apple has begun calling it a protocol-
oriented programming language. They suggest addressing many of the problem domains normally
solved though classes and inheritance using protocols and structs instead.
3.6 Libraries, runtime and development
Swift uses the same runtime as the extant Objective-C system, but requires iOS 7 or macOS 10.9 or
higher. Swift and Objective-C code can be used in one program, and by extension, C and C++ also.
In contrast to C, C++ code cannot be used directly from Swift. An Objective-C or C wrapper must
be created between Swift and C++.In the case of Objective-C, Swift has considerable access to the
object model, and can be used to subclass, extend and use Objective-C code to provide protocol
support. The converse is not true: a Swift class cannot be sub- classed in Objective-C.
To aid development of such programs, and the re-use of extant code, Xcode 6 offers a semi-
automated system that builds and maintains a bridging header to expose Objective-C code to Swift.
This takes the form of an additional header file that simply defines or imports all of the Objective-C
17
symbols that are needed by the project’s Swift code. At that point, Swift can refer to the types,
functions, and variables declared in those imports as though they were written in Swift. Objective-C
code can also use Swift code directly, by importing an automatically maintained header file with
Objective-C declarations of the project’s Swift symbols. For instance, an Objective-C file in a
mixed project called “My App” could access Swift classes or functions with the code #import “My
App-Swift. h”. Not all symbols are available through this mechanism, however use of Swift-specific
features like generic types, non-object optional types, sophisticated enums, or even Unicode
identifiers may render a symbol inaccessible from Objective-C. (“Swift, Objectively”. Swift is
proprietary and closed:It is entirely controlled by Apple and there is no open source
implementation.)
Swift also has limited support for attributes, metadata that is read by the development environment,
and is not necessarily part of the compiled code. Like Objective-C, attributes use the @ syntax, but
the currently available set is small. One example is the @IBOutlet attribute, which marks a given
value in the code as an outlet, available for use within Interface Builder (IB). An outlet is a device
that binds the value of the on-screen display to an object in code. ( https://swift.org/blog/swift-3-1-
released/)
3.7 Memory management
Curly braces are used to group statements.
Variables are assigned using an equals sign, but compared using two consecutive equals signs. A
new identity operator, ===, is provided to check if two data elements refer to the same object.
Control statements while, if, and switch are similar, but have extended functions, e.g., a switch
that takes non-integer cases, while and if supporting pat- tern matching and conditionally
unwrapping optionals, etc.
It also has similarities to Objective-C:
18
Basic numeric types (Int, UInt, Float, Double)
Square brackets are used with arrays, both to declare them and to get a value at a given index in
one of them.
Class methods are inherited, like instance methods; self in class methods is the class the method
was called on.
Similar for...in enumeration syntax.
Differences from Objective-C include:
Statements do not need to end with semicolons (;), though these must be used to allow more than
one statement on a line.
No header files.
Uses type inference.
Generic programming.
Functions are first-class objects.
Enumeration cases can have associated data (algebraic data types).
Operators can be redefined for classes (operator overloading), and new operators can be defined.
Strings fully support Unicode. Most Unicode characters can be used in either identifiers or
operators.
No exception handling. Swift 2 introduces a different and incompatible error-handling model.
Several notoriously error-prone behaviours of earlier C-family languages have been changed:
19
Pointers are not exposed by default. There is no need for the programmer to keep track of and
mark names for referencing or dereferencing.
Assignments return no value. This prevents the common error of writing i = 0 instead of i == 0 by
throwing a compile-time error.
Swift uses Automatic Reference Counting (ARC) to manage memory. Apple used to require manual
memory management in Objective-C, but introduced ARC in 2011 to allow for easier memory
allocation and de allocation. One problem with ARC is the possibility of creating a strong reference
cycle, where instances of two different classes each include a reference to the other, causing them to
become leaked into memory as they are never released. Swift provides the keywords weak and
unowned to prevent strong reference cycles. Typically a parent-child relationship would use a
strong reference while a child-parent would use either weak reference, where parents and children
can be unrelated, or un owned where a child always has a parent, but parent may not have a child.
Weak references must be optional variables, since they can change and become nil.
A closure within a class can also create a strong reference cycle by capturing self references. Self
references to be treated as weak or un owned can be indicated using a capture list.
3.8 Debugging and other elements
A key element of the Swift system is its ability to be cleanly debugged and run within the
development environment, using a read–eval–print loop (REPL), giving it interactive properties
more in common with the scripting abilities of Python than traditional system programming
languages. The REPL is further enhanced with the new concept playgrounds. These are interactive
views running within the Xcode environment that respond to code or de- bugger changes on-the-fly.
If some code changes over time or with regard to some other ranged input value, the view can be
used with the Timeline Assistant to demonstrate the output in an animated way. (“The Swift Linux
Port”. Swift.org. Apple Inc. Retrieved 3 August 2016.)
20
3.9 Performance
Many of the features introduced with Swift also have well-known performance and safety trade-
offs. Apple has invested considerable effort in aggressive optimization that can flatten out method
calls and accessors to eliminate this overhead.
21
4.0 CONCLUSION
Since the language is open-source, there are prospects of it being ported to the web. Some web
frameworks have already been developed, such as IBM's Kitura, Perfect and Vapour.
An official “Server APIs” work group has also been started by Apple, with members of the Swift
developer community playing a central role.
A second free implementation of Swift that targets Cocoa, Microsoft's Common Language
Infrastructure (.NET), and the Java and Android platform exists as part of the Elements Compiler
from Rem Objects Software.
22
5.0 REFERENCES
1. “Swift Has Reached 1.0”. Apple. September 9, 2014. Retrieved March 8, 2015.
2. https://swift.org/blog/swift-3-1-released/
3. https://swift.org/download/#previews
4. “Swift, Objectively”. Swift is proprietary and closed: It is entirely controlled by Apple and
there is no open source implementation.
5. “The Swift Linux Port”. Swift.org. Apple Inc. Retrieved 3 August 2016.
6. Timmer, John (June 5, 2014). “A fast look at Swift, Apple’s new programming language”.
Ars Technica. Condé Nast. Retrieved June 6, 2014.
7. Protocol-oriented Programming in Swift. Apple Inc. YouTube.
8. Williams, Owen (June 2, 2014). “Tim Berners-Lee’s sixtieth birthday Apple announces
Swift, a new program- ming language for iOS”. The Next Web. Retrieved June 2, 2014.
9. “Apple’s new programming language Swift is now open source”. The Verge. Retrieved
2015-12-05.
10. “Apple Open Sources Swift in Latest Pitch to the Enterprise”. CIO Journal. The Wall
Street Journal Blogs. 2015-12-03. Retrieved 2015-12-05. (registration required (help)).
11. Weber, Harrison (June 2, 2014). “Apple announces 'Swift,' a new programming language for
macOS & iOS”. VentureBeat.
12. “Strings and Characters”. developer.apple.com. Apple Inc. Retrieved July 16, 2014.
13. “Access Control”. developer.apple.com. Apple Inc. Retrieved October 25, 2016.
14. “Nullable Types”, C# Programming Guide, Microsoft. [40] “Types”. developer.apple.com.
Apple Inc. Retrieved July16, 2014.
15. http://www.cultofmac.com/471301/
swift- is- already- of- the- worlds- most- popular- programming- languages/
16. Platforms State of the Union, Session 102, Apple World- wide Developers Conference, June
2, 2014
17. The Swift Programming Language. Apple. June 2, 2014. Retrieved June 2, 2014. Lay
summary.

Mais conteúdo relacionado

Mais procurados

oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaCPD INDIA
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics PresentationSudhakar Sharma
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 
Introduction To Dotnet
Introduction To DotnetIntroduction To Dotnet
Introduction To DotnetSAMIR BHOGAYTA
 
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming LanguageSwift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming LanguageHossam Ghareeb
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for DesignersR. Sosa
 
Menu bars and menus
Menu bars and menusMenu bars and menus
Menu bars and menusmyrajendra
 
MULTI THREADING IN JAVA
MULTI THREADING IN JAVAMULTI THREADING IN JAVA
MULTI THREADING IN JAVAVINOTH R
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingMoutaz Haddara
 

Mais procurados (20)

oops concept in java | object oriented programming in java
oops concept in java | object oriented programming in javaoops concept in java | object oriented programming in java
oops concept in java | object oriented programming in java
 
Dotnet Basics Presentation
Dotnet Basics PresentationDotnet Basics Presentation
Dotnet Basics Presentation
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 
JAVA AWT
JAVA AWTJAVA AWT
JAVA AWT
 
Introduction To Dotnet
Introduction To DotnetIntroduction To Dotnet
Introduction To Dotnet
 
Selenium ppt
Selenium pptSelenium ppt
Selenium ppt
 
OOP java
OOP javaOOP java
OOP java
 
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming LanguageSwift Tutorial Part 1. The Complete Guide For Swift Programming Language
Swift Tutorial Part 1. The Complete Guide For Swift Programming Language
 
Java: GUI
Java: GUIJava: GUI
Java: GUI
 
Swing
SwingSwing
Swing
 
Swift Introduction
Swift IntroductionSwift Introduction
Swift Introduction
 
C# classes objects
C#  classes objectsC#  classes objects
C# classes objects
 
Packages in java
Packages in javaPackages in java
Packages in java
 
C# Method overloading
C# Method overloadingC# Method overloading
C# Method overloading
 
interface in c#
interface in c#interface in c#
interface in c#
 
Java Programming for Designers
Java Programming for DesignersJava Programming for Designers
Java Programming for Designers
 
Menu bars and menus
Menu bars and menusMenu bars and menus
Menu bars and menus
 
Applets
AppletsApplets
Applets
 
MULTI THREADING IN JAVA
MULTI THREADING IN JAVAMULTI THREADING IN JAVA
MULTI THREADING IN JAVA
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented Programming
 

Semelhante a Swift language seminar topic

Swift-Changing the Face of App Development.pdf
Swift-Changing the Face of App Development.pdfSwift-Changing the Face of App Development.pdf
Swift-Changing the Face of App Development.pdfTechugo Canada
 
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)Aniruddha Chakrabarti
 
What is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basicsWhat is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basicsSample Assignment
 
10 reasons why swift is best for i os app development
10 reasons why swift is best for i os app development10 reasons why swift is best for i os app development
10 reasons why swift is best for i os app developmentMoon Technolabs Pvt. Ltd.
 
Reasons to Choose Swift for iOS App Development.pdf
Reasons to Choose Swift for iOS App Development.pdfReasons to Choose Swift for iOS App Development.pdf
Reasons to Choose Swift for iOS App Development.pdfFuGenx Technologies
 
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptx
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptxSwift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptx
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptxSample Assignment
 
What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...BlockchainX
 
Top Programming Languages of 2020
Top Programming Languages of 2020Top Programming Languages of 2020
Top Programming Languages of 2020Ikbal Ahmed
 
Swift App Development Company.pdf
Swift App Development Company.pdfSwift App Development Company.pdf
Swift App Development Company.pdfTechugo
 
A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...IRJET Journal
 
6 Best Programming Languages For iOS App Development in 2023.pptx
6 Best Programming Languages For iOS App Development in 2023.pptx6 Best Programming Languages For iOS App Development in 2023.pptx
6 Best Programming Languages For iOS App Development in 2023.pptxLiamJohnson32
 
Computer languages
Computer languagesComputer languages
Computer languageswow_so
 
Best Programming Languages to Learn This Year
Best Programming Languages to Learn This YearBest Programming Languages to Learn This Year
Best Programming Languages to Learn This YearEyeglass Repair USA
 
Top iOS App Development Tools That You Can Consider.pdf
Top iOS App Development Tools That You Can Consider.pdfTop iOS App Development Tools That You Can Consider.pdf
Top iOS App Development Tools That You Can Consider.pdfHarryParker32
 
Swift vs flutter pixel values technolabs
Swift vs flutter pixel values technolabsSwift vs flutter pixel values technolabs
Swift vs flutter pixel values technolabsPixel Values Technolabs
 
Advance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptxAdvance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptxpercivalfernandez3
 
Welcome To CNC Web World.pdf
Welcome To CNC Web World.pdfWelcome To CNC Web World.pdf
Welcome To CNC Web World.pdfCNC Web world
 

Semelhante a Swift language seminar topic (20)

Swift-Changing the Face of App Development.pdf
Swift-Changing the Face of App Development.pdfSwift-Changing the Face of App Development.pdf
Swift-Changing the Face of App Development.pdf
 
Programming landuages
Programming landuagesProgramming landuages
Programming landuages
 
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
Using Swift for all Apple platforms (iOS, watchOS, tvOS and OS X)
 
What is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basicsWhat is Swift? Features, advantages, and syntax basics
What is Swift? Features, advantages, and syntax basics
 
10 reasons why swift is best for i os app development
10 reasons why swift is best for i os app development10 reasons why swift is best for i os app development
10 reasons why swift is best for i os app development
 
Java Programming Basics
Java Programming BasicsJava Programming Basics
Java Programming Basics
 
Reasons to Choose Swift for iOS App Development.pdf
Reasons to Choose Swift for iOS App Development.pdfReasons to Choose Swift for iOS App Development.pdf
Reasons to Choose Swift for iOS App Development.pdf
 
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptx
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptxSwift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptx
Swift The Complete Guide for Beginners, Intermediate, and Advanced Strategy.pptx
 
What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...What is the best programming language to learn if you want to work on the blo...
What is the best programming language to learn if you want to work on the blo...
 
Top Programming Languages of 2020
Top Programming Languages of 2020Top Programming Languages of 2020
Top Programming Languages of 2020
 
Swift App Development Company.pdf
Swift App Development Company.pdfSwift App Development Company.pdf
Swift App Development Company.pdf
 
A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...
 
6 Best Programming Languages For iOS App Development in 2023.pptx
6 Best Programming Languages For iOS App Development in 2023.pptx6 Best Programming Languages For iOS App Development in 2023.pptx
6 Best Programming Languages For iOS App Development in 2023.pptx
 
Computer languages
Computer languagesComputer languages
Computer languages
 
Best Programming Languages to Learn This Year
Best Programming Languages to Learn This YearBest Programming Languages to Learn This Year
Best Programming Languages to Learn This Year
 
Swift
SwiftSwift
Swift
 
Top iOS App Development Tools That You Can Consider.pdf
Top iOS App Development Tools That You Can Consider.pdfTop iOS App Development Tools That You Can Consider.pdf
Top iOS App Development Tools That You Can Consider.pdf
 
Swift vs flutter pixel values technolabs
Swift vs flutter pixel values technolabsSwift vs flutter pixel values technolabs
Swift vs flutter pixel values technolabs
 
Advance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptxAdvance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptx
 
Welcome To CNC Web World.pdf
Welcome To CNC Web World.pdfWelcome To CNC Web World.pdf
Welcome To CNC Web World.pdf
 

Último

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 

Último (20)

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 

Swift language seminar topic

  • 1. i SWIFT PROGRAMMING LANGUAGE BY OKEKE HYACINTH AFAM ESUT/2014/155247 A SEMINAR REPORT SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE FACULTY OF APPLIED NATURAL SCIENCES ENUGU STATE UNIVERSITY OF SCIENCE AND TECHNOLOGY, ENUGU IN PARTIAL FULFILMENT OF THE REQUIREMENT FOR THE AWARD OF BACHELOR OF SCIENCE (BSc) DEGREE IN COMPUTER SCIENCE MAY, 2017
  • 2. ii ACKNOWLEDGEMENTS I wish to thank my seminar supervisor in the person of Mrs Edith Ugwu for her guidance and patience throughout this seminar report writing, and also the lecturers in computer science department who are bent on giving us the best in academics. A big thanks goes to my parents they are my fortress and to the Almighty God the giver of life and wisdom.
  • 3. iii ABSTRACT This seminar topic Swift programming language discussed to an extent Swift programming language which is a new programming language from Apple that powers all Apple devices, with much emphasis on the features that made it the programming language of choice by Apple. Features of modern programming language embedded in Swift and discussed in depth in this material include: file handing, optional and chaining, value types, protocol oriented programming, libraries runtime and development, memory management and debugging . Swift adopts safe programming patterns and adds modern features to make programming easier, more flexible, and more fun. Swift’s clean slate, backed by the mature and much-loved Cocoa and Cocoa Touch frameworks, is an opportunity to re imagine how software development works. Apple laid the foundation for Swift by advancing the existing compiler, debugger, and framework infrastructure. Simplified memory management with Automatic Reference Counting (ARC). The framework stack, built on the solid base of Foundation and Cocoa, has been modernized and standardized throughout. Objective-C itself has evolved to support blocks, collection literals, and modules, enabling framework adoption of modern language technologies without disruption. Building from this common ground, Swift introduces many new features and unifies the procedural and object-oriented portions of the language. Friendly to new programmers. It is the first industrial- quality systems programming language that is as expressive and enjoyable as a scripting language. It supports playgrounds, an innovative feature that allows programmers to experiment with Swift code and see the results immediately, without the overhead of building and running an app. Swift combines the best in modern language thinking with wisdom from the wider Apple engineering culture. The compiler is optimized for performance, and the language is optimized for development, without compromising on either. It is designed to scale from “hello, world” to an entire operating system.
  • 4. iv TABLE OF CONTENTS Cover Page…………………………………………………………………… i Acknowledgment……………………………………………………………… ii Abstract………………………………………………………………………. iii Table of Contents ……………………………………………………………… iv 1.0. INTRODUCTION …………………………………………………………… 1 1.1 background 6 1.2 objectives of the seminar……………………………………………… 7 1.3 significance of the seminar……………………………………………… 8 1.4 scope of the seminar ………………………………………………… 9 1.5 constraints and limitations…………………………………………… 10 1.6 seminar report organisation……………………………………………… 11 2.0 LITERATURE REVIEW…………………………………………………..…………… 11 3.0 DISCUSSION……………………………………………………………………… 12 3.1 features………………………………………………………………… 13 3.2 file handling……………………………………………………………… 14 3.3 optionals and chaining…………………………………………………… 15 3.4 value types………………………………………………………………… 17 3.5 protocol oriented programming…………………………………………… 19 3.6 libraries runtime and development………………………………………. 21 3.7 memory management………………………………………………………. 23 3.8 debugging and other elements…………………………………………… 25 3.9 performance………………………………………………………… 26 4.0 CONCLUSION………………………………………………………………… 27 5.0 REFERENCES………………………………………………………………… 28
  • 5. 1 1.0 INTRODUCTION Swift language is at the core of Apple Software Engineering, it is a modern programming language that leverages on the weakness of existing languages it combines procedural and object oriented features seamlessly. The success of Apple devices is attributed to the programming language at it’s core which is Swift, though evolved from C and Objective C programming languages swift is optimised for modern software engineering having simple but powerful libraries . Software products powered by Swift are among the best in the market offering rich user experience, security, unequalled graphics and free from virus attacks. With an exponential growth of developers in the open source community coupled with research funding from Apple and many other contributors to expand the swift library to make it more powerful, Swift is the programming language of the future.
  • 6. 2 1.1 BACKGROUND Swift is a general-purpose, multi-paradigm, compiled programming language developed by Apple Inc. for iOS, macOS, watchOS, tvOS, and Linux. Swift is designed to work with Apple’s Cocoa and Cocoa Touch frameworks and the large body of extant Objective-C (ObjC) code written for Apple products. It is built with the open source LLVM compiler framework and has been included in Xcode since version 6. On platforms other than Linux, it uses the Objective-C runtime library which allows C, Objective-C, C++ and Swift code to run within one program. Swift is intended to be more resilient to erroneous code (“safer”) than Objective-C, and more concise. However it supports many core concepts that are associated with Objective-C, notably dynamic dispatch, widespread late binding, extensible programming and similar features. For safety, Swift helps address common programming errors like null pointers, and provides syntactic sugar to avoid the pyramid of doom that can otherwise result. More fundamentally, Swift adds the concept of protocol extensibility, an extensibility system that can be applied to types, structs and classes. Apple promotes this as a real change in programming paradigms they term “protocol- oriented programming”. Swift was introduced at Apple’s 2014 Worldwide Developers Conference (WWDC).It underwent an upgrade to version 1.2 during 2014 and a more major upgrade to Swift 2 at WWDC 2015. Initially a proprietary language, version 2.2 was made open-source software under the Apache License 2.0 on December 3, 2015, for Apple’s platforms and Linux. In March 2017, less than three years after its official debut, Swift made the top 10 in the monthly TIOBE index ranking of popular programming languages.
  • 7. 3 1.2 OBJECTIVES OF THE SEMINAR Swift is a modern programming language and having it’s roots from C and Objective C programming languages this material intends to throw light on the following I. Feature rich enumeration II. Type Inference III. powerful structs IV. Shorthand argument names V. objects and properties VI. extensions
  • 8. 4 1.3 SIGNIFICANCE OF THE SEMINAR Swift language has proved very successful over the years evident in Apple products, this success is attributed to a lot of features the Swift language has a modern programming language from a programming language and into a full blown operating system for all type devices even for servers, Swift has the following features that made it stood out over a short period of time: • can make custom operators named anything with these symbols: “/ = - + * % <> ! & | ^ . ~” • Rare feature: literal convertibles • Statically compiled • Small runtime • Flexible, Predictable, Efficient • Transparent interaction with C and Objective-C • Easily deployed to previous versions of iOS and OS X • No non-deterministic JIT or GC pauses • Native code with no artificial abstraction enabling bare-to-the-metalprogramming • stricter type rules allow the compiler to optimize method lookups • smart compiler knows when objects can skip the heap • more efficient register usage (no _cmd parameter, for one)
  • 9. 5 1.4 SCOPE OF THE SEMINAR This material covers limited aspect of the Swift programming language for the purpose of this study, Swift is vast to cover in this material only the fraction necessary to study was culled. At the time of this writing some major improvements might have been added and some features might have also been removed to the language thus rendering some topics, features and constraints mentioned in this material null.
  • 10. 6 1.5 CONSTRAINTS AND LIMITATIONS Swift is walled inside of apple though it went open source recently Apple still controls the library of swift language limiting developers from contributing to the lot. Multi-paradigm languages can always have the problem of redundancy. Operator overloading and custom operators are controversial features of the Swift language, this impedes performance and inconsistency in operator declaration and use. Swift has been said to suffer from redundancy due to compatibility issues. Before you can write Swift codes or develop efficient programs using Swift language the hardware and software must be compatible in most cases only Apple powered operating systems are compatible though there is recent support for Linux operating systems. Basically Swift only supports Apple and Linux environments with other dependencies not to be mentioned here.
  • 11. 7 2.0 LITERATURE REVIEW Swift is a new programming language for iOS, OS X, and watchOS app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift provides its own versions of all fundamental C and Objective-C types, including Int for integers, Double and Float for floating-point values, Bool for Boolean values, and String for textual data. Swift also provides powerful versions of the three primary collection types, Array, Set, and Dictionary. Like C, Swift uses variables to store and refer to values by an identifying name. Swift also makes extensive use of variables whose values cannot be changed. These are known as constants, and are much more powerful. Constants are used throughout Swift to make code safer and clearer in intent when you work with values that do not need to change. In addition to familiar types, Swift introduces advanced types, such as tuples. Tuples enable you to create and pass around groupings of values. You can use a tuple to return multiple values from a function as a single compound value. Swift also introduces optional types, which handle the absence of a value. Optionals say either “there is a value, and it equals x” or “there isn’t a value at all”. Using optionals is similar to using nil with pointers in Objective-C, but they work for any type, not just classes. Not only are optionals safer and more expressive than nil pointers in Objective-C, they are at the heart of many of Swift’s most powerful features. Swift is a type-safe language, which means the language helps you to be clear about the types of values your code can work with. If part of your code expects a String, type safety prevents you from passing it an Int by mistake. Likewise, type safety prevents you from accidentally passing an optional String to a piece of code that expects a nonoptional String. Type safety helps you catch and fix errors as early as possible in the development process.( Platforms State of the Union, Session 102, Apple World- wide Developers Conference, June 2, 2011)
  • 12. 8 3.0 DISCUSSION Development of Swift started on July 2010 by Chris Lattner, with the eventual collaboration of many other programmers at Apple. Swift took language ideas “from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list”.On June 2, 2014, the Apple Worldwide Developers Conference (WWDC) application became the first publicly released app written in Swift.A beta version of the programming language was released to registered Apple developers at the conference, but the company did not promise that the final version of Swift would be source code compatible with the test version. Apple planned to make source code converters available if needed for the full release. Swift reached the 1.0 milestone on September 9, 2014, with the Gold Master of Xcode 6.0 for iOS.Swift 1.1 was released on October 22, 2014, alongside the launch of Xcode 6.1 .Swift 1.2 was released on April 8, 2015, along with Xcode 6.3.Swift 2.0 was announced at WWDC 2015, and was made available for publishing apps in the App Store in September 21, 2015.Swift 3.0 was released on September 13, 2016. Swift won first place for Most Loved Programming Language in the Stack Overflow Developer Survey 2015and second place in 2016. In December 2015, IBM announced its Swift Sandbox website, which allows developers to write Swift code in one pane and display output in another. During the WWDC 2016, Apple announced an iPad exclusive app, named Swift Playgrounds, intended to teach people how to code in Swift. The app is presented in a 3D video game-like interface which provides feed back when lines of code are placed in a certain order and executed. (“Swift Has Reached 1.0”. Apple. September 9, 2014. Retrieved March 8, 2015.)
  • 13. 9 3.1 Features Tradition suggests that the first program in a new language should print the words “Hello, world!” on the screen. In Swift, this can be done in a single line: print("Hello, world!") This is similar to codes written in C or Objective-C, this syntax looks familiar in Swift, this line of code is a complete program. There is no need to import a separate library for functionality like input/output or string handling. Code written at global scope is used as the entry point for the program, so no need for a main() function. In Swift also there is no need to write semicolons at the end of every statement. Use let to make a constant and var to make a variable. The value of a constant does not need to be known at compile time, but a value must be assigned to it exactly once. This means constants can be used to name a value determined once but use in many places. var my Variable = 42 my Variable = 50 let my Constant = 42 A constant or variable must have the same type as the value to be assigned to it. However, you don’t always have to write the type explicitly. Providing a value when you create a constant or variable lets the compiler infer its type. Swift is an alternative to the Objective-C language that employs modern programming-language theory concepts and strives to present a simpler syntax. During its introduction, it was described simply as “Objective-C without the C”.
  • 14. 10 By default, Swift does not expose pointers and other unsafe accessors, in contrast to Objective-C, which uses pointers pervasively to refer to object instances. Also, Objective-C’s use of a Smalltalk- like syntax for making method calls has been replaced with a dot-notation style and namespace system more familiar to programmers from other common object-oriented (OO) languages like Java or C#. Swift introduces true named parameters and retains key Objective-C concepts, including protocols, closures and categories, often replacing former syntax with cleaner versions and allowing these concepts to be applied to other language structures, like enumerated types (enums). 3.2 File handling Swift supports five access control levels for symbols: open, public, internal, file private, and private. Unlike many object-oriented languages, these access controls ignore inheritance hierarchies: private indicates that a symbol is accessible only in the immediate scope, file private indicates it is accessible only from within the file, internal indicates it is accessible within the containing module, public indicates it is accessible from any module, and open (only for classes and their methods) indicates that the class may be sub classed outside of the module. 3.3 Optionals and chaining An important new feature in Swift is option types, which allow references or values to operate in a manner similar to the common pattern in C, where a pointer may refer to a value or may be null. This implies that non-optional types cannot result in a null-pointer error; the compiler can ensure this is not possible. Optional types are created with the Optional mechanism—to make an Integer that is nullable, one would use a declaration similar to var optional Integer: Optional<Int>. As in C#, Swift also includes syntactic sugar for this, allowing one to indicate a variable is optional by placing a question mark after the type name, var optional Integer: Int?.Variables or constants that are marked optional either have a value of the underlying type or are nil. Optional types wrap the
  • 15. 11 base type, resulting in a different instance. String and String? are fundamentally different types, the latter has more in common with Int? than String. To access the value inside, assuming it is not nil, it must be unwrapped to expose the instance inside. This is per- formed with the ! operator: let my Value = an Optional Instance!.some Method() In this case, the ! operator unwraps an Optional Instance to expose the instance inside, allowing the method call to be made on it. If an Optional Instance is nil, a null- pointer error occurs. This can be annoying in practice, so Swift also includes the concept of optional chaining to test whether the instance is nil and then unwrap it if it is non-null: let my Value = an Optional Instance?.some Method() In this case the runtime only calls some Method if an Optional Instance is not nil, suppressing the error. Normally this requires the programmer to test whether my Value is nil before proceeding. The origin of the term chaining comes from the more common case where several method calls/getters are chained together. For instance: let a Tenant = a Building. Tenant List let their- Lease = a Tenant. Lease Details let lease Start = their- Lease?.start Date can be reduced to: let lease Start = a Building. Tenant List. Lease Details?.start Date The ? syntax allows the pyramid of doom to be avoided. Swift 2 introduced the new keyword guard for cases in which code should stop executing if some condition is unmet:
  • 16. 12 guard let lease Start = a Build- ing. Tenant List?.lease Details?.start Date else { //handle the error case where anything in the chain is nil //else scope must exit the current method or loop } //continue, knowing that lease Start is not nil Using guard has three benefits. While the syntax can act as an if statement, its primary benefit is inferring non- null ability. Where an if statement requires a case, guard assumes the case based on the condition provided. Also, since guard contains no scope, with exception of the else closure, lease Start is presented as an unwrapped optional to the guard’s super-scope. Lastly, if the guard statement’s test fails, Swift requires the else to exit the cur- rent method or loop, ensuring lease Start never is accessed when nil. This is performed with the keywords return, continue, break, or throw. ObjC was weakly typed, and allowed any method to be called on any object at any time. If the method call failed, there was a default handler in the runtime that returned nil. That meant that no unwrapping or testing was needed, the equivalent statement in ObjC: Lease Start = [[[a Building tenantList:5] lease Details] start Date] would return nil and this could be tested. However, this also demanded that all method calls be dynamic, which introduces significant overhead. Swift’s use of optionals provides a similar mechanism for testing and dealing with nils, but does so in a way that allows the compiler to use static dispatch because the unwrapping action is called on a defined instance (the wrapper), versus occurring in the runtime dispatch system. 3.4 Value types In many object-oriented languages, objects are represented internally in two parts. The object is stored as a block of data placed on the heap, while the name (or “handle”) to that object is represented by a pointer. Objects are passed between methods by copying the value of the pointer,
  • 17. 13 allowing the same underlying data on the heap to be accessed by anyone with a copy. In contrast, basic types like integers and floating point values are represented directly; the handle contains the data, not a pointer to it, and that data is passed directly to methods by copy- ing. These styles of access are termed pass-by-reference in the case of objects, and pass-by-value for basic types. Both concepts have their advantages and disadvantages. Objects are useful when the data is large, like the description of a window or the contents of a document. In these cases, access to that data is provided by copying a 32- or 64-bit value, versus copying an entire data structure. However, smaller values like integers are the same size as pointers (typically both are one word), so there is no advantage to passing a pointer, versus passing the value. Also, pass-by-reference inherently requires a dereferencing operation, which can produce noticeable overhead in some operations, typically those used with these basic value types, like mathematics. Similarly to C# and in contrast to most other OO languages, Swift offers built-in support for objects using either pass-by-reference or pass-by-value semantics, the former using the class declaration and the latter using struct. Structs in Swift have almost all the same features as classes: methods, implementing protocols, and using the extension mechanisms. For this reason, Apple terms all data generically as instances, versus objects or values. Structs do not support inheritance, however. The programmer is free to choose which semantics are more appropriate for each data structure in the application. Larger structures like windows would be defined as classes, allowing them to be passed around as pointers. Smaller structures, like a 2D point, can be defined as structs, which will be pass- by-value and allow direct access to their internal data with no dereference. The performance improvement inherent to the pass-by-value concept is such that Swift uses these types for almost all common data types, including Int and Double, and types normally represented by objects, like String and Array. Using value types can result in significant performance improvements in user applications also.
  • 18. 14 To ensure that even the largest structs do not cause a performance penalty when they are handed off, Swift uses copy on write so that the objects are copied only if and when the program attempts to change a value in them. This means that the various accessors have what is in effect a pointer to the same data storage, but this takes place far below the level of the language, in the computer’s memory management unit (MMU). So while the data is physically stored as one instance in memory, at the level of the application, these values are separate, and physical separation is enforced by copy on write only if needed. 3.5 Protocol-oriented programming A key feature of ObjC is its support for categories, methods that can be added to extend classes at runtime. Categories allow extending classes in-place to add new functions with no need to subclass or even have access to the original source code. An example might be to add spell checker support to the base NS String class, which means all instances of NS String in the application gain spell checking. The system is also widely used as an organizational technique, allowing related code to be gathered into library-like extensions. Swift continues to sup- port this concept, although they are now termed extensions, and declared with the keyword extension. Unlike ObjC, Swift can also add new properties accessors, types and enums to extant instances. Another key feature of ObjC is its use of protocols, known in most modern languages as interfaces. Protocols promise that a particular class implements a set of methods, meaning that other objects in the system can call those methods on any object supporting that protocol. This is often used in modern OO languages as a substitute for multiple inheritance, although the feature sets are not entirely similar. A common example of a protocol in Cocoa is the NS Copying protocol, which defines one method, copy WithZone, that implements deep copying on objects. In ObjC, and most other languages implementing the protocol concept, it is up to the programmer to ensure that the required methods are implemented in each class. Swift adds the ability to add these
  • 19. 15 methods using extensions, and to use generic programming (generics) to implement them. Combined, these allow protocols to be written once and support a wide variety of instances. Also, the extension mechanism can be used to add protocol conformance to an object that does not list that protocol in its definition. For example, a protocol might be declared called Supports to String, which ensures that instances that conform to the protocol implement a to String method that returns a String. In Swift, this can be declared with code like this: protocol Supports To String { functoString() -> String } This protocol can now be added to String, with no access to the base class’s source: extension String: Supports to String { func to String() -> String { return self } } In Swift, like many modern languages supporting inter- faces, protocols can be used as types, which means variables and methods can be defined by protocol instead of their specific type: var some Sort Of Printable Object: Supports to String ... print(some Sort Of Printable Object .to String()) (The Swift Programming Language. Apple. June 2, 2014. Retrieved June 2, 2014. Lay summary) It does not matter what sort of instance some Sort Of Print- able Object is, the compiler will ensure that it conforms to the protocol and thus this code is safe. This syntax also means that collections can be based on protocols also, like let printable Array = [Supports to String]. As Swift treats structs and classes as similar concepts, both extensions and protocols are extensively used in Swift’s runtime to provide a rich API based on structs. For instance, Swift uses an extension to add the Equatable protocol to many of their basic types, like Strings and Arrays, allowing them to
  • 20. 16 be compared with the == operator. A concrete example of how all of these features interact can be seen in the concept of default protocol implementations: func !=<T : Equatable>(lhs: T, rhs: T) -> Bool This function defines a method that works on any instance conforming to Equatable, providing a not equals function. Any instance, class or struct, automatically gains this implementation simply by conforming to Equatable. As many instances gain Equatable through their base implementations or other generic extensions, most basic objects in the runtime gain equals and not equals with no code. This combination of protocols, defaults, protocol inheritance, and extensions allows many of the functions normally associated with classes and inheritance to be implemented on value types. Properly used, this can lead to dramatic performance improvements with no significant limits in API. This concept is so widely used within Swift, that Apple has begun calling it a protocol- oriented programming language. They suggest addressing many of the problem domains normally solved though classes and inheritance using protocols and structs instead. 3.6 Libraries, runtime and development Swift uses the same runtime as the extant Objective-C system, but requires iOS 7 or macOS 10.9 or higher. Swift and Objective-C code can be used in one program, and by extension, C and C++ also. In contrast to C, C++ code cannot be used directly from Swift. An Objective-C or C wrapper must be created between Swift and C++.In the case of Objective-C, Swift has considerable access to the object model, and can be used to subclass, extend and use Objective-C code to provide protocol support. The converse is not true: a Swift class cannot be sub- classed in Objective-C. To aid development of such programs, and the re-use of extant code, Xcode 6 offers a semi- automated system that builds and maintains a bridging header to expose Objective-C code to Swift. This takes the form of an additional header file that simply defines or imports all of the Objective-C
  • 21. 17 symbols that are needed by the project’s Swift code. At that point, Swift can refer to the types, functions, and variables declared in those imports as though they were written in Swift. Objective-C code can also use Swift code directly, by importing an automatically maintained header file with Objective-C declarations of the project’s Swift symbols. For instance, an Objective-C file in a mixed project called “My App” could access Swift classes or functions with the code #import “My App-Swift. h”. Not all symbols are available through this mechanism, however use of Swift-specific features like generic types, non-object optional types, sophisticated enums, or even Unicode identifiers may render a symbol inaccessible from Objective-C. (“Swift, Objectively”. Swift is proprietary and closed:It is entirely controlled by Apple and there is no open source implementation.) Swift also has limited support for attributes, metadata that is read by the development environment, and is not necessarily part of the compiled code. Like Objective-C, attributes use the @ syntax, but the currently available set is small. One example is the @IBOutlet attribute, which marks a given value in the code as an outlet, available for use within Interface Builder (IB). An outlet is a device that binds the value of the on-screen display to an object in code. ( https://swift.org/blog/swift-3-1- released/) 3.7 Memory management Curly braces are used to group statements. Variables are assigned using an equals sign, but compared using two consecutive equals signs. A new identity operator, ===, is provided to check if two data elements refer to the same object. Control statements while, if, and switch are similar, but have extended functions, e.g., a switch that takes non-integer cases, while and if supporting pat- tern matching and conditionally unwrapping optionals, etc. It also has similarities to Objective-C:
  • 22. 18 Basic numeric types (Int, UInt, Float, Double) Square brackets are used with arrays, both to declare them and to get a value at a given index in one of them. Class methods are inherited, like instance methods; self in class methods is the class the method was called on. Similar for...in enumeration syntax. Differences from Objective-C include: Statements do not need to end with semicolons (;), though these must be used to allow more than one statement on a line. No header files. Uses type inference. Generic programming. Functions are first-class objects. Enumeration cases can have associated data (algebraic data types). Operators can be redefined for classes (operator overloading), and new operators can be defined. Strings fully support Unicode. Most Unicode characters can be used in either identifiers or operators. No exception handling. Swift 2 introduces a different and incompatible error-handling model. Several notoriously error-prone behaviours of earlier C-family languages have been changed:
  • 23. 19 Pointers are not exposed by default. There is no need for the programmer to keep track of and mark names for referencing or dereferencing. Assignments return no value. This prevents the common error of writing i = 0 instead of i == 0 by throwing a compile-time error. Swift uses Automatic Reference Counting (ARC) to manage memory. Apple used to require manual memory management in Objective-C, but introduced ARC in 2011 to allow for easier memory allocation and de allocation. One problem with ARC is the possibility of creating a strong reference cycle, where instances of two different classes each include a reference to the other, causing them to become leaked into memory as they are never released. Swift provides the keywords weak and unowned to prevent strong reference cycles. Typically a parent-child relationship would use a strong reference while a child-parent would use either weak reference, where parents and children can be unrelated, or un owned where a child always has a parent, but parent may not have a child. Weak references must be optional variables, since they can change and become nil. A closure within a class can also create a strong reference cycle by capturing self references. Self references to be treated as weak or un owned can be indicated using a capture list. 3.8 Debugging and other elements A key element of the Swift system is its ability to be cleanly debugged and run within the development environment, using a read–eval–print loop (REPL), giving it interactive properties more in common with the scripting abilities of Python than traditional system programming languages. The REPL is further enhanced with the new concept playgrounds. These are interactive views running within the Xcode environment that respond to code or de- bugger changes on-the-fly. If some code changes over time or with regard to some other ranged input value, the view can be used with the Timeline Assistant to demonstrate the output in an animated way. (“The Swift Linux Port”. Swift.org. Apple Inc. Retrieved 3 August 2016.)
  • 24. 20 3.9 Performance Many of the features introduced with Swift also have well-known performance and safety trade- offs. Apple has invested considerable effort in aggressive optimization that can flatten out method calls and accessors to eliminate this overhead.
  • 25. 21 4.0 CONCLUSION Since the language is open-source, there are prospects of it being ported to the web. Some web frameworks have already been developed, such as IBM's Kitura, Perfect and Vapour. An official “Server APIs” work group has also been started by Apple, with members of the Swift developer community playing a central role. A second free implementation of Swift that targets Cocoa, Microsoft's Common Language Infrastructure (.NET), and the Java and Android platform exists as part of the Elements Compiler from Rem Objects Software.
  • 26. 22 5.0 REFERENCES 1. “Swift Has Reached 1.0”. Apple. September 9, 2014. Retrieved March 8, 2015. 2. https://swift.org/blog/swift-3-1-released/ 3. https://swift.org/download/#previews 4. “Swift, Objectively”. Swift is proprietary and closed: It is entirely controlled by Apple and there is no open source implementation. 5. “The Swift Linux Port”. Swift.org. Apple Inc. Retrieved 3 August 2016. 6. Timmer, John (June 5, 2014). “A fast look at Swift, Apple’s new programming language”. Ars Technica. Condé Nast. Retrieved June 6, 2014. 7. Protocol-oriented Programming in Swift. Apple Inc. YouTube. 8. Williams, Owen (June 2, 2014). “Tim Berners-Lee’s sixtieth birthday Apple announces Swift, a new program- ming language for iOS”. The Next Web. Retrieved June 2, 2014. 9. “Apple’s new programming language Swift is now open source”. The Verge. Retrieved 2015-12-05. 10. “Apple Open Sources Swift in Latest Pitch to the Enterprise”. CIO Journal. The Wall Street Journal Blogs. 2015-12-03. Retrieved 2015-12-05. (registration required (help)). 11. Weber, Harrison (June 2, 2014). “Apple announces 'Swift,' a new programming language for macOS & iOS”. VentureBeat. 12. “Strings and Characters”. developer.apple.com. Apple Inc. Retrieved July 16, 2014. 13. “Access Control”. developer.apple.com. Apple Inc. Retrieved October 25, 2016. 14. “Nullable Types”, C# Programming Guide, Microsoft. [40] “Types”. developer.apple.com. Apple Inc. Retrieved July16, 2014. 15. http://www.cultofmac.com/471301/ swift- is- already- of- the- worlds- most- popular- programming- languages/ 16. Platforms State of the Union, Session 102, Apple World- wide Developers Conference, June 2, 2014 17. The Swift Programming Language. Apple. June 2, 2014. Retrieved June 2, 2014. Lay summary.