Apple

Objective-C

Hey

I used to work with these two guys who introduced me to Be Boxes... I said I need to buy one before Be disappears (and they did, I wish I still had my BeBox). These two guys were ex-poker machine programmers (on Amigas, yes really). They raved and reved about NeXT, I never ever really got it at the time. I was doing C++ work with them in mid-1990s and knew about O-O concepts but with all this delegates, protocols, extending classes without inheritance, it made little sense to me at the time. I got into BeOS and found that fun and addictive, I was always hacking about in C++ with Be API until about the early 2000s, I wrote an article in Doctor Dobbs Journal about BeAPI and BeOS programming. Then all the BeOS clones came out and I grew very skeptical about the Be legacy and gave up, until I came back to Haiku a long time down the track. I stopped AmigaOS programming about AmigaOS 4.1 update 2, when ACube turned on the dealer base and started selling direct to the public, the X1000 was over promised, and never released.

When OS-X came out I tried Objective-C ...

At first I hated it. Really really hated it. I recoiled against what seemed wrong in in the object model and what I didn't understand..

Then I liked it but didn't really have that much of a clue, it was new and exciting and different.

Then (I thought) I really got to know it and hated it passionately.

Then after a long break came back to programming in Objective-C and found it to be fun and addictive. Maybe it should have been called Addictive-C..

My latest offering is
http://itunes.apple.com/us/app/cricket- ... ?ls=1&mt=8

I have barely one any IRIX or Haiku programming in ages.

If you want to learn Objective-C, learn smalltalk first. Things will make a lot more sense.

R.

_________________
死の神はりんごだけ食べる

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

:Tezro: :Tezro: :Onyx2R: :Onyx2RE: :Onyx2: :O3x04R: :O3x0: :O200: :Octane: :Octane2: :O2: :O2: :Indigo2IMP: :PI: :PI: :1600SW: :1600SW: :Indy: :Indy: :Indy: :Indy: :Indy:
:hpserv: J5600, 2 x Mac, 3 x SUN, Alpha DS20E, Alpha 800 5/550, 3 x RS/6000, Amiga 4000 VideoToaster, Amiga4000 -030, 733MHz Sam440 AmigaOS 4.1 update 1. Tandem Himalaya S-Series Nonstop S72000 ServerNet.

Sold: :Indy: :Indy: :Indy: :Indigo:

Cortex ---> http://www.facebook.com/pages/Cortex-th ... 11?sk=info
Minnie ---> http://www.facebook.com/pages/Minnie-th ... 02?sk=info
Book ----> http://pymblesoftware.com/book/
Github ---> https://github.com/pymblesoftware
Visit http://www.pymblesoftware.com
Search for "Pymble", "InstaElf", "CryWhy" or "Cricket Score Sheet" in the iPad App store or search for "Pymble" or "CryWhy" in the iPhone App store.
I once had to deal a little with Smalltalk and found it strange at first, but very refreshing after getting used to "really everything is an object" (or rather a message call), even loops and if-constructs
Is nice to see a forum member taking a piece of a pie ;) Keep the good work!

Well, when my former company tok the "all should go mobile" hype that was spreading around 2009-10, i was forced to jump "into the fire" in less time as possible. The first moment i was introduced (in deep) to Apple technologies was at WWDC10 in SF. I was really amazed of the community that was so pumped up with all that shinny and buzzwordish stuff, jingling around with all those iPhones and iPads and shiny applications ... The thing that shocked me the most was the amazing developer support we got downstairs in the workshops ... From the surface scratching of basics to the most complex stuff like graphics and advanced OpenGL programming for games .... for every geek there was an support person that answered all smart and dumb questions you thrown at them ...

Coming back form WWDC10 and calming down, i was in the moment to write first lines ... in those moments i wish i never sign myself to the mobile department :mrgreen: I had some C and C++ background, but Objective-C was really something new for me. With the help of really extensive help and examples library i was able to go steps up every day and relatively quick.

The thing that bothered me the most was the "manual" idea of memory management. Those retains and releases got me shizling crazy so much i wanted to pull my hair out. You don't own the object don't release it .... or if you take ownership of the object take care to release it properly, those words seems really easy to understand on paper, but when you do it in practice and without experience you can end with an really ugly and nice memory leaking piece of code :)

I was so afraid that my app will crash, umm not crash .... that the phone will explode ... i ran Instruments after every few lines of code i wrote, to see if i had memory leaks. That was scary, tedious and somewhat weird experience.

