Typescript und Typisierung
,In der letzten Folge🎙️ ging es ja um Tests. Diesmal geht es um eine weitere Möglichkeit, formal zu spezifizieren, wie sich Software verhalten soll, um dann automatisch überprüfen zu können, ob sich die Implementierung noch in Übereinstimmung mit der Prophezeiung befindet: Typisierung.
Dazu blicken wir diesmal ein wenig über den Tellerrand von Python und sprechen dafür mit Stefan, einem Experten für Typescript 📘. Natürlich sind auch Dominik, Johannes und Jochen wieder mit von der Partie. 🎧 Hört mal rein, wenn ihr mehr über die Rolle von Typisierung in der Softwareentwicklung mit Python 🐍 erfahren wollt.
Shownotes
Unsere E-Mail für Fragen, Anregungen & Kommentare: hallo@python-podcast.de
News
- Python 3.12.1 Release
- Ruby 3.3.0 Released
- Rewriting the Ruby parser | Using a recursive descent parser like PEG in Python
- Performance improvements / yjit - gegenüber 3.2.0 etwa 12%
- Python 3.13 gets a JIT / Episode 1 - Core Sprint in Brno & Python 3.13 / copy-and-patch JIT
- Pydantic Upgrade auf v2 nicht problemlos: Consider releasing Pydantic V2 under a different python package name
Typing Quadrants aus Fluent Python
Typing
- FastAPI async? -> uvloop
- PyO3 | Rust bindings für Python
- Bücher von Stefan
- TypeScript in 50 Lessons / Rob Draper | Schön gemachtes Buch - sehr beliebt bei den Machern dieses Podcasts 😄
- TypeScript Cookbook | 2023 erschienen - noch nicht gelesen, klingt aber gut!
- Beispiele aus der Praxis (bzgl "sind häßlich")
- CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter | Apple, reenacting "Design is my passion" 😳
- _Application.Run Method | Funktion mit Arg1-30 🫣
- HasThisTypePatternTriedToSneakInSomeGenericOrParameterizedTypePatternMatchingStuffAnywhereVisitor
- finally, a monitor that will fit the entire name of my Java classes
- Fast inverse square root in programming languages | Bit fiddling durch Typkonversion
- Safer, Not Later | Glyphs take on "move fast and break things"
- Ada als Beispiel für "Design by contract" / Idris
- Type Checker für Python
- Generics Considered Harmful | Von einem der Autoren von "The Java Programming Language" und von rogue, fortune und ctags: "Enum is actually a generic class defined as Enum<T extends Enum<T>>. This circular definition is probably the most confounding generic type definition you are likely to encounter. We're assured by the type theorists that this is quite valid and significant, and that we should simply not think about it too much, for which we are grateful."
- PEP 544 – Protocols: Structural subtyping (static duck typing)
- typeshed | Annotation für die standard library und diverse andere
- overload?
- Co / Contra / Invarianz
- flow type annotations / optional types für javascript
- Zod - TypeScript-first schema validation with static type inference
Picks
- Dominik
- LLM - Ein Kommandozeilenclient zur Interaktion mit LLMs, via remote apis oder lokal
- Jochen
- The Little Typer | An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time
- Dokku - An open source PAAS alternative to Heroku
- Johannes
- Stefan
Andreas on 16. Januar 2024 11:26
Danke für das Aufgreifen dieses Themas und die Gelegenheit die Bedeutung der varianz endlich zu verstehen! Was mich verwirrt hat ist das Wort Subtyp und die Relation zu Vererbung in den genannten Beispielen. Angenommen die Klasse D ist eine Subklasse von B und dementsprechend ist D ein Subtyp von B. Der generische Typ `List[T]` ist im jeweiligen Kontext als kovariant, kontravariant oder invariant deklariert. Dann ist der konkrete Typ `list[D]` ein Subtyp von `List[B]` im kovarianten Kontext, `list[B]` ein Subtyp von `List[D]` im kontravarianten und weder noch im invarianten. Da gibts mMn schon sehr viel Potential für Missverständnisse die im Gespräch kaum zu vermeiden sind. Hoffe nicht noch mehr verwirrt zu haben und freue mich auf die nächste Folge!
Jochen Wersdörfer on 16. Januar 2024 18:50
Hehe, ich habe relativ schnell bereut, diese Frage überhaupt gestellt zu haben 😅. Im Fluent Python Buch wird als Beispiel eine Kantine verwendet, wo es dann Saftspender gibt, die kovarianten Orangensaft spenden und Bio-Mülleimer, in die man auch kontravarianten Kompost werfen kann. Ist ohne Bilder eher schwer zu erklären 😁.