CSC/ECE 517 Fall 2014/ch1a 13 va

From Expertiza_Wiki
Revision as of 03:10, 20 September 2014 by Vboddul (talk | contribs) (→‎References)
Jump to navigation Jump to search

Playgrounds with Swift in XCode v6.0

Fig 1: Playgrounds with Swift in Xcode v6.0
Fig 1: Playgrounds with Swift in Xcode v6.0

On June 2, 2014 at the World Wide Developers Conference, Apple announced version 6 of Xcode. Features include Playgrounds live debugging tools, as well as an entirely new programming language called Swift. 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 scripting systems like Python than traditional systems programming languages. The REPL is further enhanced with the new 'playgrounds' concept; 'playgrounds' are interactive views running within the Xcode environment that respond to code or debugger changes on-the-fly. If the code in question 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 fashion.

Apple claims that Swift "is the first industrial-quality systems programming language that is as expressive and enjoyable as a scripting language."<ref name="Topic">Topic Document</ref>


Background

Xcode

Xcode is an Integrated Development Environment (IDE) developed by Apple for developing software for iOS and OS X. The Xcode suite consists of the IDE, Apple’s developer documentation and a built-in interface builder. It is shipped free with Mac OS X 10.3, but is able to develop OS X applications that can run on any version of OS X. It extends and replaces Apple's earlier tool, Project Builder, which was inherited from NeXT. However, Xcode officially does not work in Mac OS X 10.2.It works hand in hand with Interface Builder (also inherited from NeXT), a graphical tool used to create user interfaces.

Xcode includes GCC, and can compile C, C++, Objective C++, Java, and Objective C source code with a variety of programming models, including but not limited to Cocoa, Carbon, and Java. The latest Xcode version 6 includes Playgrounds which has an interactive sidebar to display the results of the code on-the-fly.

Swift

Swift is a new programming language that adopts safe programming patterns and makes programming flexible. Swift combines the best of both C and Objective-C. It integrates both - the procedural features like types and operators as well as the object-oriented features such as classes and protocols. It adopts readability and dynamic object model from Objective-C and has added new features like blocks, collection literals and modules, fast performance. Swift has many advantages over Objective-C, like being more type-safe, having more natural and concise syntax, no need for header/implementation files. It has simplified memory management with Automatic Reference Counting. Swift is a fast and powerful programming language that is easier and more fun to implement.

Playgrounds

Playgrounds<ref>Playgrounds</ref> enable the interactive experience of a script language, even though Swift compiles to highly-optimized native code. Type a line of code and the result appears immediately. If your code runs over time, for instance through a loop, you can watch its progress in the Timeline assistant. The Timeline displays variables in a graph, draws each step when composing a view, and can play an animated SpriteKit scene.

Getting Started with Playgrounds

On opening Xcode6, select "Get started with a Playground". Default is a Hello Playgrounds program.<ref>Introduction to Swift Playground</ref>

Playgrounds with Swift introduce user friendly, clean code. Writing code in poetry-method has become simpler with Swift. Inclusion of packages is not necessary and heavy syntax can be ignored. Creation of class is not required while writing code in Swift. Writing "str" in Swift would display the value of "str" on Playground directly. Semicolons are not required at the end of each line. Datatype can be stated in the code, but it is not required as Swift implicitly assigns the datatype.


If the datatype of a variable is explicitly stated, the variable cannot be assigned a value that does not belong to its datatype. Such an assignment results in an error. Swift introduces a new keyword "let" for declaring constants. If the value of a constant declared with "let" is changed, an error is displayed. While iterating through a loop in Swift, the value of the iterator is shown on the console on-the-fly.

More About Playgrounds

Playgrounds files are used for testing and prototyping code. The results in the sidebar are displayed in black but during the modification of the code, the results temporarily change to gray during processing. ImageView can be used to display images.


Read-Eval-Print-Loop (REPL)

REPL (Read Evaluate Print Loop)<ref>REPL</ref> is an interactive version of Swift. It is a procedure that loops in following iterations:
Read: Read is called and characters in user input are read.
Eval(uate): The input is then evaluated and returned
Print: The evaluated result in printed in a textual representation for the users
REPL in Swift enables the user to evaluate and interact with his code in a script-like environment.

Viewing Result

To view graphical display of results, like images or strings, you can click on the Quick Look (quicklook.png ) button. Access to Quick Look buttons can be gained by moving the pointer along the right edge of the sidebar.<ref>View Results in Playground</ref>

Assistant Editor button can be used to examine values that change throughout the execution of the code.
i. Interim value of a code like for loop can be viewed through Value History button ()
ii. Live view item can be used to view the drawing results. Live view item draws itself in response to the code.

Timeline

The progress of results can be seen on the timeline. The time limit can also be set for the timeline to play back values. An item can be collapsed or expanded by clicking on the expression at the top of the item. An item can be removed from the timeline by clicking on the close button on the upper left corner of the item. The timeline can be closed by clicking on the close button on the Assistant Editor jump bar. It can be opened by clicking on the Assistant Editor button in the workspace toolbar or by clicking any Value History button. The value of iterator in a loop can be seen by viewing the timeline. The timeline can display different types of items depending on the input. The value of iterator is shown as graph where the x-axis represents the execution time in seconds and the y-axis represents different values for the iterator. The graph changes on changing the value of the iterator:

Error

The error messages in Playground is shown as a ! icon. The details about the error can be viewed by clicking on this icon. The image below shows the error message that will be displayed if a variable declared as a string is assigned an integer value.

Limitations of Playground<ref>Limitations of Playground</ref>

i Playgrounds should not be used for performance testing as logging of results will dominate the runtime.
ii Playground does not support On-device execution.
iii Does not support custom entitlements.
iv Playgrounds can not be used for things that require user-interactions

Issues in Beta Playground

i. There are some flaws in beta release which can harm the system of user, like erasing hard drive.

ii. It was reported by 9to5Mac that a developer discovered that the application is not sandboxed, i.e., Swift code entered in a playground has access to the entire computer sytem. The realtime nature of Playgrounds means that you don't even have to press ENTER to start the erasing process!<ref name= "issues in beta playground">Issues in beta Playground</ref>

Recent Updates

  • On September 9th 2014, Apple published in their developer's blog that 'Swift Has Reached 1.0'.
  • On September 15th 2014, Apple announced Xcode 6.1 beta 2.<ref>Apple Developer News and Updates</ref>

See Also

References

<references/>