SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Covariance and
Contravariance.
Say what?!
Alin Pandichi
Alin Pandichi
Open space
Coding Dojo
Bucharest Java User Group
Global Day of Coderetreat
Alin Pandichi
Open space
Coding Dojo
Bucharest Java User Group
Global Day of Coderetreat
Software developer @
Mozaic Labs
Building eventriX
Covariance = the property of a function 
of retaining its form when the variables 
are linearly transformed.
Covariance = changing the input moves 
the function in the same direction.
Contravariance = The basis and the vector 
transform in an opposite way.
Contravariance = changing the input moves 
the function in the opposite direction.
Covariance
Contravariance
Covariance
Variance refers to how 
subtyping between complex 
types (lists, arrays) relates to 
subtyping between their 
components (individual items).
Depending on variance, the 
subtyping relation may be either 
preserved, reversed, or ignored.
Integer is a subtype of  Number 
Integer i = 1;
Number n = i;
Number  <  Integer 
Number  ← Integer
< means “is a subtype of”
← means “can be assigned to”
*read from right to the left
Integer[] is a subtype of  Number[]  
Integer[] ints = {1, 2, 3};
Number[] nums = ints;
Number[]  <  Integer[] 
Number[]    ← Integer[]
< means “is a subtype of”
← means “can be assigned to”
*read from right to the left
Number     ←  Integer
  Number[]  ←  Integer[] 
A   B←  means “B can be assigned to A”
Array types can be assigned in the same order.
Arrays are covariant.
ArrayList<Integer> ints = new ArrayList<Integer>();
ArrayList<? extends Number> nums = ints;
Number   ←  Integer
Number[]    ← Integer[]
<? extends Number>   ←  <Integer>  
Can be assigned in the same order.
This generic list is covariant.
A   B←  means “B can be assigned to A”
ArrayList<Object> objs = new ArrayList<Object>();
ArrayList<? super Number> nums = objs;
Object      ←  Number
Object[]       ← Number[]
<Object>     → <? super Number>  
Can be assigned in the reverse order.
This generic list is contravariant.
A   B←  means “B can be assigned to A”
Interesting properties of 
covariance and contravariance:
With covariance you can only 
take values out.
With contravariance you can 
only put values in.
With covariance you can only 
take values out.
ArrayList<? extends Error> errs =
new ArrayList<StackOverflowError>();
Error e = errs.get(0);
errs.add(new Error("")); // compiler error
errs.add(new StackOverflowError(""));
// compiler error
With contravariance you can only 
put values in.
ArrayList<? super StackOverflowError> errs =
new ArrayList<Error>();
errs.add(new StackOverflowError("w00t"));
Error e = errs.get(0); //compiler-error
StackOverflowError soe = errs.get(0);
//compiler-error
public void copy(
List<? extends Number> source,
List<? super Number> destination) {
for(Number number : source) {
destination.add(number);
}
}
…
List<Integer> myInts = asList(1,2,3,4);
List<Integer> myDoubles = asList(3.14, 6.28);
List<Object> myObjs = new ArrayList<Object>();
copy(myInts, myObjs);
copy(myDoubles, myObjs);
In C#, covariant generic interfaces 
are annotated with out:
interface IMessageRecieved <out T>
{
T RecievedData();
}
Covariance ­ take values out.
In C#, contravariant generic 
interfaces are annotated with in:
interface IMessageSend <in T>
{
void SendData(T data);
}
Contravariance – put values in.
Covariance
Enables you to use a more derived 
type than originally specified.
You can assign an instance of 
IEnumerable<Derived> to a 
variable of type 
IEnumerable<Base>.
Contravariance
Enables you to use a more generic 
(less derived) type than originally 
specified.
You can assign an instance of 
IEnumerable<Base> to a variable 
of type IEnumerable<Derived>.
class A {
Object getSomething(){}
}
class B extends A {
String getSomething() {}
}
Covariance because it returns a String  
which extends Object (more derived)
class A {
void doSomething(String param){}
}
class B extends A {
void doSomething(Object param){}
}
Contravariance because it takes an 
Object which is a super class of String 
(less derived)
Type systems that support 
subtyping.
Programming language designers devising 
typing rules for arrays, inheritance, and 
generic datatypes
Programmers who use inheritance and 
override methods.
Programmers who develop generic 
interfaces, methods and code.
Subtyping 
relation
Data 
access
Overriding 
methods
Wildcard 
generics
Co
variance
Keep the 
order
Take 
values 
out
More 
derived 
return 
type
extends
Contra
variance
Reverse 
the order
Put 
values in
Less 
derived 
parameter 
type
super
Resources
http://www.i­programmer.info/programming/theory/1632­covariance­and­c
ontravariance­a­simple­guide.html
https://dzone.com/articles/covariance­and­contravariance
https://msdn.microsoft.com/en­us/library/dd799517(v=vs.110).aspx
https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_s
cience)#Covariant_arrays_in_Java_and_C.23
https://www.codeproject.com/articles/86419/variance­in­c­net­covariance­
and­contravarianc
http://stackoverflow.com/questions/8481301/covariance­invariance­and­con
travariance­explained­in­plain­english
http://stackoverflow.com/questions/2501023/demonstrate­covariance­and
­contravariance­in­java#2501513
Image resources
http://www.luchsinger­mathematics.ch/Var_Reduction.jpg
https://i.kinja­img.com/gawker­media/image/upload/s­­7lQpqRh­­­/c_scal
e,f_auto,fl_progressive,q_80,w_800/18ncmqm1vbv9vjpg.jpg
http://classrealm.com/blog/wp­content/uploads/2012/03/WAildmath­300
x270.jpg
http://www.i­programmer.info/images/stories/Core/Theory/covariance/ar
rowscontraandco.jpg
http://www.jonshawtrumpet.com/uploads/2/8/2/1/28211373/1670275_or
ig.jpg
https://www.memecreator.org/static/images/memes/3629822.jpg
http://i2.kym­cdn.com/photos/images/newsfeed/000/085/283/philosorapt
or.jpg
https://cdn.meme.am/cache/instances/folder757/500x/65401757/katt­willi
ams­shocked­let­me­rephrase­that­any­questions­i­can­answer.jpg
https://pixabay.com/en/puzzle­game­solution­connection­226743/
https://pixabay.com/en/blur­cellphone­close­up­design­1867748/
http://www.moneyloveandlegacy.com/images/HandsGivingCoins.jpg
http://hivhomekit.com/wp­content/uploads/2012/02/generic­stamp.png
https://i.ytimg.com/vi/uCpirskzaO8/hqdefault.jpg

