Abstract Introduction Categorization Conclusion Competing Interest Author Contributions References Supplementary materials

Review



A Review of Apps for Programming: programming languages and making apps with apps


Authors: Wei-Ling Wu 1, Ian Hartono Budianto 1, Chun-Foong Wong 1,Samuel Ken-En Gan 1,#


1 Bioinformatics Institute,A*STAR,Singapore 138671

Received: 24 August 2018 | Revised: 21 December 2018 |Accepted: 25 January 2019 | Published: 26 January 2019

Scientific Phone Apps and Mobile Devices (2018) 5:1

DOI:10.30943/2019/25012019

ABSTRACT

With the latest technologies enabling smartphones to work like mini computers, there are now numerous opportunities to use smartphones for the development of mobile apps. Given the multiple Operating Systems (OS) available, there is a significant demand for apps for the various platforms. To meet this demand, some apps exist to impart the necessary knowledge to make apps, while others make the programming of apps possible on these devices. Surveying both the Google Play and Apple App stores, there are a plethora of such programming apps, classified based on the various languages. Since it is the smartphone/IoT revolution that is fueling demand for apps, it is exciting that apps are itself, part of the solution. This review discusses programming languages, their uses, the functions, and the potential and limitations of the phenomenon of using apps to make apps.


INTRODUCTION

The idea of programs programming programs is a theme in many science-fiction movies, especially those that feature machines to taking over the world. While fiction is fiction, what makes science fiction appealing is that it is often built upon possible scientific events, in this case, that programs are indeed made via programs using programming languages. Today, the variety of programming languages has certainly augmented significant advancements in computing and Information Technology (IT). Coupled with engineering, computing has enabled modern society with new conveniences that is revolutionized primarily through improved communication. Gone are the days of wired phones with long lag times in overseas calls. In fact, the bulky mobile phones with only text and call functions are now regarded as museum-worthy antiques. Today, these antiques are replaced by the versatile smartphones that are functionally mini-computers. Within the short era of the revolution, there has been significant progress in the processing power, graphics capabilities, and built-in functions, such that the latest models of smartphones are no longer significantly behind laptops and desktops. Just like the larger computers, smartphones now come preloaded with specific Operating Systems (OS) and apps written in various programming languages. With increasing capabilities given to the smartphones via sensors, memory and storage space, the demand for the use of apps are ever increasing as people rely more and more on their devices in their daily activities.

Within programming languages, the logic, syntax and semantics underlie the programs. Computer languages like “Java”, “C”, “C++”, and “Python” have become increasingly familiar to the lay person and can be easily learnt from online resources. More recently, smartphones apps began to facilitate knowledge acquisition and coding in these languages. When the two largest app stores (Google and Apple app stores) were surveyed as in the 3rd quarter of 2018, we found over 1000 apps on Google Play Store and Apple App Store using keywords related to programming ("Java", " C ", " C++", " Python ", "IDE", and "programming"). Of these, 315 apps on both stores were directly relevant in compiling and teaching code (Figure 1). We categorized these relevant apps based on the programming and markup languages employed for Android and iOS app development. This includes web technologies used for hybrid app development as well as other common programming languages and operating systems (Figure 2).


CATEGORIZATION

Every programming language was invented for a specific purpose. While some are suitable for making mobile apps for the various mobile OS, others still target desktop/laptop OS platforms. Through educational apps that teach programming, learning these languages are made more convenient to indirectly facilitated the creation of apps (mobile based or otherwise). As there are numerous computer languages and Integrated Development Environments (IDEs) for Google's Android operating system and Apple’s Mac operating system, we have included a comprehensive review of the available programming language teaching apps and IDEs available for the development of apps on Google Play and Apple App stores as of 2018. For the benefit of novice programmers, we have also included a brief introduction to the various languages below.

Native App Development

“Native app” refers to an application program that has been solely developed for use on a specific platform or device. Building native applications require the use of the native programming language of the platform, e.g. Swift for iOS, Java for Android. Since native apps are written for specific platforms, generally, they can seamlessly interact with the operating system features and other applications on the platform. The main advantage of native apps to other types such as hybrid apps, is its performance and integration (Ziflaj, 2014).

Android App Development

Android is a mobile operating system created by Andy Rubin, Rich Miner, Nick Sears and Chris White in October 2003 (Callaham, 2018). It utilizes both programming and markup languages. A programming language is the set of rules (i.e. the logic of the program) that instructs the platform to perform a specific task. Some examples of programming languages include Java, C, C#, Kotlin, etc. At the same time a markup language is used to control the presentation of the data, meaning the aesthetic aspect (design and layout) of the user interface. Examples of the markup languages include Hypertext Markup Language (HTML), and Extensible Markup Language (XML). Please refer to Supplementary Table 1 for apps that teach the making of Android apps.


Figure 1: Using keywords of the various compilers and teaching apps of the various programming languages. The top chart shows the relevant apps in the Google (top) and Apple (bottom) apps stores. Complier and teaching apps are presented on the right. Keywords such as "Java", “C ", " C++", " Python ", "IDE", and "programming" were used as search terms in Apple App Store and Google Play Store. Complier and teaching apps were further separated based on programming languages. Non-programming apps are omitted.


