Learn Swift for Apple/iOS. Learn ??? for Google/Android.

Hi all, I never understood tablet and phone apps market. But, through recent exposure at work, my interest has gone up a notch. If I want to develop some app for iPad and iPhone, then I would start learning Swift. It's new, and there may be opportunity for apps and jobs for early adopters. What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? -- William Park <opengeometry@yahoo.ca>

Great question. I think it's crazy to have to maintain two completely different code bases. React Native <http://reactnative.com/> is the most popular way right now to target both iOS and Android. I use one RN app that I know of, the Mattermost client on Android. I can't tell that it's not written in Java or Kotlin but I notice some performance issues that might have more to do with poor implementation than poor toolkit when loading lists of messages for channels. Microsoft took React Native and ReactJS and packaged it as ReactXP < https://microsoft.github.io/reactxp/>, which is very interesting because with one code base, you can target iOS, Android, and web. We use AngularJS (with TypeScript) and Node.js in a production application and the complexity of the build toolchain is just crazy. We also seem to spend an awful lot of time waiting for builds for an interpreted language. I've been playing around with Flutter <https://flutter.io/> and I'm really impressed. I like Dart. It's easy to learn, productive, the language has some great features, and the tooling is great. I'm not at all fussed by the "alpha" status of Flutter because people have been building production applications with it. There are significant differences in the way that Flutter and React Native approached cross-platform compatibility. From what I've read, the Flutter approach is the better one. I installed a news app that is apparently written in Flutter and it is indistinguishable from a native Android application in terms of look and feel and performance. Regards, Clifford Ilkay +1 647-778-8696 On Sat, Dec 9, 2017 at 5:56 PM, William Park via talk <talk@gtalug.org> wrote:
Hi all,
I never understood tablet and phone apps market. But, through recent exposure at work, my interest has gone up a notch.
If I want to develop some app for iPad and iPhone, then I would start learning Swift. It's new, and there may be opportunity for apps and jobs for early adopters.
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? -- William Park <opengeometry@yahoo.ca> --- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

On Sat 09 Dec 2017 17:56 -0500, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android?
Learn Java (or some other JVM languages), C, and seems like Kotlin will be the next thing.

If you like C, consider the next "Kernighan" language, Go. --dave On 09/12/17 07:24 PM, Loui Chang via talk wrote:
On Sat 09 Dec 2017 17:56 -0500, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? Learn Java (or some other JVM languages), C, and seems like Kotlin will be the next thing.
--- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk
-- David Collier-Brown, | Always do right. This will gratify System Programmer and Author | some people and astonish the rest davecb@spamcop.net | -- Mark Twain

I like C. I don't know why people are bitching about it. Most of C programming is about dealing with libraries, anyways. Curiously, Google don't seem to be pushing Go for Android or anything for that matter. If they want me to invest $5000+ (in case of Apple iMac/iPad/iPhone), I want something more substantial than, "Here is Go. Play with it, and tell us how you like it." -- William Park <opengeometry@yahoo.ca> On Sat, Dec 09, 2017 at 09:10:15PM -0500, David Collier-Brown via talk wrote:
If you like C, consider the next "Kernighan" language, Go. --dave
On 09/12/17 07:24 PM, Loui Chang via talk wrote:
On Sat 09 Dec 2017 17:56 -0500, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? Learn Java (or some other JVM languages), C, and seems like Kotlin will be the next thing.