Más contenido relacionado

La actualidad más candente

Java Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | EdurekaJava Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | EdurekaEdureka!
 
Infix postfixcoversion
Infix postfixcoversionInfix postfixcoversion
Infix postfixcoversionPdr Patnaik
 
Strings in Java
Strings in Java Strings in Java
Strings in Java Hitesh-Java
 
Prime number program in C
Prime number program in CPrime number program in C
Prime number program in CHitesh Kumar
 
How to create planner from inventory setups (Oracle- Inventory)
How to create planner from inventory setups (Oracle- Inventory)How to create planner from inventory setups (Oracle- Inventory)
How to create planner from inventory setups (Oracle- Inventory)FAHAD ULLAH
 
sparse matrix in data structure
sparse matrix in data structuresparse matrix in data structure
sparse matrix in data structureMAHALAKSHMI P
 
Bubble sorting lab manual
Bubble sorting lab manualBubble sorting lab manual
Bubble sorting lab manualmaamir farooq
 
Binary search tree in data structures
Binary search tree in  data structuresBinary search tree in  data structures
Binary search tree in data structureschauhankapil
 
Pick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsPick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsshravan kumar chelika
 
Dinive conquer algorithm
Dinive conquer algorithmDinive conquer algorithm
Dinive conquer algorithmMohd Arif
 
Queue data structure
Queue data structureQueue data structure
Queue data structureanooppjoseph
 

La actualidad más candente (20)

Quick sort
Quick sortQuick sort
Quick sort
 
Java Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | EdurekaJava Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | Edureka
 
Python Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String MethodsPython Programming Essentials - M8 - String Methods
Python Programming Essentials - M8 - String Methods
 
Infix postfixcoversion
Infix postfixcoversionInfix postfixcoversion
Infix postfixcoversion
 
Strings in Java
Strings in Java Strings in Java
Strings in Java
 
Prime number program in C
Prime number program in CPrime number program in C
Prime number program in C
 
