Daily Reflection
Today’s time is being spent reading through the docs @ developer.apple.com, specifically the iOS docs.
I took a stab at iOS about a year ago. In retrospect, I was trying to learn a platform to achieve an end (make money!) without having developed a clear idea of the means (a specific app). Not having a specific purpose probably was my undoing. Funny how app dev can mirror real life (have identified goals!)
Now, I have a goal in mind. It’s simple game and I’ve already POC’d the whole damn thing in JavaScript. Tt runs in a browser, so I know that the concept is viable. In fact, I’ve had others preview it and give me feedback to improve it even more.
Of course, now, I think that I can learn ANY development language without having a specific app in mind. This is because, rather late in life I’m afraid, I’ve developed a “checklist” to learn the fundamentals of any programming language, even if not the nuances that make that language special.
Example: In ANY language you will have the following notions:
- data types (or not)
- collections
- conditionals
- operators
- looping/iterators
- memory management
- modularity
- user interface options
- asynch operations
- IO
- level of object-orientation supported (classes, interfaces, polymorphism, mix-ins, operator overloading)
- implementations: Are there multiple implementations of the language? If so, why? (Example: Ruby (MRI, Rubinius, JRuby, mRuby, etc)
If I sit down with this checklist and a language, I can at least get two feet firmly planted on the ground.
This new, daily compendium format serves multiple other purposes: consistency/habit, a reference for myself and proof that I really did learn something new that day. I think the first part of each post will consist of a bit of reflection and the second, the specific items learned.
Daily Learnings
- in X-Code, you can Ctrl-Click on most anything to get Help for it.
- As I gear up for learning Objective C to write iOS apps, this very weekend I see that mRuby has made a splash as Matz has released a version of Ruby for mobile devices. Sigh…
- And someone has already created a REPL (Read-Eval-Print-Loop) for it (minus ‘print’) http://www.avocadodb.org/2012/04/22/towards-an-interactive-mruby-shell
- X-Code has built in support for creating a local git repo for your project.
- Objective C clases require two files: a header file (.h) and an implementation file (.m). The interface file contains the class’s public API. The implementation file, as the name suggests, contains the code that implements the class.
- Everything declared in the public API goes inside the class declaration which is denoted by @interface <Class Name> : <inherits from> ( usually from NSObject ) and the class ends with @end