Hi! This is the Daily Overpass. My name is
Eric and I make apps. Now today I want to
talk about "Which Language You Should
Learn To Create Apps".
Okay, so today I want to answer a question that was left
on... It was left today but it was on an
older video. This was left on number...
Daily Overpass#2 "Go Games Still
Have A Good Market?" and this is by Mark Sol
who said "Great insight. I'm always
interested in diving in app development,
problem is I don't have any experience.
What language would you recommend to
start learning? I'm interested in
creating simple app games or utility
tools. Now mark, I'm just going to give
you my opinion and everybody has
different opinions. So I'm almost
like.... I was almost like I wasn't sure if
I was going to answer this one
because I'm sure whatever I say
somebody's going to disagree with. So I
would ask everybody else to put
your opinions in the comments too,
because let Mark know, because we're
all going to have different opinions on
stuff so. I prefer to use Javascript
currently, but we use different languages
for different things so. So let's just
take a lay of the land, the languages
that you could learn and these are the
ones that I know about that you could
do apps with, right? So there may be
others that are just never used.
So you're looking at Objective-C, Swift,
Java, C#, JavaScript, Lua. And I don't
I don't think I'm missing any, but if
anybody know any other frameworks that
use different languages then let me know.
I don't think anybody's ever done an
app framework with Ruby for example, but
I could be wrong, right? So it depends on
whether or not you want to do apps or
utility or utility apps or games so, you
know because there's different ways
like you could learn just native
code and the nice thing about learning
native code is that it's free. It's
the one that the platforms would like
you to use, so every time like Android
comes up with a new version of some
new feature whenever on their new
operating system or same with iOS, it's
always available first in native, right?
So that you could you know what's
going on you don't have to pay a lot and
then you also have
other framework assistant on top of that.
So we're looking at if you want to do
like iPhone game or iPhone apps you can
do Objective-C or Swift. If you want to
do Java then you could do... sorry if you
want to do Android then new Java, right?
So and those would be the native
ones. So like if you want to do an Android
app and you didn't want to pay any money
and you just had a bit of time, you could
you know there's loads of resources out
there. You can just download Android
Studio. Install the Android
SDK and just start coding away. If you
have a Mac you can get Xcode and you
start doing that on an iPhone, right? Now
some people will use other frameworks
like I prefer...I do some of those
some of those languages, so like I will do a
little bit of Java. I do a little bit of
Objective-C, very little like as little
Objective C as I can because I'm just...
I'm just not that comfortable with it,
but I do like using Swift. The problem
with those native code...
those native languages is that it's
really difficult to put those into other
other devices. So like if you wrote an
app in Swift for example or Objective-C
then it would be difficult to put it
onto Android. So there's lots of
platforms, lots of frameworks that sit on
top of that, so you've got or you know
you've got Xamarin which is like C#
and .Net which a lot of people use,
and for some reason every time I mention
Xamarin somebody gets angry with me. I
think once I called it like a Hybrid
which you know they said "Hybrid is
Javascript in native so it is not a
Hybrid, it's native!" right? but my whole
thing with Hybrid I thought Hybrid
is like two different technologies
hybrid together, but so you've got
Xamarin which is very cool, which you
could take you know and you could use
like C#. I think you use VB.Net, but I'm
not sure to create like one app that
that fits both but the interfaces and
the GUI, you'd have to change the
interfaces a little bit for both. So it
looks native to both platforms so if you're
on iPhone it would look different than
it looks on Android. So you'd have to
code those sizes different, but you
have the core which is like those
libraries. And Xamarin, the reason I
haven't used it before it could be a bit
expensive and you know even though
C# was my... as a contractor that
was my
main language, but I started to move into
JavaScript and I prefer using Javascript
more, right? You've also got
you know the Cordova based or
Cordova / PhoneGap based framework. So we
use the Ionic Framework which is very
popular and I really enjoy using it. The
limitation of that is that you rely like
if you want to use some native
functionality, you rely on plugins being
available, but to be honest with you
there are plugins everywhere. There's so
many that are available and it's not
that hard to write them yourself, right?
But another limitation of those
frameworks is that it's not
like it sits inside a webview, so it's
not like if you write a button or if you make
a button it's not like an actual button.
What it is is a web page with a button
on it with CSS that makes it look native,
right? Which is you could say is good or
bad. It depends on your objective. My
objective is putting up products. When I
first started development, my objective
was to find it. So okay when I first
started out as a developer my objective
was to find the language or the
technology that would pay me the most
then it became the technology that would
impress fellow developers the most and
now it's like the technology that I
could do the least amount of work and
put products out there, right? So
that's why I like using Ionic. I love
using that framework when we do business
applications, right? And then you've also
got uh you've got these kind of
newer ones like that are Javascript
but they compile into native. So you've
got NativeScript and you've got
React Native, and NativeScript is done
by Telerik and you know I
played around that just a little bit and
you could you know code everything and
then you run it through a compiler
and we'll compile it into a native code, so
button is a button. It looks different
on Android as it does on
on iPhone stuff like that and React
Native is the one who was... I don't know
if it was created by... it may have
been created by Facebook or recently
purchased by Facebook. I think it was
created by facebook and that's
pretty cool, too. So it's the same thing,
it's compiled code but the core is in
Javascript so you can use a lot of the
same code and you can actually script it
differently for different platforms. So
that's something we played around with
quite a bit, but haven't
actually released anything in those yet,
but we're not that's if you want to do a
utility app. But if you want to do a game,
now you can use native code to do games.
There's a book out there called "Creating
Android Games" I forgot, it was by Apress. It
was a huge book. I read through it and
they talked about using native code to
create a game. It's really
difficult there because you're actually
going into the lower level, so like if
you create a game you actually have the
way that it works is you have like a
game loop, so you know it starts in the
loop and it just kind of goes through and
you can code this loop and then through
every iteration of the loop based on the
frame rate you can move characters about
and all this kind of stuff so
everything moves like that and it's
actually fascinating the
way it works. I mean I love doing that
kind of stuff, but there's also
frameworks that you could use that make
the job a lot easier. I, we use Corona SDK
for a lot of stuff and Corona SDK
the main thing that I don't like about
it is it's in Lua, right? And Lua is a
language that's very easy to learn so if
you want to just... if you just want to do
games Corona SDK would be my
recommendation. Lua is an easy language to
learn but it's not like a portable
language. It's very difficult to take
Lua and do another app like if you did
want to do a non-game app with it or
something like that. Now Corona says you
could use it for business apps and we've
done that for a couple business apps and
it just it was really clunky and I found
to be really awkward experience, right?
Another thing about Corona, I think Corona was
just a Corona Labs which was just acquired
recently by Appodeal, so this always
good because I get the emails because you
know I follow everything that Corona
does and you know it seems like they're
always being acquired. They're like the
foster children of app frameworks. They
seem to always be acquired by a new
company like every six months or
something. I don't know if that's good or
bad, but anyway I love that platform but
a lot of people will disagree with that
say Corona is the best. They will say its
Unity. If I hadn't gone for Corona I
would have gone for Unity. Unity uses C#
JavaScript. You can
code for iPhone and Android, it's a bit
more expensive like Corona was used to
be expensive and then it was free and
then they started charging for...
they charge parts for putting on
splash screen and charge you for the
splash screen. I think unity is the same.
I think you get it, you could
release it for free but you have a
splash screen. Unity guys, I
know there's loads of Unity guys out
there, correct me if I'm wrong in the
comments so. In Unity, you could do 2D, 3D,
you know if you pick up that skill then
that would be really really useful, right?
And then also you've got Cocos2d-x
which is a very popular one, and that I
think is an Objective-C or C++ and you
could you know code for both platforms.
There's also a JavaScript version of
it called Cocos2d-JS which I've had a
play around with but I never really you
know I think the document at that time... the
documentation was not that good so it's
really you know really really hard to use.
So that's you know where we
are. There's loads of different
opportunities. The nice thing is you
could invest nothing but time and
pick up some of this and I would
like to say that it's not as hard as you
might think and I know that it's
difficult because there are so many
different technologies out there, you
don't know where to go and a lot of
times you have to choose you just choose
one direction and go that way. If you go...
I would say if you go native you can't
go wrong, right? because it's native
but then you're limited to one platform
and you know it seems to be a
little bit more difficult, right? Like
when I use Objective-C, I always feel...
to me it feels like I'm running with my
shoes tied together like everything is
hard, right? But there's other people who
use Objective-C and they're just so used
to C++ and everything like that, that
they're just like "I just love coding in
this objective-C. I don't use those
frameworks or whatever" so it's just you
know if you pick that up then that I
think that would be good. So anyway, Mark
get started. Don't keep looking
around. Don't research it too much. Get
started. Go with Android.
Android's taken over anyway. Go with
native Android and just you know get on
with it or you know pick up the Ionic
Framework and start learning with that.
It is better than you rather than learn
the language and then start in the code,
I always find it better to start in the
code and then figure out what all this
stuff means and then when you go do and
read one of those books, it all starts to
make a bit more sense to you. Anyway,
that's just my opinion and everybody
please let Mark know and also let me
know
what you guys think if there's any
languages I've missed, if there's
something that you use that you think are way
better. And again, let me just
emphasize that it's not about the code,
it's about the product and it's about
you know getting it out there and
getting people using it. So unless you're
going for a job and you want something
that will pay you well then I
guess it is all about the code. Anyway, that's
it for today. I will talk to you guys
tomorrow.