Figure 2: Classification of apps, based on major app OS.


Programming languages for Android (Sinicki, 2017) and the available apps on the stores for learning and compiling codes in the respective languages (Supplementary Tables 2- 9):

‣Java

Java is an object oriented and class-based programming language based on the C programming developed in 1995 (Arnold, 1996). Java programs are designed to “write once, run anywhere” (WORA) and it is the official language of the Android operating system, and the second most used language on GitHub. Java applications instruct the syntax and structure of Java keywords and packages and is widely used for numerous developments ranging from Android apps and runnable Java Archive (JAR) files to websites.

‣Kotlin

Kotlin is an object oriented and statically type language that was unveiled by JetBrains in July 2011 (Krill, 2011). It was introduced as another official language for Android development by Google in March 2017 (Shafirov, 2017). Kotlin was designed to run on the Java Virtual Machine, meaning that applications created using Kotlin are compiled to Java bytecode, thus allowing Kotlin apps to run on any machine that supports the Java runtime environment.

‣C#

C# was founded by Anders Hejlsberg (Hasan, 2012) in 2000, and has been commonly used as the backend logic for website development, specifically to create functionalities called event handlers after website design (Troelsen, 2001). However, the biggest drawback was that C# could only run on Windows systems due to its dependency on the .NET Framework. When Microsoft made the .NET Framework open source in 2014, followed by acquiring Xamarin in 2016, the constraints on C# were lifted and could be used in Xamarin Android for the creation of native mobile apps.

‣C/C++

C++ is a programming language that was built off the C language in 1985 by Bjarne Stroustrup (Craig, 1996) (Kernighan, 1978). The syntax of C++ is highly similar to C; thus, many apps consolidate information on both C and C++ (Stroustrup, 1986). Both C and C++ can be used in Android using Android Native Development Kit or NDK (Zuniga, 2016). However, one cannot create an entire app using C or C++ without Java, as NDK only allows the incorporation of C or C++ libraries into the app (Android, 2018).

‣ Python

Python is a general purposed high-level programming language created in 1991 (Chun, 2001). Its inception emphasized code readability and its syntax allows programmers to express concepts in fewer lines of code when compared to C++ or Java. While Android does not support native Python based app development, there are tools available for converting Python developed Android apps into Android Packages (APK) that can be deployed in Android devices successfully.

iOS app development

iOS is a mobile operating system created and developed by Apple Inc. It was originally unveiled in 2007 for iPhone (Honan, 2007). It uses Objective-C as its main native language, but more recently utilized Swift.

Programming languages for iOS

‣ Swift

Swift is a compiled programming language created in the year 2014 (Kochan, 2015). It is the latest programming language used to develop applications for iOS, OS X, watchOS and tvOS platforms. Swift streamlines coding and is more high level towards readable English, a trait similar to languages like Python.

‣ Objective-C

Objective-C is an object orientated programming language created in 1983 (Kochan, 2004) and is used in the development for iOS and OS X. However, it is now slowly being replaced in the Apple ecosystem by Swift.

Hybrid App development

Hybrid apps are web applications (or web pages) based on native OS browsing capabilities: such as UIWebView in iOS and WebView in Android (Dua, 2018). Hybrid apps are usually developed using languages that are commonly used in website development such as Hypertext Markup Language (HTML), Cascading Style Sheet (CSS), JavaScript, etc., which are then wrapped in native applications such as Cordova and Xamarin. Hybrid apps are faster, simpler and easier to maintain when compared to native apps (Ziflaj, 2014).

Commonly used programming and markup languages/framework for Hybrid apps (Supplementary Tables 10)

‣ Apache Cordova (Framework)

Apache Cordova, formerly known as PhoneGap, is an app development framework used for the creation of hybrid apps. It allows for the creation of Android apps using standard web languages such as HTML, JavaScript, and CSS (Fermoso, 2009) . The app is then shown through a “WebView”, even though it is packaged as an app in itself. Using Apache Cordova as a bridge, there can be access to basic native features of the phone, such as the camera.

‣ Xamarin (Framework)

Xamarin is a Microsoft owned California-based software company founded in May 2011 (Icaza, 2011). With a C# shared codebase, Xamarin tools can be used to write native Android, iOS and Windows apps. It is one of the most used hybrid app development frameworks (Jscrambler, 2017).

‣Ionic (Framework)

Ionic framework is a complete open source Software Development Kit (SDK) for hybrid app development created by Max Lynch, Ben Sperry and Adam Bradley of Drifty Co. in 2013 (Drifty, 2016) . It is built on top of Angualr.js and Apache Cordova. It leverages significantly on web technologies like CSS and HTML5. Hybrid apps built with these web technologies can be distributed as native apps and be installed on devices using Cordova.

‣Framework7

Framework7 is a mobile HTML framework used to develop hybrid apps or web apps with iOS and Android native interfaces. It gives developers the opportunity to use web technologies like HTML, CSS and JavaScript for native app development (Kharlampidi, 2016).

‣ React Native

React Native was announced at Facebook’s “React.js Con” conference in February 2015 and made open source in March 2015 (Sekulic, 2017). It allows the development of native apps using only JavaScript on React. It uses the same fundamental user interface (UI) building blocks as regular iOS or Android apps.

