Which programming languages can I use with Dragon Advanced Scripting? - naturallyspeaking

I read on http://www.nuance.com/products/help/dragon/dragon-for-pc/scriptref/Content/scrptref/scripting_language_quickref.htm :
Dragon Advanced Scripting lets you use programming languages such as Microsoft® VBA to program commands that can perform virtually any function on the computer with voice commands.
Which programming languages can I use with Dragon Advanced Scripting on Microsoft Windows, besides Microsoft® VBA?

I suspect that the above reference to multiple languages that can be used with Dragon can be attributed to sloppy language use by a marketing guy or to the fact that you can reference other languages through COM.
I'm not aware of any other programming language in Dragon - FWIW, I have been hanging around on speech recognition forums since 2006 and I've never heard of anything besides Advanced Scripting being officially supported by Dragon.
You can potentially add other languages (such as Word VBA) through the References menu in Advanced Scripting Commands Editor if they go through COM. Read an example here: https://www.knowbrainer.com/forums/forum/messageview.cfm?catid=12&threadid=18116.
Then some people have used Python to interface with Dragon and create commands for it (DragonFly, Vocola), which is more of a hack and not supported in any way by Nuance. Other programs can interface with Dragon as well (API, SDK) to create commands in languages other than Advanced Scripting (eg. KnowBrainer).
To sum up, there are ways to use other languages with Dragon, but it's not like it's right under your nose.

Related

A development platform for unicode spell checker?

I have decided to develop a (Unicode) spell checker for my final year project for a south Asian language. I want to develop it as a plugin or a web service. But I need to decide a suitable development platform for it. (This will not just check for a dictionary file, morphological analysis / generation modules (a stemmer) will also be used).
Would java script be able to handle such processing with a fair response time?
Will I be able to process a large dictionary on client side?
Is there any better suggestions that you can make?
Javascript is not up to the task, at least not by itself; its Unicode support is too primitive, and in many parts, actually missing. For example, Javascript has no support for Unicode grapheme clusters.
If you use Java, then make sure you use the ICU libraries so that you can get all the whizbang Unicode properties you’ll need for text segmentation. The place where Java’s native Unicode processing breaks down is in its regex library, which is why Android JNIs over to the ICU C/C++ regex library. There are a lot of NLP tools written for Java, some of which you might find handy. Most of these that I am aware of though are for English or at least Western languages.
If you are willing to run part of your computation server-side via CGI instead of just client-side action, you are no longer bound by language choice. For example, you might combine Javascript on the client with Perl on the server, whose Unicode support is even better than Java’s. How that would meld together and how to get the performance and behavior you would want depends on just what you actually want to do.
Perl also has quite a good number of industry-standard NLP modules widely available for it, most of which already know to use Unicode, since like Java, Perl uses Unicode internally.
A brief slide presentation on using NLP tools in Perl for certain sorts of morphological analysis, namely stemming and lammatization, is available here. The presentation is known to work under Safari, Firefox, or Chrome, but not so well under Opera or Microsoft’s Internet Explorer.
I am not aware of any tools specifically targeting Asian languages, although Perl does support UAX#11 (East Asian Width) and UAX#14 (Unicode Linebreaking) via the Unicode::LineBreak module from CPAN, and Perl does come with a fully-compliant collation module (implementing UTS#10, the Unicocde Collation Algorithm) by way of the standard Unicode::Collate module, with locale support available from the also-standard Unicode::Collate::Locale module, where many Asian locales are supported. If you are using CJK languages, you may want access to the Unihan database, available via the Unicode::Unihan module from CPAN. Even more fundamentally, Perl has native support for Unicode extended grapheme clusters by way of its \X metacharacter in its builtin regex engine, which neither Java nor Javascript provides.
All this is the sort of thing you are likely to need, and find terribly lacking, in Javascript.

In what language are OS programmed

This question may sound stupid but i couldn't find a real answer so here it is:
In what programming language are OSs programmed?
In what language is OpenBSD programmed?
Can you programm and operating in every scripting language (Ruby, Python,...etc)?
Most operating systems are programmed in C. Some parts of some operating systems may use C++ or Objective C as well. Also, operating systems must have some assembly in them.
Although you can theoretically program parts of an OS in a scripting language, it would not be so easy. At least some of the OS would need to be compiled to native code. However, the operating system might have a built in interpreter for a scripting language or virtual machine for bytecode. Then you could write, for example, device drivers in the scripting language, where the driver presents a certain interface to the OS. You could also maybe write scheduling policies, paging systems, etc. in the scripting language. Basically your scripting language would provide a nice way to quickly prototype and test new modules and OS concepts. However, I wouldn't recommend such a system for production environment because you usually take a performance hit with the types of languages that you mention.
I am not aware of any operating system that uses anything like this. I am vaguely aware that some research OSes have been developed that used similar ideas, though I can't name any off the top of my head.