bitch about it? C is complete crap that's why, except for legacy work, or forced to deal with a env. with old compiler support only, why would anyone in there right mind use C? c++14/17/20 rules the day (even C++11 is great, but given where we are now in time c++14/17 rocks), C++ is a super-set of C (in practice). Doing C now is like driving a old model T with wooden wheels, certifiably bat shit crazy. Golang was dev'd apparently to give C++ programmers a better place, they didn't come, but c++11/14/17/20 rocks and makes golang a complete fail, but when golang was developed/invented C++ was in its pre- c++11 very sad state. It's reborn, its basically a new language , a non-jvm c# in a way, the unique_ptr, smart_ptr totally rock, iterators, lambda, and all OOP goodness, move-semantics, whats not to absolutely love (ok template programming especially SFINAE is not to love, but :) ). I hope and pray when you say "C" you really mean c++14/17? C is _dead_, done and dusted, gone, kaput, finished! absolutely no point in ever using it (except for rare cases i stated at start), and of course C++ is super set of C, so you got your full C naked pointers and pain and memory leaks if you really want them still! :) C language % popularity on language ranking sites is primarily C use for historic, legacy, etc. I mean like 99.9% of us C++ programmers _are_ a C programmer too, so C gets that tally, but that doesn't mean you are actually going to work in that subset of C++ unless someone is holding a gun at your head, or pulling up your fingernails. Having said all that, as a good C++ programmer, you do learn C fully as a byproduct, but that doesn't mean you stay stuck at the "just C" level. -tl On Sat, Dec 9, 2017 at 9:43 PM, William Park via talk <talk@gtalug.org> wrote:
I like C. I don't know why people are bitching about it. Most of C programming is about dealing with libraries, anyways.
Curiously, Google don't seem to be pushing Go for Android or anything for that matter. If they want me to invest $5000+ (in case of Apple iMac/iPad/iPhone), I want something more substantial than, "Here is Go. Play with it, and tell us how you like it." -- William Park <opengeometry@yahoo.ca>
On Sat, Dec 09, 2017 at 09:10:15PM -0500, David Collier-Brown via talk wrote:
If you like C, consider the next "Kernighan" language, Go. --dave
On 09/12/17 07:24 PM, Loui Chang via talk wrote:
On Sat 09 Dec 2017 17:56 -0500, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? Learn Java (or some other JVM languages), C, and seems like Kotlin will be the next thing.
Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

I guess, I will be out of a job soon ;-). Seriously, C is not dead. C++ doesn't work in a number of places. (Look at the code generated with templates for example). If you want to run on embedded (and there is a big huge market out there for that), C is the way to go. Dhaval On Sat, Dec 9, 2017 at 10:15 PM, ted leslie via talk <talk@gtalug.org> wrote:
bitch about it? C is complete crap that's why, except for legacy work, or forced to deal with a env. with old compiler support only, why would anyone in there right mind use C? c++14/17/20 rules the day (even C++11 is great, but given where we are now in time c++14/17 rocks), C++ is a super-set of C (in practice). Doing C now is like driving a old model T with wooden wheels, certifiably bat shit crazy. Golang was dev'd apparently to give C++ programmers a better place, they didn't come, but c++11/14/17/20 rocks and makes golang a complete fail, but when golang was developed/invented C++ was in its pre- c++11 very sad state. It's reborn, its basically a new language , a non-jvm c# in a way, the unique_ptr, smart_ptr totally rock, iterators, lambda, and all OOP goodness, move-semantics, whats not to absolutely love (ok template programming especially SFINAE is not to love, but :) ). I hope and pray when you say "C" you really mean c++14/17? C is _dead_, done and dusted, gone, kaput, finished! absolutely no point in ever using it (except for rare cases i stated at start), and of course C++ is super set of C, so you got your full C naked pointers and pain and memory leaks if you really want them still! :) C language % popularity on language ranking sites is primarily C use for historic, legacy, etc. I mean like 99.9% of us C++ programmers _are_ a C programmer too, so C gets that tally, but that doesn't mean you are actually going to work in that subset of C++ unless someone is holding a gun at your head, or pulling up your fingernails. Having said all that, as a good C++ programmer, you do learn C fully as a byproduct, but that doesn't mean you stay stuck at the "just C" level. -tl
On Sat, Dec 9, 2017 at 9:43 PM, William Park via talk <talk@gtalug.org> wrote:
I like C. I don't know why people are bitching about it. Most of C programming is about dealing with libraries, anyways.
Curiously, Google don't seem to be pushing Go for Android or anything for that matter. If they want me to invest $5000+ (in case of Apple iMac/iPad/iPhone), I want something more substantial than, "Here is Go. Play with it, and tell us how you like it." -- William Park <opengeometry@yahoo.ca>
On Sat, Dec 09, 2017 at 09:10:15PM -0500, David Collier-Brown via talk wrote:
If you like C, consider the next "Kernighan" language, Go. --dave
On 09/12/17 07:24 PM, Loui Chang via talk wrote:
On Sat 09 Dec 2017 17:56 -0500, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? Learn Java (or some other JVM languages), C, and seems like Kotlin will be the next thing.
Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk
--- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

