marcov wrote:(oh, and don't OOP what aren't already objects)
I'm not sure what you mean here.
(maybe also the method kind, which adds an instance reference)
No, not at this time. There was idle talk of trying some form of Delegate construct, but nothing came of it. C++'s member function pointers are a bit ugly-- IMHO--and Delegates may make more BASIC sense anyway.. (C++ had to integrate similar functionality in the stdlib, done better by Boost)
To my best knowledge, [neither C++/Java/xxx] have support for [Vistor]. Some of their libraries do, but it is not a language feature.
IOW if you really want this, start designing FB template support (you'll need it anyway for when you come back from C++) ( :-) :-))
But anyway, I wouldn't use features that won't be easy to add to the initial in basic compiler. It will only make that already horrible hard decision harder.
I wasn't talking about having 1st class support for Visitor, but those familiar with those languages can generally see the pattern well. I know that C programmers are very familiar with "void *", unions and functions pointers, but the point is that other languages support the design in a more "friendly" and extensible/flexible way, without the use of dangerous casting or excessive boilerplate.
But yes, the idea would be to create a design that's easily portable, which for Visitor would only need some method of double-dispatch--either run-time or compile-time polymorphism, but I imagine templates/generics would come later..
I don't even think you'll make it till then. It will have forked into oblivion, by the people that want to stick/port to C++/Java/C# and maybe a bit more over compiler versions, OSes etc.
C++ ian sich will be pretty similar, but build systems, approaches, library use, use of newer C++ standards (Boost etc), way to interface assembler etc won't.
If the project was entered into without any forethought whatsoever, then I agree. Forking into a different language implies that the old language wasn't suitable for the task (for instance, the interest in a C++ effort in the first place). I'm not interested in a rewrite in C++ for the sake of having something to do in C++.
Unfortunately make systems and other project files are not [portable]. And keep in mind that this is all work for a temporary measure that only indirectly contributes to the FB codebase.
I think the benefits of an OOD aren't to be understated like that, but then again, compilers are new to me.