Arrays in Java
Arrays in Java Arrays in Java
Arrays in Java
 
Selection sort
Selection sortSelection sort
Selection sort
 
How to create planner from inventory setups (Oracle- Inventory)
How to create planner from inventory setups (Oracle- Inventory)How to create planner from inventory setups (Oracle- Inventory)
How to create planner from inventory setups (Oracle- Inventory)
 
Linear search-and-binary-search
Linear search-and-binary-searchLinear search-and-binary-search
Linear search-and-binary-search
 
sparse matrix in data structure
sparse matrix in data structuresparse matrix in data structure
sparse matrix in data structure
 
Refactoring
RefactoringRefactoring
Refactoring
 
Oracle glossary
Oracle glossaryOracle glossary
Oracle glossary
 
Function in C Language
Function in C Language Function in C Language
Function in C Language
 
Bubble sorting lab manual
Bubble sorting lab manualBubble sorting lab manual
Bubble sorting lab manual
 
Binary search tree in data structures
Binary search tree in  data structuresBinary search tree in  data structures
Binary search tree in data structures
 
linked list
linked listlinked list
linked list
 
Pick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle appsPick pack and ship confirm process in oracle apps
Pick pack and ship confirm process in oracle apps
 
Dinive conquer algorithm
Dinive conquer algorithmDinive conquer algorithm
Dinive conquer algorithm
 
Queue data structure
Queue data structureQueue data structure
Queue data structure
 

Más de Alin Pandichi

[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend codeAlin Pandichi
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Alin Pandichi
 
Coding Dojo - The learning remote control
Coding Dojo - The learning remote controlCoding Dojo - The learning remote control
Coding Dojo - The learning remote controlAlin Pandichi
 
The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator] The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator] Alin Pandichi
 
Behavior driven development - a recap (@ Symfony Bucharest Meetup)
Behavior driven development - a recap (@ Symfony Bucharest Meetup)Behavior driven development - a recap (@ Symfony Bucharest Meetup)
Behavior driven development - a recap (@ Symfony Bucharest Meetup)Alin Pandichi
 
The sorry state of frontend code
The sorry state of frontend codeThe sorry state of frontend code
The sorry state of frontend codeAlin Pandichi
 
How to unit test your React/Redux app
How to unit test your React/Redux appHow to unit test your React/Redux app
How to unit test your React/Redux appAlin Pandichi
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDAlin Pandichi
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Alin Pandichi
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataAlin Pandichi
 
Software development - the java perspective
Software development - the java perspectiveSoftware development - the java perspective
Software development - the java perspectiveAlin Pandichi
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much moreAlin Pandichi
 

Más de Alin Pandichi (13)

[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code[Codecamp] The sorry state of frontend code
[Codecamp] The sorry state of frontend code
 
Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)Unit Testing your React / Redux app (@BucharestJS)
Unit Testing your React / Redux app (@BucharestJS)
 
Coding Dojo - The learning remote control
Coding Dojo - The learning remote controlCoding Dojo - The learning remote control
Coding Dojo - The learning remote control
 
The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator] The sorry state of frontend code [a talk @ Softbinator]
The sorry state of frontend code [a talk @ Softbinator]
 
Behavior driven development - a recap (@ Symfony Bucharest Meetup)
Behavior driven development - a recap (@ Symfony Bucharest Meetup)Behavior driven development - a recap (@ Symfony Bucharest Meetup)
Behavior driven development - a recap (@ Symfony Bucharest Meetup)
 
The sorry state of frontend code
The sorry state of frontend codeThe sorry state of frontend code
The sorry state of frontend code
 
How to unit test your React/Redux app
How to unit test your React/Redux appHow to unit test your React/Redux app
How to unit test your React/Redux app
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDD
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
 
Coding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis KataCoding Dojo - Refactoring Tennis Kata
Coding Dojo - Refactoring Tennis Kata
 
Avatar.js
Avatar.jsAvatar.js
Avatar.js
 
Software development - the java perspective
Software development - the java perspectiveSoftware development - the java perspective
Software development - the java perspective
 
Java 8 - Lambdas and much more
Java 8 - Lambdas and much moreJava 8 - Lambdas and much more
Java 8 - Lambdas and much more
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

Covariance and contravariance. Say what?! (Agile Talks #22)