What is the difference between a language and a framework?

Can someone give me a clear, concise definition of the difference between a programming language and a framework? I have scoured the web and been unable to find an adequate definition.
For extra credit, is it possible for a language and a framework to become so inextricably linked that there IS no difference, or is there such a clear line between them that this isn't possible?
A language is syntax, grammar, semantics (and perhaps a core library) that implementers are required to support. A framework is a cohesive set of library code that together simplifies programming in any given language.
An application framework is the organizational structure of any application's code, including choices for conventions in files/folders, classes/functions, etc.
An application framework product is any tool that helps generate the framework for an application.
An application design pattern is any conceptual approach for organizing code at the application level.
An software language is a language-based tool that can be used to build applications, utilities, libraries, frameworks, etc.
A library is any extension in functionality to the native compiled functionality of a language.
A standard library is a library packaged with the language product itself.
An external library is a library outside of the language product itself and is either called remotely or installed locally.
A code-generator is any tool that dynamically generates permanent runtime code based on the developer's input.
Regarding the clear line between language and framework, i suppose you can count DSLs (Domain Specific Languages) as constructs that are both a Language and a Framework ( as it is a Framework in the original Language it is build upon).
Lisp is the only language i can think of now that may blur such distinction:
"The name LISP derives from "LISt Processing". Linked lists are one of Lisp languages' major data structures, and Lisp source code is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific languages embedded in Lisp."
http://en.wikipedia.org/wiki/Lisp_(programming_language)
I hope i can explain using an example.
Dot net is a framework which consists of large libraries and supports many
programming languages.. C# is a programming language through which you can give
instruction to a machine mainly computer.. Now if your source code is in C#
you can use Dot net framework libraries and the source code which is written in other
languages..
At my point, a programming language looks like bunch of stuff (syntax,grammar, semantics etc.) which people are already combine them into one more convenient, more useful, easier to use, and more enjoyable - a framework, and I love to have a framework before start making a program.
I know some programming languages like C, PHP, ASP, Python, Java, and some frameworks like Yii, Zend, Pygame, Struts. All I see is there can be many frameworks built from a programming language, but a framework is built from only on programming language.
A programming language is a specified, standardized method of communication between the programmer and computer (in modern languages, technically it's between programmer and compiler, which "interprets" your code into simpler instructions the computer can work with). It is a pure abstraction that specifies its structure, syntax and semantics; implementations of the language are generally considered part of the environment in which the programmer develops, and incorporate the compiler and any virtual machine implementation.
A framework is a standardized set of pre-written code libraries designed to be used and reused by developers, and is again tied more to the environment. An environment is the intersection of the language, framework, virtual machine or runtime (an abstraction layer in which managed or interpreted code is translated from a machine-independent form into native code) and machine (the hardware layer on which native instructions are executed).

Some Simple Questions for knowledge?

Before Some days my friend ask me some simple questions, but I have no answer.
Please tell me about these questions.
How many computer programming languages are used all in the world ?
I want to create a language like 'java or c#'. What is the procedure for creating a language and how it will create?
Which language is used for manipulate Window operating system?
What is the procedure of create Operating System like Windows/Linux/Mac and in which language it should create?
What is the procedure of create open source framework project in javascript and php?
How many computer programming languages are used all in the world ?
Wikipedia lists a lot of them!
I want to create a language like 'java or c#'. What is the procedure for creating a language and how it will create?
If you need an answer to this question probably you won't be able to create one, I guess (definitely I wouldn't be able to).
Anyway, if you want to go that way and create a very very simple language you should start by building a parser that takes the commands you wrote and interprets them to do something, checks for syntax errors etc. That already will take a big effort.
Which language is used for manipulate Window operating system?
You can use several: C++, C#, Visual Basic, etc etc etc
Microsoft provides several APIs (Application Programming Interfaces) to "manipulate" Windows
What is the procedure of create Operating System like Windows/Linux/Mac and in which language it should create?
As for #2. If you're starting programming you probably better focus on a simple project. Creating an OS is a huge effort and it requires profound knowledge of the computer architecture. You would probably create it using C++ and/or Assembly I guess. (as above, I wouldn't be able to create a programming language, an OS is completely out of question)
What is the procedure of create open source framework project in javascript and php?
This question does not make too much sense to me. You create your project and then release it to the public under an opensource licence, e.g. GPL.