‣ Hypertext Markup Language (HTML)

HTML is the standard markup language for creating web pages and web applications. It was created by Time Berners-Lee in 1990 (Nonsense.Ltd, n.d.). Hypertext refers to the way in which the web pages (HTML documents) are linked together, and thus the link available on a webpage is called a Hypertext. The “markup” in its name suggests that it marks a text document with tags that instructs a web browser the way it should be structured and displayed. HTML is the most widely used language for writing web pages. It is usually used with CSS and JavaScript for web development (Mozilla, 2018).

‣ Cascading Style Sheet (CSS)

CSS is a style sheet language used for describing the presentation of a document written using markup languages like HTML. It was first reported by Hakon Wium Lie in October 1, 1994 (Lie, 1994). CSS controls the visual appearance (style) of web pages, including colours, layout, and fonts. It allows one to adapt the presentation to different types of devices with various screen sizes and even printers.

‣ JavaScript (JS)

JavaScript was announced on December 4, 1995 by Netscape Communications Corporation, Mozilla Foundation and Ecma International. It is a high-level, interpreted programming language. Alongside with HTML and CSS, it forms the core technologies of web development (Flanagan, n.d.). JavaScript enables interactive web pages and is considered an essential part of modern web applications. A vast majority of websites in the world today uses JavaScript.

‣ AngularJS

AngularJS is a JavaScript based front-end web application framework for single-page applications. It was released on October 2010 by Google (JS, 2018). The framework adapts and extends traditional HTML to present dynamic content through two-way data-binding (Hevery, 2010) that allows for automatic synchronization of models and views.

Other programming/markup languages and operating systems (Supplementary Tables 11 - 16)

‣ Perl Programming

Perl programming is a general-purpose dynamic programming language created in 1987 (Wall, 1992). This language borrows features from other languages such as C, Shell script, AWK (named after its creators: Aho, Weinberger, and Kernighan), and Stream Editor (SED). It is generally used for graphics, system administration, network programming, finance, and bioinformatics applications amongst others.

‣ PHP Programming

PHP is a server-side scripting language designed for web development. It was created in 1994 by Rasmus Lerdorf (Thahir, 2016) and is a general-purposed programming language that is now used in major OS platforms such as Linux, UNIX, Windows, Mac OS X, and RISC OS. One of the most significant features of PHP is its support for a large range of databases. It can work interdependently with HTML to create websites, and utilizes protocols such as LDAP, IMAP, SNMP, NNTP, POP3, HTTP, and COM to talk to other services.

‣Ruby Programming

Ruby is a dynamic, object-oriented programming language created in 1995 and used to develop website applications (Venners, 2003). Ruby is compatible with many platforms and operating systems. As it is based on high level linguistic syntax, code writing is easier compared to many other languages. Ruby is used to develop software and website designs.

‣ Visual Basic Programming

Visual basic is an IDE programming language created in 1991 (Alan, 1996). It is often used to create simple programs that take advantage of the graphical interface of the Windows OS, such as drawing with the mouse/pen/trackman.

‣ UNIX

UNIX is a multitasking OS (Kernighan, 1984). It operates a graphical user interface (GUI) which is easy to use and is one of the first few operating systems written in C. It can be installed virtually on any computer that is C compliant. UNIX apps normally boast a list of commands used in the OS with the function normally accompanying the commands; thus, the UNIX apps typically serves as a guide or reference.

‣ Windows Phone Programming

Windows Phone is a mobile operating system developed in 2010 (Miniman, 2010). Apps for Windows Phone are based on the C# language (See C# above).

Others

There are apps whose purpose is to facilitate the teaching of multiple programming languages (Supplementary Table 17). While there are numerous programming languages available, but they are less commonly used, e.g. bash programming, etc (see Supplementary Table 18). There are also other apps for teaching children programming that are not discussed in this review. However, they are listed in Supplementary Table 19 for the reader’s additional interest.


Trends of programming language in developing mobile apps

Mobile apps, like computer software are executable programs that are compiled from source codes (developed by various programming languages) using a full integrated development environment (IDE). Both the IDE and programming languages used to develop mobile apps are dependent on the target platforms, such as Android or iOS (Table 1).

The extent of IDE-dependency is varied between the hybrid and native apps. While the hybrid apps could be developed using more varieties of programming languages, the native apps are constrained in a few languages supported in specific IDE. For example, Java or Kotlin is used in Android Studio for Android apps, and Swift or Objective-C in Xcode IDE for iOS apps.

Among these programming languages, Java (in Android Studio) is the most popular language for native android app development (TIOBE, 2018). In the native iOS app development, Swift has been one of the fastest growing programming language (Ben, 2018) since 2014, and been used in most of recent developed iOS native apps.

Table 1: Examples of freely available IDEs for Android and iOS platforms.

IDE Programming Language Platform
Android Studio Java/Kotlin Android
AIDE C/C++/Java Android
DroidScript JavaScript Android
Xcode Swift/ Objective-C iOS
Visual Studio - Xamarin C# Android/iOS
Ionic Web Technologies: HTML, CSS, Jscript etc Android/ iOS
PhoneGap Web Technologies: HTML, CSS, Jscript etc Android/iOS
Corona (Game) Lua Android/iOS
Unity 3D (Game) C# for scripting Android/ iOS

