Sunday, June 7, 2009

Morfik Languages: C# or something else?

Anyone that has taken an interest in Morfik AppsBuilder 2.0 knows that it is available in two editions: FX (Pascal) and BX (Basic). That is huge change to what you would find in AppsBuilder 1.4 which supported four different languages (Pascal, Basic, C# and MorfikJ a.k.a. Java) in a single version.

I have no idea why Morfik decided to separate the languages in 2.0 and have a separate edition for each language, but I imagine the reason they left C# and Java out was that these languages had drawn much less interest than Pascal and Basic and their compilers were not up to the level of the Pascal and Basic ones. In a previous post I presented a list of new features that were mentioned as being underway for version 2.1 by Aram Mirkazemi (Morfik CEO). Among these features was should be actually a whole new edition: C#.

There is a huge number of people around the world that work daily with languages from the C-family of programming languages and which would feel more at home working with a more familiar language. With this consideration in mind I would say that having C# support would be a nice thing. There is another question that comes into play, however. Most people that here the name C# would immediately expect to find support to the .net library, which is essentially the runtime library for the C# language. Morfik, however, has its own framework which has very little, or nothing, to do with .net. This might lead to people being disappointed with the C# edition and not taking up Morfik at all.

I feel it would be a better move for Morfik to add support for a c-family programming language but not call it C# as it will be working with a framework entirely different from what C# developers are used to and will have features that C# does not, in order to fully support the Morfik Framework. Having a language similar to C# and Java could be an asset but calling the language C# or Java could actually work out to hinder the adoption of the language and consequently the tool itself.

What do you think?

12 comments:

ivalo burov said...

Renewing of C# support will be nice. I’m still waiting for this release.
About how programming languages are titled, as far I remember Morfik C# and Morfik Java was used in first release.

“I have no idea why Morfik decided to separate the languages in 2.0 and have a separate edition for each language, but I imagine the reason they left C# and Java out was that these languages had drawn much less interest than Pascal and Basic and their compilers were not up to the level of the Pascal and Basic ones.”

I think that not any C# compiler was included in 1.x version. All C# and Java coded sources was translated to pascal code at beginning and free pascal compiler was used for this goal.
Separating of versions is related a little more to the market strategy by my opinion and maybe to the new component pattern.
Using of only one programming language in framework and user defined code is clearer like conception in addition.
The same bored task for me like C++ programmer with C++Builder was to read their VCL pascal code. Sometimes I was forced to translate any useful VCL code parts to C++.
There were many disadvantages in component writing and using by this reason.
I hope that Morfik component conception will allow using and writing of not only pascal coded components.

Mauricio Longo said...

In Morfik AppsBuilder, all binary code generation (that is to say all server side code) is done through the FreePascal compiler. This means that regardless of which language you write the code in, the server side compiler will generate pascal code which is then processed by the FreePascal compiler to generate the final binary.

The current BX edition does this for the Morfik Basic language and the upcoming C# edition will do the same for the C# language. One difference between Morfik's approach and what was done with C++ Builder is that ALL of the framework is translated into the language of the edition you are using. Morfik BX has all its framework source code in Basic and the same will be true for the C# edition.

This means that you will be able to write your components in any language. As a side effect it also means that your components will only work in that particular edition, making it difficult for component writers to easily distribute the components for wider audience.

In a way, if you are expecting to get a version of Morfik that used a C# compiler for backend (final binary) generation, you are helping me make my case. That is not what a C# edition will be and that is the reason I feel that people might be disapointed in their expectations.

Now, if it were called M#, for example, you might be happy to have a language that is similar to C# and therefore familiar to you and would not be disapointed because it turns out that it does not use a backend C# compiler. :-)

piprog said...

I love multiple languages support, but at the moment I'm afraid it is taking heavy toll on R&D resources at Morfik, and would be happier seeing a mature Pascal version before bringing out new language versions. Just imagine that they have to maintain 2-3 different language versions of the same code of tens of thousands of lines...

It is clear that supporting 3rd party component development in 3 different language versions is impossible until there is a market for components (and right now there is not). I hope that actually Pascal-implemented components will continue to work in the other language profiles. But we do have several patches to the FrameWork in PMAP and maintaining these in 3 different source trees will already be a pain.

I had a suggestion for Fuad & Aram years ago to look into retooling the back-end/server side to work on Mono (.NET) or JVM (Java) this way having a strong foundation and also a wide selection of languages and a huge library of code. GWT is the closest thing to this dream, but Morfik is still light years ahead in terms of ease of doing small to medium projects especially for web-newbies.

Mauricio Longo said...

I might be mistaken there, but I believe that Morfik has very little trouble in maintaining 2 or 3 versions of the same code. All code is created in Pascal and then "automagically" translated to Basic or C# (or Java for that matter). Morfik's compiler technology is quite advanced and Morfik makes use of this technology to create the specific versions of the Framework.

They do have quite a bit of trouble in maintaining 2 or 3 different front-end compilers though. I would guess that that is the reason why C# and MorfikJ were left out of version 2.0.

By the same token, while generating code for Mono or for the Java Virtual Machine is certainly well within Morfik architecture's possibilities it would require a major commitment in time and resources, I believe.

piprog said...

Automatic language versions: it may be very much true (you have more inside knowledge Mauricio in this respect ;-). The last 1.4.x cross-language translations did OK job, although manual work was always necessary.

Mono/JVM: it is getting more and more difficult. I put this on the table around the 0.8.* timeframe, when it was more plausible.

I still see a huge opportunity for a Morfik-type tool for Mono/JVM though: Morfik's fully integrated design-develop-debug-deploy-update environment is still unique and is a boon for teams that would love to focus on business issues.

Mauricio Longo said...

I have no real current "inside" knowledge of this. you are right about the translations in version 1.4 requiring some manual "adjustment". I have no idea if this is improved now as it is not available in 2.0.x.

Actually, I don't see anything that has changed between 0.8 and 2.0.x that would make supporting either Mono or JVM more difficult than it was to start with.

Most of the huge evolution you see in Morfik 2.0 is either Browser or IDE related. Sure, there were improvements and bug fixes to the server side Framework, but no major architectural changes that would make a difference in this.

piprog said...

At the moment I don't see Morfik would be interested in going the Movo/JVM route. I do understand since this would amount to a couple of man-years development effort.

Optimally this would mean a complete overhaul of everything from the IDE to run-time infrastructure and database backend.

There were suggestions for an Eclipse based IDE - although it is more resource hungry and more sluggish functionally it is more advanced and has big mindshare and support even in big companies.

And a key question is of course providing mature client-side language support. Morfik is good at Pascal client side support, but C#/Java are quite different beasts. The GWT Java "trans-compiler" does a pretty decent job in this respect ;-)

Mauricio Longo said...

I'm sure it would take a lot of effort to implement Mono or JVM support. Sincerely, for my personal use of the product, I couldn't care less. :-) I am quite happy to run my applications on a Windows server and the Linux support is improving.

