0% found this document useful (0 votes)
16 views26 pages

Advanced Programming Concepts Explained

The document discusses advanced programming concepts, defining non-trivial programming and its associated languages and concepts such as introspection, meta-programming, and multiple dispatch. It provides examples of advanced programming languages like Julia and Verse, along with a bibliography of relevant papers and books. Additionally, it outlines project and exam requirements for students, emphasizing the impact of AI on programming and the importance of adhering to the institution's code of conduct when using AI tools.

Uploaded by

Okwir Edmond
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views26 pages

Advanced Programming Concepts Explained

The document discusses advanced programming concepts, defining non-trivial programming and its associated languages and concepts such as introspection, meta-programming, and multiple dispatch. It provides examples of advanced programming languages like Julia and Verse, along with a bibliography of relevant papers and books. Additionally, it outlines project and exam requirements for students, emphasizing the impact of AI on programming and the importance of adhering to the institution's code of conduct when using AI tools.

Uploaded by

Okwir Edmond
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Advanced Programming

António Menezes Leitão

February 14, 2024

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination
Multiple inheritance/Mixins

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination
Multiple inheritance/Mixins
Lazy evaluation

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination
Multiple inheritance/Mixins
Lazy evaluation
Non-deterministic evaluation

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination
Multiple inheritance/Mixins
Lazy evaluation
Non-deterministic evaluation
Meta-circular evaluators

António Menezes Leitão Advanced Programming


Advanced Programming

Definition
Non-trivial programming?
Programming using non-trivial languages?
Programming using non-trivial concepts?
Introspection/Intercession
Meta-programming
Macros
Multiple dispatch
Method combination
Multiple inheritance/Mixins
Lazy evaluation
Non-deterministic evaluation
Meta-circular evaluators
Programming without ChatGPT?

António Menezes Leitão Advanced Programming


Advanced Programming

Example: The Julia Language (2012)


MIT’s language for scientific computing
Dynamic type system
First-class types
Multiple dispatch
Lisp-like macros and other metaprogramming facilities
Designed for parallelism and distributed computation
Coroutines
User-defined types are as fast and compact as built-ins
Automatic generation of efficient, specialized code
Read-eval-print-loop

António Menezes Leitão Advanced Programming


Advanced Programming

Example: The Verse Language (2022)


Epic Games’ language for the Metaverse
Static type system
First-class types
Functional programming
Logic programming
Existential variables
Unification
Multiple values
Transactional
Lenient evaluation

António Menezes Leitão Advanced Programming


Bibliography

Papers, provided for each topic, e.g.:


Jason Baker and Wilson C. Hsieh.
Maya: Multiple-dispatch syntax extension in java.
In PLDI, pages 270–281, 2002.

S. Chiba.
Javassist – A reflection-based programming wizard for java.
In Proceedings of the Workshop on Reflective Programming in C++ at the 13th ACM Conference on
Object-Oriented Programming Systems, Languages, and Applications (OOPSLA’98), Vancouver, Canada, October
1998.
[Link]

Shigeru Chiba.
Load-time structural reflection in Java.
Lecture Notes in Computer Science, 1850:313–??, 2000.

Sheng Liang and Gilad Bracha.


Dynamic class loading in the java tm virtual machine.
In In Proc. 13th ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications
(OOPSLA’98), volume 33, number 10 of ACM SIGPLAN Notices, pages 36–44. ACM Press, 1998.

Pattie Maes.
Concepts and experiments in computational reflection.
In Norman Meyrowitz, editor, Proceedings of the 2nd Annual Conference on Object-Oriented Programming
Systems, Languages and Applications (OOPSLA ’87), pages 147–155, Orlando, FL, USA, October 1987. ACM
Press.

António Menezes Leitão Advanced Programming


Bibliography

Books, e.g.:

On Lisp: Advanced Techniques for


Common Lisp, Paul Graham,
Prentice Hall, 1993 (freely
available).

António Menezes Leitão Advanced Programming


Bibliography

Books, e.g.:

The Art of the Metaobject


Protocol, Gregor Kiczales, Jim des
Rivieres, and Daniel G. Bobrow,
MIT Press, 1991.

António Menezes Leitão Advanced Programming


Bibliography

Books, e.g.:

Structure and Interpretation of


Computer Programs, Gerald Jay
Sussman and Hal Abelson, MIT
Press, 1996 (freely available).

António Menezes Leitão Advanced Programming


Evaluation

Project
One project
60%
Groups of three or four students
Weeks: 4, 5, 6, 7.
With extensions, highest possible grade is 22.

Exam
One exam
40%
2 hours

António Menezes Leitão Advanced Programming


Projects

Examples
Java Object Inspector
Method Combination in Java
AutoLisp in Scheme
REPL for Java
Common Lisp - Java Connection
Scheme in Java
Extensions to Java’s Type System
Multi-Methods in Racket
Tracer for Java
Debugger for Java
Autoboxing profiler for Java
Exception-handling in Julia
Multiple-dispatch for Java
Method combination in Julia
Meta-Object Protocol for Julia

António Menezes Leitão Advanced Programming


Projects

The singularity is near!


An idea first proposed by Vernor Vinge in 1993 and popularized
by Ray Kurzweil in 2005.
When the development of AI reaches a point where it can
improve and evolve on its own, without human intervention.
This may lead to an acceleration in technological progress, leading
to unprecedented and unpredictable changes in society.
It already affected farmers, tourism operators, factory workers,
etc, and is now affecting teachers, students, and programmers.

António Menezes Leitão Advanced Programming


Projects

The singularity is near!


An idea first proposed by Vernor Vinge in 1993 and popularized
by Ray Kurzweil in 2005.
When the development of AI reaches a point where it can
improve and evolve on its own, without human intervention.
This may lead to an acceleration in technological progress, leading
to unprecedented and unpredictable changes in society.
It already affected farmers, tourism operators, factory workers,
etc, and is now affecting teachers, students, and programmers.

Yeah, yeah, but


Can I use ChatGPT/Copilot/Tabnine/Ghostwriter/etc to help me
implement the PAva project?

António Menezes Leitão Advanced Programming


Projects

The singularity is near!


An idea first proposed by Vernor Vinge in 1993 and popularized
by Ray Kurzweil in 2005.
When the development of AI reaches a point where it can
improve and evolve on its own, without human intervention.
This may lead to an acceleration in technological progress, leading
to unprecedented and unpredictable changes in society.
It already affected farmers, tourism operators, factory workers,
etc, and is now affecting teachers, students, and programmers.

Yeah, yeah, but


Can I use ChatGPT/Copilot/Tabnine/Ghostwriter/etc to help me
implement the PAva project?
Yes, but be careful. Always check IST’s Code of Conduct.
António Menezes Leitão Advanced Programming
Finally

Questions?

António Menezes Leitão Advanced Programming

You might also like