On Sat 09 Dec 2017 22:15 -0500, ted leslie via talk wrote:
bitch about it? C is complete crap that's why, except for legacy work, or forced to deal with a env. with old compiler support only, why would anyone in there right mind use C?
Offtopic Rant. Thread is about what language to use to program in Android. Have a nice day.

| From: ted leslie via talk <talk@gtalug.org> | bitch about it? C is complete crap that's why, except for legacy work, or | forced to deal with a env. with old compiler support only, why would anyone | in there right mind use C? | c++14/17/20 rules the day (even C++11 is great, but given where we are now | in time c++14/17 rocks), C++ is a super-set of C (in practice). C is old and could be improved in a hundred ways. Unfortunately C++ has improved it in a thousand ways. The proper aesthetic of computer science is elegant simplicity. C++ misses by a parsec. I'm sure that there are an enormous number of subsets of C++ which are wonderful. But you get no help find such a subset or catching excursions from it. Are you perhaps using a Microsoft platform? C itself has advanced but Microsoft does not support modern C. C changes are almost all borrowed from C++. Some are ill-considered but some are quite pleasant. | Golang was dev'd apparently to | give C++ programmers a better place, they didn't come, but c++11/14/17/20 | rocks and makes golang a complete fail, | but when golang was developed/invented C++ was in its pre- c++11 very sad | state. I don't think that that is a fair characterization of the Go project. I haven't used Go but I think that I got the gist of it: simplicity was a strong goal. So was safety. They solved some problems and avoided others. C++ designers never saw a problem that they couldn't solve. But the better design principal is to avoid problems. I spend most of my programming time in C. The next language I intend to use is Rust. I like its ideas but proof of the pudding is in the eating. The cases where I would recommend C for new projects are few and far between. C is just not very good at using APIs designed for other languages. The APIs I use are designed for C. That explains why I'm OK living in C. The "grain" of iOS seems to favour Swift (at least in the future). The grain of Android favours Java. Clifford's quick survey of systems for writing for both both platforms at once seems the most useful contribution. But I suspect that it is too far off the ground for William. One advantage of C: it is darn stable. New languages tend to have a lot of churn. Improvements can be headaches if you have a large codebase. The Python 2 / Python 3 thing looks really painful.

On Sun, Dec 10, 2017 at 1:06 AM, D. Hugh Redelmeier via talk < talk@gtalug.org> wrote:
The "grain" of iOS seems to favour Swift (at least in the future). The grain of Android favours Java. Clifford's quick survey of systems for writing for both both platforms at once seems the most useful contribution. But I suspect that it is too far off the ground for William.
If by "too far off the ground" you mean too high a level of abstraction, that implies some compromise like poor look and feel or poor performance. The Flutter dev team considers anything less than native look and feel and native performance a bug. Flutter apps can achieve the same frame rates as apps written in Swift or Kotlin because of the approach they have taken to abstraction. While other cross-platform frameworks rely on a JavaScript to native bridge, which causes a big performance hit every time that bridge has to be crossed, Flutter does not. This article provides a good overview of what makes Flutter interesting and how Flutter abstracts the underlying platform. < https://hackernoon.com/whats-revolutionary-about-flutter-946915b09514> The links to other sites in the first paragraph are worth reading, too. William, I highly recommend you read up on Dart and Flutter before committing to Swift and Kotlin. Dart is pretty easy to learn for anyone with experience in curly brace languages. Here is a quick overview video of Flutter you may find useful. <https://youtu.be/sLY-vgE-mq0> I've been keeping an eye on Flutter's gitter channel < https://gitter.im/flutter/flutter> and I notice that it's quite active and the people there are helpful to and welcoming of newbies. That's key to adoption. Regards, Clifford Ilkay +1 647-778-8696 <(647)%20778-8696>

On Sun, Dec 10, 2017 at 06:27:43PM -0500, Clifford Ilkay via talk wrote:
William, I highly recommend you read up on Dart and Flutter before committing to Swift and Kotlin. Dart is pretty easy to learn for anyone with experience in curly brace languages. Here is a quick overview video of Flutter you may find useful. <https://youtu.be/sLY-vgE-mq0> I've been keeping an eye on Flutter's gitter channel < https://gitter.im/flutter/flutter> and I notice that it's quite active and the people there are helpful to and welcoming of newbies. That's key to adoption.
OK, their documentation starts at <https://www.dartlang.org/guides/get-started> In particular, "A Tour of the Dart Language" <https://www.dartlang.org/guides/language/language-tour> is what newbies needs. Is there PDF version of that? Honestly, I can't read and study from monitor anymore. -- William Park <opengeometry@yahoo.ca>