The two most important things concerning generic Objective-C concepts, that i learned at WWDC was, 1. Use the (Cocoa) frameworks, like Apple said - we built those frameworks for you (and obviously from a team of top-end coders), so don't reinvent the wheel 2. Don't extend everything and with this statement go to the point 1. That helped me a bit, and after some time of adaptation i was able to do something useful with all this nice development ecosystem ...

_________________
Image
-----------------
Image Image Image
I am rapidly developing better Objective-C skills..
I know this because I look back at 3 month old code and shudder and want to rewrite it better.

I have periods of having a lot of fun with it, but I have tripped over my own feet a lot in the mean time.

Every day I am learning so much more with it.
I would like to play with BCPL or RISCOS or something but no time anymore.

R.

_________________
死の神はりんごだけ食べる

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

:Tezro: :Tezro: :Onyx2R: :Onyx2RE: :Onyx2: :O3x04R: :O3x0: :O200: :Octane: :Octane2: :O2: :O2: :Indigo2IMP: :PI: :PI: :1600SW: :1600SW: :Indy: :Indy: :Indy: :Indy: :Indy:
:hpserv: J5600, 2 x Mac, 3 x SUN, Alpha DS20E, Alpha 800 5/550, 3 x RS/6000, Amiga 4000 VideoToaster, Amiga4000 -030, 733MHz Sam440 AmigaOS 4.1 update 1. Tandem Himalaya S-Series Nonstop S72000 ServerNet.

Sold: :Indy: :Indy: :Indy: :Indigo:

Cortex ---> http://www.facebook.com/pages/Cortex-th ... 11?sk=info
Minnie ---> http://www.facebook.com/pages/Minnie-th ... 02?sk=info
Book ----> http://pymblesoftware.com/book/
Github ---> https://github.com/pymblesoftware
Visit http://www.pymblesoftware.com
Search for "Pymble", "InstaElf", "CryWhy" or "Cricket Score Sheet" in the iPad App store or search for "Pymble" or "CryWhy" in the iPhone App store.
I really hated it too and had only 3 weeks to develop a full content management system app that tied into a web service, so I ended up using MonoTouch with the free MonoDialog library. Later on when I did Android and Windows Phone 7 ports, it was really neat to be able to keep all but my UI Layer in one C# Library. I think my iPhone/iPad source was only about 1400 lines and most of that was simply TableDelegates and iOS specific UI code.

_________________
:Indigo: 33mhz R3k/48mb/XS24 :Indy: 150mhz R4400/256mb/XL24 :Fuel: 600mhz R14kA/2gb/V10 Image 8x1.4ghz Itanium 2/8GB :O3x08R: 32x600mhz R14kA/24GB :Tezro: 4x700mhz R16k/8GB/V12/DCD/SAS/FC/DM5 :O3x0: 2x700mhz R16k/4GB
Objective-C is a decent language and if you want to stick to the Apple universe then you get a rich set of frameworks to work with. And to be honest, many of these frameworks are really excellent.

But—and this is why I left Objective-C behind—you are really tied to two platforms, namely OSX and IOS. While these platforms are good for client applications, there is not much server related stuff in the Apple universe. Apple focuses on technologies to create consumers of their devices and services. That's ok, this ears their money.

To be honest, for me the really interesting stuff is 'big data', 'databases', 'functional programming' and 'concurrency'. I always liked the big iron stuff and the bleeding edge of technology in the big iron stuff. And that’s the place where Apple decided not to go …

So while I stay on the Mac OS X platform, my preferred language at the moment is Clojure . It’s a LISP based language that has access to all the java libs out there. And while you may sniff at java on the desktop, it's still the most widely used language with lot's of stuff related to third party libs.

If you want to learn something about clojure, have a look at this video presentation. It's from the inventor of clojure.

Combined with modern IDEs that focus on instant feedback like Light Table (early alpha at the moment), this results in an really new experience which I regard as much more advanced and fun than any Objective-C coding I did before.

_________________
:Octane2: :O2: :Indy: :Indy:

Person A: "I'm going to hack the Internet."
Person B: "Which one?"
Person A: (dramatic pause) "ALL of them!"
tomvos wrote:
Objective-C is a decent language and if you want to stick to the Apple universe then you get a rich set of frameworks to work with. And to be honest, many of these frameworks are really excellent.

But—and this is why I left Objective-C behind—you are really tied to two platforms, namely OSX and IOS. While these platforms are good for client applications, there is not much server related stuff in the Apple universe. Apple focuses on technologies to create consumers of their devices and services. That's ok, this ears their money.