CONCLUSION

With the growth of smartphones and the large number of programming apps, learning is no longer limited to textbooks and computers. Neither is programming. With smartphones, we are now able to learn and do some actual programming on-the-go through these mobile apps. If suitably leveraged upon, the process of making apps and programming would not only be more efficient, improving the productivity of the programmers, but eventually fostering the making of smartphone apps.


COMPETING INTEREST

To avoid conflict of interest, the review was processed double-blinded by an independent member of the editorial boardalong with two independent reviewers.The article-processing-charge for this article was also waived for Bioinformatics Institute, A*STAR.


AUTHOR CONTRIBUTIONS

WWL, IHB, CFW drafted the manuscript and prepared the figures. SKEG conceived the idea and supervised all aspects of the manuscript.


References

Alan, C., 1996. The Father of Visual Basic. [Online] Available at: https://www.cooper.com/alan/father_of_vb.html [Accessed 23 August 2018].

Android, D., 2018. Getting Started with the NDK. [Online] Available at: https://developer.android.com/ndk/guides/ [Accessed 23 August 2018].

Arnold, K. &. G. J., 1996. The Java programming language. Reading,Mass: Addison-Wesley Pub. Co..

Ben, 2018. Swift the fastest-growing programming language, as it breaks into top 10. [Online] [Accessed 20 Dec 2018].

Callaham, J., 2018. The history of Android OS: its name, origin and more. [Online] Available at: https://www.androidauthority.com/history-android-os-name-789433/ [Accessed 23 August 2018].

Chun, W., 2001. Core python programming. Upper Saddle River,: NJ:Prentice Hall. 2014

Craig, D., 1996. C++ Background and History. [Online] Available at: http://www.cs.mun.ca/~donald/bsc/node6.html [Accessed 23 August 2018].

Drifty, I., 2016. Ionic Documentation Overview - License, s.l.: Drifty, Inc.

Dua, K., 2018. A Guide to Mobile App Development: Web vs. Native vs. Hybrid. [Online] Available at: https://clearbridgemobile.com/mobile-app-development-native-vs-web-vs-hybrid/ [Accessed 23 August 2018].

Fermoso, J., 2009. PhoneGap Seeks to Bridge the Gap Between mobile App Platforms. [Online] Available at: https://gigaom.com/2009/04/05/phonegap-seeks-to-bridge-the-gap-between-mobile-app-platforms/[Accessed 23 August 2018].

Flanagan, D., n.d. JavaScript - The definitive guide (6ed.).p.1. In: s.l.:s.n.

Hasan, N., 2012. All About C# Programming: History of C# Programming. [Online] Available at: http://aboutcsharpprogramming.blogspot.com/2012/09/history-of-c-programming.html[Accessed 23 August 2018].

Hevery, M., 2010. Google Developers Blog: Better Web Templating with AngularJS. [Online] Available at: https://developers.googleblog.com/2012/06/better-web-templating-with-angularjs-10.html[Accessed 23 August 2018].

Honan, M., 2007. Apple unveils iPhone. [Online] Available at: https://www.macworld.com/article/1054769/smartphones/iphone.html[Accessed 23 August 2018].

Icaza, M., 2011. Announcing Xamarin. [Online] Available at: https://tirania.org/blog/archive/2011/May-16.html[Accessed 23 August 2018].

JS, A., 2018. AngularJS-Superheroic javaScript MVW Framework. [Online] Available at: https://angularjs.org/[Accessed 23 August 2018].

Jscrambler, 2017. 12 Frameworks for Mobile Hybrid Apps. [Online] Available at: https://blog.jscrambler.com/10-frameworks-for-mobile-hybrid-apps[Accessed 23 August 2018].

Kernighan, B. &. P. R., 1984. The Unix programming environment. Englewood Cliffs,: N.J:Prentice-Hall.

Kernighan, B. &. R. D., 1978. The C programming language. Englewood Cliffs: N.J:Prentice-Hall.

Kharlampidi, V., 2016. Framework7. [Online] Available at: https://framework7.io/[Accessed 23 August 2018].

Kochan, S., 2004. Programming in objective-C. Indianapolis: Ind:Sams.

Kochan, S., 2015. Programming in Swift. Boston: Addison-Wesley.

Krill, P., 2011. JetBrains readies JVM-based language. [Online] Available at:https://www.infoworld.com/article/2622405/java/jetbrains-readies-jvm-based-language.html[Accessed 23 August 2018].

Lie, H. W., 1994. Cascading HTML style sheets -- a proposal. [Online] Available at: https://www.w3.org/People/howcome/p/cascade.html [Accessed 23 August 2018].

Miniman, B., 2010. Thoughts on Windows Phone 7 Series (BTW: Photon is Dead). [Online] Available at: https://pocketnow.com/thoughts-on-windows-phone-7-series-btw-photon-is-dead [Accessed 23 August 2018].