On Mon, Dec 11, 2017 at 1:24 AM, William Park via talk <talk@gtalug.org> wrote:
On Sun, Dec 10, 2017 at 06:27:43PM -0500, Clifford Ilkay via talk wrote:
William, I highly recommend you read up on Dart and Flutter before committing to Swift and Kotlin. Dart is pretty easy to learn for anyone with experience in curly brace languages. Here is a quick overview video of Flutter you may find useful. <https://youtu.be/sLY-vgE-mq0> I've been keeping an eye on Flutter's gitter channel < https://gitter.im/flutter/flutter> and I notice that it's quite active and the people there are helpful to and welcoming of newbies. That's key to adoption.
OK, their documentation starts at <https://www.dartlang.org/guides/get-started> In particular, "A Tour of the Dart Language" <https://www.dartlang.org/guides/language/language-tour> is what newbies needs.
Is there PDF version of that? Honestly, I can't read and study from monitor anymore.
There is a language spec in PDF form here: < http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf>. The docs you referenced are available as Markdown on GitHub here: < https://github.com/dart-lang/site-www>. It looks like they used Jekyll to create the docs so you could try Jekyll PDF < https://github.com/abeMedia/jekyll-pdf> to convert pages one at a time. With a bit of scripting, you could crawl the entire site and convert each page to PDF. By the way, searching for "Flutter documentation PDF" led me to an interesting slide deck PDF here: < https://droidcon.de/sites/global.droidcon.cod.newthinking.net/files/media/do...
. Regards,
Clifford Ilkay +1 647-778-8696

On Sat, Dec 9, 2017 at 9:43 PM, William Park via talk <talk@gtalug.org> wrote:
I like C. I don't know why people are bitching about it. Most of C programming is about dealing with libraries, anyways.
Curiously, Google don't seem to be pushing Go for Android or anything for that matter. If they want me to invest $5000+ (in case of Apple iMac/iPad/iPhone), I want something more substantial than, "Here is Go. Play with it, and tell us how you like it."
As seen on the Flutter Gitter channel: "Is it possible to develop and publish iOS versions of apps without an actual iOS device?" "yes, even though it is not recommended..." "That's insane And tempting" "Been there, done that..." "You don't even need a real mac, if you own a good-enough pc and use a osx-vm... There are a couple of tutorials on how to build one. The only thing you'll need is a developer license (~ 100$/year) Still, every now and then, there are features/problems you won't be able to resolve using the simulator alone. e.g. there is no camera or no push notifications in the simulator." That seems good enough for learning at least. Regards, Clifford Ilkay +1 647-778-8696

Check Kotlin, it's official and under an Apache 2.0 license Great article (last May) with reasons why Kotlin is a good choice + code examples; https://medium.com/@magnus.chatt/why-you-should-totally-switch-to-kotlin-c7b... Since then, Google made Kotlin the official language for Android. https://developer.android.com/kotlin/index.html https://kotlinlang.org/ 2017-12-09 17:56 GMT-05:00 William Park via talk <talk@gtalug.org>:
Hi all,
I never understood tablet and phone apps market. But, through recent exposure at work, my interest has gone up a notch.
If I want to develop some app for iPad and iPhone, then I would start learning Swift. It's new, and there may be opportunity for apps and jobs for early adopters.
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? -- William Park <opengeometry@yahoo.ca> --- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

Answer: Learn Swift for Apple/iOS. Learn Kotlin for Google/Android. Documentation: - online: https://kotlinlang.org/docs/reference/ - PDF: https://kotlinlang.org/docs/kotlin-docs.pdf -- William Park <opengeometry@yahoo.ca> On Sat, Dec 09, 2017 at 07:27:01PM -0500, Marc Lijour wrote:
Check Kotlin, it's official and under an Apache 2.0 license
Great article (last May) with reasons why Kotlin is a good choice + code examples; https://medium.com/@magnus.chatt/why-you-should-totally-switch-to-kotlin-c7b...
Since then, Google made Kotlin the official language for Android. https://developer.android.com/kotlin/index.html
2017-12-09 17:56 GMT-05:00 William Park via talk <talk@gtalug.org>:
Hi all,
I never understood tablet and phone apps market. But, through recent exposure at work, my interest has gone up a notch.
If I want to develop some app for iPad and iPhone, then I would start learning Swift. It's new, and there may be opportunity for apps and jobs for early adopters.
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android? -- William Park <opengeometry@yahoo.ca> --- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

