966 resultados para C (programming language)
Resumo:
Los lenguajes de programación 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 más cercanos a la forma de pensar y expresarse de los humanos. Los lenguajes de programación lógicos como Prolog utilizan a su vez el lenguaje de la lógica de 1er orden de modo que el programador puede expresar las premisas del problema que se quiere resolver sin preocuparse del cómo se va a resolver dicho problema. La resolución del problema se equipara a encontrar una deducción del objetivo a alcanzar a partir de las premisas y equivale a lo que entendemos por la ejecución de un programa. Ciao es una implementación de Prolog (http://www.ciao-lang.org) y utiliza el método de resolución SLD, que realiza el recorrido de los árboles de decisión en profundidad(depth-first) lo que puede derivar en la ejecución de una rama de busqueda infinita (en un bucle infinito) sin llegar a dar respuestas. Ciao, al ser un sistema modular, permite la utilización de extensiones para implementar estrategias de resolución alternativas como la tabulación (OLDT). La tabulación es un método 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 tabulación dán todas las respuestas y termina. El modulo tabling es una implementación de tabulación mediante el algoritmo CHAT. Esta implementación es una versión beta que no tiene implementado un manejador de memoria. Entendemos que la gestión de memoria en el módulo de tabling tiene gran importancia, dado que la resolución con tabulación permite reducir el tiempo de computación (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 gestión de la memoria en Ciao con el módulo tabling cargado. Para ello se ha realizado la implementación de: Un mecanismo de captura de errores que: detecta cuando el computador se queda sin memoria y activa la reinicialización 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 ampliación de las áreas de memoria del modulo de tabling, realiza la solicitud de más memoria y realiza el ajuste de los punteros. Para ayudar al lector no familiarizado con este tema, describimos los datos que Ciao y el módulo de tabling alojan en las áreas de memoria dinámicas que queremos gestionar. Los casos de pruebas desarrollados para evaluar la implementación del gestor de memoria, ponen de manifiesto que: Disponer de un gestor de memoria dinámica permite la ejecución de programas en un mayor número de casos. La política de gestión de memoria incide en la velocidad de ejecución 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.
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.
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.
Resumo:
La tesis propone el concepto y diseño de una arquitectura cognitiva para representación de conocimiento profesional especializado en clases de dominios relacionados con el mundo físico. Constituye una extensión de los trabajos de B.Chandrasekaran, potenciando el concepto de arquitectura basada en tareas genéricas propuesta por dicho autor. En base a la arquitectura propuesta, se ha desarrollado un entorno como herramienta de construcción de sistemas expertos de segunda generación, así como un lenguaje para programación cognitiva (DECON)- Dicho entorno, programado en lenguaje C sobre UNIX, ha sido utilizado para el desarrollo de un sistema para predicción de avenidas en la Cuenca Hidrográfica del Jucar, en el marco del proyecto SAIH. Primeramente, la tesis plantea el problema de la modelización del comportamiento de los sistemas físicos, reflejando las limitaciones de las formas clásicas de representación del conocimiento para abordar dicho problema, así como los principales enfoques más recientes basados en el concepto de arquitectura cognitiva y en las técnicas de simulación cualitativa. Se realiza después una síntesis de la arquitectura propuesta, a nivel del conocimiento, para detallar posteriormente su desarrollo a nivel simbólico y de implementación, así como el método general para la construcción de modelos sobre la arquitectura. Se muestra también 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 Hidrológico), junto con la gramática formal del lenguaje de soporte para la definición 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 extensión 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 Hidrológico)- is introduced, along with the formal grammar of the support language for model definition.
Resumo:
A raíz de la aparición de los procesadores dotados de varios “cores”, la programación paralela, un concepto que, por otra parte no era nada nuevo y se conocía desde hace décadas, sufrió un nuevo impulso, pues se creía que se podía superar el techo tecnológico que había estado limitando el rendimiento de esta programación durante años. Este impulso se ha ido manteniendo hasta la actualidad, movido por la necesidad de sistemas cada vez más potentes y gracias al abaratamiento de los costes de fabricación. Esta tendencia ha motivado la aparición de nuevo software y lenguajes con componentes orientados precisamente al campo de la programación 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 programación paralela es un campo complejo y heterogéneo, 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 programación paralela, y que siguen las directrices de un estándar ampliamente reconocido y aceptado. Este es el caso del estándar OpenMP, un Interfaz de Programación de Aplicaciones (API) flexible, portable y escalable, orientado a la programación paralela multiproceso en arquitecturas multi-core o multinucleo. Dicho estándar 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 programación paralela, y un estándar reputado y ampliamente extendido, con el que los programadores se encuentran familiarizados. El objetivo principal es el desarrollo de un conjunto de librerías del sistema (que engloben directivas de compilación o pragmas, librerías de ejecución y variables de entorno), soportadas por las características y los modelos de concurrencia propios de Go; y que añadan funcionalidades propias del estándar OpenMP. La idea es añadir 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 haría 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 ++.
Resumo:
La calificación automática de tareas de programación es un tema importante dentro del campo de la innovación educativa que se enfoca en mejorar las habilidades de programación 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 programación. El presente trabajo propone e implementa una arquitectura, basada en el concepto de orquestación de servicios, para soportar varios procesos de calificación automática de tareas de programación. Esto es obtenido a través de las características de modularidad, extensibilidad y flexibilidad que la arquitectura provee al proceso de calificación. La arquitectura define como pieza clave un elemento llamado Grading-submodule, el mismo que provee un servicio de evaluación del código fuente considerando un criterio de calificación. La implementación se ha llevado a cabo sobre la herramienta Virtual Programming Lab; y los resultados demuestran la factibilidad de realización, y la utilidad tanto para el profesorado como para los estudiantes.
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 basándose en eventos hardware. RVC-CAL es un lenguaje de flujo de datos estandarizado por MPEG y utilizado para definir herramientas relacionadas con la codificación de vídeo. 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 código abierto que utiliza como entrada descripciones RVC-CAL y genera a partir de ellas código 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 implementación de Papify consiste en modificar la etapa del back-end del compilador, encargada de la generación de código, 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. Además, también se modifica el front-end para permitir identificar cierto tipo de anotaciones en las descripciones RVC-CAL, utilizadas para que el diseñador pueda indicar qué actores o acciones en particular se desean analizar. Los actores instrumentados, además 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 ejecución. 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 representación visual de la información a dos niveles: por un lado, representa cronológicamente la ejecución de la aplicación, distinguiendo cada uno de los actores a lo largo de la misma. Por otro lado, genera estadísticas sobre la cantidad de eventos disparados por acción, actor o núcleo de ejecución y las representa mediante gráficos de barra. Ambas herramientas pueden ser utilizadas en conjunto para verificar el funcionamiento del programa, balancear la carga de los actores o la distribución por núcleos 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. Papify’s implementation consists of modifying the compiler’s 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 microprocessor’s 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 program’s 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 application’s 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.
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 Ciência e Tecnologia. O corpus compõe-se de um recorte baseado nas exibições do ano de 2006 do programa televisivo Caminhos da Roça - criado e exibido desde 2002 pela EPTV Ribeirão (Empresas Pioneiras de Televisão) afiliada da Rede Globo em Ribeirão Preto/SP. A proposta foi analisar, em relação ao formato, à linguagem e aos conteúdos as matérias jornalísticas que tratam especificamente de assuntos de ciência e/ou tecnologia voltadas para o agronegócio e que tenham mostrado algum contato entre pesquisador e cidadão do campo. Este trabalho, de natureza qualitativa, empregou a metodologia de Análise de Discurso de linha Francesa (AD) e identificou C&T como um assunto bastante presente no Caminhos da Roça. Constatou-se ainda que, embora haja muita divulgação de C&T não há um padrão de aprofundamento desses assuntos e que a abordagem varia de edição para edição, além da ciência ser mostrada em forma de tecnologia que se aplica ao campo. A linguagem empregada pelo Caminhos da Roça para o tratamento de assuntos de Ciência e Tecnologia é, predominantemente clara e simplificada e o discurso mais encontrado se define como uma mescla entre o tecnológico, o informativo e o pedagógico.(AU)
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 Ciência e Tecnologia. O corpus compõe-se de um recorte baseado nas exibições do ano de 2006 do programa televisivo Caminhos da Roça - criado e exibido desde 2002 pela EPTV Ribeirão (Empresas Pioneiras de Televisão) afiliada da Rede Globo em Ribeirão Preto/SP. A proposta foi analisar, em relação ao formato, à linguagem e aos conteúdos as matérias jornalísticas que tratam especificamente de assuntos de ciência e/ou tecnologia voltadas para o agronegócio e que tenham mostrado algum contato entre pesquisador e cidadão do campo. Este trabalho, de natureza qualitativa, empregou a metodologia de Análise de Discurso de linha Francesa (AD) e identificou C&T como um assunto bastante presente no Caminhos da Roça. Constatou-se ainda que, embora haja muita divulgação de C&T não há um padrão de aprofundamento desses assuntos e que a abordagem varia de edição para edição, além da ciência ser mostrada em forma de tecnologia que se aplica ao campo. A linguagem empregada pelo Caminhos da Roça para o tratamento de assuntos de Ciência e Tecnologia é, predominantemente clara e simplificada e o discurso mais encontrado se define como uma mescla entre o tecnológico, o informativo e o pedagógico.(AU)
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, 168–170] 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.
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.
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.
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.
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.