What is an App?

IIT Madras - B.S. Degree Programme
19 Jul 202117:04

Summary

TLDRThis course on Modern Application Development explores the fundamental concepts of app development across various platforms, including desktop, mobile, and web apps. It introduces the term 'app,' focusing on both traditional desktop applications and the more widely recognized mobile apps. The course discusses different types of apps, their development tools (SDKs), and the role of platforms like browsers in modern web app creation. Emphasizing the web as a neutral platform, the course seeks to highlight key principles of app development while addressing the constraints and unique features of mobile devices.

Takeaways

  • 📱 An app is a small, specific program used mainly for mobile devices, but it can also refer to desktop or web applications.
  • 🔍 The term 'app' became popular with the rise of smartphones, particularly after the introduction of app stores like the Apple App Store.
  • 💻 Desktop apps are typically standalone programs that can run without a network connection, such as word processors and text editors.
  • 🌐 Web browsers are essential for web applications, which have become dynamic platforms for apps, especially after Web 2.0.
  • 📧 Some desktop apps, like email clients, require network connectivity for specific tasks but can function offline for others.
  • 🔧 Applications are built using SDKs (Software Development Kits) that are often platform-specific, meaning Windows apps may not work on other platforms without modification.
  • 📊 The rise of mobile apps is closely linked to the increase in network connectivity, with most mobile apps being highly dependent on servers.
  • 🤖 There are cross-platform frameworks that allow app development for both Android and iOS, though iOS apps typically use the Swift programming language.
  • 🖥️ Web apps run on web browsers and offer cross-platform compatibility, making them accessible on multiple devices and operating systems.
  • 💡 The course focuses on developing web apps because they offer a neutral platform, allowing for a broad understanding of application development principles across devices.

Q & A

  • What is the definition of an app as mentioned in the script?

    -An app is defined as computer software or a program, commonly a small and specific one used for mobile devices.

  • How has the term 'app' evolved over time?

    -The term 'app' originally referred to any mobile or desktop application. After the rise of app stores, especially with the iPhone, it evolved to refer to small programs that can be downloaded and installed, typically for smartphones and tablets.

  • What are some examples of common apps mentioned in the script?

    -Examples include the Amazon app, Twitter, Microsoft Word, Firefox, Chrome, Instagram, and Visual Studio Code.

  • How do text editors differ from word processors, according to the script?

    -Text editors, such as Visual Studio Code, are specialized for handling text and coding, offering features like syntax highlighting and automatic indenting, whereas word processors are designed for formatted text, such as making parts of the text bold or italic.

  • What is a desktop app, and how does it typically function?

    -A desktop app is a standalone program that can be used without a network connection. It usually runs on a desktop or laptop, allowing users to work with local files.

  • What role do software development kits (SDKs) play in app development?

    -SDKs are custom frameworks, often operating system-specific, that provide tools and API functions to help developers build applications by linking to the underlying OS features.

  • What are some limitations of mobile apps compared to desktop apps?

    -Mobile apps are constrained by limited screen space, different interaction mechanisms (like touch instead of a mouse), lower RAM, and reduced processing power due to the need to conserve battery life.

  • What is the significance of web browsers in modern app development?

    -Web browsers provide a common platform that runs across multiple devices and operating systems, facilitating the development of web apps, which are heavily network-dependent and allow dynamic interaction via JavaScript.

  • Why is the web considered an ideal platform for app development in the course?

    -The web provides a neutral platform that allows developers to focus on fundamental principles of app development, independent of specific operating systems or devices. This flexibility makes it ideal for teaching the core concepts of modern application development.

  • What are some of the interaction mechanisms introduced by mobile platforms?

    -New interfaces on mobile platforms include touch interaction, speech-to-text interfaces, and the use of cameras for gesture recognition, all of which open up new ways of interacting with apps beyond traditional keyboard and mouse inputs.

Outlines

00:00

📱 Introduction to Apps and Their Evolution