OLPC development choices

What are my options for developing a piece of software for the OLPC project. From looking at the various sites and wikis, I can honestly say that I am still totally confused. Is it to be sugar, c++, smalltalk or python? HELP!
Thanks,
First, the short answer: You want to use Python, and you want to make your python programs "sugarized".
Sugar is not a programming language or development toolkit. It's a GUI environment and "activity" framework. The applications that kids use on OLPC laptops are called "activities", and Sugar provides a bunch of tools for them to use so that they can store their information in the versioned object database (the "journal" from the user's perspective), can show up in the list of available activities, etc.
To make sugarized applications, you write them in python, using the pygtk and/or pygames APIs for graphical work and the Sugar APIs for other Sugar services (like storage, access to the camera, mic, the very cool networking stuff, etc.). You also use a Sugar API to make the program available as a Sugar activity.
You can write C++ code for the OLPC, but Python is the preferred language.
As for Smalltalk, the OLPC project does provide a Squeak environment, but it's intended primarily for kids to play with Smalltalk programming, rather than as a tool for building activities intended to be distributed for use on the OLPC. Not that you couldn't use it that way (I think sugarization of Smalltalk apps is possible -- not sure), but it would be a memory hog. Smalltalk isn't inherently more memory-hungry than Python, but the OLPC devs have done some clever things to optimize Python memory usage. Basically, nearly all of the memory consumed by the Python interpreter is shared among all Python-based activities. Adding a Smalltalk activity to the mix would mean running another interpreter.
You can find lots of activities to look at (with source code) at http://activities.sugarlabs.org. If you develop anything for the OLPC, it's highly recommended that you get a Sugarlabs account and use their git infrastructure (http://git.sugarlabs.org).
I'd also highly recommend that you join the Sugar development mailing list. It's intended primarily for discussion of development of the Sugar platform, but there are very helpful and very knowledgeable people there who can answer questions and point you to the right resources. http://lists.sugarlabs.org/listinfo/sugar-devel
EDIT: Another useful resource for getting started is:
http://wiki.sugarlabs.org/go/Development_Team/Quickstart
Faisal Anwar and JediErik developed the excellent Sugar Almanac, which covers a lot of what you need to know to develop for Sugar. It has library descriptions and sample code for topics such as
creating a valid Sugar activity bundle
handling presence, threading and internationalization
interfacing with the Journal and other Sugar-specific system-wide features.
handling mouse, video, and other inputs
Swillden's post is excellent. I will just add a few more points:
People have successfully created Sugarized Squeak activities (see several games from Potsdam University as well as the work by OLE Nepal). OLE Nepal credits the rapid-prototyping aspects of the Squeak environment for their ability to quickly create a curriculum satisfying the desires of the Nepal teachers. I believe that these activities take longer to load, though; as Swillden points out, they lack the "home field" advantage of Python.
I recommend using Python, unless you are significantly more comfortable with the Squeak environment. The approach I used when I developed a Sugar activity (Implode) was to first develop the activity as an application using just Python/pygtk on a standard desktop (Windows or Ubuntu), then port it to Sugar. The code/debug cycle is faster on the desktop since you don't have to switch to an emulator or check error messages in the "Log" activity. If you architect the code right, you can isolate most of the desktop/Sugar differences to a couple modules, so that you can continue to develop and test in both environments. I wrote a pygtk activity, but I expect a pygame-based activity could be created in a similar manner. Of course, if your activity relies on access to certain Sugar-specific features -- like speech synthesis or mesh networking -- this approach may not work as well.
If you want to code in C or C++, whether for performance-critical or legacy code, I recommend writing it as a Python extension module called from a Python-based activity. I believe this is how the Write activity (wrapping Abiword) and Browse activity (wrapping Firefox) are implemented. If you have an existing X application in C/C++, it is possible to make it run under Sugar (see the SimCity, Etoys, and XaoS activities), but it will lack the look and feel of the other Sugar activities.
Finally, I've found the easiest way to add some particular functionality to a Sugar activity is to first find an existing activity that already does it, then read the code to find out how they did it. The Sugar system is not particularly well-documented yet; in some cases the only documentation is the code itself. As Swillden points out, the code for most activities -- as well as for Sugar itself -- is available in the SugarLabs git repository.