Can the X++ language be used for the following development? - x++

I'm interested in developing primarily games and websites. Is X++ a suitable language for this?

X++ is targeted for at business ERP domain and it would not support game or generic website development very well.
And X++ is a rather slow language in itself. It has it strengths around database access.

x++ is a language that is primarily used to customize Microsoft's ERP package known as Dynamics AX. Inside of the Dynamics environment, you could develop games (Dynamics does include a version of Tetris in the code tutorials).
Due to the fact that it is not generally used outside of the Dynamics AX environment, I would not suggest learning it for the purpose of writing games.

In terms of your "Can it be used?" title, possibly, but it seems to be targeted to business oriented applications:
X++ is an object-oriented language with similarities to C#. X++ is part of the MorphX development platform that you use to construct accounting and business management systems. (a)
That means, in terms of your "Is it suitable?" in the body of your question, almost certainly not.
In the sense that you could also write accounting applications in BCPL, or web servers in COBOL-85, then yes, it's probably doable. Whether it's a good idea, that's a different matter.
(a) See http://msdn.microsoft.com/en-us/library/aa867122.aspx.

X++ is used only for the Microsoft Dynamics ERP development(for now). It's an OOP language however it's scope is out of game dev.

Related

How to align the BPMN models with the Technology Architecture?

I stuck how to proceed further and need some new ideas to align these BPMN models which I have drawn for Customer Relationship Management(CRM) and Human Resources(HR).
As far as BPM model is considered it's mainly used for Business Architecture(BA) and then for Technical Architecture(TA) I could possibly use Rational Unified Process(RUP) but when I researched I could only find IBM Rational Rose Software which is not free...
My Question:-
Is there, open Source RUP tools which I can use? I looked up OpenUp but I could not make it work(which is a different issue).
Is this the right approach; for BA -> BPM and TA -> RUP ?
The scope of BPMN (BPMN specification 1. Scope ) describes
The primary goal of BPMN is to provide a notation that is readily understandable by all business users, from the business
analysts that create the initial drafts of the processes, to the technical developers responsible for implementing the
technology that will perform those processes, and finally, to the business people who will manage and monitor those
processes. Thus, BPMN creates a standardized bridge for the gap between the business process design and process
implementation.
There are Business process management(BPM) software's which provides process modeling and process execution conformance. Thus effectively making the models executable [at least to a certain depth].
In the free/ open source world you can find jBPM, Activiti etc...
I have tried out jBPM, is pretty much mature and has standard notations compliance. Also it supports modeling, execution and operational functionalities.

Alternatives to VXML (VoiceXML)?

