1. Mahoraba's Avatar
    As the title would suggest I've become interested becoming an App developer or more specifically Mobile/Tablet game development, apps like e-readers, drive safe, social media apps ect don't really tickle my fancy. However, I realize that creating these smaller simpler apps are what constructs you to become a better developer and an overall better app, a necessary evil.

    Over the last few weeks I had been learning Java but after reading some of this beautiful forum learned that Java seems to be in the midst of 'dying', thus I've turned to C++ in terms of learning. Beyond what I've read and learned about Java and C++ this far I'm pretty much completely new at this and realize that I've got quite a journey ahead of me but also look forward to the experience that it brings along with it.

    I'm looking for some reference points for where to start beyond learning the programming language itself or if it is the correct language to be learning for my end-goal (Game development for BB mobile/tablet devices) to begin my journey.

    As a side note, I recently saw on a blog post the open source framework for Gameplay and was interested in that but most of it without the tools from learning C++ ect are unusable to me as much as it catches my eye and makes me that much more excited to learn.
    08-04-12 09:37 PM
  2. SCrid2000's Avatar
    All I can advise is determination I want to learn c++ as well but simply don't have the time.
    Just post any questions here and you should get some help; also, some excellent developers and I here on the CrackBerry forums have been getting a resource rolling for devs to collaborate and cooperate, OSBBx - Open Source BlackBerry Developers
    diegonei and Mahoraba like this.
    08-04-12 10:57 PM
  3. Morten's Avatar
    As the title would suggest I've become interested becoming an App developer

    I would suggest that you contact one of the local BlackBerry Developer Groups in your area, and they should be able to assist you.

    a list of some of the official groups can be found here:
    https://developer.blackberry.com/jamcommunity/groups
    Mahoraba likes this.
    08-04-12 11:20 PM
  4. Mahoraba's Avatar
    Thanks for you replies, unfortunately there is not a Developer group anywhere close to my area.

    To expand on the Open Source you have linked, I see that there are a number of Programming Languages that allow you to create apps and a number of people sticking to HTML 5 and others using C++ with the majority of people straying away from Java, currently I pretty much have all the time in the world available to me so time investment into a language isn't an issue.

    I've been able to grasp most of the concepts of Object oriented programming thus far with little frustration and that feeling of "Yes! I get it!" being a bliss once I've made a step further, ensuring I remember all of these things that I am learning by doing very simple things with each aspect of the programming language.

    With my end goal wanting to be able to create Game applications mostly I've come to a simple curiosity:

    OSBBx - Open Source BlackBerry Developers - Uses HTML5 and seems to be focused on UI based apps aimed at making everyday tasks simpler, or at least this is what I've gotten out of it, I may be wrong.

    gameplay - free 3D game engine - Uses C++ and is focused on the gaming portion of the cross platform variety without having to worry about the platform specifics, thus targeting a larger community or market.

    Both of these frameworks are open source and while the Gameplay framework seems to be more of what I'm looking to lead into, may not be something I could simply start in.

    Should I continue to learn C++ and read into more of what the Gameplay framework is or start elsewhere with learning C++? or start with HTML5? Apologize for all of the questions and this block of a post but I'm just a little bit eager and questions are just flying!
    08-05-12 10:48 AM
  5. SCrid2000's Avatar
    Lol, at OSBBx we do all programming languages for BlackBerry, except that we don't have an Android dev (the amazing people behind several of the emulator ports are there, and we have some excellent air programmers as well), although the people with more time to work on the site so far have been the html5 programmers.
    For games you definitely should go with c++ IMO.
    08-05-12 10:57 AM
  6. Morten's Avatar
    Thanks for you replies, unfortunately there is not a Developer group anywhere close to my area.

    Should I continue to learn C++ and read into more of what the Gameplay framework is or

    My first advice would be Yes, continue with C++, but don't stop there...

    You will find that you can benefit from many platforms and frameworks, from C++, Cascades, OpenGL, Air, QML/qt etc... -

    I guess you already had a look at the different webcast?
    If not, take a look at https://developer.blackberry.com/cas...eos/index.html

    and you can get an idea of possibilities with Cascades and OpenGL at least...

    and the recently ported GamePlay framework
    Announcing gameplay v1.4 �BlackBerry Developer Blog

    which is a C++ cross-platform game framework

    Cascades and native UI operate at a stunning 60 fps- so any game utilizing that can have some amazing smooth effects.

    Of course there is a lot you can do with HTML5, but then you would not be able to use any of the Cascade elements (currently) , and most things from the Native SDK. And you will sooner or later feel "stuck".

    If I am not to mistaken, there already exist a Chess game for the Playbook which is made from Webkit/HTML5, so it can be done.

    In the end, it is all about using the right tool for the job, and C++ being a very versatile tool that can be used for all/most jobs, whilst HTML5 is more limited.


    QML/Qt also should be considered for some work..
    have a look at some games made with it ( not BB10 - but portable)




    Adobe Air is of course another solution, and the PhoneGap framework yet another..

    Also consider - that to really utilize the BB10 platform in all its glory, you should go native and C++/Cascades, but if you need portability with older BB phones - or other worlds (android etc.) - you might want to look into some of those cross platform frameworks and using whatever language they require.
    Last edited by Lindstrom; 08-05-12 at 11:17 AM.
    08-05-12 11:03 AM
  7. recompile's Avatar
    Of course there is a lot you can do with HTML5, but then you would not be able to use any of the Cascade elements (currently) , and most things from the Native SDK. And you will sooner or later feel "stuck".

    If I am not to mistaken, there already exist a Chess game for the Playbook which is made from Webkit/HTML5, so it can be done.
    Just to point out, there are a number of games written in HTML5 -- a good example would be RIM's TunnelTilt. With WebGL support, it's astonishing what you can accomplish, as far as games are concerned, with HTML5.

    I agree, you will feel "stuck" sooner or later and want the extra performance you get from the NDK.

    As the parent is completely new to development, I don't know that I'd start her off writing mobile apps. I know that this is a fight I can't win, however, as it's hard to get new devs to see past their current interest e.g. "I want to make mobile apps, why would I learn anything not directly related?" Still, I'll give it a go near the end of this rant, just in case.

    I suspect that for a completely new user, c++ will be, over all, easier to learn, especially if they stay away from the OOP features for as long as possible.

    Why avoid OOP? I won't write a polemic for you, but here's some rambling: No one can define what OOP is, the common definitions-by-feature-lists are incoherent (inheritance breaks encapsulation, for example), and they'll find nothing but conflicting advice about "proper oop" anyway -- there is virtually no agreement between OOP advocates. Use objects sparingly, when they're useful, that's cool (hint: they're almost always unnecessary, especially in games.) Stay away from OOP, design patterns, inheritance, etc. as long as you can. The last thing beginners need is additional complexity with little to no benefit -- modularity existed long before OOP, and OOP is rarely (never?) the best way to achieve that particular goal (OOP has been called anti-modular by its very nature, and I couldn't agree more.)

    JS/HTML5 is brain-dead simple, but only if you know what to avoid. A new developer isn't going to have the background to understand the language fully enough to use it efficiently enough for a game. Well, there are other things that make it a bad choice for beginners, despite the superficial simplicity, but I'm apparently unable to articulate them today! (There's also the temptation to use useless libraries like jquery as everyone and their brother will tell you it makes everything simpler. The truth? It doesn't. If you go the html5 route, try to stick with specialized libraries like bbui.js and three.js -- you'll waste more time learning and using a general purpose library than it takes to just learn to do things yourself. You'll find it's often less complex as well, with the library just offering you unnecessary overhead.)

    Between the two, for an absolute beginner with no experience and abundant free-time, go with C++ over HTML5, but stay away from OOP until you're more experienced. (If you can avoid that incoherent, over-hyped, waste of time and resources altogether, that would be even better, but it's an evil I fear we're stuck with for a while longer.)

    Start with simple projects -- don't even bother writing a mobile app until you're comfortable with programming and the language. Those cheesy programs we have students produce are for their benefit, after all. Write a console game of NIM as a first "big project", for example. Do simple exercises like draw a right-triangle out of asterisks of the height specified by the user, do the same project but instead of a right-triangle, do an equilateral triangle. These sorts of exercises are designed to help you learn to program, even though they're not directly related to writing mobile apps. I promise, they're all very simple and will help you learn. I use all three above with my students.
    08-05-12 04:25 PM
  8. Mahoraba's Avatar
    Start with simple projects -- don't even bother writing a mobile app until you're comfortable with programming and the language. Those cheesy programs we have students produce are for their benefit, after all. Write a console game of NIM as a first "big project", for example. Do simple exercises like draw a right-triangle out of asterisks of the height specified by the user, do the same project but instead of a right-triangle, do an equilateral triangle. These sorts of exercises are designed to help you learn to program, even though they're not directly related to writing mobile apps. I promise, they're all very simple and will help you learn. I use all three above with my students.
    As useless as you might of thought it was for attempting to get me headed on the right path, I thank you for the time invested into helping me on that path, I will do just that to get myself more experienced with C++.

    You've peaked my curiosity on OOP due to me thinking that C++ in its design was built around OOP but you seem to be very foot-down about using OOP sparingly or not at all.

    Edit: Oh, and beyond http://www.cplusplus.com/doc/tutorial/ and C++ classes are there any places recommended for C++ learning? Currently I've just been using the knowledge I get from the site I linked to do different things with the language.
    Last edited by Mahoraba; 08-05-12 at 05:34 PM.
    08-05-12 05:23 PM
  9. recompile's Avatar
    At risk of starting a holy war, I don't think c++ is great as a learning language, though I understand that you'd want to start off with the tool you intend to use.

    I took a look at the tutorial you sent, and it seems like a good introduction, if it a bit dense. Well, it's not unlike what I think I'd produce if I were to use C++ as an introductory language.

    C++, like many languages, include what I call "cruft". That is, necessary code that you must include in early programs that you have little hope of understanding until later on. You may have noticed some of this already, and thought you were just having trouble understanding it. It's not your fault, there just isn't any way around cruft in some languages.

    I guess the best advice i can give you is to focus on control structures and data types, leaving functions and other things until you have a solid grasp of those basic concepts. That is, don't worry too much about what int main and return mean right off, it'll make a lot more sense once you've got a handle on functions just a little bit down the road. Just focus on the bits between int main () { and return 0; } and you should be okay until you get around to functions.

    Following the tutorial you sent, I would recommend you stop after the first section under control structures, just before you hit Functions(I). You'll be able to write quite a few interesting programs at that point, and it would be a good idea to take some time, a few weeks even, to do some small projects. With any luck, you'll find the need for something like functions along the way, making the next two sections a walk in the park.

    On OOP, you're going to have to deal with it at some point. Just remember that no one agrees on what it is and that "OOP done properly" is a mythical beast which even the most ardent OOP supporters can't agree between themselves on what it ought to look like!

    For beginners and professionals alike, OOP in whatever form, more often than not, adds complexity. As a learner, I'd steer clear. (As a professional, I'd doubly steer clear, though it's not always an option.) I know it's not a popular opinion, and I'm sure a few of my fellow developers heads are about to explode, but at least I'm in good company -- CMU dropped OOP from their freshman curriculum calling it both anti-modular and anti-parallell by its very nature. As far as current OO languages are concerned, I couldn't agree more. Still, with such a poorly defined concept like OOP, it's difficult to make any broad claims about it. OOP seems to mean many different contradictory things to many people.

    Just remember that programming is more art than engineering -- there isn't always a "right way" or a "best way" to accomplish a particular task and there are typically trade-offs between competing solutions. The only thing I think anyone can call "bad" in programming is "unnecessarily complex". If you take your time and are critical of your own work, you're guaranteed to get better as you go along.
    08-05-12 06:41 PM
  10. Morten's Avatar
    Just remember that programming is more art than engineering -- there isn't always a "right way" or a "best way" to accomplish a particular task and there are typically trade-offs between competing solutions. The only thing I think anyone can call "bad" in programming is "unnecessarily complex". If you take your time and are critical of your own work, you're guaranteed to get better as you go along.

    This is very true.
    And one interesting thing to do, is to bring back and look at old code you did 1 year, 2 year, 5 - perhaps 10 years ago - and every time you look at it, you "see" all obvious "mistakes" you did, or easier way to achieve your goals. It can be like writing a nice story - you start by drawing the big lines, then you dig into it party by part, you leave it behind for a while - and go over it again and again to make it better every time.


    One big mistake many does in the beginning - is to focus on mathematics and solving mathematics problems. Don't make things more complicated than they are,. keep it simple - and then simplify it again.
    08-05-12 06:50 PM
  11. madman0141's Avatar
    If you go into the RIM website they offer training. Not sure if its about pure development but is a place to start.
    08-05-12 07:53 PM
  12. squished18's Avatar
    Hi mahoraba:

    For beginner programmers, I highly recommend checking out udacity.com. It's free. They use Python, but that shouldn't be a major concern to you when starting programming. You don't even need to install a development environment on your computer in order to get going. It all works through your browser.

    Cheers,
    08-07-12 10:40 AM
  13. Brian Scheirer's Avatar
    Best advice I got when I wanted to learn coding was to pick up Problem Solving with C++ by Walter Savitch. Can get the 7th edition on amazon for like $10. I'm only a quarter of the way through the book and I've already written some decent apps in Cascades. Though if you use Cascades you need to learn QML too (which isn't that hard).
    08-12-12 09:53 PM
  14. squished18's Avatar
    Best advice I got when I wanted to learn coding was to pick up Problem Solving with C++ by Walter Savitch. Can get the 7th edition on amazon for like $10. I'm only a quarter of the way through the book and I've already written some decent apps in Cascades. Though if you use Cascades you need to learn QML too (which isn't that hard).
    Hi bcs925:

    I just checked Amazon and that book is currently closer to $90. Mind explaining how you got the $10 price?

    Thanks,
    08-14-12 08:43 AM
  15. pkcable's Avatar
    Hi bcs925:

    I just checked Amazon and that book is currently closer to $90. Mind explaining how you got the $10 price?

    Thanks,
    You are probably looking at prices for the 8th edition and for a brand new one. He means a used 7th Edition....

    Amazon.com: Used and New: Problem Solving with C++, 7th Edition
    squished18 likes this.
    08-14-12 09:52 AM
  16. Brian Scheirer's Avatar
    What pkcable said, used 7th edition = ... No reason to get a new, current edition unless you are in some class that the teacher forces you to. There are great examples in there to walk you through C++.

    To further my comments about Cascades, QML is very powerful and a lot can be done without calling on C++. And there is a ton of free info on QML on BB's dev site (https://developer.blackberry.com/cas...documentation/) and Nokia's Qt site (Qt 4.7: Introduction to the QML Language).

    Last place to look for stuff is BB's dev forums (Developer Support Forums - BlackBerry Support Community Forums) but I suggest you have some background in something before diving into them or else none of the threads will make sense.

    And a shameless plug... I just started a Cascades/QML/C++ blog (link in my sig). Have about 5 more postings ready and quite a few ideas for future postings but trying to space them out .
    bbquincar and squished18 like this.
    08-14-12 12:13 PM
  17. squished18's Avatar
    Thanks - I was looking at the new copies. Just placed an order for a used copy.
    08-14-12 02:49 PM
  18. bbquincar's Avatar
    Im also new to this programming thing and i find cascades has all the tools i need so far. And with a some help from others with sample codes i seem to understand whats going on.
    I wouldnt call myself a programmer by any means though. you guys work crazy hard at your thing. How far can i really go with cut and paste and cascades tools and documentation.
    08-14-12 03:42 PM
LINK TO POST COPIED TO CLIPBOARD