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.
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).
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 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 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 |
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.
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.
WWL, IHB, CFW drafted the manuscript and prepared the figures. SKEG conceived the idea and supervised all aspects of the manuscript.
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].
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 |