I was contacted about an opportunity to do VoiceXML--I don't have any experience with it, but apparently that might be okay. However, I did some initial research on the technology and it looks like it's pretty old, never gained much traction, etc. but I can't figure out what technolog(y, ies) replaced it. Is VoiceXML a good skill to acquire right now or is it dying out/never really caught on that much? If it is dying out, what is replacing it? Why?
VoiceXML is far from dead for developing Interactive Voice Response (IVR) systems. All of the top IVR platforms support VoiceXML because it is an open standards supported by the W3C and is still actively being worked on by the Voice Browser Working Group, along with many other associated standards. There is a good discussion on the progression of VoiceXML and development environments in this blog post.
The other advantage to VoiceXML is that it uses web based technologies for developing voice applications so you can leverage any skills you have in this area for development. But if you are new to IVR development there are other skills you will need to learn to be successful such as Voice User Interface (VUI) design, how to develop grammars for speech applications, and tuning speech applications. You would need to learn these skills regardless of the language or development environment.
Another approach for developing IVR applications that reduces the need for knowing VoiceXML is a framework like the open source project VoiceModel. If you already have skills in ASP.NET VoiceModel allows you to develop IVR application that run on VoiceXML platforms without understanding VoiceXML. It abstracts it to a higher level where you are just piecing together .NET objects to define your voice application. The other nice thing about VoiceModel is you can develop your IVR application once and it will run on a VoiceXML compatible IVR or a cloud-based IVR like Tropo. There are plans to also include support for Twilio.
And maybe that is the buzz you are hearing about VoiceXML dying. There are cloud-based IVR/telephony platforms that are cropping up such as Tropo and Twilio that do not use VoiceXML and use their own proprietary API's. To me this a step backwards towards the old days of IVR development where each IVR vendor had their proprietary development environment and languages. I am a firm believer in open standards like VoiceXML but I have to admit this new breed of IVR vendors are definitely making some traction in the market. I think it is too early to determine whether they will survive or not.
So the main question was; are there alternative to VoiceXML. The answer is yes. Two alternatives are the proprietary API's of cloud-based platforms of Tropo and Twilio. Another alternative is to use something like VoiceModel that abstracts away the need to know VoiceXML but lets you run the application on VoiceXML compatible platforms. And even another alternative is to use a development environment like VoiceObjects which also abstracts away much need to know VoiceXML.
Another question was; is VoiceXML a good skill to acquire. I would say yes, if you are developing a lot of IVR applications and especially if you are supporting existing ones. There are a lot of VoiceXML applications out there that require maintenance and currently the predominant IVR platform in the enterprise is VoiceXML compatible. If you are developing a one-off application you may want to look into something like Tropo or Twilio. With the caveat that if these start-ups go under you will be re-writing the application probably in VoiceXML. That is why I like opens standards. Or get the best of both worlds and look at something like VoiceModel.
VoiceXML is far from dying - most large commercial IVR deployments are based on VoiceXML and its cousin CCXML. There's significant traction, and VoiceXML developers are in demand. The next version of the VoiceXML spec is under development at the W3C.
While learning VoiceXML, you can try your skills out using the open source jVoiceXML (LGPL) http://jvoicexml.sourceforge.net/ or VoiceGlue (GPL) http://www.voiceglue.org/ or using the free developer hosting provided by Voxeo at http://evolution.voxeo.com/
That is one way to view VoiceXML, but it is much more complicated. Telephony technology is a niche market compared to anything like web development. However, within the telephony space, VoiceXML is the most common technology for IVR development and there isn't any other technology making inroads to replace it.
Part of the reason for slow growth of new technologies is related to the state of the market. From a vendor perspective, it is a tough market that is contracting. In the 80s and 90s, there are a lot of new startups. More than the market can support at a level that venture capitalists and other investors want. This has lead to consolidation (companies being bought up by other companies). Given the shortage of money, investment is low. That isn't to say there isn't any, but it is slow and very different than it was when VoiceXML first hit the scene.
Existing vendors usually provide a proprietary API stack, in a variety of languages, VoiceXML or both. It should be noted that even many of the platforms with VoiceXML support, provide development tools that hide the lower level APIs. These toolsets are often GUI based that came out of desires to have non-programmers write and manage IVRs.
The skill perspective attribute is a bit difficult to answer as its value is more related to your existing skill-set, marketability and future opportunities. In general, I wouldn't put a high value on VoiceXML knowledge because of the number of jobs is smaller than other mainstream skills. However, the typical implementations technologies are often similar to web based development (ASP/JSP/Servlet and the use of JavaScript), which are portable. As in any skill and job, it is what you make of it.
I've been programming IVR systems for about 20 years now, and I never bothered to learn VoiceXML. Here are the tools I use . . .
Visual Basic .NET
Dialogic voice PCI cards in Windows servers
CT ADE Visual Basic library from Syntellect http://www.syntellect.com/pages/products/ct_ade_eng.aspx
This setup allows me to code IVR systems in Visual Basic by calling routines provided by Syntellect. It eliminates the need to dive into VoiceXML, which is very granular by comparison.
Using the Syntellect routines, you can . . .
Make a call
Answer a call
Play a voice file to the caller
Get digits from caller
Record voice files
Transfer a call
Using these basic functions, you can create most any IVR system. It was very easy for me to then capture the "prompt" parameters in a SQL database and query entire script files to play to the caller.
This method is just for phone. And it that's all you need, this method is much faster to get up and running. Syntellect also has VoiceXML interfaces and solutions to help with VoIP connectivity.
Syntellect provides examples for both Visual Basic and C#. I think they also have some for C++. Hope this helps.
Twilio has demonstrated that a large number of use cases can be covered by a more intuitive and simple DSL. It takes no time to learn TwiML, while the VoiceXML learning curve can be significant.
There is also Restcomm, which is an open source (Mobicents) based implementation of the Twilio APIs. It can be used as a hosted IVR engine or on a public cloud:
http://www.telestax.com/restcomm/
ttps://aws.amazon.com/marketplace/pp/B00FFHJ6SU
I agree with DaveHolly. I used Syntellect CT-ADE for five years and implemented a successful IVR for medical dictation plus sending and receiving fax documents, and SQL Server database access. If you know how to program in C# or VB.NET, and want to use the fantastic Microsoft Visual Studio and .NET as your platform, then stay with CT-ADE or Glorsoft Velocity. In my opinion, by using XML as a programming language, something it was never designed for, you are giving up fifty years of computer science advances, such as structured programming, object-oriented programming, modern languages such as C#, debugging tools, etc..

Using of F# in a game engine

I'm currently creating a roguelike game and have already started coding in C# but have not coded much (<1000 lines) so far...
Now again, I have had a look at F# and this language seems to be very cool...I'm considering now using F# for the game engine, which, I think, will be 90% of the codeline (A roguelike has a very 'lean' ASCII-UI).
Do you think, F# would be better suited than C# concerning writing coding for procedural content generation, complex AI and game logic? Do you see any traps (apart from that I have to master the language first, of course)?
I've some concerns if F# is not just a research project and will be abandoned by Microsoft or are there statements that it is now a major .NET language?
Thanks for your input.
I don't see any traps.
F# fully supports .NET and even though it's mainly a functional languague you can implement the OO paradigma without a problem.
Also interop with C# is very well possible, so you could even go back to C# without giving up your F# code.
And as for it's future :
It's now part of VS as a stable language, so it's going very much in the direction of being one of the main .NET languages together with VB and C#.
F# is now a full MS product, and functional programming will be increasingly important in the future, so I wouldn't worry about MS losing interest in it any time soon.
F# should be a great choice here. I suspect you'll have some interesting state machines and I've found F# to be particularly good for that.

