Le 10 janv. 2014 à 17:42, Erik Engheim a écrit : > > On 08 Jan 2014, at 11:25, Matthias BUSSONNIER <[email protected]> > wrote: > >> Some misc comment too : >> >>> Julia is not object oriented >> >> Is that True ? From the manual : >> >>> It is multi-paradigm, combining features of imperative, functional, and >>> object-oriented programming. >> >> I consider that Julia can be OO, the code just look different than in other >> languages. > > I did not mean that Julia does not support object oriented programming. I > mean you can program object oriented in pretty much any programming language > since it is mainly about a way of thinking. But given Julia’s feature set I > would say it isn’t pushing object oriented thinking. To me it is similar to > google Go. As far as I remember the authors say Go isn’t object oriented > although it certainly supports object oriented programming.
At first read I understood that you couldn't do OO with Julia, but maybe it is due to my limited use of english. Carefully re-reading I understand the meaning and what was your intension, but I think a development like you made just below would be a nice addition. > I personally think Julia distinguish itself positively by not incorporating a > lot of the traditional ways of doing Object Oriented Programming such as > inheritance of concrete types. The google Go authors also realised this was a > mistake. From my experience of programming C++ for many years on large > projects, I think Julia will avoid the following problems I have experienced: > > 1. The fragile base class problem > 2. The confusion about whether an overriding function should call it’s super > class version or not. > 3. Accidentally calling a virtual function in the constructor. This goes bad > in C++, C# and Java in different ways. Usually resulting in difficult to > debug bugs. > 4. Deep class hierarchies. Your average developer seem to keep adding > concrete subclasses for convenience until the code is a mess. I don’t > consider a deep hierarchy of abstract types in Julia a problem, because they > are much easier to reason about that a deep hierarchy of concrete classes. > > But I agree that whether one should call Julia object oriented or not is a > difficult issue, because it might make sense for marketing purposes. Many > people don’t seem to want to touch programming languages which are not object > oriented, as if there is something wrong with them then. I think the teaching > of object oriented programming is much to blame for this, because Object > Oriented programming is often taught as a better way of doing things in > general rather than as better way for modelling certain problems. > >> >> Liked the blog post too otherwise thanks, I would also have mentioned >> code_lowered, code_llvm and code_typed >> not everyone is fluent assembler and those tool are really useful to, >> especially in metaprogramming. >> > > Hehehe I actually looked at those briefly but could not make immediate sense > of them. Assembly code made more sense to me. For most people with my > background from micro controllers, robotics, systems programming and such I > think you would be more familiar with assembly code than abstract syntax > trees. I learned about ASTs long after I learned Assembly. But I guess for > the targeted audience of Julia there are not many micro controller > programmers ;-) Assembly do not make sense to me, and I still need to practice my AST and llvm a lot. > I am playing around with julia meta programming at the moment, but I am not > very good at it yet. Hope you'll made a post about it too :-) -- M