Mozilla, 2018. Learn to style HTML using CSS. [Online] Available at: https://developer.mozilla.org/en-US/docs/Learn/CSS [Accessed 23 August 2018].
Nonsense.Ltd, Q., n.d. Free Lessons To Learn To Code HTML & CSS Today. [Online] Available at: https://html.com/[Accessed 23 August 2018].

Sekulic, R., 2017. A brief history of React Native. [Online] Available at: https://new.shoutem.com/blog/2016/09/brief-history-react-native/ [Accessed 23 August 2018].

Shafirov, M., 2017. Kotlin on Android. Now official. [Online] Available at: https://www.infoworld.com/article/2622405/java/jetbrains-readies-jvm-based-language.html[Accessed 23 August 2018].

Sinicki, A., 2017. I want to develop Android Apps - What languages should i learn. [Online] Available at: https://www.androidauthority.com/develop-android-apps-languages-learn-391008/ [Accessed 23 August 2018].

Stroustrup, B., 1986. The C++ programming language. Reading, Mass: Addison-Wesley.

Thahir, S., 2016. The Evolution of PHP - Infographic. [Online] Available at: https://www.cabotsolutions.com/2016/06/the-evolution-of-php-infographic/ [Accessed 23 August 2018].

TIOBE, 2018. TIOBE Index for December. [Online] Available at: https://www.tiobe.com/tiobe-index/ [Accessed 20 Dec 2018].

Troelsen, A., 2001. C# and the .NET platform. Berkeley: CA:Apress

Venners, B., 2003. [Online] Available at: https://www.artima.com/intv/ruby.html [Accessed 23 August 2018].

Wall, L. &. R. L. S., 1992. Programming perl. Sebastopol,CA: O'Reilly Associates. Ziflaj, A., 2014. Native vs Hybrid App Development. [Online] Available at: https://www.sitepoint.com/native-vs-hybrid-app-development/ [Accessed 23 August 2018].

Zuniga, R., 2016. Using C and C++ Code in an Android App with the NDK. [Online] Available at: https://www.sitepoint.com/using-c-and-c-code-in-an-android-app-with-the-ndk/ [Accessed 23 August 2018].


Supplementary materials

Table 1.Examples of relevant programming apps for Android programming. These apps were available in Google Play Store as of late 2018.

Application OS Description App type Hardware
Learn Android programming Android Contains chapters on android programming. It also explains the structure on android programming Hybrid None
Live android programming Android Contains sample codes and shows output Native None
Tutorial for Android: Examples Android Contains a complete guide for learning Android Application development including tutorials, examples and quiz Native None
Learn Android App Development: Tutorials Android Contains a complete set of tutorials for android app development ranging from beginner to professional Native None
Master Android Android Contains tutorial on android app development, allows discussion related to android projects with friends and developers in app Native None

Table 2.Examples of relevant programming apps for Java programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Bright M IDE Android Read and run Java classes and codes Native None
Learn Java Android Contain tutorials, sample code and forum for discussion Native None
Java Programming Android Guide on core Java programming tutorials, run program with output and quizzes Hybrid None
Java Manager; Emulate Java Android An IDE to compile and run Java classes Native None
Java Pattern Programs with Output Android Contains sample code and run sample codes with output and detail explanations Native None
Java programming via Videos Android Java guides solely through videos Hybrid None
400+ Java programs with output Android Contains sample codes and output of the codes Native None
Java Study iOS Contain tutorials and quizzes to learn Java Programming Hybrid None
Java Programming: Learn Coding iOS Contain tutorials, programs and quiz to Java Programming Hybrid None
Pico Compiler – Java IDE & API iOS Offline Java compiler to compile and run Java code with output Native None
Learn Java Programming Free iOS Provide sample codes for practices and tutorial on Java Native None
Jedone – Compiler for Java iOS Compile and run Java program with output and detail error message Native None

Table 3.Examples of relevant programming apps for C programming. These apps were available in Apple App Store and Google Play Store as of late 2018.

Application OS Description App type Hardware
Basics of C Programming Android Explains C programming in terms of structure, keywords and syntax Native None
C programming Android Contains sample codes, output, tutorials, FAQ and exam questions Native None
Learn C Programming Android Contains glossary of basic tutorials, practice programs and coding with C language with online compiler Hybrid None
C Programming primer Android Consist of terms used in C programming and explanations on how to use the codes Native None
C programming and data structure Android/iOS Contains online resources regarding c programming Hybrid None
C programming language iOS Run C language codes and classes Hybrid None

Table 4.Examples of relevant programming apps for C# programming. These apps were available in Apple App Store and Google Play Store as of late 2018.

Application OS Description App type Hardware
Learn C# (C Sharp) complete guide Android Tutorials on C# base on chapters Native None
Learn C# Android Theory on C# background and source codes. Discussions in forum on C# related topics Native None
C# practice questions Android MCQ questions on C# programming Native None
C#Shell Android Run C# codes and display output Hybrid None
Learn C# programming Android Guide to C# programming. There are even step by step guides that could be followed when programming on the desktop Hybrid None
Learn C# Programming Android Explanations on the structure of C# programming with sample codes Native None
Learn C# - .Net C Sharp Programming Tutorial App Android Provide lectures on C#, contains a glossary of terms and the syntax used in C# Native None
.Net Framework Programming Android Contain notes, quiz, blog and video on .Net Framework Programming Native None
C# Programming Language iOS Run C# codes Hybrid None
C# 5.0 Programming Free iOS Consist of tutorials and sample code to teach C# programming Hybrid None
Learn C# iOS Learn C# through tutorials and follow-up quizzes, allows the editing and coding of C# codes and the discussion of C# related topics on forum Native None

