I have used domain-specific languages to empower non-programmers in healthcare, finance, aerospace, automotive and public administration for years. My approach relies on growing the DSL from a functional programming core, combining the flexibility and power of an algorithmic language with domain-specific constructs that range from temporal data types, state machines and data models to polymorphic dispatch between versions of calculation rules. I rely on the open source MPS workbench to define the languages and their IDE. I am looking to incremental model transformations to desugar domain-specific constructs back to a minimal core language in realtime. That core language will have an interpreter for in-IDE execution and a compiler for deployment. The language will be integrated with formal methods to verify properties of programs, enabling advanced analyses for DSL users. In this talk, I will demo some existing DSLs, provide an illustration of how they are built, and demo prototypes of the future approach while discussing their integration with formal methods.
Credits-
Dr. C.-K. Shene
Professor
Department of Computer Science
Michigan Technological University
This presentation was downloaded from this link- http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/F90-Basics.pdf
Credits-
Dr. C.-K. Shene
Professor
Department of Computer Science
Michigan Technological University
This presentation was downloaded from this link- http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/F90-Basics.pdf
Presentation derived from the "What's new in Python 2.5" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
Doppl is a new programming language that aims providing a natural syntax for implementing parallel algorithms, designing data structures for shared memory applications and automated message passing among multiple tasks. The name is an abbreviation of `data oriented parallel programming language`.
Introducing to data types, identifiers, variable declarations, constants, comments, program output, and simple arithmetic operations, and the conventions of programming style and console input with the Scanner class and with dialog boxes using JOptionPane.
Md Mofijul Haque
Student
Infrastructure University Kuala Lumpur.
Don't be fooled by the thumbnail - the first couple of slides are a silly joke I forgot to remove before uploading.
Presentation derived from the "What's new in Python 2.4" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
Fundamental of C Programming Language and Basic Input/Output Functionimtiazalijoono
Fundamental of C Programming Language
and
Basic Input/Output Function
contents
C Development Environment
C Program Structure
Basic Data Types
Input/Output function
Common Programming Error
It is a very simple and easy language, C language is mainly used for develop desktop based application. All other programming languages were derived directly or indirectly from C programming concepts. This language have following features;
http://www.tutorial4us.com/cprogramming/c-features
in the oops concept convey to learn the contents are objects and classes, function in c++, and control structure. it can be easily learn to the concept with in the example of simple
program i have easy to learn for attached the program it can be very useful for student
Introduction: Language Processors, the structure of a compiler, the science of building a compiler, programming language basics.
Lexical Analysis: The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers
Presentation derived from the "What's new in Python 2.5" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
Doppl is a new programming language that aims providing a natural syntax for implementing parallel algorithms, designing data structures for shared memory applications and automated message passing among multiple tasks. The name is an abbreviation of `data oriented parallel programming language`.
Introducing to data types, identifiers, variable declarations, constants, comments, program output, and simple arithmetic operations, and the conventions of programming style and console input with the Scanner class and with dialog boxes using JOptionPane.
Md Mofijul Haque
Student
Infrastructure University Kuala Lumpur.
Don't be fooled by the thumbnail - the first couple of slides are a silly joke I forgot to remove before uploading.
Presentation derived from the "What's new in Python 2.4" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
Fundamental of C Programming Language and Basic Input/Output Functionimtiazalijoono
Fundamental of C Programming Language
and
Basic Input/Output Function
contents
C Development Environment
C Program Structure
Basic Data Types
Input/Output function
Common Programming Error
It is a very simple and easy language, C language is mainly used for develop desktop based application. All other programming languages were derived directly or indirectly from C programming concepts. This language have following features;
http://www.tutorial4us.com/cprogramming/c-features
in the oops concept convey to learn the contents are objects and classes, function in c++, and control structure. it can be easily learn to the concept with in the example of simple
program i have easy to learn for attached the program it can be very useful for student
Introduction: Language Processors, the structure of a compiler, the science of building a compiler, programming language basics.
Lexical Analysis: The Role of the Lexical Analyzer, Input Buffering, Recognition of Tokens, The Lexical-Analyzer Generator Lex, Finite Automata, From Regular Expressions to Automata, Design of a Lexical-Analyzer Generator, Optimization of DFA-Based Pattern Matchers
Slides: http://pa4373.github.io/jstutorials_corepart/
GitHub Repo: https://github.com/pa4373/jstutorials_corepart
This is the first part of JavaScript programming tutorials. This tutorial introduces the brief history of JavaScript, the relationship of the specification and a variety of implementations, and then the basic syntax and the concepts are introduced, that can be generally applied to programming interactions with different runtimes.
Are you responsible for developing satellite on-board software? Are you the Dutch government and you have to efficiently implement the public benefits law? Are you a healthcare startup, developing companion apps that help patients through a treatment? Are you an insurance company struggling to create new, and evolve existing products quickly to keep up with the market? These are all examples of organisations who have built their own domain-specific programming language to streamline the development of applications that have a non-trivial algorithmic core. All have built their languages with Jetbrains MPS, an open source language development tool optimized for ecosystems of collaborating languages with mixed graphical, textual, tabular and mathematical notations. This talk has four parts. I start by motivating the need for DSLs based on real-world examples, including the ones above. I will then present a few high-level design practices that guide our language development work. Third, I will develop a simple language extension to give you a feel for how MPS works. And finally, I will point you to things you can read to get you started with your own language development practice.
Smart Contracts sind in aller Munde. Auf Basis von Blockchains soll die Ausführung von Verträgen zwischen mehreren Parteien (die sich nicht zwangsläufig vertrauen müssen) automatisiert werden. Blockchains stellen sicher, dass die im Vertrag definierten Regeln auch zwangsläufig eingehalten werden. Allerdings ist es mit existierenden Sprachen (wie bspw. Solidity) nicht so einfach, Veträge so zu implementieren, dass alle beteiligten Parteien (insbesondere auch nicht-Programmierer) verstehen welche Regeln denn nun in dem Vertrag definiert sind. Solidity ist letztendlich eine General-Purpose Programmiersprache, die typischen Muster für Mehr-Parteien-Verträge werden nicht direkt unterstützt. In diesem Vortrag zeige ich anhand konkreter Code-Beispiele, wie man kollaborative Verträge so beschreiben kann, dass das Verhalten leichter verständlich und leichter auf Korrektheit prüfbar ist. Dabei kommen unter anderem Zustandsmaschinen, deklarative Entscheidungsstrategien und Mechanismen zur Vermeidung spieltheoretischer Angriffe zum Einsatz. Die Implementierung beruht auf KernelF, einer funktionalen Sprache die wir über die letzten Jahre entwickelt haben um als Basis für domänenspezifische Sprachen zum Einsatz zu kommen. Da die Sprache mittels Jetbrains MPS entwickelt ist, lässt sie sich modular erweitern. Die Abstraktionen für Smart Contracts sind ein Beispiel für solcheErweiterungen. Der Talk dient damit auch als Illustration der Mächtigkeit funktionaler Sprachen sowie für Sprachbau mittels MPS.
Using language workbenches and domain-specific languages for safety-critical ...Markus Voelter
Language workbenches support the efficient creation, integration, and use of domain-specific languages. Typically, they execute models by code generation to programming language code. This can lead to increased productivity and higher quality. However, in safety-/mission-critical environments, generated code may not be considered trustworthy, because of the lack of trust in the generation mechanisms. This makes it harder to justify the use of language workbenches in such an environment. In this paper, we demonstrate an approach to use such tools in critical environments. We argue that models created with domain-specific languages are easier to validate and that the additional risk resulting from the transformation to code can be mitigated by a suitably designed transformation and verification architecture. We validate the approach with an industrial case study from the healthcare domain. We also discuss the degree to which the approach is appropriate for critical software in space, automotive, and robotics systems.
In this talk I will present a number of issues that we run against in our work of building DSLs for and with customers, mostly on top of MPS. This is not an MPS wishlist, but rather the attempt at identifying general areas where tool support or even the conceptual approach are not yet as mature as for the basics of language engineering: syntax, type systems, generators and basic IDE support. An ideal outcome of this session would be the formation of groups of people who will work on some of these issues in the future. These issues include the construction of debuggers for various language paradigms, realtime incremental transformations of models, interactive guidance for end users (clippy for DSLs :-)), a practically-usable formalism for defining semantics from which interpreters and generators can be derived, as well as the more diffuse requirement for more “liveness” in DSLs of non-trivial complexity and model sizes.
Depending on the purpose of a language, its design will be completely different: the syntax may be textual, graphical, tabular, or a mix of those. It may be highly expressive, allowing users to define their own abstractions, or restricted, simplifying the language for non-programmer end users. The degree of formality may be different, depending on the domain for which the language is built and the assurances one must be able to make about the correctness of programs. Depending on performance requirements, a simple AST interpreter may be good enough for executing programs, or one may need an optimizing generator. I this talk, I revisit a number of languages we have built over the last five years. For each of them, I discuss the core design decisions as well as the drivers in the domain that led to those decisions. The talk includes languages for embedded software, insurance product definition, security analysis, health algorithms, engine control and system engineering. All of the languages discussed have been designed with and for industrial customers and have been implemented on the basis of the open source Jetbrains MPS language workbench.
Kürzlich ist es mal wieder passiert: jemand hat vertwittert, welche Thesen und Probleme im Rahmen eines akademischen Workshop zum Thema 'Model-Driven' diskutiert wurden. Darunter Perlen wie: Passen Agil + Modellierung zusammen? Alle Modellierungswerkzeuge sind schlecht! Modellieren kann man auch mit Papier und Bleistift. Gibt es Wege aus der Modellierungskrise? Modellierungssprachen müssen nicht grafisch sein. Codegenerierung ist nicht der einzige Zweck von Modellen. Diese Diskussionen machen mich wahnsinnig. Denn die (industrielle) Model-Driven Community hat alle diese Fragen schon beanwortet (Ja, Nein, Nein, Keine Krise!, Echt?, Genau!) Die obigen Behauptungen oben kommen in aller Regel aus uninformierten (nicht nur akademischen) Kreisen, die in ihrem Verständnis von Sprachen, Modellen und Werkzeugen irgendwann vor 10 oder 15 Jahren stehengeblieben sind. In diesem Vortrag hoffe ich, mit diesen Vorurteilen aufzuräumen. End of Rant! Aber ernsthaft. Was wir heute in diesem Umfeld tun ist nicht mit UML Tools + Konsorten zu vergleichen. Auf Basis der Vorurteile oben diskutiere ich ein modernes Verständnis von Modellen und Modellierungssprachen, illustriere anhand von Jetbrains MPS aktuelle Werkzeuge und illustriere den Nutzen des ganzen anhand konkreter Beispiele aus unserer industriellen Praxis. Der eine oder andere berechtigte kritische Punkt kommt dabei auch zur Sprache.
Fusing Modeling and Programming into Language-Oriented ProgrammingMarkus Voelter
Modeling in general is of course different from programming (think: climate models). However, when we consider the role of models in the context of “model-driven”, i.e., when they are used to automati- cally construct software, it is much less clear that modeling is different from programming. In this paper, I argue that the two are conceptually indistinguishable, even though in practice they traditionally emphasize different aspects of the (conceptually indistinguishable) common approach. The paper discusses and illustrates language-oriented programming, the approach to {modeling| programming} we have successfully used over the last 7 years to build a range of innovative systems in domains such as insurance, healthcare, tax, engineering and consumer electronics. It relies on domain-specific languages, modular language extension, mixed notations, and in particular, the Jetbrains MPS language workbench.
Over the last five years we have built mbeddr, a collection of integrated languages and language extensions built with the Jetbrains MPS language workbench. mbeddr consists of 81 languages, incl. IDE support, 34 of them C extensions. The mbeddr languages use a wide variety of notations – textual, tabular, symbolic and graphical – and the C extensions are modular; new extensions can be added without changing the existing implementation of C. mbeddr’s development has spanned roughly 15 person years so far, and the tool is used in practice and continues to be developed. This makes mbeddr a case study in language engineering of non-trivial size and complexity. In this keynote, I look back at mbeddr’s development to identify what worked well and what are still challenges in language engineering with a modern language workbench. I will address five areas: language modularity, notational freedom and projectional editing, mechanisms for managing complexity, performance and scalability issues and the consequences for the development process. I will close by highlighting a set of issues which need further research and engineering.
KernelF is a functional language built on top of MPS. It is designed to be highly extensible and embeddable in order to support its use at the core of domain-specific languages, realising an approach we sometimes call Funclerative Programming. 'Funclerative' is of course a mash-up of 'functional' and 'declarative' and refers to the idea of using functional programming in the small, and declarative language constructs for the larger-scale, often domain-specific, structures in a program. We have used KernelF in a wide range of languages including health and medicine, insurance contract definition, security analysis, salary calculations, smart contracts and language-definition. In this keynote, I illustrate the evolution of KernelF over the last two years. I discuss requirements on the language, and how those drove design decisions. I showcase a couple of the DSLs we built on top of KernelF to explain how MPS was used to enable the necessary language modularity. I demonstrate how we have integrated the Z3 solver to verify some aspects of programs. I present the architecture we have used to use KernelF-based DSLs in safety-critical environments. I close the keynote with an outlook on how KernelF might evolve in the future, and point out a few challenges for which we don't yet have good solutions.
Envisioning the Future of Language WorkbenchesMarkus Voelter
Over the last couple of years, I have used MPS successfully to build interesting (modeling and programming) languages in a wide variety of domains, targeting both business users and engineers. I’ve used MPS because it is currently the most powerful language workbench, lots of things are good about iz, in particular, its support for a multitude of notations and language modularity. But it is also obvious that MPS is not going to be viable for the medium to long term future; the most obvious reason for this statement is that it is not web/cloud-based. In this keynote, I will quickly recap why and how we have been successful with MPS, and point out how language workbenches could look like in the future; I will outline challenges, opportunities and research problems. I hope to spawn discussions for the remainder of the workshop.
Architecture DSLs are a useful tool to capture the cornerstones of platform or product line architectures. In addition, interesting analyses can be performed on the models, and much of the infrastructure and configuration code can be generated. On the flip side, these DSLs themselves must be architected consciously: while many architectural abstractions are specific to any given platform or product line, many other aspects are generic and hence can be reused for several architecture DSLs. In this talk I trace how my thinking on architecture modeling has changed over time, and how this is reflected in the architecture DSLs I have built (or helped to build), and how evolving tools have made these changes possible.
Generic Tools - Specific Languages (PhD Defense Slides)Markus Voelter
Generic Tools, Specific Languages (GTSL) is an approach for developing tools and applications in a way that supports easier and more meaningful adaptation to specific domains. To achieve this goal, GTSL generalizes programming language IDEs to domains traditionally not addressed by languages and IDEs. At its core, GTSL represents applications as documents/programs/models expressed with suitable languages. Application functionality is provided through an IDE that is aware of the languages and their semantics. The IDE provides editing support, and also directly integrates domain-specific analyses and execution services. Applications and their languages can be adapted to increasingly specific domains using language engineering; this includes developing incremental extensions to existing languages or creating additional, tightly integrated languages. Language workbenches act as the foundation on which such applications are built.
Traditionally, DSLs have been targeted at "specialized programmers" or at least at people with a strong technical background such as engineers, mathematicians or scientists. However, DSLs can also be very useful for people who work in fields that are less technical, and more on the business side of the universe.
In this session we discuss our experiences in building DSLs for business people, i.e. non-IT people who know their respective domain well. These people are not necessarily experienced in structured (or even formal) representation of their expert knowledge, and might not even be experts in computer usage.
Over the last few years, Markus, Jos & Bernd have gained some valuable experience into the kinds of domains, people, languages, and notations that make this approach feasible. It turns out that the requirements for DSLs and the tools used can be quite different for business users. The goal of this session is to present this experience and start a discussion about how to move the field forward.
The experiences are taken from Bernd's and Markus's work with Intentional and Achmea Insurance, Jos's work for an insurance company in Porto, and Markus's and Bernd's work on the requirements language in mbeddr.
Developing software often requires using a number of tools and languages. In embedded software, for example, it is common to use C and its IDE, Matlab/Simulink, a number of custom XML files, a requirements management tool such as DOORS and possibly a UML tool and a variant management tool. The integration of such a zoo of tools is often a major source of (accidental) complexity in development projects.
Contrast that with the "good old days" when everything was text files and command line executables running on the unix shell. This approach had two important properties: the infrastructure was extremely generic (unix shell, pipes, text editors) and the actual contents were easily extensible and composable (new text file formats/languages and new command line tools); a productive environment for a given project or domain could easily be built from the generic infrastructure plus a few custom extensions.
In this talk I want to propose that creating (domain-specific) development environments based on language workbenches results in many of the same advantages that we all valued in the unix shell-world. A language workbench is an extremely generic infrastructure that is easily extensible with new languages. It is easy to create domain-specific development tools that can address different aspects of the system with suitable abstractions, but are nonetheless very well integrated in terms of semantics and tooling.
From Programming to Modeling And Back AgainMarkus Voelter
Is programming = modeling? Are there differences, conceptual and tool-wise? Should there be differences? What if we programmed the way we model? Or vice versa? In this slidedeck I explore this question and introduce interesting developments in the space of projectional editing and modern parser technology. This leads to the concept of modular programming languages and a new way of looking at programming. I will demonstrate the idea with tools that are available today, for example TMF Xtext, JetBrains MPS and Intentional’s Domain Workbench.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Anthony Dahanne
Les Buildpacks existent depuis plus de 10 ans ! D’abord, ils étaient utilisés pour détecter et construire une application avant de la déployer sur certains PaaS. Ensuite, nous avons pu créer des images Docker (OCI) avec leur dernière génération, les Cloud Native Buildpacks (CNCF en incubation). Sont-ils une bonne alternative au Dockerfile ? Que sont les buildpacks Paketo ? Quelles communautés les soutiennent et comment ?
Venez le découvrir lors de cette session ignite
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
22. Language Patterns
New Language
GPL Extension
Existing
Domain Notation
(Informal)
Formalization
Formalized
Language
Reuse GPL incl. Expressions and TS
Add/Embed DS-extensions
Compatible notational style
Reduce to GPL
Analyze Domain to find Abstractions
Define suitable, new notations
Rely on existing behavioral paradigm
Reuse standard expression language
Interpret/Generate to one or more GPLs
Use existing notation from domain
Clean up and formalize
Generate/Interpret
Often import existing „models“
Language Patterns
25. An extensible set of integrated languages
for embedded software engineering.
26. Different kinds of languages, as
illustrated by the different
distributions of aspect code.
27. DSL Development
New Language
Analyze Domain to find Abstractions
Define suitable, new notations
Rely on existing behavioral paradigm
Reuse standard expression language
Interpret/Generate to one or more GPLs
KernelF
f f f f
f f f f
43. User edits the input model
A delta is propagated into the
transformation engine
A change on the shadow model
is produced
This triggers analysis or update of
results in Shadow Model
Results/messages are lifted back to
input level
Results are annotated to the
input model
Mightbestacked
44. Shadow Models for DSL Development.
Run incrementally,
basically like in Excel.
Generate to (faster)
Java code
Verify properties
(SMT, Model Checking)
45. t=1 t=2
t=3 t=4
f f f f
f f f f
f f f f
f f f f
f f f f
f f f f
f f f f
f f f f
t= ...
Execution Paradigms
Functional / Spreadsheet Reactive/Imperative
t
48. D
E
M
O
The next code snippet shows a selection of the KernelF2
base language concepts. We define a couple of values and
use various operators and types. Functions, generics and
algebraic data types are demonstrated as well.
49. D
E
M
O
Some of the expressions, such as true && true or 10 * 20
could be evaluated statically; and indeed, there is a
Shadow Models transformation for the KernelF2 base
language that performs such simplifications:
50. D
E
M
O
Now we demonstrate language extension and desugaring. This shows three of the
extension constructs defined in the kernelf2.sugar language: enums, alt
expressions and decision tables. These are not part of the core, but defined
in a modular extension; their semantics is defined through a reduction to the
base language. ?maybe? is a Boolean expression that we have added for demo
purposes to avoid making up arbitrary Boolean expressions all the time.
51. D
E
M
O
Below is the reduced version
of the previous code: enums
become constants that follow
a particular naming
convention, the alt
expression becomes nested
ifs, and the decision table
is translated to nested alt
expressions which are then in
turn reduced to ifs. Notice
how the reduced version
contains errors that are
produced by type checks of
the base language:
declarations must have unique
names and the <!> expression
must never show up. In this
case, <!> is produced by the
transformation because the
decision table has these
?maybe? expressions, so the
type system cannot statically
figure out whether the table
is complete and free from
overlaps.
52. D
E
M
O
Below we can see an error message in the source model
that is lifted from the shadow. No analysis happens on
the level of the enum declaration itself. Lifting errors
is a core use case for Shadow Models.
54. D
E
M
O
Here is the entry point to the transformation; it contributes to a predefined
transformation that attaches the results of transformations to the shadow
repository, a Shadow-Models internal data structure that is also visualized
in the IDE. This contribution iterates over all the models in MPS that
contain a Module (the root concept of KernelF2, see examples above) and
transforms each of them through the fork moduleFork. It copies its input
while applying two transformations (declared elsewhere) to a fixpoint.
55. D
E
M
O
This screenshot shows the simplify transformation. The first entry
declares an abstract transformation from Expr to Expr; the other two
polymorphically override the declaration for the LogicalNotExpr and
the PlusExpr. The former transforms a !true to false and the second
one performs the static addition of number literals.
56. D
E
M
O
The concrete simplify transformations are defined in the
same language as its abstract declaration; this is not
the case for the desugar transformation. Only the
abstract declaration is specified in the kernelf.core
language, with language extensions expected to provide
the overrides:
58. D
E
M
O
Let’s take a look at the reduction of enums to constants. The respective
transformation overrides the desugar transformation for EnumDecls. The
transformation iterates over the literals in the enum, and transforms each of
them into a Constant (note how the rule is allowed to create multiple outputs
as opposed to just one, as defined in the abstract declaration). The name and
the value properties of the created Constant are computed with Java
expressions that access the properties of the input node. The mapping between
the each EnumLiteral and the resulting Constant is stored in the enumLit-
ToConst mapping label.
59. D
E
M
O
We need two more transformations. First, we have to transform every
EnumType (as in val x: Color = …) into an IntType (val x: int = …),
because all enums are transformed to int constants. And whenever we
reference an enum literal using a EnumLitRef expression, we have to
transform it to a reference to the particular Constant that has been
created from the referenced literal; we can find it by querying the
previously populated label.
61. D
E
M
O
Error Lifing relies on detecting particular error messages on output nodes of
the transformation and, if one exists, back-propagating a new error to one or
more of the input nodes. To this end, transformation authors override a
predefined operation liftMessage “inside” the creator of the target node.
Here is the example for the enums:
The operation implementation, written inside the Constant, checks if the
error message(s) reported by MPS on this Constant contain the word
“duplicate”. If so, we propagate a message “this is the duplicate” to the
currently transformed literal, and another error “duplicate literal names” to
the input EnumDecl. The framework takes care automatically of removing the
lifted errors if their causes go away.
63. D
E
M
O
A foldR function joins output for the n-th element of the list to
what has been constructed for the n-1-th list element. In this case,
we create a new if that reuses the condition of the current option
and puts its value into the then part. The else part of the currently
constructed if is whatever the previous iteration has created,
represented by the acc (short for accumulator) expression inside the
foldR. For the first entry in the alt’s list of options, we pass a
seed value to foldR; in our case it is the NeverLit, rendered as <!>.
64. D
E
M
O
This transformation will create a set of nested ifs, where the last one
always has an <!> in its else part. However, if we look above, the
transformation of the alt expression in the Extensions module did not include
an else <!> at the tail. Why is this? The reason is the otherwise in the last
option, it’s basically a catch-all clause. That last option will be
transformed to by the transformation above:
However, the set of base language simplifications defines one that transforms
an if true to the then part, because we know statically the else option will
never occur:
The case above thus simply becomes 3 and the else <!> goes away. As a
corollary, this means that whenever a <!> is created as the result of the
transformation of an alt expression (and survives simplification), then this
is an indication of an error in the alt expression; which is why we add a
corresponding lifter to the transformation, as can be seen above.
66. D
E
M
O
The Shadow Repository in the MPS project view that shows
the results of all transformations; double clicking any
root opens it in an editor, and the incremental
transformations can be observed in realtime.
67. D
E
M
O
The Fork Explorer shows the execution of the
transformations, including the inputs it processes and
the output nodes it creates.