Is F# ready for production environment?

I believe a functional language would be helpful for the domain my company works in (financial) where we read in a ton of data, do some mathematical processing on it, and then store it again. Something which is fundamentally very parallelizable and not well-suited to extensive object-graphs with state (in my estimation).
As a .NET shop, I immediately thought of F# but I'm wary of the fact that the words "research" are prominently interspersed throughout almost all of the MS materials on it.
Does anyone know if F# is going to be something which MS is going to support going forward or would I be better of trying to convince the powers that be to go with Scheme/Haskell/et al?
It is going to be in visual studio 2k10 as a formal language.
(See e.g.
http://blogs.msdn.com/dsyme/archive/2008/12/10/fsharp-to-ship-as-part-of-visual-studio-2010.aspx
http://blogs.msdn.com/dsyme/archive/2009/05/20/visual-studio-2010-beta1-with-f-is-now-available-plus-matching-f-ctp-update-for-vs2008.aspx )
Microsoft seems to be really gung-ho about promoting F# as a first-class language in the new Visual Studio, so I expect that they will continue supporting it with tools and documentation for quite a while.
See also e.g.
https://stackoverflow.com/questions/966039/which-companies-are-using-f-internally-and-what-are-they-using-it-for
which is suggestive of a few big companies that are already using F#.

Metamodelling tools

What tools are available for metamodelling?
Especially for developing diagram editors, at the moment trying out Eclipse GMF
Wondering what other options are out there?
Any comparison available?
Your question is simply too broad for a single answer - due to many aspects.
First, meta-modelling is not a set term, but rather a very fuzzy thing, including modelling models of models and reaching out to terms like MDA.
Second, there are numerous options to developing diagram editors - going the Eclipse way is surely a nice option.
To get you at least started in the Eclipse department:
have a look at MOF, that is architecture for "meta-modelling" from the OMG (the guys, that maintain UML)
from there approach EMOF, a sub set which is supported by the Eclipse Modelling Framework in the incarnation of Ecore.
building something on top of GMF might be indeed a good idea, because that's the way existing diagram editors for the Eclipse platform take (e.g. Omondo's EclipseUML)
there are a lot of tools existing in the Eclipse environment, that can utilize Ecore - I simply hope, that GMF builts on top of Ecore itself.
Dia has an API for this - I was able to fairly trivially frig their UML editor into a basic ER modelling tool by changing the arrow styles. With a DB reversengineering tool I found in sourceforge (took the schema and spat out dia files) you could use this to document databases. While what I did was fairly trivial, the API was quite straightforward and it didn't take me that long to work out how to make the change.
If you're of a mind to try out Smalltalk There used to be a Smalltalk meta-case framework called DOME which does this sort of thing. If you download VisualWorks, DOME is one of the contributed packages.
GMF is a nice example. At the core of this sits EMF/Ecore, like computerkram sais. Ecore is also used for the base of Eclipse's UML2 . The prestige use case and proof of concept for GMF is certainly UML2 Tools.
Although generally a UML tool, I would look at StarUML. It supports additional modules beyond what are already built in. If it doesn't have what you need built in or as a module, I supposed you could make your own, but I don't know how difficult that is.
Meta-modeling is mostly done in Smalltalk.
You might want to take a look at MOOSE (http://moose.unibe.ch). There are a lot of tools being developed for program understanding. Most are Smalltalk based. There is also some java and c++ work.
Two of the most impressive tools are CodeCity and Mondrian. CodeCity can visualize code development over time, Mondrian provides scriptable visualization technology.
And of course there is the classic HotDraw, which is also available in java.
For web development there is also Magritte, providing meta-descriptions for Seaside.
I would strongly recommend you look into DSM (Domain Specific Modeling) as a general topic, meta-modeling is directly related. There are eclipse based tools like GMF that currently require java coding, but integrate nicely with other eclipse tools and UML. However there are two other classes out there.
MetaCase which I will call a pure DSM tool as it focuses on allowing a developer/modeler with out nearly as much coding create a usable graphical model. Additionally it can be easily deployed for others to use. GMF and Microsoft's Beta software factory/DSM tool fall into this category.
Pure Meta-modeling tools which are not intended for DSM tooling, code generation, and the like. I do not follow these tools as closely as I am interested in applications that generate tooling for SMEs, Domain Experts, and others to use and contribute value to an active project not modeling for models sake, or just documentation and theory.
If you want to learn more about number 1, the tooling applications for DSMs/Meta-modeling, then check out my post "DSMForum.org great resources, worth a look." or just navigate directly to the DSMForum.org
In case you are interested in something that is related to modelling and not generation of code, have a look at adoxx.org. As a metamodelling platform it does provide functionalities and mechanisms to quickly develop your own DSL and allows you to focus on the models needs (business requirements, conceptual level design/specification). There is an active community from academia and practice involved developing prototypical as well as commercial application based on the platform. Could be interesting ...

Resources