Newsgroups: comp.speech
Path: pavo.csi.cam.ac.uk!doc.ic.ac.uk!agate!spool.mu.edu!nigel.msen.com!well!umecorp
From: umecorp@well.sf.ca.us (Douglas G. Danforth)
Subject: Re: C++ for speech?
Message-ID: <CFsGHu.510@well.sf.ca.us>
Sender: news@well.sf.ca.us
Nntp-Posting-Host: well.sf.ca.us
Organization: The Whole Earth 'Lectronic Link, Sausalito, CA
References: <1993Oct22.140701.17015@INRS-Telecom.UQuebec.CA>
Date: Mon, 1 Nov 1993 01:08:17 GMT
Lines: 57

In article <1993Oct22.140701.17015@INRS-Telecom.UQuebec.CA>,
Capt. Nemo Semret <nemo@INRS-Telecom.UQuebec.CA> wrote:
>
>I'm working on a speaker identification system, and thinking of
>implementing it in C++ (on Sparc). Does anyone know if object-oriented
>programming is particularly good or bad for speech applications? What are
>the advantages or drawbacks compared to C?
>
>--
>Capt. Nemo
>"There is no free lunch. But there is a good dinner and it's quite cheap."
>Semret
>
>
>-- 
>Capt. Nemo
>"There is no free lunch. But there is a good dinner and it's quite cheap."
>Semret
>


  Object oriented programming may or may not be the solution for which you
seek.
  It all depends upon the type of task.  If you need multiple copies
of data structures (new) OR you have an abstract object which
will be specialized at some future date then OOP is appropriate.
  We at UMECORP are using C++ for the coordination between
high level abstractions of speech recognition systems. We
choose C++ not be cause it was good (Oberon is MUCH better)
but simply for compatibility with existing software.
  We use a subset of C++ (which I call modular C) based only
on convention and restraint.  No private or protected fields
are used and yet strict information hiding is enforced.  How?
Every class has a public interface which appears in its .h file.
Within the .cpp file every exported class has an inherited
subclass with methods and fields (ivars) which are NOT exported.
To use these hidden classes a small consession must be made.
Rather than use the standard C++ "new" for the exported class
a static member "New" is created and used instead.  The method
New returns a pointer to the hidden class (whose fields cannot
be accessed but are carried around).  A corresponding "Delete"
is also implemented that knows it is the child class that needs
to be deleted.
  This convention has worked well and allows one to minimize
recompilation of other modules when internal changes to
ivars take place.  If these variables were placed in the
parent class then addition, deletion, or renaming would
necessitate a rebuild of the whole system.
  The low level recognition systems we are using do not
depend upon C++

Douglas Danforth
-- 
UMECORP, The creator of UME Voice
73 Digital Drive
Novato, CA 94949
pho (415) 883-1500, fax (415) 883-1711
