In the creative process, there are always some points of choice and contradictions. While UX designers are debating about Photoshop vs Sketch themes and give their opinions on efficient prototyping tools, iOS developers also have their own big debate. Today we are going to pitch in and add some of our thoughts to this global discussion of which programming language is better, Objective-C or Swift. We asked Tubik CTO and experienced iOS developer Maria Nazarenko to share her opinion with Tubik Blog readers.
Let’s start with a tiny bit of history. The first and, therefore, the eldest in the discussed pair of programming languages was Objective-C. Primarily it saw the light of the day in early 1980s and was created by Brad Cox. So, one of the points that could be definitely applied to this programming language is that it’s really tried and true and tested by several generations of developers.
At the moment, Objective-C is commonly described as the general-purpose, object-oriented programming language adding Smalltalk-style messaging to the C programming language. Before Swift came into play, Objective-C had been the main programming language used by developers for OS X and iOS operating systems, and their APIs.
Swift, introduced at Apple’s 2014 WWDC, brought its own dose of revolution. In the general description, Swift is a general-purpose, multi-paradigm, compiled programming language broadening the previous scope of operating systems as it was developed for iOS, OS X, watchOS, tvOS, and Linux. Swift was designed to enable work with Apple’s Cocoa and Cocoa Touch frameworks as well as the large body of Objective-C code already written for Apple products.
Initially Swift was intended to be more resilient and safer than Objective-C, and also more concise and developer-friendly. It was built with the LLVM compiler framework including in Xcode 6 and using the Objective-C runtime library that enables C, Objective-C, C++ and Swift code to run within one program. Therefore, it enhaces broadening professional horizons for developers making their work more efficient.
That was the milestone when developers started their discussion of what is better, tradition or innovation.
What is better: Objective-C or Swift?
Some time ago expressing our opinion in the hot global discussion about the choice between Photoshop and Sketch we mentioned: “The answer we would like to give is really simple. There is no any vs. There shouldn’t be any war between the options which can complement each other. Obviously, now there is no any perfect and ideal software for design: if it existed, everybody would use only this ideal choice and there wouldn’t be any need for fight.”
It seems that in iOS development the situation of today is really similar. The choice is not so obvious as it could seem even after reading about all the extended functionality of Swift in comparison with Objective-C. In practice Objective-C is checked and tested over the years while Swift is young and new. A huge bulk of products have been developed in Objective-C, so transition to the other perspective is definitely taking some time and effort.
Briefly characterizing the programming languages according to her extended practical experience in iOS development, Tubik CTO Maria mentions that although Objective-C is older and common, Swift could be described as more simple in syntax and stable in the work process.
Which programming language is more useful to know?
Due to Xcode, which is the integrated developing environment (IDE) with a set of software development tools, iOS developers can work applying either Objective-C or Swift, in fact, using the same developer tool.
As long as Objective-C exists much longer, it’s natural that plenty of simple and complex applications have already been accomplished with this language. Not knowing Objective-C and starting straight from Swift can limit a developer’s professional flexibility. It can be especially obvious in cases when developers have to update existing products.
Sometimes it happens that developers, knowing only Swift, recommend rewriting existing (perhaps big or even huge) pieces of code from Objective-C to Swift, the customers logically do not see this acceptable and certainly do not accept the necessity to pay for this work.
Considering this, the best option is to know both languages. That gives developers natural professional flexibility for any task and environment they have to tackle with in current projects. There are two strategies that mostly depend on the time available.
In case if there is considerable amount of time between studying basics and applying them into real practice, our advice is to start with Objective-C. Although it is often described as more complicated, it establishes a solid foundation of basic principles and routine of creating applications for and using iOS system. On this basis, learning another iOS language such as Swift which is syntactically simpler will not seem too hard.
However, there can be also another strategy, a bit more dynamic than the previous one and applicable for those who don’t have enough time in their disposal needing to start actual work asap. In this case, you can start with Swift as it is easier in syntax and more similar to other programming languages so it will take less time to start practical coding. Getting the basics of development in this way, don’t forget to add Objective-C to the practice and polish skills in both languages. It will definitely give result if approached thoughtfully and rigorously.
Here at Tubik Studio, we believe that the only single thing that a designer and developer should think about is the high quality of the final product. The highest. Quality. Possible. Period.
Any tool and method chosen for this aim is a good way as long as it provides an efficient product to the client and the final user.
Don’t miss our next articles on iOS development, giving practical tips and case studies of coding complex design decisions.