I'll echo Hugh's recommendation for Rust. No GC (unlike golang), and preformance equal to C/C++ but safe! I don't intent to write any more C. ../Dave

Just for completeness sake if someone is taking this blanket http://conscientiousprogrammer.com/blog/2014/12/21/how-to-think-about-rust-o... above explains the memory issue of c++11/14/17/20 to rust. (at least one of them) It should be noted however that as any 1/2 decent programmer doing anything of importance, you are going to TDD, with ~100% UT coverage, and gcov and valgrind process, amongst other things (automated even at jenkins(etc) for build auto build verification) Of course 100UT/gcov and valgrind is going to protect you against a lot! of stuff, and yes, maybe some people are only "on there way" to that proper coding protocols/nirvana, but short of it is don't believe Rust has anything up on C++14+ with respect to memory safety "necessarily" under proper normal coding practice. That said maybe could be some edge cases that would sting I am not at all sure, I would love to be made aware of any (save for a dumb force cast in c++ ) . I would likely guess rust isn't totally free of sometimes doing other then what the programmer intended. Again, no flaming, bitching, just don't want people to be (potentially) ill advised. No one wants to divert a future happy c++14+ programmer :) "I don't intent to write any more C", hearing this always makes be SOOOO happy. -tl On Sun, Dec 10, 2017 at 2:44 PM, David Mason via talk <talk@gtalug.org> wrote:
I'll echo Hugh's recommendation for Rust. No GC (unlike golang), and preformance equal to C/C++ but safe!
I don't intent to write any more C.
../Dave
--- Talk Mailing List talk@gtalug.org https://gtalug.org/mailman/listinfo/talk

On 2017-12-09 05:56 PM, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android?
As has probably been pointed out already, most Android development is done in Java. IIRC, you can do development in C and I've also seen a Python for Android. It depends partly on the type of app you want to create. If you want to use a programming language other than Java the problem is how you access and use the Android libraries to do all the GUI stuff. -- Cheers! Kevin. http://www.ve3syb.ca/ |"Nerds make the shiny things that distract Owner of Elecraft K2 #2172 | the mouth-breathers, and that's why we're | powerful!" #include <disclaimer/favourite> | --Chris Hardwick

On Mon, Dec 11, 2017 at 11:52 AM, Kevin Cozens via talk <talk@gtalug.org> wrote:
On 2017-12-09 05:56 PM, William Park via talk wrote:
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android?
As has probably been pointed out already, most Android development is done in Java. IIRC, you can do development in C and I've also seen a Python for Android. It depends partly on the type of app you want to create.
If you want to use a programming language other than Java the problem is how you access and use the Android libraries to do all the GUI stuff.
You may want to follow the links I've posted regarding Flutter. Regards, Clifford Ilkay +1 647-778-8696

On Sat, Dec 09, 2017 at 05:56:19PM -0500, William Park via talk wrote:
Hi all,
I never understood tablet and phone apps market. But, through recent exposure at work, my interest has gone up a notch.
If I want to develop some app for iPad and iPhone, then I would start learning Swift. It's new, and there may be opportunity for apps and jobs for early adopters.
What do I learn, if I want to develop Android apps? Can I use C, and more importantly, is there C SDK for Android?
My impression was that iOS used ObjC and Android used Java (with C or C++ native libraries in some cases, although that can cause issues for none arm android devices, or even systems with different generations of arm I believe.). Maybe my understanding is about half a decade out of date though. There is certainly no C SDK for Android. Not going to happen. All you can do is put your C code in a library and then call that from your java frontend gui. -- Len Sorensen
participants (11)
-
Clifford Ilkay
-
D. Hugh Redelmeier
-
David Collier-Brown
-
David Mason
-
Dhaval Giani
-
Kevin Cozens
-
Loui Chang
-
lsorense@csclub.uwaterloo.ca
-
Marc Lijour
-
ted leslie
-
William Park