Course: Programming Languages and Paradigms:
This introduces concepts related to programming languate design: abstraction, a bit of history, the syntax, semantics and pragmatics of programming languages, languages as abstraction, thought shaper, simplifier and law enforcer.program verification, denotational and operational semantics
Course: Programming Languages and Paradigms:
A brief introduction to imperative programming principles: history, von neumann, BNF, variables (r-values, l-values), modifiable data structures, order of evaluation, static and dynamic scopes, referencing environments, call by value, control flow (sequencing, selection, iteration), ...
Course: Programming Languages and Paradigms:
A brief introduction to imperative programming principles: history, von neumann, BNF, variables (r-values, l-values), modifiable data structures, order of evaluation, static and dynamic scopes, referencing environments, call by value, control flow (sequencing, selection, iteration), ...
Programming languages and concepts by vivek pariharVivek Parihar
This presentation is concerned with the study of programming language paradigms, that is the various systems of ideas that have been used to guide the design of programming languages. These paradigms are realized to a greater or lesser extent in various computer languages, although the design of a given language may reflect the influence of more than one paradigm.
Talks about different programming paradigms, their strengths & weakness, evolution of programming paradigms and some real life application of how companies have gained competitive advantage by using right paradigm to solve their problems.
Programming languages and concepts by vivek pariharVivek Parihar
This presentation is concerned with the study of programming language paradigms, that is the various systems of ideas that have been used to guide the design of programming languages. These paradigms are realized to a greater or lesser extent in various computer languages, although the design of a given language may reflect the influence of more than one paradigm.
Talks about different programming paradigms, their strengths & weakness, evolution of programming paradigms and some real life application of how companies have gained competitive advantage by using right paradigm to solve their problems.
Types: Weak/Duck/Optional vs Strong/Strict. Let the War Begin!Victor_Cr
You probably have participated many times in those battles which language is better. Sometimes you definitely have been using "weak/strict typing" definition. I would like to talk about it. It is too important to ignore. I want to compare several different languages and show you how delusional those "weak/strong" definitions. We will meet some math along with Javascript, Java, Scala, C++, .Net, Haskel and several others on the way to the truth. We will spill some blood and may lose some comrades but as a reward survivors will touch the future (a bit) of nextgen languages (let's name it as features of Java 40.0).
How to classify the type system of programming langugaes, what is the difference between typesystems of Java, Javascript and Python ?
What is the difference between Strong typed languages and statically typed languages ?
Webinar: Strongly Typed Languages and Flexible SchemasMongoDB
Strong statically typed languages are safer because they capture programmer intent. Dynamic schemas are flexible and allow for rapid development. Having both at the same time, on the same system is a great way to build an easy to iterate, modularized and flexible application, but these properties can also generate some friction. There are a set of rules and best practices around schema versions and data type validations that are crucial to make this symbiotic system work properly.
Over the course of this webinar we will show you techniques and mechanisms to use when modeling your system with MongoDB. We will review schema design best practices and real world examples that deal with these complex topics.
We will focus on making sure you understand the benefits and performance gains of using both strongly statically typed languages along with dynamic and flexible schema database like MongoDB.
What is Programming Paradigm
Types of Programming Paradigm
What is web programming
How does it work
What are web programming languages
Module of Web Programming
HTML
CSS
JAVASCRIPT
PHP
ASP .NET
RUBY ON RAILS
JAVA
PYTHON
Basic principles and advantages of functional programming and why it's getting more and more traction - including for building web-scale / reactive apps
C Programming Language is the most popular computer language and most used programming language till now. It is very simple and elegant language. This lecture series will give you basic concepts of structured programming language with C.
Visual programming (pemrograman visual) adalah pendekatan dalam pemrograman komputer yang memungkinkan pengguna untuk membuat program melalui antarmuka grafis yang intuitif dan mudah digunakan. Dalam pemrograman visual, pengguna menggambar diagram atau ikon yang merepresentasikan operasi atau fungsi yang ingin dilakukan oleh program, lalu menghubungkannya dengan garis atau panah untuk membentuk alur logika.
Pemrograman visual memiliki beberapa keuntungan dibandingkan dengan pemrograman teks tradisional. Pertama, pemrograman visual lebih mudah dipelajari oleh pemula karena antarmuka grafis yang intuitif. Kedua, pemrograman visual dapat membantu pengguna memvisualisasikan alur program secara keseluruhan, sehingga memudahkan pengguna untuk memahami bagaimana program bekerja. Ketiga, pemrograman visual dapat mempercepat proses pengembangan program karena menghilangkan kebutuhan untuk mengetik kode secara manual.
Contoh dari bahasa pemrograman visual termasuk Scratch, Blockly, dan LabVIEW.
Interfacing With High Level Programming Language
High Level Programming Language
Categories of programming languages
Processing a High-Level Language Program
Advantages of high-level languages
Interface-Based Programming
Interfaces in Object Oriented Programming Languages
Implementing an Interface
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
JThermodynamicsCloud is software service for the chemical, or more specifically, the combustion research
domain. JThermodynamicsCloud service can be said to be an model driven application, where the ontology
is a platform independent model of the data and operational structures. The ontology, as used by the service,
has three distinct purposes: documentation, data structure definition and operational definitions. One goal of
the ontology is to place as much of the design and domain specific structures in the ontology rather than in
the application code. The application code interprets the ontology in the backend. The primary purpose of
the JThermodynamicsCloud is to perform thermdynamic calculations and manage the data needed to make
those calculations. The calculation itself is highly dependent on the varied types of molecular data found in
the database The complete service is a system with three interacting components, a user interface using
Angular, a (RESTful) backend written in JAVA (with the JENA API interpreting the ontology) and the
Google Firestore noSQL document database and Firebase storage. The service uses these three components
to make calculations for thermodynamic quantities based on molecular species structure. These different
platforms are united through the ontology.
JThermodynamicsCloud is software service for the chemical, or more specifically, the combustion research
domain. JThermodynamicsCloud service can be said to be an model driven application, where the ontology
is a platform independent model of the data and operational structures. The ontology, as used by the service,
has three distinct purposes: documentation, data structure definition and operational definitions. One goal of
the ontology is to place as much of the design and domain specific structures in the ontology rather than in
the application code. The application code interprets the ontology in the backend. The primary purpose of
the JThermodynamicsCloud is to perform thermdynamic calculations and manage the data needed to make
those calculations. The calculation itself is highly dependent on the varied types of molecular data found in
the database The complete service is a system with three interacting components, a user interface using
Angular, a (RESTful) backend written in JAVA (with the JENA API interpreting the ontology) and the
Google Firestore noSQL document database and Firebase storage. The service uses these three components
to make calculations for thermodynamic quantities based on molecular species structure. These different
platforms are united through the ontology.
JThermodynamicsCloud is software service for the chemical, or more specifically, the combustion research
domain. JThermodynamicsCloud service can be said to be an model driven application, where the ontology
is a platform independent model of the data and operational structures. The ontology, as used by the service,
has three distinct purposes: documentation, data structure definition and operational definitions. One goal of
the ontology is to place as much of the design and domain specific structures in the ontology rather than in
the application code. The application code interprets the ontology in the backend. The primary purpose of
the JThermodynamicsCloud is to perform thermdynamic calculations and manage the data needed to make
those calculations. The calculation itself is highly dependent on the varied types of molecular data found in
the database The complete service is a system with three interacting components, a user interface using
Angular, a (RESTful) backend written in JAVA (with the JENA API interpreting the ontology) and the
Google Firestore noSQL document database and Firebase storage. The service uses these three components
to make calculations for thermodynamic quantities based on molecular species structure. These different
platforms are united through the ontology.
ChemConnect: Poster for European Combustion Meeting 2017Edward Blurock
This is a poster presented at the European Combustion Meeting, April 2017. It explains the Reference Description Language (RDF) setup of the database and the direction and development of the ChemConnect database project as an efficient means of data retrieval and data exhange and how the project is moving towards being an Electronic Laboratory Notebook (ELN).
EU COST Action CM1404: WG€ - Efficient Data ExchangeEdward Blurock
This talk discusses the topic of data exchange within the combustion community. This is a summary of a task force on data exchange within the WG4 working group, Standard definition for data collection and mining toward a virtual chemistry of Smart Energy Carriers, within the SMARTCATS EU COST Action CM1404
ChemConnect: Characterizing CombusAon KineAc Data with ontologies and meta-‐...Edward Blurock
ChemConnect is a database that interconnects fine-grained information extracted from chemical kinetic and thermodynamic sources such as
CHEMKIN mechanism files, NASA polynomial files, and even the information behind automatic generation files.
The key to the interconnection is the Resource Description Framework (RDF) from Semantic Web technologies. The RDF is a triplet where an object item (first) is associated through a descriptor (second) to a subject item.
In this way the information of the object is connected (through the descriptor) to the subject.
In ChemConnect the object is word (text) and the subject can be text or a database item. The search mechanism within ChemConnect uses the object and subject text as search strings.
The presentation also contains an brief introduction to cloud computing.
This was presented at the COST Action 1404 SMARTCATS workshop on Databases and Systems Use Cases (http//http://www.smartcats.eu/wg4ws1dp/)
Poster: Characterizing Ignition behavior through morphing to generic curvesEdward Blurock
The qualitative notion that ignition processes have similar behavior, even over an extensive range of starting conditions, is quantitatively demonstrated through the production of a single ’generic’ ignition curve. The key to the production of the generic curve is the recognition that the basic shapes of the species and temperature profiles occurring in the ignition process differ only in their ’timing’. By ’morphing’ the time scale, the profile shapes can be made to align. From the aligned profile shapes a generic or ’average’ profile can be derived. Synchronizing chemical events modifies the ignition progress times. In addition to fixing the ignition time to have the progress value of one, intermediate ignition events (such as selected profile maxima or inflection points) that occur before ignition are also aligned to have specific ’normalized’ times.
The goal of the Very Open Data Project is to provide a software-technical foundation for this exchange of data, more specifically to provide an open database platform for data from the raw data coming from experimental measurements or models through intermediate manipulations to finally published results. The sheer expanse of the amount data involved creates some unique software-technical challenges. One of these challenges is addressed in the part of the study presented here, namely to characterize scientific data (with the initial focus being detailed chemistry data from the combustion kinetic community), so that efficient searches can be made. A formalization of this characterization comes in the form of schemas of descriptions of tags and keywords describing data and ontologies describing the relationship between data types and the relationship between the characterizations themselves. These will be translated to meta-data tags connected to the data points within a non-relational data of data for the community.
The focus of the initial work will be on data and its accessibility. As the project progresses, the emphasis will shift on not only having available data accessible for the community, but that the community itself will be able to, with emphasis on minimal effort, will be able contribute their own data. This will involve, for example, the concepts of the ‘electronic lab notebook’ and the existence and availability of extensive concept extraction tools, primarily from the chemical informatics field.
This describes a tabulation method based on computing, retaining and accessing a large, on the order of millions, number of individual kinetic time step calculations and approximations. It is essentially an extension of Pope’s In Situ Adaptive Tabulation
(ISAT) method. The primary differences lie in that not all configurations need be stored in memory and that a polynomial approximation is only calculated when enough points have accumulated within a localized area to be able to calculate the
polynomial approximation. The latter increases efficiency because no extra points are evaluated to form an approximation (as is done in ISAT). The speed up is expected to be that of ISAT.
Characterization Ignition Behavior through Morphing to Generic Ignition CurvesEdward Blurock
Presented at the International Conference of Chemical Kinetics, Ghent, Belgium, July, 2015
The qualitative notion that ignition processes have similar behavior, even over an extensive range of starting conditions, is quantitatively demonstrated through the production of a single ’generic’ ignition curve. The key to the production of the generic curve is the recognition that the basic shapes of the species and temperature profiles occurring in the ignition process differ only in their ’timing’. By ’morphing’ the time scale, the profile shapes can be made to align. From the aligned profile shapes, a generic or ’average’ profile can be derived. Synchronizing chemical events modifies the ignition progress times. In addition to fixing the ignition time to have the progress value of one, intermediate ignition events (such as selected profile maxima or inflection points) that occur before ignition are also aligned to have specific ’normalized’ times. With this additional synchronization, a single generic curve, derived from the average of the morphed curves, can be derived. This generic curve represents a kinetic modelers intuitive notion of the mechanism of the process.
Course: Intro to Computer Science (Malmö Högskola):
knowledge representation and abstraction, decision making, generalization, data acquistion (abstraction), machine learning, similarity
another version of abstraction
Course: Intro to Computer Science (Malmö Högskola):
A very general overview of computer science from machine, operating systems, networks, applications...
Course: Intro to Computer Science (Malmö Högskola):
A overview of computability and complexity (for non-mathematicians). definition of algorithm, turing machines, lambda, calculus and concepts of complexity
Acetabularia Information For Class 9 .docxvaibhavrinwa19
Acetabularia acetabulum is a single-celled green alga that in its vegetative state is morphologically differentiated into a basal rhizoid and an axially elongated stalk, which bears whorls of branching hairs. The single diploid nucleus resides in the rhizoid.
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
A Strategic Approach: GenAI in EducationPeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
Welcome to TechSoup New Member Orientation and Q&A (May 2024).pdfTechSoup
In this webinar you will learn how your organization can access TechSoup's wide variety of product discount and donation programs. From hardware to software, we'll give you a tour of the tools available to help your nonprofit with productivity, collaboration, financial management, donor tracking, security, and more.
Synthetic Fiber Construction in lab .pptxPavel ( NSTU)
Synthetic fiber production is a fascinating and complex field that blends chemistry, engineering, and environmental science. By understanding these aspects, students can gain a comprehensive view of synthetic fiber production, its impact on society and the environment, and the potential for future innovations. Synthetic fibers play a crucial role in modern society, impacting various aspects of daily life, industry, and the environment. ynthetic fibers are integral to modern life, offering a range of benefits from cost-effectiveness and versatility to innovative applications and performance characteristics. While they pose environmental challenges, ongoing research and development aim to create more sustainable and eco-friendly alternatives. Understanding the importance of synthetic fibers helps in appreciating their role in the economy, industry, and daily life, while also emphasizing the need for sustainable practices and innovation.
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
The Roman Empire A Historical Colossus.pdfkaushalkr1407
The Roman Empire, a vast and enduring power, stands as one of history's most remarkable civilizations, leaving an indelible imprint on the world. It emerged from the Roman Republic, transitioning into an imperial powerhouse under the leadership of Augustus Caesar in 27 BCE. This transformation marked the beginning of an era defined by unprecedented territorial expansion, architectural marvels, and profound cultural influence.
The empire's roots lie in the city of Rome, founded, according to legend, by Romulus in 753 BCE. Over centuries, Rome evolved from a small settlement to a formidable republic, characterized by a complex political system with elected officials and checks on power. However, internal strife, class conflicts, and military ambitions paved the way for the end of the Republic. Julius Caesar’s dictatorship and subsequent assassination in 44 BCE created a power vacuum, leading to a civil war. Octavian, later Augustus, emerged victorious, heralding the Roman Empire’s birth.
Under Augustus, the empire experienced the Pax Romana, a 200-year period of relative peace and stability. Augustus reformed the military, established efficient administrative systems, and initiated grand construction projects. The empire's borders expanded, encompassing territories from Britain to Egypt and from Spain to the Euphrates. Roman legions, renowned for their discipline and engineering prowess, secured and maintained these vast territories, building roads, fortifications, and cities that facilitated control and integration.
The Roman Empire’s society was hierarchical, with a rigid class system. At the top were the patricians, wealthy elites who held significant political power. Below them were the plebeians, free citizens with limited political influence, and the vast numbers of slaves who formed the backbone of the economy. The family unit was central, governed by the paterfamilias, the male head who held absolute authority.
Culturally, the Romans were eclectic, absorbing and adapting elements from the civilizations they encountered, particularly the Greeks. Roman art, literature, and philosophy reflected this synthesis, creating a rich cultural tapestry. Latin, the Roman language, became the lingua franca of the Western world, influencing numerous modern languages.
Roman architecture and engineering achievements were monumental. They perfected the arch, vault, and dome, constructing enduring structures like the Colosseum, Pantheon, and aqueducts. These engineering marvels not only showcased Roman ingenuity but also served practical purposes, from public entertainment to water supply.
Introduction to AI for Nonprofits with Tapp NetworkTechSoup
Dive into the world of AI! Experts Jon Hill and Tareq Monaur will guide you through AI's role in enhancing nonprofit websites and basic marketing strategies, making it easy to understand and apply.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
2. LANGUAGES
Why so many programming Languages?
Lecture: Programming
Paradigm
CIS: Edward Blruock
3. Programming Language
Lecture: Programming
Paradigm
CIS: Edward Blruock
The process of developing and implementing
various sets of instructions
to enable a computer to do a certain task.
The language used to program computers is not understood by an
untrained eye. Computer programming continues to be a necessary
process as the Internet continues to expand.
Read more: http://www.businessdictionary.com/definition/computer-
programming.html#ixzz3jLVEiKeK
4. Top Ten Programming Languages
Lecture: Programming
Paradigm
CIS: Edward Blruock
5. Top Ten
Lecture: Programming
Paradigm
CIS: Edward Blruock
1. http://spectrum.ieee.org/computing/software/the-2015-top-ten-
programming-languages
2. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.h
tml
3. http://timesofindia.indiatimes.com/tech/slideshow/10-
programming-languages-you-need-to-know-in-
2015/itslideshowviewall/46286489.cms
4. http://www.inc.com/larry-kim/10-most-popular-programming-
languages-today.html
5. http://mashable.com/2015/01/18/programming-languages-
2015/
7. High-level programming language
Lecture: Programming
Paradigm
CIS: Edward Blruock
"High-level language" refers to the higher level of
abstraction from machine language.
Abstraction penalty:
Execution modes
• Interpreted
• Compiled
• Machine code generation: assembly language
• Intermediate code: byte code
• Source to Source: trans-compiled
https://en.wikipedia.org/wiki/High-level_programming_language
8. AbstractionPenalty
Lecture: Programming
Paradigm
CIS: Edward Blruock
While high-level languages are intended to make complex
programming simpler, low-level languages often produce more
efficient code. Abstraction penalty is the border that prevents
high-level programming techniques from being applied in
situations where computational resources are limited. High-level
programming exhibits features like more generic data structures,
run-time interpretation, and intermediate code files; which often
result in slower execution speed, higher memory consumption,
and larger binary program size
9. Abstraction
Lecture: Programming
Paradigm
CIS: Edward Blruock
Abstraction can apply to control or to data:
Control abstraction is the abstraction of actions while
Data abstraction is that of data structures.
Control abstraction
involves the use of subprograms and related concepts control flows
Data abstraction
allows handling data bits in meaningful ways.
For example, it is the basic motivation behind datatype.
One can view the notion of an object as a way to combine abstractions of data and code.
The same abstract definition can be used as a common interface for a family of objects
with different implementations and behaviors but which share the same meaning.
The inheritance mechanism in object-oriented programming can be used to define an
abstract class as the common interface.
10. History
Lecture: Programming
Paradigm
CIS: Edward Blruock
http://www.paulgraham.com/fix.html
What languages fix
A view of the development of languages:
The NEXT language
fixes short-comings
of the PREVIOUS language
11. Power of a Language
Lecture: Programming
Paradigm
CIS: Edward Blruock
All languages are equally powerful in the sense of being Turing equivalent, but
that's not the sense of the word programmers care about. (No one wants to
program a Turing machine.)
The kind of power programmers care about may not be formally definable,
but one way to explain it would be to say that it refers to features you could only
get in the less powerful language by writing an interpreter for the more powerful
language in it.
If language A has an operator for removing spaces from strings
and language B doesn't, that probably doesn't make A more powerful,
because you can probably write a subroutine to do it in B.
But if A supports, say, recursion, and B doesn't,
that's not likely to be something you can fix by writing library functions.
Paul Graham: http://www.paulgraham.com/avg.html
12. Blub Paradox
Lecture: Programming
Paradigm
CIS: Edward Blruock
Programmers get very attached to their favorite languages,
and I don't want to hurt anyone's feelings, so to explain this point I'm
going to use a hypothetical language called Blub.
Blub falls right in the middle of the abstractness continuum.
It is not the most powerful language,
but it is more powerful than Cobol or machine language.
Paul Graham: http://www.paulgraham.com/avg.html
13. The Blub Paradox
Lecture: Programming
Paradigm
CIS: Edward Blruock
As long as our hypothetical Blub programmer is looking down the power continuum,
he knows he's looking down.
Languages less powerful than Blub are obviously less powerful,
because they're missing some feature he's used to.
But when our hypothetical Blub programmer looks in the other direction, up the
power continuum,
he doesn't realize he's looking up.
What he sees are merely weird languages.
He probably considers them about equivalent in power to Blub, but with all this other
hairy stuff thrown in as well.
Blub is good enough for him, because he thinks in Blub.
Paul Graham: http://www.paulgraham.com/avg.html
14. Blub Paradox
Lecture: Programming
Paradigm
CIS: Edward Blruock
You can't trust the opinions of the others, because of the Blub paradox:
they're satisfied with whatever language they happen to use,
because it dictates the way they think about programs.
I know this from my own experience,
as a high school kid writing programs in Basic.
That language didn't even support recursion.
It's hard to imagine writing programs without using recursion,
but I didn't miss it at the time.
I thought in Basic.
And I was a whiz at it.
Master of all I surveyed.
Paul Graham: http://www.paulgraham.com/avg.html
15. A reason to take this course
Lecture: Programming
Paradigm
CIS: Edward Blruock
Learn at least one new [programming] language every
year.
Different languages solve the same problems in
different ways.
By learning several different approaches, you can help
broaden your thinking and avoid getting stuck in a rut.
The Pragmatic Programmer: From Journeyman to Master
Andrew Hunt
http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X
18. syntactic abstraction mechanism
Lecture: Programming
Paradigm
CIS: Edward Blruock
Purpose:
Lightweight syntax that lets programmers do the same
things as before, but with less code
Example: C
provides multiple looping constructs,
multiple conditional constructs,
multiple constructs for incrementing/updating the value of a variable.
loop through the elements of arrays
increment or decrement the values of variables
perform multiway conditionals based on numeric or character values.
Programming language designers provide special purpose syntactic constructs that
handle the most common patterns.
19. The opposite: no syntactic abstraction
Lecture: Programming
Paradigm
CIS: Edward Blruock
Language: Chicken http://torso.me/chicken
https://isotropic.org/papers/chicken.pdf
https://www.youtube.com/watch?v=yL_-1d9OSdk
20. Language: Chickens
Lecture: Programming
Paradigm
CIS: Edward Blruock
1. A chicken program consists of the tokens "chicken", " " and "n”.
2. Every line has a number of chickens separated by spaces.
3. The number of chickens corresponds to an opcode.
4. Trailing newlines are significant, as an empty line will produce a "0" opcode.
5. Instructions are loaded onto the stack and executed there directly, which allows for
injecting arbitrary code and executing it through a jump.
6. Self-modifying code is also possible because the program stack is not bounded.
7. The user is able to supply an input value before executing the program. This input is
stored in one of the two registers.
The operations:
http://esolangs.org/wiki/Chicken
21. thought shaper
Lecture: Programming
Paradigm
CIS: Edward Blruock
The goal of a thought shaper language is to change the way a programmer thinks about
structuring his or her program.
The basic building blocks provided by a programming language,
as well as the ways in which they can (or cannot) be combined,
will tend to lead programmers down a "path of least resistance",
for some unit of resistance.
For example,
an imperative programming style is definitely the path of least resistance in C.
It's possible to write functional C programs, but as C does not make it the path of least
resistance, most C programs will not be functional.
22. Thought Shaper
Lecture: Programming
Paradigm
CIS: Edward Blruock
Experienced programmers carry quite a number of patterns around in their heads.
They may have learned these patterns from books or by hard won experience.
The patterns enable a fluid style of programming where attention can be maintained on
the unknown parts of the task at hand and work feels productive.
Programmers tend to like programming languages
that have good support for the patterns they use.
Programmers don't like languages
that disallow or inconvenience the patterns they use.
They are also rarely impressed by language features that support patterns they don't
know or use.
http://c2.com/cgi/wiki?BlubParadox
23. Thought Shaper
Lecture: Programming
Paradigm
CIS: Edward Blruock
(pure) Functional Programming
Functional programming languages, by the way, are a good example of
thought shaper languages.
By taking away assignment from the programmer's basic toolbox,
the language really forces programmers coming from an imperative language
to change their coding habits.
24. Thought Shaper
Lecture: Programming
Paradigm
CIS: Edward Blruock
linguistic relativity
holds that cognitive processes, such as thought and experience,
may be influenced by the categories and patterns of the language a
person speaks.
From the field of linquistics
https://en.wikipedia.org/wiki/Linguistic_relativity
the structure of a language affects the ways in which its respective
speakers conceptualize their world, i.e. their world view, or
otherwise influences their cognitive processes.
25. a simplifier
Lecture: Programming
Paradigm
CIS: Edward Blruock
A designer knows he has achieved perfection not when there is nothing
left to add, but when there is nothing left to take away.
In software, the most beautiful code, the most beautiful functions, and the
most beautiful programs are sometimes not there at all.
Bentley, Jon, The most beautiful code I never wrote, Beautiful Code, O'Reilly Media, Inc.,2007
26. law enforcer
Lecture: Programming
Paradigm
CIS: Edward Blruock
http://www.cs.cornell.edu/courses/cs1130/2012sp/1130selfpaced/module1/module1part4/strongtyping.html
One property that is sometimes looked for in
a programming language is safety
Safety:
Any attempt to misinterpret data is caught at compile time
or generates a well-specified error at runtime.
definition used in the year 2000 by an ad hoc committee that
recommended that the Advanced Placement (AP) test in programming be
based on the programming language Java
27. Strong Typing
Lecture: Programming
Paradigm
CIS: Edward Blruock
Some errors arise from lack of understanding;
others are logical errors caused by inadequate thinking and design;
and some are simply typos.
In all cases, finding errors early, at compile time, can save
immense amounts of time.
Safety and strong typing make possible
the early detection of many errors.
A strongly typed language has one simple feature: knowledge of a value’s type at runtime.
28. Strong vs. Weak Typing
Lecture: Programming
Paradigm
CIS: Edward Blruock
String foo = "Hello, world!";
Object obj = foo;
String bar = (String) obj;
Date baz = (Date) obj;
The above example will run perfectly fine
until the last line,
which will raise a ClassCastException.
This is because Java is indeed strongly typed.
Even though the obj variable is of the type Object, its value
is still a String. Casting it to a String works fine, but trying to
cast it to a Date fails.
char* foo = "Hello, world!";
int x = foo * 10;
printf("%in", x);
The above block is valid C code,
but the output is not well-defined.
…. This is because C does not store anything in memory
other than the raw values—it would be impossible at
runtime to know that foo was a char* and x was an int.
Strong
Weak
29. Program Verification:
Bugs
Lecture: Programming
Paradigm
CIS: Edward Blruock
Here are some famous ones:
ESA Ariane 5 Flight 501 self-destruction
40 seconds after takeoff (June 4, 1996).
A conversion from 64-bit floating point to 16 bit integer
with a value larger than possible with Arian 4.
The overflow caused a hardware trap
The Pentium bug
Incorrect floating-point division.
Cost Intel ~ $400,000,000
The 2003 North America blackout
was triggered by a local outage that went undetetected.
A race condition in General Electric’s monitoring software prevented an alarm
30. Program Verification:
Testing
Lecture: Programming
Paradigm
CIS: Edward Blruock
When you look at a big commercial software company like Microsoft,
there's actually as much testing that goes in as development. We have
as many testers as we have developers. Testers basically test all the
time, and developers basically are involved in the testing process about
half the time…
Bill Gates:
The test cases are unbelievably expensive; in fact, there's more lines
of code in the test harness than there is in the program itself. Often
that's a ratio of about three to one
31. Program Verification
Lecture: Programming
Paradigm
CIS: Edward Blruock
Formal = based on rigorous mathematical logic concepts.
Once we formally specify what we expect from the program, we
can try to prove that the program satisfies the specification.
32. Styles of formal semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
Operational.
Meanings for program phrases defined in terms of the steps
of computation they can take during program execution.
Axiomatic.
Meanings for program phrases defined indirectly via the axioms
and rules of some logic of program properties.
Denotational.
Concerned with giving mathematical models of programming
languages. Meanings for program phrases defined abstractly
as elements of some suitable mathematical structure.
35. Operational Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
A category of formal programming language semantics
in which certain desired properties of a program,
such as correctness, safety or security,
are verified by
constructing proofs from
logical statements about its execution,
rather than by attaching mathematical meanings to its terms
(denotational semantics).
The operational semantics for a programming language describes how a
valid program is interpreted as sequences of computational steps
36. Operational Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
Two categories:
structural operational semantics
(or small-step semantics)
formally describe how the individual steps of a computation
take place in a computer-based system.
natural semantics
(or big-step semantics)
describe how the overall results of the executions are obtained.
37. Operational Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
The process:
1. Identify a virtual machine (an idealized computer)
2. Build a translator (translates source code to the machine code
of an idealized computer)
3. Build a simulator for the idealized computer
Operational semantics is sometimes called translational
semantics, if an existing PL is used in place of the virtual machine
http://courses.cs.vt.edu/~cs3304/Spring00/notes/Chapter-3b/index.htm
38. Axiomatic Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
• An assertion before a statement is called a precondition
• An assertion following a statement is a postcondition
Based on formal logic (first order predicate calculus)
Original purpose: formal program verification
Approach:
Define axioms or inference rules
for each statement type in the language
Inference rule
allows one to transform expressions to other expressions
assertions
state the relationships and constraints among variables
that are true at a specific point in execution
39. Axiomatic Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
Logic Programming (declarative) view of program
Translation to logical statements means you can construct a proof
For example:
Can verify the correctness of the program
automatically through
automatic theorem provers
If the precondition on the first statement is the same as the program spec,
the program is correct
Program proof process:
The postcondition for the whole program is the desired results
Work back through the program to the first statement
40. Denotational Semantics
Lecture: Programming
Paradigm
CIS: Edward Blruock
denotational semantics (initially known as mathematical semantics or Scott–
Strachey semantics) is an approach of formalizing the meanings of
programming languages by constructing mathematical objects (called
denotations) that describe the meanings of expressions from the languages.
Other approaches to providing formal semantics of programming languages
include axiomatic semantics and operational semantics.
https://en.wikipedia.org/wiki/Denotational_semantics
With formal semantics we give programs meaning by mapping them into
some abstract but precise domain of objects. Using denotational semantics,
we provide meaning in terms of mathematical objects, such as integers,
truth values, tuples of values, and functions. For this reason, denotational
semantics was originally called mathematical semantics.
http://homepage.cs.uiowa.edu/~slonnegr/plf/Book/Chapter9.pdf