966 resultados para C (Programming Language)


Relevância:

30.00% 30.00%

Publicador:

Resumo:

Los lenguajes de programacin son el idioma que los programadores usamos para comunicar a los computadores qu queremos que hagan. Desde el lenguaje ensamblador, que traduce una a una las instrucciones que interpreta un computador hasta lenguajes de alto nivel, se ha buscado desarrollar lenguajes ms cercanos a la forma de pensar y expresarse de los humanos. Los lenguajes de programacin lgicos como Prolog utilizan a su vez el lenguaje de la lgica de 1er orden de modo que el programador puede expresar las premisas del problema que se quiere resolver sin preocuparse del cmo se va a resolver dicho problema. La resolucin del problema se equipara a encontrar una deduccin del objetivo a alcanzar a partir de las premisas y equivale a lo que entendemos por la ejecucin de un programa. Ciao es una implementacin de Prolog (http://www.ciao-lang.org) y utiliza el mtodo de resolucin SLD, que realiza el recorrido de los rboles de decisin en profundidad(depth-first) lo que puede derivar en la ejecucin de una rama de busqueda infinita (en un bucle infinito) sin llegar a dar respuestas. Ciao, al ser un sistema modular, permite la utilizacin de extensiones para implementar estrategias de resolucin alternativas como la tabulacin (OLDT). La tabulacin es un mtodo alternativo que se basa en memorizar las llamadas realizadas y sus respuestas para no repetir llamadas y poder usar las respuestas sin recomputar las llamadas. Algunos programas que con SLD entran en un bucle infinito, gracias a la tabulacin dn todas las respuestas y termina. El modulo tabling es una implementacin de tabulacin mediante el algoritmo CHAT. Esta implementacin es una versin beta que no tiene implementado un manejador de memoria. Entendemos que la gestin de memoria en el mdulo de tabling tiene gran importancia, dado que la resolucin con tabulacin permite reducir el tiempo de computacin (al no repetir llamadas), aumentando los requerimientos de memoria (para guardar las llamadas y las respuestas). Por lo tanto, el objetivo de este trabajo es implementar un mecanismo de gestin de la memoria en Ciao con el mdulo tabling cargado. Para ello se ha realizado la implementacin de: Un mecanismo de captura de errores que: detecta cuando el computador se queda sin memoria y activa la reinicializacin del sitema. Un procedimiento que ajusta los punteros del modulo de tabling que apuntan a la WAM tras un proceso de realojo de algunas de las reas de memoria de la WAM. Un gestor de memoria del modulo de tabling que detecta c realizar una ampliacin de las reas de memoria del modulo de tabling, realiza la solicitud de ms memoria y realiza el ajuste de los punteros. Para ayudar al lector no familiarizado con este tema, describimos los datos que Ciao y el mdulo de tabling alojan en las reas de memoria dinmicas que queremos gestionar. Los casos de pruebas desarrollados para evaluar la implementacin del gestor de memoria, ponen de manifiesto que: Disponer de un gestor de memoria dinmica permite la ejecucin de programas en un mayor nmero de casos. La poltica de gestin de memoria incide en la velocidad de ejecucin de los programas. ---ABSTRACT---Programming languages are the language that programmers use in order to communicate to computers what we want them to do. Starting from the assembly language, which translates one by one the instructions to the computer, and arriving to highly complex languages, programmers have tried to develop programming languages that resemble more closely the way of thinking and communicating of human beings. Logical programming languages, such as Prolog, use the language of logic of the first order so that programmers can express the premise of the problem that they want to solve without having to solve the problem itself. The solution to the problem is equal to finding a deduction of the objective to reach starting from the premises and corresponds to what is usually meant as the execution of a program. Ciao is an implementation of Prolog (http://www.ciao-lang.org) and uses the method of resolution SLD that carries out the path of the decision trees in depth (depth-frist). This can cause the execution of an infinite searching branch (an infinite loop) without getting to an answer. Since Ciao is a modular system, it allows the use of extensions to implement alternative resolution strategies, such as tabulation (OLDT). Tabulation is an alternative method that is based on the memorization of executions and their answers, in order to avoid the repetition of executions and to be able to use the answers without reexecutions. Some programs that get into an infinite loop with SLD are able to give all the answers and to finish thanks to tabulation. The tabling package is an implementation of tabulation through the algorithm CHAT. This implementation is a beta version which does not present a memory handler. The management of memory in the tabling package is highly important, since the solution with tabulation allows to reduce the system time (because it does not repeat executions) and increases the memory requirements (in order to save executions and answers). Therefore, the objective of this work is to implement a memory management mechanism in Ciao with the tabling package loaded. To achieve this goal, the following implementation were made: An error detection system that reveals when the computer is left without memory and activate the reinizialitation of the system. A procedure that adjusts the pointers of the tabling package which points to the WAM after a process of realloc of some of the WAM memory stacks. A memory manager of the tabling package that detects when it is necessary to expand the memory stacks of the tabling package, requests more memory, and adjusts the pointers. In order to help the readers who are not familiar with this topic, we described the data which Ciao and the tabling package host in the dynamic memory stacks that we want to manage. The test cases developed to evaluate the implementation of the memory manager show that: A manager for the dynamic memory allows the execution of programs in a larger number of cases. Memory management policy influences the program execution speed.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

This paper suggests a new strategy to develop CAD applications taking into account some of the most interesting proposals which have recently appeared in the technology development arena. Programming languages, operating systems, user devices, software architecture, user interfaces and user experience are among the elements which are considered for a new development framework. This strategy considers the organizational and architectural aspects of the CAD application together with the development framework. The architectural and organizational aspects are based on the programmed design concept, which can be implemented by means of a three-level software architecture. These levels are the conceptual level based on a declarative language, the mathematical level based on the geometric formulation of the product model and the visual level based on the polyhedral representation of the model as required by the graphic card. The development framework which has been considered is Windows 8. This operating system offers three development environments, one for web pplications (HTML5 + CSS3 + JavaScript), and other for native applications C/C++) and of course yet another for .NET applications (C#, VB, F#, etc.). The use rinterface and user experience for non-web application is described ith XAML (a well known declarative XML language) and the 3D API for games and design applications is DirectX. Additionally, Windows 8 facilitates the use of hybrid solutions, in which native and managed code can interoperate easily. Some of the most remarkable advantages of this strategy are the possibility of targeting both desktop and touch screen devices with the same development framework, the usage of several programming paradigms to apply the most appropriate language to each domain and the multilevel segmentation of developers and designers to facilitate the implementation of an open network of collaborators.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Automating the assessment of programming assignments brings benefits for both students and teachers, since it helps the formers to gain a timely feedback and releases the latter from tedious tasks. The related literature in the domain has usually focused on the assessment process and the tools required for it, proposing libraries and systems that teachers can use in this process. However, few of them have work rowards reducing the effort and time teacher require to properly set up new assessente processes. This paper describes our experience with the analysis and design of a new tool to support teachers in visually developing automatic grades of programming assignments, introducing the underlying concepts and technologies and presenting the system architecture.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

La tesis propone el concepto y diseo de una arquitectura cognitiva para representacin de conocimiento profesional especializado en clases de dominios relacionados con el mundo fsico. Constituye una extensin de los trabajos de B.Chandrasekaran, potenciando el concepto de arquitectura basada en tareas genricas propuesta por dicho autor. En base a la arquitectura propuesta, se ha desarrollado un entorno como herramienta de construccin de sistemas expertos de segunda generacin, as como un lenguaje para programacin cognitiva (DECON)- Dicho entorno, programado en lenguaje C sobre UNIX, ha sido utilizado para el desarrollo de un sistema para prediccin de avenidas en la Cuenca Hidrogrfica del Jucar, en el marco del proyecto SAIH. Primeramente, la tesis plantea el problema de la modelizacin del comportamiento de los sistemas fsicos, reflejando las limitaciones de las formas clsicas de representacin del conocimiento para abordar dicho problema, as como los principales enfoques ms recientes basados en el concepto de arquitectura cognitiva y en las tcnicas de simulacin cualitativa. Se realiza despus una sntesis de la arquitectura propuesta, a nivel del conocimiento, para detallar posteriormente su desarrollo a nivel simblico y de implementacin, as como el mtodo general para la construccin de modelos sobre la arquitectura. Se muestra tambin un resumen de los principales aspectos del desarrollo de software. Finalmente, en forma de anejos, se presenta un caso de estudio, el sistema SIRAH (Sistema Inteligente de Razonamiento Hidrolgico), junto con la gramtica formal del lenguaje de soporte para la definicin de modelos.---ABSTRACT---The thesis proposes the concept and design of a cognitive architecture for professional knowledge representation, specialized in domain classes related to the physical world. It is an extensin of the Chandrasekaran's work, improving the concept of Generic Task based architecture introduced by this author. Based on the proposed architecture, an environment has been developed, as a case of second generation building expert systems tool, as well as a language for cognitive programming (DECON). The environment, programmed in C lenguage on UNIX operating system, has been used to develop a system for flood prediction in the Jucar watershed, inside of the SAIH project. Firstly, the behavior modeling problem of physical systems is discussed, showing the limitations of the classical representations to tackle it, beside the most recent approaches based on cognitive architecture concepts and qualitative simulation technique. An overview of the architecture at the knowledge level is then made, being followed by its symbolic and implementation level description, as well as a general guideline for building models on top of the architecture. The main aspects of software development are also introduced. Finaly, as annexes, a case of study -the SIRAH system (Sistema Inteligente de RAzonamiento Hidrolgico)- is introduced, along with the formal grammar of the support language for model definition.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

A raz de la aparicin de los procesadores dotados de varios cores, la programacin paralela, un concepto que, por otra parte no era nada nuevo y se conoca desde hace dcadas, sufri un nuevo impulso, pues se crea que se poda superar el techo tecnolgico que haba estado limitando el rendimiento de esta programacin durante aos. Este impulso se ha ido manteniendo hasta la actualidad, movido por la necesidad de sistemas cada vez ms potentes y gracias al abaratamiento de los costes de fabricacin. Esta tendencia ha motivado la aparicin de nuevo software y lenguajes con componentes orientados precisamente al campo de la programacin paralela. Este es el caso del lenguaje Go, desarrollado por Google y lanzado en 2009. Este lenguaje se basa en modelos de concurrencia que lo hacen muy adecuados para abordar desarrollos de naturaleza paralela. Sin embargo, la programacin paralela es un campo complejo y heterogneo, y los programadores son reticentes a utilizar herramientas nuevas, en beneficio de aquellas que ya conocen y les son familiares. Un buen ejemplo son aquellas implementaciones de lenguajes conocidos, pero orientadas a programacin paralela, y que siguen las directrices de un estndar ampliamente reconocido y aceptado. Este es el caso del estndar OpenMP, un Interfaz de Programacin de Aplicaciones (API) flexible, portable y escalable, orientado a la programacin paralela multiproceso en arquitecturas multi-core o multinucleo. Dicho estndar posee actualmente implementaciones en los lenguajes C, C++ y Fortran. Este proyecto nace como un intento de aunar ambos conceptos: un lenguaje emergente con interesantes posibilidades en el campo de la programacin paralela, y un estndar reputado y ampliamente extendido, con el que los programadores se encuentran familiarizados. El objetivo principal es el desarrollo de un conjunto de libreras del sistema (que engloben directivas de compilacin o pragmas, libreras de ejecucin y variables de entorno), soportadas por las caractersticas y los modelos de concurrencia propios de Go; y que aadan funcionalidades propias del estndar OpenMP. La idea es aadir funcionalidades que permitan programar en lenguaje Go utilizando la sintaxis que OpenMP proporciona para otros lenguajes, como Fortan y C/C++ (concretamente, similar a esta ltima), y, de esta forma, dotar al usuario de Go de herramientas para programar estructuras de procesamiento paralelo de forma sencilla y transparente, de la misma manera que lo hara utilizando C/C++.---ABSTRACT---As a result of the appearance of processors equipped with multiple "cores ", parallel programming, a concept which, moreover, it was not new and it was known for decades, suffered a new impulse, because it was believed they could overcome the technological ceiling had been limiting the performance of this program for years. This impulse has been maintained until today, driven by the need for ever more powerful systems and thanks to the decrease in manufacturing costs. This trend has led to the emergence of new software and languages with components guided specifically to the field of parallel programming. This is the case of Go language, developed by Google and released in 2009. This language is based on concurrency models that make it well suited to tackle developments in parallel nature. However, parallel programming is a complex and heterogeneous field, and developers are reluctant to use new tools to benefit those who already know and are familiar. A good example are those implementations from well-known languages, but parallel programming oriented, and witch follow the guidelines of a standard widely recognized and accepted. This is the case of the OpenMP standard, an application programming interface (API), flexible, portable and scalable, parallel programming oriented, and designed for multi-core architectures. This standard currently has implementations in C, C ++ and Fortran. This project was born as an attempt to combine two concepts: an emerging language, with interesting possibilities in the field of parallel programming, and a reputed and widespread standard, with which programmers are familiar with. The main objective is to develop a set of system libraries (which includes compiler directives or pragmas, runtime libraries and environment variables), supported by the characteristics and concurrency patterns of Go; and that add custom features from the OpenMP standard. The idea is to add features that allow programming in Go language using the syntax OpenMP provides for other languages, like Fortran and C / C ++ (specifically, similar to the latter ), and, in this way, provide Go users with tools for programming parallel structures easily and, in the same way they would using C / C ++.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

La calificacin automtica de tareas de programacin es un tema importante dentro del campo de la innovacin educativa que se enfoca en mejorar las habilidades de programacin de los estudiantes y en optimizar el tiempo que el profesorado dedica a ello. Uno de los principales problemas vigentes est relacionado con la diversidad de criterios para calificar las tareas de programacin. El presente trabajo propone e implementa una arquitectura, basada en el concepto de orquestacin de servicios, para soportar varios procesos de calificacin automtica de tareas de programacin. Esto es obtenido a travs de las caractersticas de modularidad, extensibilidad y flexibilidad que la arquitectura provee al proceso de calificacin. La arquitectura define como pieza clave un elemento llamado Grading-submodule, el mismo que provee un servicio de evaluacin del cdigo fuente considerando un criterio de calificacin. La implementacin se ha llevado a cabo sobre la herramienta Virtual Programming Lab; y los resultados demuestran la factibilidad de realizacin, y la utilidad tanto para el profesorado como para los estudiantes.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Este proyecto fin de grado presenta dos herramientas, Papify y Papify-Viewer, para medir y visualizar, respectivamente, las prestaciones a bajo nivel de especificaciones RVC-CAL basndose en eventos hardware. RVC-CAL es un lenguaje de flujo de datos estandarizado por MPEG y utilizado para definir herramientas relacionadas con la codificacin de vdeo. La estructura de los programas descritos en RVC-CAL se basa en unidades funcionales llamadas actores, que a su vez se subdividen en funciones o procedimientos llamados acciones. ORCC (Open RVC-CAL Compiler) es un compilador de cdigo abierto que utiliza como entrada descripciones RVC-CAL y genera a partir de ellas cdigo fuente en un lenguaje dado, como por ejemplo C. Internamente, el compilador ORCC se divide en tres etapas distinguibles: front-end, middle-end y back-end. La implementacin de Papify consiste en modificar la etapa del back-end del compilador, encargada de la generacin de cdigo, de modo tal que los actores, al ser traducidos a lenguaje C, queden instrumentados con PAPI (Performance Application Programing Interface), una herramienta utilizada como interfaz a los registros contadores de rendimiento (PMC) de los procesadores. Adems, tambin se modifica el front-end para permitir identificar cierto tipo de anotaciones en las descripciones RVC-CAL, utilizadas para que el diseador pueda indicar qu actores o acciones en particular se desean analizar. Los actores instrumentados, adems de conservar su funcionalidad original, generan una serie de ficheros que contienen datos sobre los distintos eventos hardware que suceden a lo largo de su ejecucin. Los eventos incluidos en estos ficheros son configurables dentro de las anotaciones previamente mencionadas. La segunda herramienta, Papify-Viewer, utiliza los datos generados por Papify y los procesa, obteniendo una representacin visual de la informacin a dos niveles: por un lado, representa cronolgicamente la ejecucin de la aplicacin, distinguiendo cada uno de los actores a lo largo de la misma. Por otro lado, genera estadsticas sobre la cantidad de eventos disparados por accin, actor o ncleo de ejecucin y las representa mediante grficos de barra. Ambas herramientas pueden ser utilizadas en conjunto para verificar el funcionamiento del programa, balancear la carga de los actores o la distribucin por ncleos de los mismos, mejorar el rendimiento y diagnosticar problemas. ABSTRACT. This diploma project presents two tools, Papify and Papify-Viewer, used to measure and visualize the low level performance of RVC-CAL specifications based on hardware events. RVC-CAL is a dataflow language standardized by MPEG which is used to define video codec tools. The structure of the applications described in RVC-CAL is based on functional units called actors, which are in turn divided into smaller procedures called actions. ORCC (Open RVC-CAL Compiler) is an open-source compiler capable of transforming RVC-CAL descriptions into source code in a given language, such as C. Internally, the compiler is divided into three distinguishable stages: front-end, middle-end and back-end. Papifys implementation consists of modifying the compilers back-end stage, which is responsible for generating the final source code, so that translated actors in C code are now instrumented with PAPI (Performance Application Programming Interface), a tool that provides an interface to the microprocessors performance monitoring counters (PMC). In addition, the front-end is also modified in such a way that allows identification of a certain type of annotations in the RVC-CAL descriptions, allowing the designer to set the actors or actions to be included in the measurement. Besides preserving their initial behavior, the instrumented actors will also generate a set of files containing data about the different events triggered throughout the programs execution. The events included in these files can be configured inside the previously mentioned annotations. The second tool, Papify-Viewer, makes use of the files generated by Papify to process them and provide a visual representation of the information in two different ways: on one hand, a chronological representation of the applications execution where each actor has its own timeline. On the other hand, statistical information is generated about the amount of triggered events per action, actor or core. Both tools can be used together to assert the normal functioning of the program, balance the load between actors or cores, improve performance and identify problems.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Esta pesquisa examina o discurso de um programa televisivo regional brasileiro de canal aberto para identificar qual a linguagem utilizada na abordagem de assuntos de Cincia e Tecnologia. O corpus compe-se de um recorte baseado nas exibies do ano de 2006 do programa televisivo Caminhos da Roa - criado e exibido desde 2002 pela EPTV Ribeiro (Empresas Pioneiras de Televiso) afiliada da Rede Globo em Ribeiro Preto/SP. A proposta foi analisar, em relao ao formato, linguagem e aos contedos as matrias jornalsticas que tratam especificamente de assuntos de cincia e/ou tecnologia voltadas para o agronegcio e que tenham mostrado algum contato entre pesquisador e cidado do campo. Este trabalho, de natureza qualitativa, empregou a metodologia de Anlise de Discurso de linha Francesa (AD) e identificou C&T como um assunto bastante presente no Caminhos da Roa. Constatou-se ainda que, embora haja muita divulgao de C&T no h um padro de aprofundamento desses assuntos e que a abordagem varia de edio para edio, alm da cincia ser mostrada em forma de tecnologia que se aplica ao campo. A linguagem empregada pelo Caminhos da Roa para o tratamento de assuntos de Cincia e Tecnologia , predominantemente clara e simplificada e o discurso mais encontrado se define como uma mescla entre o tecnolgico, o informativo e o pedaggico.(AU)

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Esta pesquisa examina o discurso de um programa televisivo regional brasileiro de canal aberto para identificar qual a linguagem utilizada na abordagem de assuntos de Cincia e Tecnologia. O corpus compe-se de um recorte baseado nas exibies do ano de 2006 do programa televisivo Caminhos da Roa - criado e exibido desde 2002 pela EPTV Ribeiro (Empresas Pioneiras de Televiso) afiliada da Rede Globo em Ribeiro Preto/SP. A proposta foi analisar, em relao ao formato, linguagem e aos contedos as matrias jornalsticas que tratam especificamente de assuntos de cincia e/ou tecnologia voltadas para o agronegcio e que tenham mostrado algum contato entre pesquisador e cidado do campo. Este trabalho, de natureza qualitativa, empregou a metodologia de Anlise de Discurso de linha Francesa (AD) e identificou C&T como um assunto bastante presente no Caminhos da Roa. Constatou-se ainda que, embora haja muita divulgao de C&T no h um padro de aprofundamento desses assuntos e que a abordagem varia de edio para edio, alm da cincia ser mostrada em forma de tecnologia que se aplica ao campo. A linguagem empregada pelo Caminhos da Roa para o tratamento de assuntos de Cincia e Tecnologia , predominantemente clara e simplificada e o discurso mais encontrado se define como uma mescla entre o tecnolgico, o informativo e o pedaggico.(AU)

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Investigation of the three-generation KE family, half of whose members are affected by a pronounced verbal dyspraxia, has led to identification of their core deficit as one involving sequential articulation and orofacial praxis. A positron emission tomography activation study revealed functional abnormalities in both cortical and subcortical motor-related areas of the frontal lobe, while quantitative analyses of magnetic resonance imaging scans revealed structural abnormalities in several of these same areas, particularly the caudate nucleus, which was found to be abnormally small bilaterally. A recent linkage study [Fisher, S., Vargha-Khadem, F., Watkins, K. E., Monaco, A. P. & Pembry, M. E. (1998) Nat. Genet. 18, 168170] localized the abnormal gene (SPCH1) to a 5.6-centiMorgan interval in the chromosomal band 7q31. The genetic mutation or deletion in this region has resulted in the abnormal development of several brain areas that appear to be critical for both orofacial movements and sequential articulation, leading to marked disruption of speech and expressive language.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

Funding The research reported in this publication was supported by the Biotechnology and Biological Sciences Research Council (E007821/1 to M.S.M-G, R.L.C and E00797X/1; BB/K001418 /1 to L.K.H), the British Heart Foundation (FS/09/029/27902 to S.E.O.), the UK Medical Research Council Metabolic Diseases Unit (MC_UU_12012/4 to S.E.O and MC_UU_12012/1 to G.S.H.Y), the Wellcome Trust (WT081713 and WT098012 to L.K.H), the European Union (FP7-HEALTH-266408 Full4Health to G.S.H.Y) and the Helmholtz Alliance ICEMED to G.S.H.Y.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

The pars triangular is a portion of Broca's area. The convolutions that form the inferior and caudal extent of the pars triangularis include the anterior horizontal and anterior ascending rami of the sylvian fissure, respectively. To learn if there are anatomic asymmetries of the pars triangularis, these convolutions were measured on volumetric magnetic resonance imaging scans of 11 patients who had undergone selective hemispheric anesthesia (Wada testing) to determine hemispheric speech and language lateralization. Of the 10 patients with language lateralized to the left hemisphere, 9 had a leftward asymmetry of the pars triangularis. The 1 patient with language lateralized to the right hemisphere had a significant rightward asymmetry of the pars triangularis. Our data suggest that asymmetries of the pars triangularis may be related to speech-language lateralization.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

This paper provides an overview of the colloquium's discussion session on natural language understanding, which followed presentations by M. Bates [Bates, M. (1995) Proc. Natl. Acad. Sci. USA 92, 9977-9982] and R. C. Moore [Moore, R. C. (1995) Proc. Natl. Acad. Sci. USA 92, 9983-9988]. The paper reviews the dual role of language processing in providing understanding of the spoken input and an additional source of constraint in the recognition process. To date, language processing has successfully provided understanding but has provided only limited (and computationally expensive) constraint. As a result, most current systems use a loosely coupled, unidirectional interface, such as N-best or a word network, with natural language constraints as a postprocess, to filter or resort the recognizer output. However, the level of discourse context provides significant constraint on what people can talk about and how things can be referred to; when the system becomes an active participant, it can influence this order. But sources of discourse constraint have not been extensively explored, in part because these effects can only be seen by studying systems in the context of their use in interactive problem solving. This paper argues that we need to study interactive systems to understand what kinds of applications are appropriate for the current state of technology and how the technology can move from the laboratory toward real applications.

Relevância:

30.00% 30.00%

Publicador:

Resumo:

The integration of speech recognition with natural language understanding raises issues of how to adapt natural language processing to the characteristics of spoken language; how to cope with errorful recognition output, including the use of natural language information to reduce recognition errors; and how to use information from the speech signal, beyond just the sequence of words, as an aid to understanding. This paper reviews current research addressing these questions in the Spoken Language Program sponsored by the Advanced Research Projects Agency (ARPA). I begin by reviewing some of the ways that spontaneous spoken language differs from standard written language and discuss methods of coping with the difficulties of spontaneous speech. I then look at how systems cope with errors in speech recognition and at attempts to use natural language information to reduce recognition errors. Finally, I discuss how prosodic information in the speech signal might be used to improve understanding.