This paragraph introduces the concept of an app, defining it as computer software or a small program, particularly for mobile devices. The term 'app' was originally used for both mobile and desktop applications, but with the rise of app stores like Apple's, it evolved to refer to small, downloadable programs. The paragraph highlights popular apps like Amazon, Twitter, Microsoft Word, and web browsers like Firefox and Chrome, emphasizing their importance and widespread use.

05:00

💻 The Role of Desktop Apps and Platforms

This section delves into desktop applications, explaining that they are typically standalone programs that do not always require a network connection, like word processors or code editors. Examples of such apps include Microsoft Word, Visual Studio Code, and email clients like Outlook. The paragraph also discusses how desktop apps often rely on SDKs (Software Development Kits) that are OS-specific, meaning apps developed for Windows may not run on other platforms without adjustments.

10:01

📲 Mobile Apps and Platform Differences

This paragraph focuses on mobile apps, explaining their dominance on phones over tablets. It details the challenges mobile apps face, such as limited screen space, less memory, and lower processing power due to battery constraints. The paragraph mentions how mobile interfaces have evolved with touch, voice recognition, and camera-based gestures, and highlights the development frameworks for mobile platforms like Apple's Swift for iOS and cross-platform tools for Android.

15:07

🌐 The Emergence and Importance of Web Apps

This section introduces web apps and the significance of web browsers as a universal platform for application development. It explains the rise of dynamic websites since Web 2.0, which enabled interactive pages and browser-based programming using JavaScript. The paragraph sets the stage for the course, emphasizing that the focus will be on the web as a neutral platform to explore the principles of app development, independent of specific operating systems or platforms.

Mindmap

Keywords

💡App

An app is defined as computer software or a program, most commonly a small and specific one used for mobile devices. In the script, the term is introduced as the central topic of the video. The video describes the evolution of the term 'app' from referring to any mobile or desktop application to being more associated with mobile devices, especially after the rise of app stores like Apple's App Store.

💡Mobile platform

The mobile platform refers to operating systems and devices like smartphones and tablets. In the video, mobile platforms are discussed as the primary environment where apps are developed, with a focus on touch-based interaction and network dependence. Examples include apps like Instagram and Twitter, which rely on mobile platforms to function effectively.

💡Software Development Kits (SDKs)

SDKs are collections of software development tools and frameworks used to build applications for specific platforms or operating systems. The video emphasizes how SDKs are often OS-specific, meaning an app built using one SDK for a specific operating system may not work on another OS without modification. SDKs are vital in developing both mobile and desktop apps.

💡Web apps

Web apps are applications that run in a web browser, allowing cross-platform compatibility. The video mentions web apps as a primary focus of the course because they provide a neutral platform for app development, accessible across different operating systems through browsers like Chrome and Firefox. Web apps are heavily network-dependent and utilize languages like JavaScript.

💡Desktop apps

Desktop apps refer to standalone programs that can often run without an internet connection. The video contrasts these with mobile and web apps, mentioning examples like Microsoft Word or Visual Studio Code, which can operate offline, managing local data on a laptop or desktop without requiring constant network access.

💡Operating system

An operating system (OS) is the software that supports a computer's basic functions. In the script, it is noted that apps are often OS-specific, meaning they must be tailored to work on systems like Windows, macOS, or Linux. The distinction between developing for different operating systems is crucial for understanding app development challenges.

💡Dynamic websites

Dynamic websites are web pages that change content based on user interaction or other factors like location or preferences. The video ties dynamic websites to the rise of web apps, describing how they allow for interactive user experiences through technologies like JavaScript, enabling real-time changes to the content displayed in the browser.

💡Browser

A browser is software that allows users to access and interact with websites. The script frequently refers to browsers like Chrome, Firefox, and Safari as essential for running web apps. Browsers serve as a platform for executing web-based applications, making them critical to modern app development.

💡Network dependency

