3 answers
Updated
632 views
Is it easier to program for mobile or pc applications?
So many people today use their phones for everything and so many programs exist on the multiple app stores. Is it easier to program for the app store or for for windows applications?
3 answers
Jared Chung
CareerVillage.org TeamExecutive Director at CareerVillage.org
283
Answers
Palo Alto, California
Updated
Jared’s Answer, CareerVillage.org Team
Desktop applications can often be easier to program than mobile applications. I'm assuming that the programs you're looking to write have an equivalent set of features between desktop and mobile (i.e., a to do list app, or an egg timer app, or a chat app), and I'm also assuming that you are equally familiar with programming on either platform. And lastly, I'm assuming that you're asking because you're trying to figure out where you should start learning if you want to try out some programming.
A few things make mobile programming a tiny bit more complex:
- The programming takes place on a desktop, but the app works on a mobile phone, so you end up having to install some specialty software to deal with that. Emulators or simulators are programs that "emulate" what a mobile phone would do with your program, but they aren't always a perfect 1:1 match for a real-world mobile phone. That can sometimes allow for bugs that are hard to detect until you have an app running on a real device.
- There's a very wide variety of mobile phone devices and operating system versions that need to be tested and/or designed for when you're planning to maintain a mobile app
- Mobile apps tend to be distributed through the app stores, which means that you have to apply for approval from those app stores, and when you make changes to your app you have to re-submit the updates through those stores. The app stores sometimes will quickly approve changes, but sometimes they will decline your changes, so that introduces a bit more work into your process.
All of this said, I want to add a few other comments:
- In general, I'd always start a new project using whatever languages or frameworks are most familiar to me, unless I'm explicitly trying to use the project to learn something new or play around with a new technology. As a programmer, even when I work with technology I am familiar with, I end up hitting a lot of challenges and learning a lot. So when I'm working with something unfamiliar, I always expect to spend a very large amount of my time bumping into bugs and reading documentation. "Drinking from a firehose" of information, as they say.
- You mentioned mobile apps and PC applications, but you didn't explicitly mention web applications. If you haven't looked into programming web applications, I'd encourage you to take a look at that as well to see if that's something you like. I've found in my past experience that programming for web applications is among the more accessible first steps.
- You could also consider programming hardware. For example the raspberry pi or other micro-computers can be programmed in a variety of ways.
- Significant work has been done recently to try to make programming mobile applications and pc applications easier. There are a large number of open-source libraries and tools that can make your life easier as a programmer. For example, if you don't want to learn many programming languages, there are libraries that allow you to write multiple mobile applications using only one programming language (such as using the Kivy framework to write your mobile apps in Python). The challenge that you might face using these tools is that each of them has quirks and limitations that you'll come across as you use them. Part of the trade-off of using lots of open-source tools is that although you benefit from their features, you are also subject to the complexity of integrating them and bumping into their limitations.
- When I first started programming, I started with something very small and easy:
Source: I've been programming for the past 12 years, and programmed a tiny bit as a teenager long ago. I've programmed web applications and PWA-style mobile apps, and I've researched several cross-platform app development platforms as I have worked on trying to evaluate CareerVillage's prospects for launching native mobile apps.
Try a flutter tutorial to see if you like that framework https://flutter.dev/learn (You'll have to know or learn the DART programming language)
Try a cordova tutorial to see if you like that framework https://cordova.apache.org/docs/en/11.x/guide/cli/index.html (You'll have to know or learn javascript, HTML, and CSS)
A few things make mobile programming a tiny bit more complex:
- The programming takes place on a desktop, but the app works on a mobile phone, so you end up having to install some specialty software to deal with that. Emulators or simulators are programs that "emulate" what a mobile phone would do with your program, but they aren't always a perfect 1:1 match for a real-world mobile phone. That can sometimes allow for bugs that are hard to detect until you have an app running on a real device.
- There's a very wide variety of mobile phone devices and operating system versions that need to be tested and/or designed for when you're planning to maintain a mobile app
- Mobile apps tend to be distributed through the app stores, which means that you have to apply for approval from those app stores, and when you make changes to your app you have to re-submit the updates through those stores. The app stores sometimes will quickly approve changes, but sometimes they will decline your changes, so that introduces a bit more work into your process.
All of this said, I want to add a few other comments:
- In general, I'd always start a new project using whatever languages or frameworks are most familiar to me, unless I'm explicitly trying to use the project to learn something new or play around with a new technology. As a programmer, even when I work with technology I am familiar with, I end up hitting a lot of challenges and learning a lot. So when I'm working with something unfamiliar, I always expect to spend a very large amount of my time bumping into bugs and reading documentation. "Drinking from a firehose" of information, as they say.
- You mentioned mobile apps and PC applications, but you didn't explicitly mention web applications. If you haven't looked into programming web applications, I'd encourage you to take a look at that as well to see if that's something you like. I've found in my past experience that programming for web applications is among the more accessible first steps.
- You could also consider programming hardware. For example the raspberry pi or other micro-computers can be programmed in a variety of ways.
- Significant work has been done recently to try to make programming mobile applications and pc applications easier. There are a large number of open-source libraries and tools that can make your life easier as a programmer. For example, if you don't want to learn many programming languages, there are libraries that allow you to write multiple mobile applications using only one programming language (such as using the Kivy framework to write your mobile apps in Python). The challenge that you might face using these tools is that each of them has quirks and limitations that you'll come across as you use them. Part of the trade-off of using lots of open-source tools is that although you benefit from their features, you are also subject to the complexity of integrating them and bumping into their limitations.
- When I first started programming, I started with something very small and easy:
Source: I've been programming for the past 12 years, and programmed a tiny bit as a teenager long ago. I've programmed web applications and PWA-style mobile apps, and I've researched several cross-platform app development platforms as I have worked on trying to evaluate CareerVillage's prospects for launching native mobile apps.
Jared, CareerVillage.org Team recommends the following next steps:
Updated
Param’s Answer
While Mobile & PC Applications both have varying degrees of difficulty based on the scope of the application. They have different pros and cons which depend on several factors, however basic desktop applications are much easier to build as most programming languages have extensions which can be built into a executable program based on the system. Native Mobile Apps do however be need to be programmed in the language supported by the Mobile OS like Java or Kotlin for Android and Swift for IOS.
With Web Applications becoming more commonplace there are several options which support cross systems/OS development without additional effort. All applications contain two fundamental parts - the front end and the backend. Industry practices generally tend towards having a common backend for both applications to promote re-usability among many other factors. The difference between mobile, web and desktop apps really boils down to the frontend. While developing for a particular device has its own advantages, especially when we have specific use case for the product, it is generally a better idea to develop such that the product can work across various platforms. Take responsive websites for an example, the frontend is adaptive the device that we are using while the backend (which is not exposed to the user) that executes the functionalities is common.
However it all boils down to personal choice, some people find mobile application development easier, some might choose to focus desktop applications. Once you have basic knowledge, design principles and algorithms / Data Structures needed to make an application in both cases for a particular use case.
If interested learn more about JavaScript and the frameworks supported by it.
With Web Applications becoming more commonplace there are several options which support cross systems/OS development without additional effort. All applications contain two fundamental parts - the front end and the backend. Industry practices generally tend towards having a common backend for both applications to promote re-usability among many other factors. The difference between mobile, web and desktop apps really boils down to the frontend. While developing for a particular device has its own advantages, especially when we have specific use case for the product, it is generally a better idea to develop such that the product can work across various platforms. Take responsive websites for an example, the frontend is adaptive the device that we are using while the backend (which is not exposed to the user) that executes the functionalities is common.
However it all boils down to personal choice, some people find mobile application development easier, some might choose to focus desktop applications. Once you have basic knowledge, design principles and algorithms / Data Structures needed to make an application in both cases for a particular use case.
Param recommends the following next steps:
Updated
Peter’s Answer
others have answer with specific contents. as described, mobile and desktop app are different due to stack and API limitation. Stack means the software stack in order to create app (like IOS, you have to have xcode with apple developer license). API difference is varying with platform, if you're only looking windows, the .net framework would be it. it is up to your interest, android development has been easier for some. try a few things, then ask again.
Delete Comment
Flag Comment
Delete Comment
Flag Comment