Table 5.Examples of relevant programming apps for C/C++ programming. These apps were available in Apple App Store and Google Play Store as of late 2018.

Application OS Description App type Hardware
CppDroid Android Runs C/C++ codes and classes Native None
Cxxdroid Android Compile codes offline and run codes with error checking Native None
C/C++ Programming language iOS Consist of tutorials to C/C++ programming, ability to compile code offline and share Native None
Learn to Code with C++ iOS Lectures and tutorials about C/C++ programming with different level of difficulties Native None

Table 6.Examples of relevant programming apps for C++ programming. These apps were available in Apple App Store and Google Play Store as of late 2018.

Application OS Description App type Hardware
C++ Tutorial for Beginners A Complete Guide Android C++ guides developed specifically for students, it covers almost all basic concepts Native None
CppDroid – C/C++ IDE Android It takes in sample codes and display the output result Native None
Test Your C++ Programming Android Contain quizzes on C++ Native None
C++ programming Android Consist of information on C++. This includes videos and explanations on the terms used in C++ programming Native None
Learn C++ Android Consist of 80 lessons about C++ that is being split into 8 levels that covers most of the C++ topics Native None
C++ Programming Language iOS Runs C++ codes and classes Hybrid None
Learn to Code with C++ iOS Contain Simple code, tutorials to learn about C++ programming across different levels of difficulties Hybrid None

Table 7.Examples of relevant programming apps for Python programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Python Challenge Android Consist of programming quizzes and questions Hybrid None
Python documentation Android Consist of a glossary of terms for python syntax Hybrid None
QPython3 -Python3 for Android Android Edit, compile and run Python codes Hybrid None
Quiz and Learn python Android Consist of quizzes and questions on python programming Native None
Learn Python Android Contain tutorials, sample codes and quizzes on Python, compile and run Python codes with output, Q&A discussions on Python topics Native None
Coding Is Good iOS Consist of interactive Python lessons and quizzes Hybrid None
Learn Python and Scratch iOS Contain video lessons on Python for kids Hybrid None
Learn to Code with Python iOS Contain tutorials on python Hybrid None
Pythoni iOS Learn, run and share python code Hybrid None
Pythonista 3 iOS Run python code and create 2D game using animation etc. Hybrid None
Learn to Code with Python iOS Contain tutorials, sample codes and quizzes on Python, compile and run Python codes with output, Q&A discussions on Python topics Native None

Table 8. Examples of relevant programming apps for Swift programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn Programming with Swift Android Contain tutorials, sample codes and quizzes on Swift, compile and run Swift codes with output, Q&A discussions on Swift topics Native None
Learn Swift Programming -iOS Android Learn Swift Programming with examples offline, knowledge on developing iOS app Native None
Swift 4.0 Android Contain tutorials on Swift programming Native None
Learn Code with Swift iOS Contain tutorials, sample codes and quizzes on Swift, compile and run Swift codes with output, Q&A discussions on Swift topics Native None
Easy to Use Swift 2.0 to programming iOS Consist of lectures and tutorials to teach Swift programming Hybrid None
Kodify iOS Consist of lectures and sample code regarding Swift programming Hybrid None

Table 9.Examples of relevant programming apps for Objective-C programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
ObjectiveC – TutorialPoint Android Contain offline tutorials for Objective C Native None
Tutorial For Objective C Android Contain tutorials for Objective C Native None
Learn iOS programming Android Contain tutorials and basic introduction to iOS such as the structure Native None
Learn Objective C Android/iOS Contain Objective C Tutorials Hybrid None
Objective C Reference Lite iOS Contain sample codes and quizzes to learn Objective C programming Hybrid None
Objective C tutorials for xcode iOS Tutorials and sample code to teach Objective C Hybrid None
Obj-C Programming Language iOS Run courses on programming for Objective-C and online language reference and program samples Hybrid None
Objective C Learn iOS Contain tutorials and articles on Objective- C Hybrid None