I also love the independence, or should I say lack of dependencies, a Morfik application has. It is extremely easy to deploy a Morfik application in intranet or desktop scenarios.

Of course, having a strong background in corporate IT I totally agree that supporting a platform that has a huge base of existing code is interesting. In this case Java has a stronger case. On the other hand Java is overly complex, these days. This is in direct opposition to Morfik's philosophy of simplicity. (I know it it could be simpler, but that is the ultimate goal.)

As for the IDE, I see no benefit a move to an Eclipse base. You should realize that re-developing the Morfik visual designers in Java, to plug in into the Eclipse IDE, would be huge effort which wouldn't add a single extra feature for the end user. Not to mention that the Morfik IDE is much more responsive and lighter than Eclipse.

If Morfik were to invest the corresponding amount of time into simply improving the existing IDE, it would, probably, benefit users a lot more than porting it to fit into an Eclipse base.

piprog said...

That's all true. Morfik is like Delphi: you have a platform lock-in and small mindshare (yet:) but to create small, efficient apps in small, business-focused teams there is not a match, even now. That's why we love them both, arne't we? :-)

This Mono/JVM stuff (even Silverlight) is for big guns, not for the boutique shops.

Mauricio Longo said...

Well I guess it is clear that we are both passionate about it. :-) Now about these things JVM, Mono... what are they? ;-)

Silverlight?!?! Does anyone really use that? Last I heard even the early adopters where moving away...

ivalo burov said...

I believe that Morfik have nothing to do with JVM and .NET. For example if you are a C++, Pascal or C# programmer and your project is related with some 3d engines /Ogre,Irrlicht.../, your code will be related mainly with selected engine/framework/design pattern. In this case you can choose corespondent language port of the framework, but your code will be not portable between different engines.
About IDE I think that using of own IDE is the best issue.
Just wonder why Adobe still use Eclipse in their Flex :)
Silverlight target group are the VS developers. MS released one addition design tool - Expression Blend. Very nice tool, but for more advanced projects you should have minimum two tools - VS for programming and Expression Blend for design.
I like more Morfik conception, because will get design and programing toll in one IDE.

Mauricio Longo said...

I agree. Morfik chosen technology makes for quickly and easily deployable, fast and lightweight server apps.

I also believe that having its own custom tailored IDE was the best choice and the difference in responsiveness and in the level of the WYSIWYG experience in AppsBuilder shows that.

Frequently, when I'm working on a Morfik project, my wife will look at my screen and ask if I'm working on a presentation. I think that mistaking a visual development tool for Powerpoint is one of the greatest compliments it can get. It speaks volumes for how easy it is to design things and how great it looks.

Post a Comment