Network dependency refers to the reliance on an internet connection for certain applications to function. The video explains that many apps, especially mobile and web apps, require a network connection to operate correctly, such as social media apps like Twitter or email clients like Outlook. It contrasts this with desktop apps, which can often function offline.

💡Cross-platform development

Cross-platform development refers to creating applications that can run on multiple operating systems without significant changes. The video highlights this as a growing trend, with developers seeking frameworks that allow them to create apps for both iOS and Android, minimizing the effort required to adapt an app for different platforms.

Highlights

Introduction to the course on Modern Application Development.

Definition of an app, typically computer software or a small program used for mobile devices.

Evolution of the term 'app' with the rise of app stores, primarily after the Apple iPhone.

The concept of solving a specific problem by developing an app with a defined goal.

Familiar icons like Amazon, Twitter, Microsoft Word, and browsers (Firefox, Chrome) discussed.

Importance of web browsers in modern app development and their future exploration in the course.

Introduction to text editors like Visual Studio Code, Sublime Text, and Notepad for writing code.

Distinction between text editors and word processors in terms of functionality.

Introduction to terminal/command line prompt and its significance in running programs.

Explanation of standalone desktop apps that can work without a network connection.

Overview of desktop apps and email clients like Outlook and Apple Mail.

Importance of Software Development Kits (SDKs) for creating platform-specific applications.

Blurring boundaries between full-blown applications and smaller apps.

Growth of mobile apps for phones and tablets, and the shift towards cross-platform development.

Introduction of web apps as a platform for building applications that work across devices.

Transcripts

play00:10

What is an App? Hello everyone, and welcome to this  

play00:13

course on Modern Application Development. As part of this course we are going to see  

play00:18

various aspects of what it means to develop an  application in modern technologies and as part  

play00:27

of that the first thing we would like to know  is to understand what exactly we mean by an app.  

play00:31

So, the question that we would like to  answer is what is an app, anyway?  

play00:35

So, one good way to start is just by looking up  a definition and the simple way to do it would  

play00:40

be to look for either Wikipedia or Google  at this point because after all those are  

play00:43

our main sources of information. So, what  I did was looked up on Google and what does  

play00:49

Google do it points me to a source on Techopedia  which has a definition of an app which I thought  

play00:55

was workable and it sort of conveys all the  useful information that we need at this point.  

play01:01

So, according to this definition an  app is computer software or a program,  

play01:07

in particular most commonly a small  specific one used for mobile devices.  

play01:13

Now, as we will see later we are not  going to restrict ourselves to that but  

play01:16

this is good I mean it sort of  tells us what we are looking for.  

play01:20

The term app originally referred to any mobile or  desktop application and at some point especially  

play01:27

after the rise of the Apple iPhone, app stores  emerged and now more and more app stores have  

play01:32

emerged that sell mobile apps to smartphone and  tablet users. And since then the term has sort  

play01:38

of evolved, in general to small programs that  can be downloaded and installed all at once.  

play01:44

Now, is that really the context in which  we are going to be using it? Largely yes,  

play01:48

we are going to be looking at how  do you solve a specific problem,  

play01:51

let us say you want to create an app  with a fairly specific goal in mind,  

play01:56

what would be the steps that you need to  follow, how would you go about doing it?  

play02:09

These icons should be familiar to  pretty much everyone these days,  

play02:13

you have a number of different things out here.  

play02:19

So, for example, right now this  smiling icon over here is the Amazon  

play02:25

app. This off course is twitter which has been in  the news for a number of reasons good and bad of  

play02:30

late. Microsoft word is probably familiar to most  of you simply because we use it to edit documents.  

play02:37

Firefox and Chrome are both extremely famous as  the dominant browsers, off course Firefox has been  

play02:45

declining a little bit of late but Chrome,  Firefox, Microsoft Edge, Safari from Apple,  

play02:52

those are all the main browsers, web  browsers that we are all familiar with.  

play02:57

Now, the browsers play a very important part  in general in a lot of what we will be doing  

play03:01