Table 10.Examples of relevant programming apps for web development (HTML, CSS, JavaScript). These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn HTML Android Contain tutorials, sample codes and quizzes on HTML, compile and run HTML codes with output, Q&A discussions on HTML topics Native None
Web Development (HTML, CSS, JS) Android Contain tutorials on HTML, CSS and JavaScript. It also allows the editing, compiling and running of codes Native None
Learn CSS Android Contain tutorials, sample codes and quizzes on CSS, compile and run CSS codes with output, Q&A discussions on CSS topics Native None
Learn CSS Programming Android Contain CSS tutorials and FAQ offline Native None
Learn JavaScript Android Contain tutorials, sample codes and quizzes on JavaScript, compile and run JavaScript codes with output, Q&A discussions on JavaScript topics Native None
JS Run Android Edit, compile and run JavaScript with output Native None
Html+css+js – web designer, html5 iOS Learn, write, share and run HTML, CSS and JavaScript codes Hybrid None
HTML 5 Builder iOS Run HTML codes Hybrid None
HTML & HTML5 Editor iOS Editor that edit and run HTML codes Hybrid None
JavaScript Anywhere iOS Run JavaScript, HTML and CSS codes Hybrid None
JS Programming Language iOS Run JavaScript code and class Hybrid None
Top JavaScript Tutorial iOS Contain tutorials and sample codes to learn about JavaScript Hybrid None
JavaScript Tutorials and FlashCards iOS Contain tutorials to learn about JavaScript Hybrid None
Learn Web Programming and HTML iOS Consist of lectures, tutorials and quizzes to teach web programming Hybrid None
Time to code iOS Consist of tutorials with sample codes and editor to learn about web programming Hybrid None
Web Development Easy Pocket Guide Android Contain tutorials and guides to web technology languages such as PHP, AngularJS Hybrid None

Table 11.Examples of relevant programming apps for Perl programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Pearl Programming Android Contain tutorials that cover a range of Perl programming topics Native None
Learn Perl Programming Android Contain tests and tutorials on key concepts of Perl language Hybrid None
Perl Programming Language iOS Compile and run Perl codes Hybrid None
perli iOS Contains editor and sample codes to learn about Perl Hybrid None

Table 12.Examples of relevant programming apps for PHP programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn PHP Complete Guide (Offline) Android Contain tutorials for PHP programming Native None
PHP Documentation (Learn PHP) Android Contain information and guides regarding php syntax Hybrid None
Learn PHP programming Android Contain sample codes and explanations Native None
Learn PHP offline Android/iOS Contain tutorials and sample codes about PHP programming Hybrid None
Learn PHP Android/iOS Contain PHP tutorials with sample codes to learn about PHP programming Hybrid None
PHP Bites iOS Contain lessons on PHP, run sample codes to view output, learn to build dynamic website with PHP Hybrid None
L2Code PHP iOS Contain text editor to edit PHP codes and tutorials for beginner Hybrid None
Learn PHP -simple PHP tutorials iOS Consist of PHP tutorials and samples to help beginners with PHP programming Hybrid None
DraftCode Offiline PHP IDE iOS Compile and run PHP codes Hybrid None

Table 13.Examples of relevant programming apps for Ruby programming. These apps were available in Apple App Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn Ruby Android Contain tutorials, sample codes and quizzes on Ruby, compile and run Ruby codes with output, Q&A discussions on Ruby topics Native None
Learn Ruby Complete Guide (Offline) Android Contain complete reference guides on Ruby programming Hybrid None
Ruby programming course Android Contain tutorials and videos for Ruby programming Hybrid None
Ruby Programming Docs Android Contain offline Ruby guides Native None
Ruby Programming Language iOS Run Ruby codes and classes Hybrid None
Learn to Code with Ruby iOS Contain tutorials, sample codes and quizzes on Ruby, compile and run Ruby codes with output, Q&A discussions on Ruby topics Native None
Rubyi – run code, autocomplete iOS Run, compile and share Ruby scripts Native None
Learn Ruby Programming Free iOS Contain lessons on Ruby with detail explanations and examples Native None

Table 14.Examples of relevant programming apps for Visual Basic programming. These apps were available in Apple App Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn Visual Basic 2017 Android Contain visual basic tutorials with videos Hybrid None
Learn VB.Net Programming Android Contain tutorials on visual basic programming Hybrid None
Visual Basic Language iOS Compile, run and edit visual basic codes Hybrid None
Visual Basic Programming Language iOS Run visual basic codes and classes Hybrid None

Table 15. Examples of relevant programming apps for UNIX programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Unix tutorial Android Complete tutorial on Unix and Shell programming App type Hardware
Learn Unix & shell Programming Android Contain sample codes with explanations App type Hardware
Learn UNIX and shell programming iOS Contain tutorials and quizzes to learn about UNIX programming App type Hardware

Table 16.Examples of relevant programming apps for Windows Phone programming. These apps were available in Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Learn windows 8 programming Android Contains a glossary of terms and tutorials on windows programming Native None
Windows phone programming Android Tests and tutorials on key concepts of windows phone programming Native None

