Very good advice - is anything like it already in the Julia docs?  If not, 
it should be added, up near the beginning.

On Thursday, May 12, 2016 at 4:10:22 PM UTC-4, Tom Breloff wrote:
>
> I find the most valuable thing to do when designing julia code is to focus 
> purely on "verbs", not "nouns".  This means focusing on the action... NOT 
> the object that is acting.  In julia, you can do fun stuff like:
>
> julia> type Car end
>
> julia> speed(::Car) = 60
> speed (generic function with 1 method)
>
> julia> type Plane end
>
> julia> speed(::Plane) = 500
> speed (generic function with 2 methods)
>
> julia> function move(pointA, pointB, tools...)
>            speeds = map(speed, tools)
>            idx = findmax(speeds)[2]
>            println("""I don't always go fast, but when I do, I prefer a 
> $(lowercase(string(typeof(tools[idx])))).
>               I am... the most interesting coder in the world.""")
>        end
> move (generic function with 1 method)
>
> julia> move(1, 2, Car(), Plane())
> I don't always go fast, but when I do, I prefer a plane.
> I am... the most interesting coder in the world.
>
> julia> type Teleporter end
>
> julia> speed(::Teleporter) = Inf
> speed (generic function with 3 methods)
>
> julia> move(1, 2, Car(), Plane(), Teleporter())
> I don't always go fast, but when I do, I prefer a teleporter.
> I am... the most interesting coder in the world.
>
> The point with this silly example is that, in OO, you would first start 
> thinking about all the things that your transportation tools can do, and 
> about heirarchies of "well, a plane is kind of like a car, and, well, kind 
> of like a bird.  I know, I'll inherit from both!"  But really you should 
> think about the important actions and attributes, and the hierarchy and 
> interactions between objects will follow naturally. 
>
>
> On Thursday, May 12, 2016 at 3:34:23 PM UTC-4, Ford Ox wrote:
>>
>> I did read those and it didn't make it much clearer to me. (Hell I didn't 
>> even know what is coupling until this Thursday morning)
>> That's why am I asking for example and possibly some page on this topic 
>> in docs, since I have been programming in OO languages all my short 
>> programmers life and Julia comes with completely different approach. 
>> Some things from OO can be achieved by different approach, some things 
>> can't be achieved and shouldn't be even tried to. 
>> I don't want to reinvent the wheel. I don't wanna try make Julia OO. But 
>> I want coupling / nicely distributed code into multiple files (that's why 
>> OO exist in the first place right?).
>>
>> And I am sure that many people joining julia (especially with v1.0) will 
>> be asking the same question. Therefore I would expect some official guide 
>> at one visible place (which this thread is no more).
>>
>> Dne čtvrtek 12. května 2016 19:40:06 UTC+2 David Anthoff napsal(a):
>>>
>>> Do a search for “encapsulation” in this google group and you’ll find 
>>> quite a number of discussions on some of the design philosophies around 
>>> this topic, many from the julia devs.
>>>
>>>  
>>>
>>> *From:* [email protected] [mailto:[email protected]] *On 
>>> Behalf Of *Ford Ox
>>> *Sent:* Thursday, May 12, 2016 10:20 AM
>>> *To:* julia-users <[email protected]>
>>> *Subject:* [julia-users] Re: Julia large project example.
>>>
>>>  
>>>
>>> I am sorry for those words. The idea of that sentence should have been:
>>>
>>> "Your approach looks like a big no no. 
>>> Could julia devs share their idea of how should apple encapsulation 
>>> achieved? Since they are the one, who invented this language, they had to 
>>> consider *encapsulation* many times already, so they should be the very 
>>> first person who gives advice on this particular topic (since nobody 
>>> answered this topic well one comes to conclusion that they are also the 
>>> only one who can answer it)."
>>>
>>> Thank you for your time and patience devoting to my questions.
>>>
>>> Dne čtvrtek 12. května 2016 18:52:22 UTC+2 Kristoffer Carlsson napsal(a):
>>>
>>> I am pretty sure the Julia developers can speak for themselves. A more 
>>> humble approach would suit you well.
>>>
>>>

Reply via email to