moving forward and we will spend some time on  understanding what they are capable of later,  

play03:06

throughout the course we will be  looking at various aspects of them.  

play03:10

But apart from that there are also mail  clients that you could just use to read email,  

play03:15

something like Instagram, social  media similar to Twitter.  

play03:20

And also something like Visual Studio Code which  is just used as a text editor, something which  

play03:27

you use in order to edit text files for what  purpose? Either plain text or maybe some kind of  

play03:33

formatted text or maybe as we will be seeing later  markup, markup languages like HTML or programs,  

play03:42

programs in python, programs in C, programs  in pretty much any programming language.  

play03:47

What makes a text editor special and different  from a word processor is that it is sort of  

play03:52

oriented more towards handling text and then you  are trying to let say write a program it provides  

play03:58

a lot of peripheral support to you in the form of  for example, you could have syntax highlighting,  

play04:06

you could have automatic indenting and various  other things that make it easier to write code.  

play04:11

Visual Studio Code is one example, some  of you are probably using Sublime Text  

play04:16

others may be familiar with VI or E-macs.  There are a number of others, Notepad is  

play04:23

the one that comes by default with Windows, G-edit  comes by default with most Linux systems. In  

play04:31

general the common thing out there is they are  all just good at very simple text editing, you  

play04:36

can’t do much of sort of making parts of the text  bold or italics or other highlighting but you can  

play04:43

just write text. And as we will see later, when  we are talking about markup languages that becomes  

play04:48

important, you should be able to manipulate text  so that you can then control what it displays.  

play04:54

And finally off in the right corner over here I  have an icon for a terminal right? And what do  

play05:00

we mean by a terminal or a command line prompt?  That again is something which all of you who are  

play05:05

doing this course will have to develop some  familiarity with as we move forward through  

play05:09

the course. The reason for that is that apart  from writing the code itself some familiarity  

play05:16

with what it takes to actually run programs on  a system is also important in order to get our  

play05:26

entire application running.  

play05:34

Now, the applications that we looked at previously  just covered a wide spread of different types  

play05:39

of applications I mean you could think of  them functionally, there are web browsers,  

play05:44

there are code editors, there are word processors,  there are social media applications. Another way  

play05:49

of sort of dividing up applications is to look  at the platform on which they run. And here we  

play05:55

could start by thinking about desktop apps. Now, what is a desktop app? Usually what we mean  

play06:01

by a desktop app is something which is typically  a standalone program what I mean by standalone is?  

play06:07

You could potentially use it without  even requiring a network connection,  

play06:11

you just have your laptop or tablet, well, tablets  are increasingly bound to the network these days,  

play06:18

but a desktop or a laptop very often is meant for  running maybe even without a network connection.  

play06:25

Nowadays we are used to network connections but  for a long time there used to be a setup where you  

play06:30

just had your computer, you had your files locally  on the machine and you needed to work with it.  

play06:35

So, many desktop apps in that sense are  standalone, editors, word processors,  

play06:40

Microsoft word, visual studio code all of those  are things that you could just run on your machine  

play06:47

without requiring any network connection and  everything, the source where the files are from,  

play06:53

what you are doing, the keyboard that is  attached everything is just in one machine.  

play06:57

Now, web browsers are also standalone desktop  applications except that their entire utility  

play07:04

is in the sense that you know you need to be  connected to the network otherwise you are  

play07:08

not going to be able to browse very much, you  can just browse around your own local machine  

play07:11

but that is probably not really what you want. Similarly, a male client, Outlook or Apple mail  

play07:20

or Thunderbird all of those are examples of  email clients, what they allow you to do is to  

play07:26

read email, compose email, sort it into different  folders, delete email. And what happens in such  

play07:34

a situation is the actual reading, composing,  deleting, all of that is happening on your local  

play07:40

machine, but finally in order to send or retrieve  mail you need to have a network connection.  

play07:46

So, many of these desktop apps or most  of them need to be able to work offline  

play07:53