To be honest, for me the really interesting stuff is 'big data', 'databases', 'functional programming' and 'concurrency'. I always liked the big iron stuff and the bleeding edge of technology in the big iron stuff. And that’s the place where Apple decided not to go …

So while I stay on the Mac OS X platform, my preferred language at the moment is Clojure . It’s a LISP based language that has access to all the java libs out there. And while you may sniff at java on the desktop, it's still the most widely used language with lot's of stuff related to third party libs.


Not sure if I entirely agree with this.... When I first got interested in Objective-C I started doing OS-X and iOS related stuff but then I started exploring the O-O aspects of it on Linux, I created frameworks, categories, protocols, delegates testing if objects supported certain selectors, etc ... in text based Linux projects just for kicks. You could even do Objective-C stuff on IRIX if you so cared. Its just GCC and later, LLVM.

I am quite happy to work in client server stuff and be coding simultaneously in JavaScript using AJAX stuff, PHP, C/C++,, perl and whatever else is at hand or is called for. You could use Objective-C on platforms other than OS-X and iOS or NeXTstep but you probably wouldn't. For big data stuff I worked in Java, Hadoop, etc I didn't like it much. I've never found the time to learn clojure or install OpenStep. Functional stuff we did at university was in Haskell, gofer, and maybe a little ML or Scheme. Paraell stuff I did was mainly pthreads, PVM, MPI, and they blew up the transputers before I got a chance to learn Occam.

tomvos wrote:
If you want to learn something about clojure, have a look at this video presentation. It's from the inventor of clojure.

Combined with modern IDEs that focus on instant feedback like Light Table (early alpha at the moment), this results in an really new experience which I regard as much more advanced and fun than any Objective-C coding I did before.


To each their own. I just completed 5 entire projects in notepad, forbidden, verboten, absolutely no access to test data or the databases, had to email the code for someone else to test, I had to run in my head thoroughly before emailing any changes. IDEs are a crutch.

R.

_________________
死の神はりんごだけ食べる

アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家

:Tezro: :Tezro: :Onyx2R: :Onyx2RE: :Onyx2: :O3x04R: :O3x0: :O200: :Octane: :Octane2: :O2: :O2: :Indigo2IMP: :PI: :PI: :1600SW: :1600SW: :Indy: :Indy: :Indy: :Indy: :Indy:
:hpserv: J5600, 2 x Mac, 3 x SUN, Alpha DS20E, Alpha 800 5/550, 3 x RS/6000, Amiga 4000 VideoToaster, Amiga4000 -030, 733MHz Sam440 AmigaOS 4.1 update 1. Tandem Himalaya S-Series Nonstop S72000 ServerNet.

Sold: :Indy: :Indy: :Indy: :Indigo:

Cortex ---> http://www.facebook.com/pages/Cortex-th ... 11?sk=info
Minnie ---> http://www.facebook.com/pages/Minnie-th ... 02?sk=info
Book ----> http://pymblesoftware.com/book/
Github ---> https://github.com/pymblesoftware
Visit http://www.pymblesoftware.com
Search for "Pymble", "InstaElf", "CryWhy" or "Cricket Score Sheet" in the iPad App store or search for "Pymble" or "CryWhy" in the iPhone App store.
tomvos wrote:
And while you may sniff at java ...

I'm not so sure that people want to sniff at Java. In principle, Java is fine. The problem is that in practice, every Java app I've ever used that was not a command line program was awful . Truly execrable.

The dislike of Java is not aristocratic disdain. It's a learned response.

Quote:
Combined with modern IDEs that focus on instant feedback like Light Table , this results in an really new experience ...

Kind of like APL/2 did decades ago ? :P
hamei wrote:
Kind of like APL/2 did decades ago ? :P

I had to look up APL2 in the wikipedia. I guess some ideas and concepts of APL still live on in many modern languages.

Basically, a lot of language have a REPL (read-eval-print-loop). This is used to test small bits and chunks of code. A REPL gives you much more instantaneous feedback on your code than the usual compile-run-tryout cycle.
Now the interesting part starts, when you make the REPL truely interactive. Have a look at this video. Isn't is nice if you actually see the data flow through your code? See how your input results in certain output? Being able to quickly change something until it really works like you imagined it to work?

I think we will see a lot more of these instant feedback concepts in the upcoming years.

_________________
:Octane2: :O2: :Indy: :Indy:

Person A: "I'm going to hack the Internet."
Person B: "Which one?"
Person A: (dramatic pause) "ALL of them!"