[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Beginning with obj-c/gnustep
From: |
David Chisnall |
Subject: |
Re: Beginning with obj-c/gnustep |
Date: |
Thu, 22 Jun 2017 17:45:45 +0100 |
Hi,
On 22 Jun 2017, at 16:50, Ed Den Doolaerd <edendoolaerd@gmail.com> wrote:
>
> Hello guys,
>
> let me shortly introduce myself: I've been a mainframe programmer/analyst for
> 33 years, mainly programming in COBOL. On the PC platform, besides some
> elementary stuff in C and Java, I have no programming experience.
>
> I wanted to try programming on the PC, using open source software. I will not
> go into the details of how I arrived at it, but I believe having good reasons
> to choose for Objective C / Gnustep on FreeBSD. I hoped you could tell me if
> this seems feasible with my background, or if I would be better off to start
> with another programming language /OS, and coming back to Objective C later
> on.
First: I am totally biased on both counts (as the libobjc2 author and a former
FreeBSD Core Team member), so please read into this what you will:
If you more or less understand C (i.e. the commonly used parts of the language,
not all of the crazy pointer arithmetic stuff) and you understand the Java
object model, then Objective-C should be relatively easy for you. The biggest
hurdle is likely to be the syntax, though Objective-C syntax is more COBOL-like
than C-like[1], so this might not be a problem.
If you use ARC (which works out of the box on FreeBSD) then 99% of the time you
can avoid thinking about memory management (cyclical data structures will leak,
but once you notice those then it’s relatively easy to fix). The main
difference beyond that from Java is that method invocation (message dispatch in
Smalltalk / Objective-C terminology) is not tied to the class hierarchy.
Before invoke_dynamic was added to Java, Redline Smalltalk (Smalltalk on the
JVM) implemented something similar by adding an interface for every method and
inserting a cast-to-interface before each method invocation. That may help you
as a mental model.
David
P.S. One of the FreeBSD committers has written his own Foundation
implementation, which has better FreeBSD integration and a more permissive
license, but is far less feature complete than GNUstep. If you’re mostly
interested in smallish server tasks, it might be a better fit, as it has a
smaller footprint. If you’re interested in GUI applications or more complex
server things then it probably isn’t.
[1] Please, no one kill me for saying that!