which means that they would need some form of  local data storage, so even an email client would  

play07:57

typically download your email may be using pop  or some other i-map or some mechanism like that,  

play08:02

download it onto your local machine  and then allow you to work on it. And  

play08:06

then finally just connect to your outgoing  mail server in order to send the email.  

play08:13

So, in most cases they may require a network  connection for some activities but maybe not  

play08:17

for all. So, a word processor for example should  be able to go along perfectly fine with no network  

play08:22

at all. Now, the way that these applications  are developed is using what are called software  

play08:28

development kits or SDKs. These are usually  custom frameworks that are in many cases OS  

play08:36

specific, operating system specific. So, for example if you had an SDK for  

play08:40

developing apps or applications  for let us say Microsoft windows,  

play08:46

it is unlikely that the same applications would  work without changes on Linux or on a Mac or for  

play08:53

that matter on tablets or on phones. And this  was ok for the longest time because the primary  

play09:01

computational interface that people had was a PC  and in most cases that would be a windows PC.  

play09:08

So, you would find that there would be many  windows specific software development kits,  

play09:12

some kinds of frameworks including things that  allowed you to create windows and graphical  

play09:16

user interfaces and various things that would  have API or application programming interface  

play09:24

functions that allowed you to link to the  underlying operating system. So, for example  

play09:28

if you wanted to create a file or connect to the  network all of those would be through API calls.  

play09:35

So, desktop apps even though I call them apps  usually the term app is not really used in that  

play09:42

context, these are full-blown applications. So,  the whole idea of an app is that it is a smaller  

play09:47

version of an application. Nowadays, however  the boundary is blurring, I mean we very often  

play09:55

have situations where you might actually find  that the application that you are running is  

play10:00

sufficiently focused and specific that you want to  make it into a standalone app by itself, something  

play10:06

that could then be distributed to other users or  could even be run on multiple operating systems,  

play10:13

we will get to all of that later what are  mechanisms that you can use for that.  

play10:21

Now, nowadays one of the biggest sort of targets  for apps and in fact that is where the term  

play10:29

originally came from is the mobile platform,  phones and to some extent tablets, phones are  

play10:35

still dominant, I mean the number of phones is  significantly larger than the number of tablets  

play10:39

in existence today, so whenever people are talking  about developing a mobile app it is more targeted  

play10:44

towards a phone than a tablet but the IPad,  various Samsung tablets or even less expensive  

play10:50

tablets have led enough people to say that the  tablet is also important simply because it has  

play10:56

a larger screen and you could sort of do a little  bit more on it than you could do with the phone.  

play11:01

Having said that there are constraints, you  are limited in screen space, the interaction  

play11:07

mechanisms that you have, you do not always have  a keyboard and mouse. So, many things that we are  

play11:13

used to in applications like for example the  fact that I can type something into a box or  

play11:18

I can hover with a mouse over a link or over an  icon to get information, suddenly have gone away.  

play11:25

On the other hand, new interfaces have  arrived, touch has opened up a whole new  

play11:31

set of ways of interacting with the computer,  there are also audio interfaces you could speak  

play11:37

and there are speech to text interfaces that  would interpret what you are trying to say.  

play11:42

There is a camera which can be used not  only to take pictures but also to sort of  

play11:47

look at gestures and recognize what you are  trying to do and respond accordingly.  

play11:53

Some of the constraints that you face when you  are dealing with these kind of phones and tablets  

play11:57

is that very often they have much less memory and  by that the term that is usually used is the RAM;  

play12:03

the random access memory than a desktop or even  a laptop would have. And similarly the processing  

play12:10

power is typically going to be significantly less  than you would find in a desktop or a laptop.  

play12:15

And one of the main reasons for that  is simply the power consumption,  

play12:19

these handheld devices the mobiles and tablets  need to run on battery and they need to run for  

play12:26

long durations, people are no longer willing  to accept a phone that will just run for one  

play12:30