Table 17.Examples of relevant programming apps for mixed language programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
AIDE Web Android Write and compile HTML, CSS and JavaScript Native None
AWD Android Run PHP, HTML, CS, JS codes and a compiler to edit codes Native None
Basics of programming Android Consist of chapters on programming as a whole Native None
Codeanywhere Android A simple code editor allowing users to connect to cloud storage and access files Native None
Codebook C, C++, JAVA, DBMS, DS, CN Android Consist of quizzes and questions regarding specific programming languages. Video guides and step by step solution with explanation Native None
Codebox Android Consist of syntax and glossary of terms for several programming languages. Sample codes consisting of explanations on the logics behind the program Native None
DroidEdit (Free code editor) Android Write code for languages C, C++, C#, Java, HTML, CSS, Javascript, Python, Ruby, Lua, LaTeX, SQL etc Native None
Learn Programming Android Provide a glossary of programming terms and source codes for HTML5, JQuery, Git, etc. Hybrid None
Object oriented programming Android Teaches the backbone and structure of programming Native None
Pocket Code: Learn programming Android Targeted to new programmers and children. Programming is done more interactively and more of pseudo codes. Hybrid None
Programming Assessment (Pro) Android Contain quizzes on C, C++ and Java Native None
Programmer’s Dictionary Android Consist of a glossary of terms used for programming and others. This includes algorithms, asci number etc. Native None
Programming Hub, Learn to code Android Provide more than 18 programming language, with tutorials, quizzes and compiler to run the program Native None
Coding Quiz Android Contain quizzes on more than 10 languages with detail answers Native None
Programming Quiz LITE Android Contain quizzes on overall programming and not language specific Native None
Programming Test Android Contain testes for C, C++, DBMS, Java and Java interview. There is also some information regarding these languages before taking the tests Hybrid None
Learn programming Android Consist of tutorials for languages such as Angular JS, C, Java etc. It contains quizzes and explanations on programming terms Native None
Programming languages quiz Android Consist of quizzes for python, C#, Java, php and python Native None
Programming teacher Android Consist of tutorials for C, C++, Java, android, .net and php Native None
Programming Tutorials Android Consist of guides on several programming languages Hybrid None
Treehouse Android Teaches website development such as HTML and CSS. Videos to the topics are also shown Hybrid None
SoloLearn: Learn to code for Free Android Large collection of free code content from beginner to pro Native None
Udacity Learn Programming Android Run courses on multiple programming languages, consisting of tests and quizzes Hybrid None
Coursera: Online courses Android/iOS Run courses on multiple programming languages, consisting of tests and quizzes Hybrid None
Udemy – Online Courses Android/iOS Contain video courses across multiple programming languages Hybrid None
Udacity iOS Run courses across multiple programming languages, consisting of tests and quizzes Hybrid None
Programming Hub: Learn to code iOS Interactive courses across multiple languages such as C Programming, Java, JavaScript, Python etc. Native None
Mimo: Learn to Code iOS Contain tutorials on app, web and game development Native None
Web Development GoLearningBus iOS Contain sample codes and tutorials on web technologies such as HTML, CSS, PHP etc. Native None
ProgPub: Web and Mobile Development iOS Monthly electronic magazine for web and mobile development Hybrid None
Mobile C iOS Can run a mixture of programming language such as HTML, SQL and more Hybrid None
CodeToGo iOS Run a mixture of programming language such as PHP, Python, Ruby and more Hybrid None
Against The Clock – Programming language iOS Contain quizzes on C, C++ and C# Hybrid None
OffiIDE Integrated Development Environment iOS Create and edit source codes in C, Java, PHP, HTML, Python, Perl and Pascal Native None

Table 18.Examples of relevant programming apps for other programming. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Haskell Tutorial Android Contain tutorials on Haskell programming Hybrid None
Learn COBOL programming Android A guide to COBOL programming which includes sample codes and videos Hybrid None
Linux System Programming Android Contain sample codes on linux syntax and programming Native None
Learn Offline vba Programming Android Teaches basics of VBA and each of the section contains related topics with simple and useful examples Native None
Programing for Raspberry Pi Android Contain videos on the structure of the device and coding Hybrid None
Servlet Programming Android Contain guides and sample codes Native None
Assembler Programming Language iOS Run Assembler codes Hybrid None
Bash Programming Language iOS Runs Bash codes Hybrid None
Basic Programming Language iOS Run Basic code Hybrid None
Brace Editor iOS Editor that allows the write and compile of various programming language Hybrid None
Cobol Programming Language iOS Contain sample codes and console to run codes Hybrid None
Groovy Programming Language iOS Run Groovy codes and classes Hybrid None
Haskell Programming Language iOS Explanations on Haskell programming Native None
JSON Pro Free iOS Contain tutorials and sample code for beginners Hybrid None
Learn Programming for Raspberry Pi iOS Lectures and quizzes on Raspberry Pi Native None
Unix/Linux CLI Commands iOS Contain commands used in Unix/Linux system Hybrid None
Lua Studio iOS Contain consoled that can run Lua script Hybrid None
Pascal Programming Language iOS Run Pascal codes Hybrid None
R Programming Language iOS Run R codes and classes Hybrid None
SQL Programming Language iOS Run SQL codes Hybrid None
Scala Programming Language iOS Run Scala codes Hybrid None
Scheme Programming Language iOS Run Scheme codes Hybrid None

Table 19.Examples of relevant apps for Programming based game. These apps were available in Apple App Store and Google Play Store as of 3rd quarter of 2018.

Application OS Description App type Hardware
Lightbot: Code Hour Android Teaches the fundamental of programming in a more interactive manner to that is suitable for children Native None
Lightbot Coding Android Programming game for children to learn programming Native None
Lobot- Robot programming Android An interactive way to teach children programming Native None
codeSpark Academy & The Foos Android/iOS A game suitable for children that teaches the logic behind coding Native None
Lightbot: Code Hour Android/iOS Interactive way of teaching programming through games for children Native None
Move the Turtle. Learn to code iOS Programming game for children to learn programming Native None
Robot school. Programming game iOS An interactive way of learning programming for children Native None