This document introduces several alternative programming languages: Mercury, JavaFX, Piet, and Go. It provides an overview of each language, including its origins, syntax, and how to develop an application. It also discusses resources for learning more about these languages and notes that the document is licensed for use.
Basis for comparison programming languagesAbdo ELhais
This document compares several popular programming languages across various features and qualities. It discusses object orientation, static vs dynamic typing, generics, inheritance, renaming, overloading, operator overloading, higher order functions, garbage collection, uniform access, class variables/methods, reflection, access control, design by contract, multithreading, regular expressions, pointer arithmetic, language integration, and built-in security. The languages compared are Java, C#, C++, Python, and Visual Basic.
Human Science Co., Ltd. is an Asian language solution provider located in Tokyo, Japan that offers localization, translation, technical writing, and multimedia services in Japanese, Chinese, Korean, and other Asian languages using native speaking staff with over 95 employees and over 30 years of experience in the industry.
This document provides a summary of a Java programming course. The course teaches Java programming skills from basic syntax and data types to object-oriented concepts like inheritance and polymorphism. It covers key Java APIs including collections, streams, files and serialization. By the end of the course students will be able to program effectively in Java, understand its architecture, and implement object-oriented designs using common language features. The course lasts five days and assumes prior programming experience in languages like C/C++ but no prior Java knowledge is required.
- The document discusses Hi-Lite, a French research project that aims to combine unit testing and formal verification in Ada programs.
- It presents the translation from Ada to the Why3 verification language, including handling of types, contracts, loops, and other language features.
- The goal is to allow gradual adoption of formal verification while still leveraging existing tests, and apply verification to both new and legacy Ada code bases.
Object-oriented programming (OOP) uses classes and objects to organize code and data. One key feature of OOP is inheritance, which allows a child class to inherit attributes and behaviors from a parent class. The paper discusses inheritance and its types, including single, multiple, multilevel, hierarchical, and hybrid inheritance. It explains that inheritance allows code reuse and makes programs more reliable, efficient, and easier to develop by reducing duplicate code.
Basis for comparison programming languagesAbdo ELhais
This document compares several popular programming languages across various features and qualities. It discusses object orientation, static vs dynamic typing, generics, inheritance, renaming, overloading, operator overloading, higher order functions, garbage collection, uniform access, class variables/methods, reflection, access control, design by contract, multithreading, regular expressions, pointer arithmetic, language integration, and built-in security. The languages compared are Java, C#, C++, Python, and Visual Basic.
Human Science Co., Ltd. is an Asian language solution provider located in Tokyo, Japan that offers localization, translation, technical writing, and multimedia services in Japanese, Chinese, Korean, and other Asian languages using native speaking staff with over 95 employees and over 30 years of experience in the industry.
This document provides a summary of a Java programming course. The course teaches Java programming skills from basic syntax and data types to object-oriented concepts like inheritance and polymorphism. It covers key Java APIs including collections, streams, files and serialization. By the end of the course students will be able to program effectively in Java, understand its architecture, and implement object-oriented designs using common language features. The course lasts five days and assumes prior programming experience in languages like C/C++ but no prior Java knowledge is required.
- The document discusses Hi-Lite, a French research project that aims to combine unit testing and formal verification in Ada programs.
- It presents the translation from Ada to the Why3 verification language, including handling of types, contracts, loops, and other language features.
- The goal is to allow gradual adoption of formal verification while still leveraging existing tests, and apply verification to both new and legacy Ada code bases.
Object-oriented programming (OOP) uses classes and objects to organize code and data. One key feature of OOP is inheritance, which allows a child class to inherit attributes and behaviors from a parent class. The paper discusses inheritance and its types, including single, multiple, multilevel, hierarchical, and hybrid inheritance. It explains that inheritance allows code reuse and makes programs more reliable, efficient, and easier to develop by reducing duplicate code.
The document presents a comparative study of several object-oriented programming languages: FreeBasic, Falcon, Perl, Python, and C#. It surveys these languages based on parameters like reusability, portability, reliability, readability, efficiency, and more. It then evaluates a single program implemented in each language based on criteria like program length, programming effort, runtime efficiency, memory consumption, and reliability.
The document provides information on object oriented programming and C++. It discusses:
- The history and development of C++ from earlier procedural languages like C.
- Key concepts of object oriented programming like classes, objects, encapsulation, and inheritance.
- The differences between procedural and object oriented programming, with OOP addressing limitations of procedural languages.
- Examples of classes and objects in C++ code.
OOPs
The prime purpose of C++ programming was to add object orientation to the C programming language, which is in itself one of the most powerful programming languages.
The core of the pure object-oriented programming is to create an object, in code, that has certain properties and methods. While designing C++ modules, we try to see whole world in the form of objects. For example a car is an object which has certain properties such as color, number of doors, and the like. It also has certain methods such as accelerate, brake, and so on.
There are a few principle concepts that form the foundation of object-oriented programming:
Object
This is the basic unit of object oriented programming. That is both data and function that operate on data are bundled as a unit called as object.
Class
When you define a class, you define a blueprint for an object. This doesn't actually define any data, but it does define what the class name means, that is, what an object of the class will consist of and what operations can be performed on such an object.
Abstraction
Data abstraction refers to, providing only essential information to the outside world and hiding their background details, i.e., to represent the needed information in program without presenting the details.
For example, a database system hides certain details of how data is stored and created and maintained. Similar way, C++ classes provides different methods to the outside world without giving internal detail about those methods and data.
Encapsulation
Encapsulation is placing the data and the functions that work on that data in the same place. While working with procedural languages, it is not always clear which functions work on which variables but object-oriented programming provides you framework to place the data and the relevant functions together in the same object.
Inheritance
One of the most useful aspects of object-oriented programming is code reusability. As the name suggests Inheritance is the process of forming a new class from an existing class that is from the existing class called as base class, new class is formed called as derived class.
This is a very important concept of object-oriented programming since this feature helps to reduce the code size.
Polymorphism
The ability to use an operator or function in different ways in other words giving different meaning or functions to the operators or functions is called polymorphism. Poly refers to many. That is a single function or an operator functioning in many ways different upon the usage is called polymorphism.
Overloading
The concept of overloading is also a branch of polymorphism. When the exiting operator or function is made to operate on new data type, it is said to be overloaded.
The Whole Platform A Language Workbench for EclipseRiccardo Solmi
The document describes The Whole Platform, a language workbench for Eclipse. It allows for domain-specific languages to be defined and used for tasks like language development, data integration, and code generation. Key components include language frameworks, domain-specific languages, and a language workbench based on Eclipse. Usage scenarios automate language definition, data loading and transformation, and model-driven code generation.
A Research Study of Data Collection and Analysis of Semantics of Programming ...IRJET Journal
This document summarizes a research study on data collection and analysis of programming language semantics. It discusses several key programming languages like C++, C, Pascal, Fortran, Java, Perl, PHP, and Scheme. It analyzes the features and usage of these languages. It also compares Python and R as good options for beginners in data science and discusses why Python may have a lower learning curve. Finally, it discusses the importance of incorporating semantic results into practical systems to help language designers and programmers better understand languages.
JetBrains MPS allows for extending existing languages like Java and developing domain-specific languages (DSLs). It uses a projectional editor that works directly with the abstract syntax tree instead of text, improving composability. This allows language extensions to work together without ambiguities. MPS also provides the full language infrastructure like type systems and compilers that are usually difficult to develop.
From Programming to Modeling And Back AgainMarkus Voelter
This document discusses programming languages and modeling. It notes that programming languages are not expressive, high-level, abstract, domain-specific, or modular enough. It proposes addressing this by using modeling with higher-level, domain-specific concepts and notations, and code generation from models. However, modeling and programming tools have traditionally been separate worlds. The document envisions a future where modeling and programming are integrated by mixing models and programs, and developing languages and tools that support programming at different levels of abstraction from different viewpoints. Enabling technologies could include advanced parser generators and projectional editing, while available tools mentioned include Eclipse Xtext and JetBrains' Meta Programming System for developing domain-specific languages.
This document summarizes the plone.app.multilingual project, which provides next-generation multilingual capabilities for Plone sites. It describes the history and goals of the project, how it supports both Archetypes and Dexterity content types, and its key features like language root folders, unified translation editing, and integration with translation services. The roadmap includes improvements to the LinguaPlone migration, user interface, and additional tools. Participation in upcoming Plone sprints is encouraged to further develop this open source project.
The document discusses challenges in cross-language word alignment. It outlines topics including word alignment concepts and applications, state of the art, and limitations due to phenomena like multiword units. Guidelines are presented for annotating alignments between English, French, Portuguese and Spanish, including challenges like prepositional dependencies, multiword units, and contractions. The goal is to create linguistically informed gold standard alignment sets to help machine translation tasks.
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionEelco Visser
Compiler construction techniques are applied beyond general-purpose languages through domain-specific languages (DSLs). The document discusses several DSLs developed using Spoofax including:
- WebDSL for web programming with sub-languages for entities, queries, templates, and access control.
- IceDust for modeling information systems with derived values computed on-demand, incrementally, or eventually consistently.
- PixieDust for client-side web programming with views as derived values updated incrementally.
- PIE for defining software build pipelines as tasks with dynamic dependencies computed incrementally.
The document also outlines several research challenges in compiler construction like high-level declarative language definition, verification of
C# introduction document covers the following topics:
- Hello World demo shows a basic C# console application.
- The .NET Framework overview describes its common language runtime, base class library and language interoperability.
- Design goals of C# emphasize it being the first component-oriented C-family language and unifying all data types as objects.
- Language features covered include program structure, type system, predefined types, classes, structs, interfaces, enums and delegates.
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider.
We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
Programming Languages and Program DevelompentSamudin Kassan
The document discusses various programming languages and program development tools. It describes low-level languages like machine language and assembly language. It then covers procedural languages like C and COBOL. Next, it discusses object-oriented programming languages like Java, C++, C#, and the .NET Framework. It also mentions integrated development environments and visual programming tools.
Profiler Instrumentation Using Metaprogramming TechniquesRitu Arora
This document discusses different techniques for instrumenting code with a profiler using metaprogramming, including OpenJava, Javassist, and AspectJ. It provides examples of implementing a profiler using each technique. OpenJava inserts profiler calls by extending the metaclass. Javassist inserts calls by extending the classloader. AspectJ isolates the profiler logic in an aspect module and uses pointcuts and advice to insert calls.
Compiler Construction | Lecture 1 | What is a compiler?Eelco Visser
This document provides an overview of the CS4200 Compiler Construction course at TU Delft. It discusses the organization of the course into two parts: CS4200-A which covers compiler concepts and techniques through lectures, papers, and homework assignments; and CS4200-B which involves building a compiler for a subset of Java as a semester-long project. Key topics covered include the components of a compiler like parsing, type checking, optimization, and code generation; intermediate representations; and different types of compilers.
SPIDER is a system for paraphrasing in document editing and revision. It was designed to help with writing optimization, but its applicability extends to MT pre-editing.
The Catalan daily newspaper La Vanguardia launched a Catalan version to celebrate its 130th anniversary and normalize the use of Catalan. They partnered with Lucy Software and Incyta to develop a machine translation system to produce the Catalan version from the original Spanish. Over an 8 month ramp-up phase, they tuned the machine translation system, trained post-editors, and integrated the system into their workflow. The production process now generates the Catalan version using a team of 20 post-editors. Their next goals are reducing post-editing effort and reusing already post-edited text.
The document discusses strategies for online communication and marketing. It notes that 87% of website visitors come through Google searches and provides keyword search volumes related to furniture design. It advocates using search engine optimization, search engine marketing, social media, and analytics to bring customers to products and build an online community. The strategies include optimizing a website for relevant keywords, linking to a company blog, and encouraging users to join an online community.
The document presents a comparative study of several object-oriented programming languages: FreeBasic, Falcon, Perl, Python, and C#. It surveys these languages based on parameters like reusability, portability, reliability, readability, efficiency, and more. It then evaluates a single program implemented in each language based on criteria like program length, programming effort, runtime efficiency, memory consumption, and reliability.
The document provides information on object oriented programming and C++. It discusses:
- The history and development of C++ from earlier procedural languages like C.
- Key concepts of object oriented programming like classes, objects, encapsulation, and inheritance.
- The differences between procedural and object oriented programming, with OOP addressing limitations of procedural languages.
- Examples of classes and objects in C++ code.
OOPs
The prime purpose of C++ programming was to add object orientation to the C programming language, which is in itself one of the most powerful programming languages.
The core of the pure object-oriented programming is to create an object, in code, that has certain properties and methods. While designing C++ modules, we try to see whole world in the form of objects. For example a car is an object which has certain properties such as color, number of doors, and the like. It also has certain methods such as accelerate, brake, and so on.
There are a few principle concepts that form the foundation of object-oriented programming:
Object
This is the basic unit of object oriented programming. That is both data and function that operate on data are bundled as a unit called as object.
Class
When you define a class, you define a blueprint for an object. This doesn't actually define any data, but it does define what the class name means, that is, what an object of the class will consist of and what operations can be performed on such an object.
Abstraction
Data abstraction refers to, providing only essential information to the outside world and hiding their background details, i.e., to represent the needed information in program without presenting the details.
For example, a database system hides certain details of how data is stored and created and maintained. Similar way, C++ classes provides different methods to the outside world without giving internal detail about those methods and data.
Encapsulation
Encapsulation is placing the data and the functions that work on that data in the same place. While working with procedural languages, it is not always clear which functions work on which variables but object-oriented programming provides you framework to place the data and the relevant functions together in the same object.
Inheritance
One of the most useful aspects of object-oriented programming is code reusability. As the name suggests Inheritance is the process of forming a new class from an existing class that is from the existing class called as base class, new class is formed called as derived class.
This is a very important concept of object-oriented programming since this feature helps to reduce the code size.
Polymorphism
The ability to use an operator or function in different ways in other words giving different meaning or functions to the operators or functions is called polymorphism. Poly refers to many. That is a single function or an operator functioning in many ways different upon the usage is called polymorphism.
Overloading
The concept of overloading is also a branch of polymorphism. When the exiting operator or function is made to operate on new data type, it is said to be overloaded.
The Whole Platform A Language Workbench for EclipseRiccardo Solmi
The document describes The Whole Platform, a language workbench for Eclipse. It allows for domain-specific languages to be defined and used for tasks like language development, data integration, and code generation. Key components include language frameworks, domain-specific languages, and a language workbench based on Eclipse. Usage scenarios automate language definition, data loading and transformation, and model-driven code generation.
A Research Study of Data Collection and Analysis of Semantics of Programming ...IRJET Journal
This document summarizes a research study on data collection and analysis of programming language semantics. It discusses several key programming languages like C++, C, Pascal, Fortran, Java, Perl, PHP, and Scheme. It analyzes the features and usage of these languages. It also compares Python and R as good options for beginners in data science and discusses why Python may have a lower learning curve. Finally, it discusses the importance of incorporating semantic results into practical systems to help language designers and programmers better understand languages.
JetBrains MPS allows for extending existing languages like Java and developing domain-specific languages (DSLs). It uses a projectional editor that works directly with the abstract syntax tree instead of text, improving composability. This allows language extensions to work together without ambiguities. MPS also provides the full language infrastructure like type systems and compilers that are usually difficult to develop.
From Programming to Modeling And Back AgainMarkus Voelter
This document discusses programming languages and modeling. It notes that programming languages are not expressive, high-level, abstract, domain-specific, or modular enough. It proposes addressing this by using modeling with higher-level, domain-specific concepts and notations, and code generation from models. However, modeling and programming tools have traditionally been separate worlds. The document envisions a future where modeling and programming are integrated by mixing models and programs, and developing languages and tools that support programming at different levels of abstraction from different viewpoints. Enabling technologies could include advanced parser generators and projectional editing, while available tools mentioned include Eclipse Xtext and JetBrains' Meta Programming System for developing domain-specific languages.
This document summarizes the plone.app.multilingual project, which provides next-generation multilingual capabilities for Plone sites. It describes the history and goals of the project, how it supports both Archetypes and Dexterity content types, and its key features like language root folders, unified translation editing, and integration with translation services. The roadmap includes improvements to the LinguaPlone migration, user interface, and additional tools. Participation in upcoming Plone sprints is encouraged to further develop this open source project.
The document discusses challenges in cross-language word alignment. It outlines topics including word alignment concepts and applications, state of the art, and limitations due to phenomena like multiword units. Guidelines are presented for annotating alignments between English, French, Portuguese and Spanish, including challenges like prepositional dependencies, multiword units, and contractions. The goal is to create linguistically informed gold standard alignment sets to help machine translation tasks.
Compiler Construction | Lecture 17 | Beyond Compiler ConstructionEelco Visser
Compiler construction techniques are applied beyond general-purpose languages through domain-specific languages (DSLs). The document discusses several DSLs developed using Spoofax including:
- WebDSL for web programming with sub-languages for entities, queries, templates, and access control.
- IceDust for modeling information systems with derived values computed on-demand, incrementally, or eventually consistently.
- PixieDust for client-side web programming with views as derived values updated incrementally.
- PIE for defining software build pipelines as tasks with dynamic dependencies computed incrementally.
The document also outlines several research challenges in compiler construction like high-level declarative language definition, verification of
C# introduction document covers the following topics:
- Hello World demo shows a basic C# console application.
- The .NET Framework overview describes its common language runtime, base class library and language interoperability.
- Design goals of C# emphasize it being the first component-oriented C-family language and unifying all data types as objects.
- Language features covered include program structure, type system, predefined types, classes, structs, interfaces, enums and delegates.
NDC Sydney 2019 - Microservices for building an IDE – The innards of JetBrain...Maarten Balliauw
Ever wondered how IDE’s are built? In this talk, we’ll skip the marketing bit and dive into the architecture and implementation of JetBrains Rider.
We’ll look at how and why we have built (and open sourced) a reactive protocol, and how the IDE uses a “microservices” architecture to communicate with the debugger, Roslyn, a WPF renderer and even other tools like Unity3D. We’ll explore how things are wired together, both in-process and across those microservices. Let’s geek out!
Programming Languages and Program DevelompentSamudin Kassan
The document discusses various programming languages and program development tools. It describes low-level languages like machine language and assembly language. It then covers procedural languages like C and COBOL. Next, it discusses object-oriented programming languages like Java, C++, C#, and the .NET Framework. It also mentions integrated development environments and visual programming tools.
Profiler Instrumentation Using Metaprogramming TechniquesRitu Arora
This document discusses different techniques for instrumenting code with a profiler using metaprogramming, including OpenJava, Javassist, and AspectJ. It provides examples of implementing a profiler using each technique. OpenJava inserts profiler calls by extending the metaclass. Javassist inserts calls by extending the classloader. AspectJ isolates the profiler logic in an aspect module and uses pointcuts and advice to insert calls.
Compiler Construction | Lecture 1 | What is a compiler?Eelco Visser
This document provides an overview of the CS4200 Compiler Construction course at TU Delft. It discusses the organization of the course into two parts: CS4200-A which covers compiler concepts and techniques through lectures, papers, and homework assignments; and CS4200-B which involves building a compiler for a subset of Java as a semester-long project. Key topics covered include the components of a compiler like parsing, type checking, optimization, and code generation; intermediate representations; and different types of compilers.
SPIDER is a system for paraphrasing in document editing and revision. It was designed to help with writing optimization, but its applicability extends to MT pre-editing.
The Catalan daily newspaper La Vanguardia launched a Catalan version to celebrate its 130th anniversary and normalize the use of Catalan. They partnered with Lucy Software and Incyta to develop a machine translation system to produce the Catalan version from the original Spanish. Over an 8 month ramp-up phase, they tuned the machine translation system, trained post-editors, and integrated the system into their workflow. The production process now generates the Catalan version using a team of 20 post-editors. Their next goals are reducing post-editing effort and reusing already post-edited text.
The document discusses strategies for online communication and marketing. It notes that 87% of website visitors come through Google searches and provides keyword search volumes related to furniture design. It advocates using search engine optimization, search engine marketing, social media, and analytics to bring customers to products and build an online community. The strategies include optimizing a website for relevant keywords, linking to a company blog, and encouraging users to join an online community.
The document consists of a series of Catalan words and phrases repeated multiple times. Specifically it contains the repeated words "SENSE MOTIU", "LA POR", "L’ATZAR", "LOS PLACERES DE ADAN", "LA SORT", "VOLAR", "LA LUJURIA", "SET", "TAST DE FASTX", "ODA AL ODIO", "L’ANGOIXA", "300 mg/dl", and "EL DUBTE".
This document outlines the details of the "Boses ng Kabataan" youth speaking competition organized by Ayos Na in collaboration with Myphone Philippines. The competition aims to find Filipino youth who exemplify the theme "Prinsipyo ko, Walang Presyo" and have a strong love for the country. It will involve local competitions across regions leading up to a national final event on May 1st. Winners will receive prizes such as livelihood opportunities from Myphone. The competition seeks to inspire youth and spread the message of integrity in politics.
FAF is a thumbdrive application that scans computers for inappropriate or illegal files like pornography, copyrighted content, and scheduled pornography images. It provides customizable scanning of files, images, and webpages. FAF aims to help organizations, businesses, and authorities efficiently audit computers and networks to ensure legal and regulatory compliance.
The document discusses the philosophy of free software. It begins with definitions of free software, noting that it is a philosophy about human rights, society, and knowledge. The document then provides a brief history of free software, including Richard Stallman creating the Free Software Foundation in the 1980s in response to proprietary software licenses. It also discusses Linus Torvalds creating the Linux kernel in the 1990s. The document addresses some clarifications and myths about free software.
The document discusses the prevalence of pornography online and its negative consequences. It then summarizes the Guardware solution, which uses image and text analysis to detect and filter pornographic content on computers and networks. The system has been successfully implemented by organizations to block inappropriate content and improve productivity.
The document discusses the need for organizations to implement and monitor an Acceptable Use Policy (AUP) to govern employee use of company technology and infrastructure. An effective AUP balances productivity, security, compliance with regulations, and legal issues. It also discusses managing employee behavior with tools like monitoring internet use, images, USB devices, and training to ensure compliance with the AUP and address risks. The e-safe business solution helps reconcile the AUP with regulatory requirements like Lexcel and SRA, providing automated monitoring, management and reporting to address compliance issues.
This document discusses how organizations must balance productivity, compliance, and security as employees increasingly use online communication tools. It describes an IT monitoring solution that allows administrators to control inappropriate internet usage, monitor text conversations, audit software/hardware, and track productivity. The solution provides customizable profiles and reporting to help organizations properly govern technology use and reduce risks and costs.
Dove launched a campaign called "Real Beauty" in 2004 to redefine societal standards of beauty. The campaign was based on research finding that most women do not consider themselves beautiful due to narrow beauty standards portrayed in media. Dove's study identified components of beauty like personality traits and health, not just physical appearance. The campaign featured more diverse, real women in its advertisements to showcase different types of beauty and boost women's self-esteem. However, some critics argued Dove's models were still conventionally attractive and the campaign did not truly challenge beauty industry norms.
X-ray diffraction is a technique used to determine the atomic and molecular structure of crystals. When an X-ray beam hits a crystal, the beam diffracts into specific directions based on the atomic planes in the crystal. Bragg's law describes the diffraction pattern and is used to explain the angles and wavelengths of the diffracted X-rays. To collect diffraction data, crystals are mounted on a goniometer and bombarded with X-rays while being rotated, producing a diffraction pattern. The pattern can then be analyzed to determine information about the crystal structure like lattice parameters and atomic arrangement.
Java language is different from other programming languages, How?Gyanguide1
Infocampus provides java course in bangalore with lesser fees. Training is given on the Core & Advance Java . Course is divided into three modules for the understanding of students.
It is providing Best Core java training in Bangalore with the placement assistance.
Mock test and mock interviews are conducted every week.
Every weekend Demo classes are available on java/j2ee classes on flexible timing.
Contact at: 9738001024 or for more details visit at : http://www.infocampus.co.in/java-training-bangalore.html
Java is a programming language that produces software for multiple platforms. This Slide covers Basic and fundamentals of Java, Why Java most used in IT company, What are Job Opertunities for Java, How Java overtage a business Strategies.
Languages used by web app development services remotestac xRemote Stacx
This document provides an overview of various programming languages that can be used for web application development, including both object-oriented and functional languages. It discusses languages like Java, Scala, Clojure, Ruby, JavaScript, Haskell, Erlang, JRuby, Lisp, OCaml, and Scheme. The key points are that Scala allows both object-oriented and functional programming on the JVM, Clojure is a Lisp dialect designed for functional programming, and many languages like Ruby and JavaScript support some functional paradigms even if not purely functional. The document encourages trying different languages to experience their features and paradigms.
JRuby is an implementation of Ruby that runs on the Java Virtual Machine (JVM) and allows Ruby code to use Java classes. It supports embedding Ruby code into Java applications and using Ruby testing tools like RSpec and Cucumber to test Java code. Ruby on Rails is a highly productive web framework that is commonly used to build Software as a Service applications. JRuby allows running Rails applications on the JVM and deploying them in Java application servers. The document discusses strategies for using JRuby and Rails in both new "greenfield" projects and existing "brownfield" Java applications.
This document discusses metaprogramming in Ruby. It defines metaprogramming as writing code that writes code, and notes that Ruby's busy runtime gives developers the power to do introspection and modify language constructs at runtime. This allows the language to grow, makes the language more flexible, avoids duplication, manages scopes, and adds methods to objects. It then addresses four specific problems as examples, and introduces techniques like open classes, dynamic dispatch, dynamic methods, nested lexical scopes, shared scopes, and singleton methods to demonstrate how metaprogramming can solve these problems.
This document discusses various topics related to language and technology including:
- The history and names of the city of Strasbourg in different languages.
- Features of programming languages like classes, lambdas, and multiple assignment in ECMAScript 6.
- How Apache Cordova allows building native mobile apps using HTML, CSS, and JavaScript.
- Different phonetic systems used by linguists and how to organize searches across multiple conversions.
- Functional programming languages like Haskell and its features like laziness and parallelism.
- Web frameworks like Yesod built for Haskell.
- Cloud platforms like Cloud Foundry that support building apps in multiple languages using buildpacks.
Modelling and Programming: Isn’t it all the same?CHOOSE
This document discusses modeling and programming, arguing that they are not the same but should be integrated. It advocates programming at different levels of abstraction and viewpoints. Modeling tools and programming tools are different worlds that should be mixed by integrating models and programs through AST navigation and query. A language workbench approach is described that can freely define languages and integrate them with powerful editing, testing, and debugging tools. Both big languages and modular languages with optional concepts are discussed. The concrete example of Mbeddr, an extensible C for embedded systems, is presented.
Procedural Programming Of Programming LanguagesTammy Moncrief
Here is a summary of the key points about the specification of the Java programming language:
Java is an object-oriented programming language developed by Sun Microsystems. Some of the main specifications of the Java programming language include:
- Platform independence: Java code can run on any platform that has a Java virtual machine (JVM) without needing to be recompiled. This allows Java programs to run on various operating systems like Windows, Linux, macOS, etc.
- Object-oriented: Java follows the OOP paradigm with concepts like classes, objects, inheritance, polymorphism, etc. Everything in Java is an object.
- Simple, familiar and general-purpose: Java syntax is based on C and C++ but
The document discusses domain-specific languages (DSLs), which are programming languages designed for a specific application domain. It notes that DSLs allow for more expressive and declarative programming compared to traditional languages. The document also outlines some of the challenges in developing and ensuring reusability of DSLs. However, it argues that DSLs can capture domain expertise in a dedicated syntax that is easier for developers to learn and use compared to general purpose languages. When integrated with Bird Technology's tools, DSLs can provide added value by delivering high performance interpreters and compilers.
This document discusses several experimental programming languages including Dart, Go, F#, Opa, Fantom, X10, and haXe. It provides an overview and description of each language, noting their origins and influences from other languages as well as their unique features and goals. These languages tackle new problems and aim to improve on current languages, with some focusing on web development, parallelism, cross-platform capabilities, and more. Understanding these new languages can help programmers choose the right tool for their projects.
java vs javascript demystifying the differences | web creative solution seowci
This document provides an overview of the key differences between Java and JavaScript. It explains that Java is a statically typed, general-purpose language that runs on the Java Virtual Machine, while JavaScript is a dynamically typed scripting language that runs in web browsers. The document covers differences in syntax, data types, object-oriented programming, usage cases, performance characteristics, and popular libraries and frameworks between the two languages. It concludes by emphasizing the importance of understanding these differences to choose the right language for a given project.
This document provides definitions for key computer science and programming concepts in 3 sentences or less per term. It defines terms like problem solving, high-level languages, low-level languages, formal languages, natural languages, portability, interpreting, compiling, source code, object code, executables, byte code, statements, comments, methods, classes, libraries, bugs, syntax, semantics, parsing, exceptions, run-time errors, logic errors, debugging, braces, and comments. The document is intended as an introductory set of flash cards for an AP Computer Science course to define essential terminology.
java-vs-java-script-demystifying-the-differences | web creative solution seowci
This document provides an overview of the key differences between Java and JavaScript. Java is a general-purpose, statically-typed language that runs on the Java Virtual Machine, while JavaScript is a dynamically-typed scripting language that runs in web browsers. The document discusses differences in their syntax, data types, object-oriented features, typical usage scenarios, performance characteristics, and libraries/frameworks. It emphasizes that understanding how Java and JavaScript differ is essential for developers to choose the right language for their projects.
"The Common European Framework of Reference for Languages (CEFR)is a widely recognized framework
used to assess and describe language proficiency levels. "
JRuby allows developers to use the Ruby programming language on the Java platform. It provides the ability to leverage existing Java libraries and frameworks from Ruby code. This allows developers to benefit from the agility of Ruby and dynamic languages for web development while still taking advantage of robust Java technologies for the backend. Rails applications can also be deployed as WAR files to be run on Java application servers and benefit from features like scalability. Overall, JRuby provides a way to incorporate Ruby into Java/JEE projects for improved productivity through rapid prototyping and dynamic web frameworks while still using reliable Java infrastructure.
Scala Introduction - Meetup Scaladores RJRodrigo Lima
Scala is a multi-paradigm programming language that runs on the Java Virtual Machine. It is designed to express common programming patterns in a concise, readable, and type-safe way. Scala smoothly integrates features of object-oriented and functional languages. Companies like Play Framework, Apache Spark, and The Guardian use Scala for building web applications, processing big data, and delivering features faster with less code. Scala code compiles to Java bytecode, allowing it to interoperate with Java libraries and take advantage of Java's large ecosystem.
This document provides an overview of programming terminology, languages, and factors to consider when hiring a developer. It defines terms like platform, framework, middleware, and full stack. It introduces popular languages like Java, C, C++, C#, PHP, Python, Ruby, JavaScript, and SQL. It also discusses unusual languages like Whitespace, LOLCODE, and Brainfuck. Finally, it lists qualities to look for in a developer like knowledge, efficiency, and communication skills, and provides common project FAQs.
Similar to Lenguajes programacionalternativos (20)
Este documento explica cómo se puede extraer datos de sitios web y documentos mediante el uso de la técnica de scraping. Describe algunos frameworks como Scrapy y FastCrawl que permiten extraer datos de manera automatizada. Explica los pasos básicos para crear un proyecto de scraping con Scrapy, incluyendo la definición de items, programación de spiders y ejecución del proyecto.
Este documento proporciona una introducción al programa GtkRecordMyDesktop, que permite grabar la pantalla y el audio del escritorio. Explica cómo instalarlo y ofrece una guía paso a paso para crear tutoriales y screencasts, incluyendo planificar el contenido, grabar videos, editar audio, montar el video final y publicarlo. También describe la interfaz del programa y opciones de configuración relacionadas con archivos, rendimiento y sonido.
Cómo reciclar equipos y no morir en el intentoseravb
Este documento proporciona instrucciones en 5 pasos para reciclar ordenadores de manera efectiva y sostenible, comenzando con la limpieza del equipo, la instalación de software libre como Linux, la configuración del sistema operativo, y el uso de herramientas como Clonezilla para replicar la configuración entre varios ordenadores. También incluye notas sobre la planificación para despliegues a gran escala y la eliminación responsable de componentes electrónicos.
Este documento resume SCRUM, un framework para el desarrollo ágil de software. Explica los componentes de SCRUM como roles, elementos y reuniones. También describe el proceso de trabajo de SCRUM y menciona algunas fuentes sobre el tema. Finaliza indicando que el documento tiene licencia GFDL.
El documento describe la aplicación web PUPILS, la cual facilita el aprendizaje de tecnologías TIC a niños. PUPILS permite el registro de padres e hijos, ver actividades del hijo, y tiene más de 3,500 líneas de código Python. El objetivo es lanzar la versión 0.2 con módulos para profesores, adaptación móvil, y gamificación de actividades.
Este documento resume los logros de un hackathon para mejorar una aplicación que facilita el aprendizaje de tecnologías TIC a niños. Se generó un script para gestionar licencias de archivos, se permitió adjuntar justificantes de pago y diplomas para los niños, y se homogenizaron las imágenes. La comunidad de usuarios creció con un nuevo colaborador y la aplicación ahora tiene más de 3,500 líneas de código.
Este documento describe una plataforma llamada Pupils para gestionar campus infantiles y facilitar el aprendizaje de tecnologías TIC a niños. La plataforma necesitaba módulos para registrar alumnos, padres y busquedas, así como paginación de resultados y una base de datos. Se hicieron cambios como agregar un módulo para registrar padres y mejorar la paginación y maquetación de resultados. La plataforma ahora tiene nuevos logotipos, redes sociales y traducciones a otros idiomas.
Presentación específica para los asistentes al proyecto PUPILS en el 3er Hackathón de Proyectos de Software Libre en la Universidad de Granada por Fco Javier Lucena y Serafín Vélez.
PUPILS es una plataforma en desarrollo que pretende ser un espacio de encuentro para alumnos, padres y profesores que facilite el aprendizaje de tecnologías TIC a niños. Usa tecnologías como Python y Geany y busca ser configurable, multiplataforma y modular para adaptarse a distintos eventos educativos. Aún falta desarrollar módulos como registro de alumnos y búsquedas, mejorar la paginación, integrar redes sociales y completar el plan de negocio y traducciones.
El documento resume las ventajas e inconvenientes del software libre. Entre las ventajas se encuentran que los usuarios no son cautivos, que permite la reutilización del código, mayor seguridad y oportunidades de negocio. Entre los inconvenientes están los usuarios reacios al cambio, que la sociedad no lo conoce bien, a veces falta de publicidad y puede faltar herramientas específicas.
Este documento resume la historia y evolución de la memoria RAM, describiendo sus componentes, tipos, funciones y aplicaciones. Explica que la RAM es un puente entre subsistemas que almacena temporalmente datos para su rápido acceso, y que ha evolucionado de memorias magnéticas y de tubos de vacío a las memorias CMOS y DRAM usadas hoy. También cubre temas como la detección y corrección de errores, su uso en servidores, y las posibles memorias del futuro como la MRAM y las holográficas.
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Driving Business Innovation: Latest Generative AI Advancements & Success StorySafe Software
Are you ready to revolutionize how you handle data? Join us for a webinar where we’ll bring you up to speed with the latest advancements in Generative AI technology and discover how leveraging FME with tools from giants like Google Gemini, Amazon, and Microsoft OpenAI can supercharge your workflow efficiency.
During the hour, we’ll take you through:
Guest Speaker Segment with Hannah Barrington: Dive into the world of dynamic real estate marketing with Hannah, the Marketing Manager at Workspace Group. Hear firsthand how their team generates engaging descriptions for thousands of office units by integrating diverse data sources—from PDF floorplans to web pages—using FME transformers, like OpenAIVisionConnector and AnthropicVisionConnector. This use case will show you how GenAI can streamline content creation for marketing across the board.
Ollama Use Case: Learn how Scenario Specialist Dmitri Bagh has utilized Ollama within FME to input data, create custom models, and enhance security protocols. This segment will include demos to illustrate the full capabilities of FME in AI-driven processes.
Custom AI Models: Discover how to leverage FME to build personalized AI models using your data. Whether it’s populating a model with local data for added security or integrating public AI tools, find out how FME facilitates a versatile and secure approach to AI.
We’ll wrap up with a live Q&A session where you can engage with our experts on your specific use cases, and learn more about optimizing your data workflows with AI.
This webinar is ideal for professionals seeking to harness the power of AI within their data management systems while ensuring high levels of customization and security. Whether you're a novice or an expert, gain actionable insights and strategies to elevate your data processes. Join us to see how FME and AI can revolutionize how you work with data!
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Infrastructure Challenges in Scaling RAG with Custom AI modelsZilliz
Building Retrieval-Augmented Generation (RAG) systems with open-source and custom AI models is a complex task. This talk explores the challenges in productionizing RAG systems, including retrieval performance, response synthesis, and evaluation. We’ll discuss how to leverage open-source models like text embeddings, language models, and custom fine-tuned models to enhance RAG performance. Additionally, we’ll cover how BentoML can help orchestrate and scale these AI components efficiently, ensuring seamless deployment and management of RAG systems in the cloud.
CAKE: Sharing Slices of Confidential Data on BlockchainClaudio Di Ciccio
Presented at the CAiSE 2024 Forum, Intelligent Information Systems, June 6th, Limassol, Cyprus.
Synopsis: Cooperative information systems typically involve various entities in a collaborative process within a distributed environment. Blockchain technology offers a mechanism for automating such processes, even when only partial trust exists among participants. The data stored on the blockchain is replicated across all nodes in the network, ensuring accessibility to all participants. While this aspect facilitates traceability, integrity, and persistence, it poses challenges for adopting public blockchains in enterprise settings due to confidentiality issues. In this paper, we present a software tool named Control Access via Key Encryption (CAKE), designed to ensure data confidentiality in scenarios involving public blockchains. After outlining its core components and functionalities, we showcase the application of CAKE in the context of a real-world cyber-security project within the logistics domain.
Paper: https://doi.org/10.1007/978-3-031-61000-4_16
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfTechgropse Pvt.Ltd.
In this blog post, we'll delve into the intersection of AI and app development in Saudi Arabia, focusing on the food delivery sector. We'll explore how AI is revolutionizing the way Saudi consumers order food, how restaurants manage their operations, and how delivery partners navigate the bustling streets of cities like Riyadh, Jeddah, and Dammam. Through real-world case studies, we'll showcase how leading Saudi food delivery apps are leveraging AI to redefine convenience, personalization, and efficiency.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Lenguajes programacionalternativos
1. Introduction
Languages
Action
Resources
Alternative Programming Languages
Mercury - JavaFX - Piet - Go
Seraf´ V´lez Barrera
ın e
serafin.velez.barrera@gmail.com
Universidad de Granada
11 de Enero de 2011
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
2. Introduction
Languages
Action
Resources
Index
1 Introduction
2 Languages
Mercury
JavaFX
Piet
GO
3 1,2,3... Action!
4 Resources
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
3. Introduction
Languages
Action
Resources
What is a programming language
Definition
A programming language is an artificial language designed to
communicate instructions to a machine
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
4. Introduction
Languages
Action
Resources
Types
1 General purpose: C, C++, Java, etc
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
5. Introduction
Languages
Action
Resources
Types
1 General purpose: C, C++, Java, etc
2 Specific language: VHDL
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
6. Introduction
Languages
Action
Resources
Types
1 General purpose: C, C++, Java, etc
2 Specific language: VHDL
3 Others: Artistic, etc
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
7. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Mercury
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
8. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
Designed and implemented by a small group of researchers at
the University of Melbourne (Australia) between this group
there are: Fergus Henderson, Thomas Conway, etc.
Based on the paradigm of purely declarative programming,
and was designed to be useful for the development of large
and robust “real-world” applications.
It improves on existing logic programming languages by
providing increased productivity, reliability and efficiency, and
by avoiding the need for non-logical program constructs.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
9. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
This language differentiates of the rest by the concept to program.
Why?
Because is a logical programming and the syntax is similar to
Prolog, with some additional declarations for types, modes,
determinism, the module system, and pragmas, and with the
distinction that function symbols may stand also for invocations of
user- defined functions as well as for data constructors.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
10. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Syntax
Mercury have a syntax similar to Pascal but this language use
terms like:
Tokens
Predicates
because is a logical programming language and is:
A strongly typed language:
:− t y p e l i s t (T) −−−> [ ] ; [ T | l i s t (T ) ] .
A strongly moded language:
:− mode append ( i n , i n , o u t ) .
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
11. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
In other Workshop
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
12. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
13. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
JavaFX is a language that is oriented to create RIA app’s (RIA =
Rich Internet Application) and this app’s integrate the simplicity of
a web app and the potentially of a desktop app.
JavaFX include various technologys like JavaFX Script, JavaFX
Mobile, and JavaFX TV.
We are going to see JavaFX Script, apart of to be a scripting
language is a language to desing User Interfaces, so have the
powerfull of a script with the design of interfaces in graphic mode.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
14. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
In other Workshop - Maybe later there will be a demo.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
15. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Piet
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
16. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
Piet (named after painter Piet Mondrian) is one of the most
known esoteric programming languages, which uses images as
source code. The language uses 20 colors, and the commands are
encoded as changes of color between adjacent pixels.
Piet was created by David Morgan-Mar, who aimed for a language
which would have its code look like abstract art. The language
hasn’t spawned any dialects; there are several implementations,
which differ slightly, mainly in the way the colors are processed.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
17. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
In other Workshop - Maybe later there will be some examples.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
18. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
GO
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
19. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
GO was designed by Ken Thompson, Rob Pike, Robert Griesemer
+ Contributors + Open Source comunity.
Features:
General purpose
Concise syntax
Expressive type system
Concurrency
Garbage collection
Fast compilation
Efficient execution
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
20. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Introduction
Combines the powerfull and safety of a statically typed compiled
language with the the expressiveness and convenience of a
dynamically typed interpreted language.
Designed as a systems language (for develop app like: Web
Servers, Browsers, etc).
Influenced by other languages: C, Modula, Pascal, Python, etc.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
21. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Syntax
Comments
/∗ T h i s i s a comment ; no n e s t i n g ∗/
// So i s t h i s .
Structs
type Point s t r u c t { x , y f l o a t }
f u n c ( p P o i n t ) Abs ( ) f l o a t {
r e t u r n math . S q r t ( p . x ∗p . x + p . y ∗p . y )
}
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
22. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Syntax
Methods
type Vector [ ] f l o a t
f u n c ( v V e c t o r ) Abs ( ) f l o a t {
sumOfSquares := 0 . 0
f o r i := r a n g e v {
sumOfSquares += v [ i ] ∗ v [ i ]
}
r e t u r n math . S q r t ( sumOfSquares )
}
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
23. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Syntax
Interfaces
type Abser i n t e r f a c e {
Abs ( ) f l o a t
}
var a Abser
a = P o i n t { 3 , 4}
p r i n t ( a . Abs ( ) )
a = V e c t o r { 1 , 2 , 3 , 4}
p r i n t ( a . Abs ( ) )
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
24. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Syntax
Visibility
ThisNameIsPublic
thisOneIsNot
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
25. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
1st Step - Install the environment
Install C tools:
sudo apt−g e t i n s t a l l b i s o n gawk g c c l i b c 6 −dev make
Install mercurial:
sudo e a s y i n s t a l l m e r c u r i a l
Fetch the repository:
hg c l o n e −u r e l e a s e h t t p s : // go . g o o g l e c o d e . com/ hg / go
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
26. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
1st Step - Install the environment
Install the environment:
sudo mv go / / u s r / l o c a l /
cd / u s r / l o c a l / go / s r c
. / a l l . bash
See bash and GO documentation to set up GO Path in the environment.
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
27. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
1st Step - Install the environment
Fetch last version:
cd go / s r c
hg p u l l
hg u p d a t e r e l e a s e
. / a l l . bash
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
28. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
2nd Step - Code
We can code the easiest example at last version: “Hello world”
2.0 :)
p a c k a g e main
i m p o r t ” fmt ”
f u n c main ( ) {
fmt . P r i n t f ( ” H e l l o w o r l d 2 . 0 n” )
}
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
29. Introduction Mercury
Languages JavaFX
Action Piet
Resources GO
Developing an app
3rd Step - Compile and test
Compile:
6g h e l l o w o r l d . go
Link:
6 l helloworld .6
Test:
. / 6 . out
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
30. Introduction
Languages
Action
Resources
Demos
DEMO!
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
31. Introduction
Languages
Action
Resources
Resources
Go
Website Go Lang
Youtube channel Google Developers
Mercury
Website
JavaFX
Website
Piet
Website
Seraf´ V´lez Barrera
ın e Alternative Programming Languages
32. Introduction
Languages
Action
Resources
License
This document have the following license:
Seraf´ V´lez Barrera – Oficina de Software Libre
ın e
serafin.velez.barrera@gmail.com
Seraf´ V´lez Barrera
ın e Alternative Programming Languages