Explore chapters and articles related to this topic
Numerical Modeling and Simulation
Published in Yogesh Jaluria, Design and Optimization of Thermal Systems, 2019
Several specialized computer languages have been developed for the simulation of engineering systems. These are usually designed for certain types of systems and, as such, are more convenient to use than a general-purpose language such as C or Fortran. Many of these simulation languages are particularly suited for manufacturing systems. The general-purpose simulation system (GPSS) is a simulation language suited for scheduling and inventory control applications dealing with different steps in a process. Other languages that may be mentioned are SIMAN, SIMSCIPT, MAST, and MAP. Each of these is particularly oriented to a specific application, making it easy to enter the relevant data for simulation and to obtain the desired outputs for design, operation, and control of the system. Other computational environments, such as those provided by specialized software for computer simulation and design (e.g., Matlab, MATHCAD, Maple, and other CAD programs) are also useful. Parallel computing, which involves a large number of processors, is particularly valuable in modeling and simulating large thermal systems.
Internet of Things: A Context-Awareness Perspective
Published in Lu Yan, Yan Zhang, Laurence T. Yang, Huansheng Ning, The Internet of Things, 2008
Davy Preuveneers, Yolande Berbers
Many open specification languages are general purpose description languages (e.g. RDF [4] and OWL [20]), while others target a very specific domain. For example, dedicated languages and specification formalisms have been proposed to model the hardware and software characteristics of mobile handheld devices (e.g., CC/PP [24] and UAProf [16]). Regarding RFID technology, it was only recently (2007) that the Electronic Product Code Information Services (EPCIS) standard [14] was ratified, effectively providing an XML schema binding and a binding to Simple Object Access Protocal (SOAP) over HTTP via a WSDL (Web Service Description Language) to the EPC information on an RFID tag. Some of these domain specific formats, such as UAProf, build upon a general purpose language like RDF, as illustrated in Figure 13.3. Not only does the expressiveness of these languages differ, they also distinguish themselves in managing or processing complexity. As such, there is no single one-fits-all context specification language.
C++ and Objective C
Published in Paul W. Ross, The Handbook of Software for Engineers and Scientists, 2018
Why are there two commercially successful, hybrid OO languages based on C? The answer lies in the popularity, flexibility and performance of their base language. As a general purpose language, C has much to offer as a base upon which to build: it runs on nearly every architecture, there are many C programmers, it is fast and efficient, and existing C programs will work with the new compilers with either no or only minimal modification. When C++ and Objective C were being developed, a common criticism of the pure OO languages was their performance. By choosing a hybrid approach, the developers of these languages sought, among other goals, to find a compromise between speed and support for OO programming.
Computational graph-based framework for integrating econometric models and machine learning algorithms in emerging data-driven analytical environments
Published in Transportmetrica A: Transport Science, 2022
Taehooie Kim, Xuesong (Simon) Zhou, Ram M. Pendyala
It should be noted that the concept of computational graph has been adapted in the pioneering open-source DCM estimation package, Biogeme, in 2000, through the use of chain rule differentiation and analytical gradients. In our proposed domain-specific languages (DSLs) for maximum likelihood estimation of various DCMs, we do not need to build the low-level computational graph manually through a general-purpose language (GPL); instead, we translate the corresponding DCM optimization to forms compatible to the interfaces of recent CG libraries (e.g. TensorFlow). By doing so, our approach can further fully utilize the backpropagation mechanism provided by differentiable optimization layers/pipelines. The DSLs for MLE-DCM helps modelers greatly reduce the computational redundancy by decomposing the computing units in a layered structure and enabling the use of dynamic programing for iteratively finding a solution. The development of domain-specific languages requires a deep understanding of the problem structure and domain knowledge, and we will further highlight the potential for integrating different transportation modeling elements of more complex estimation and planning problems in the conclusion of this paper.
A GCC-based checker for compliance with MISRA-C's single-translation-unit rules
Published in Connection Science, 2023
Chih-Yuan Chen, Yung-An Fang, Guan-Ren Wang, Peng-Sheng Chen
Reliability and safety are significant issues during software development. As the developing code becomes larger and more complex, these issues become increasingly important. For example, the software in a modern car may have up to 100 million lines of code (Mihailovici, 2021). As vehicles gain increasingly complex functions, the required code will continue to grow. In the next decade, a car could run an average of about 300 million lines of code (Synopsys, n.d.b). Ensuring that such massive amounts of code meet the developers' expectations for their execution and future maintenance will be a significant task (Bagnara et al., 2018, 2019). The C programming language (ISO, 1999; SC22/WG14, 1990) is a general-purpose language that is widely used across various applications. It is also a systems programming language designed to meet the requirements of system programs, including the UNIX operating system and a series of system utilities. A weakness of its type system is that even a program with typographical errors may still be valid code. Figure 1 shows an example C program. In Line 8, == is mistyped as =. The intention was for *ptr to be compared with 0, but instead 0 is stored in *ptr. The statement at Line 9 will not be executed owing to the value of *ptr. In Line 12, the pointer arithmetic goes beyond the bounds of array A, so the de-reference of the pointer has undefined behavior. The C language assumes that programmers know what they are doing: any error in the code may be passed without being noticed by the language. It is also possible that the behavior of a C program cannot be predicted. Therefore, using the C language in safety-related systems requires considerable care.