and a half hours or they probably would never  accept something of that sort, but even a tablet  

play12:35

it is not okay for something that just  runs for maybe one and a half hours or so,  

play12:39

you need to have something which can last at least  a full day, which means that you cannot have a  

play12:44

power hungry processor. And there are limitations  that automatically sets limitations on how fast  

play12:50

your processor can run, how much work it can do,  how many computations it can perform and so on.  

play12:56

Now, what are the kinds of frameworks  that we are looking at in this context?  

play13:02

Some of them are of course operating system  specific, even now the Apple ecosystem basically  

play13:08

means that if you develop an application for  the iPhone or the iPad you would probably  

play13:13

be using the swift programming language with  Apple's SDKs, the software development kits.  

play13:19

The good thing of course is if  you develop for an iPhone then  

play13:23

almost the same thing should work on an iPad, a  very similar thing would work on MAC OS, so they  

play13:28

have integrated tightly within their ecosystem and  they have a variety of devices. On the other hand,  

play13:34

in sheer numbers the number of android phones  out there vastly outnumbers Apple iPhone. So,  

play13:41

what do you do? Can we have something which is  cross platform, something that would allow you  

play13:45

to develop both on apple iPhone as well as on  android phones? And yes a number of frameworks  

play13:50

have come up that try to address that problem. Now, one other thing that we need to keep in mind  

play13:56

when we are talking about these mobile apps  is that given the nature of the device, the  

play14:00

fact that a phone by its very nature is expected  to have some kind of a network connection at the  

play14:05

very least so that you can make calls but also  for various other purposes, means that many of  

play14:11

these apps are strongly network oriented. Twitter,  Instagram, the Amazon shopping app, all of them  

play14:17

are pretty much just connecting you with servers  at the other end that are giving you information.  

play14:23

And operating them in standalone mode is more  often than not even particularly meaningful.  

play14:33

Now, we come to the web apps. Now, the web is  effectively providing a platform on which we are  

play14:45

going to build our applications and the whole idea  is that these browsers that we saw briefly before  

play14:51

Chrome, Firefox, they have been ported already to  run on multiple devices. So, Chrome runs on Linux,  

play15:00

it runs on Windows, it runs on the MAC. Similarly,  so does Firefox. And the interfaces that it has  

play15:06

on all of those and not only that even  on mobile devices is almost the same.  

play15:13

This helps to create a common base that  works across operating systems. It is  

play15:20

heavily network dependent which means that  I mean after all everything about the web  

play15:25

means that you need to be connected to a server.  And the reason why it has become a platform  

play15:33

for developing apps is the rise of dynamic  websites ever since the so-called web 2.0  

play15:40

in the early 2000s which basically means  that not only can you create pages that  

play15:45

change dynamically each time a person loads it  and depending on information about the person  

play15:50

you could behave differently, but it also allows  you to program with languages like JavaScript  

play15:58

that can actually manipulate what is done on the  browser itself. So, a lot of the interactivity,  

play16:03

lot of the processing could also be pushed onto  the user's end “the browser”. Now, these web apps,  

play16:10

this platform that we are talking about is  going to be the main focus of this course.  

play16:15

What are the reasons for that? Primarily because  our main motivation over here is to understand  

play16:21

what is involved in developing an app. So, we are not really concerned about Windows  

play16:27

or MAC or even android, rather we would like to  see what are the fundamental principles, are there  

play16:34

anything that you need to know irrespective of  the final platform on which you want to develop  

play16:39

your application. How do we distill that out and  then use it with certain justifiable assumptions  

play16:47

hopefully in order to develop applications that  are sort of neutral. The web gives us a nice  

play16:54

platform to do that and we are therefore  going to use it for much of this course.

Rate This

5.0 / 5 (0 votes)

Связанные теги
App DevelopmentModern AppsWeb PlatformsMobile AppsCross-PlatformSDKsTech EducationWeb 2.0Code EditorsNetworking
Вам нужно краткое изложение на английском?