Skip to content

Latest commit

 

History

History
235 lines (182 loc) · 10.6 KB

notes.md

File metadata and controls

235 lines (182 loc) · 10.6 KB

TODO

BEST BOOKS - need to read them!

QUESTIONS

  • what errors are NOT type errors?

META

alternatív témák

linux security téma

  • konténerizáció
  • sérülékenység típusok
  • security-vel kapcsolatos technológiák fejlődése

adatforgalom a világhálón: optimalizációs lehetőségek

  • egy meeting közben jutott eszembe a cégnél. Mit akartam ezzel?

Evaluation of hardware design tools vs high level programming languages

Related topics, decided to leave them out

Implementing a type checker (?)

on writing a language from scratch: - https://medium.freecodecamp.org/the-programming-language-pipeline-91d3f449c919

some good notes on type systems & type checking

http://www.cse.chalmers.se/edu/year/2015/course/DAT150/lectures/proglang-07.html

Research motivation

google this !!: "Static vs. dynamic type systems: an empirical study about the relationship between type casts and development time pdf" - so many pdf results!

Agda

http://learnyouanagda.liamoc.net/pages/introduction.html

Megjegyzés a vizsgálóbizottságnak

\pagebreak

Megjegyzés a tisztelt bíráló bizottságnak: A dolgozatom jelen állapota egy köztes állapot, több helyen tartalmaz feljegyzéseket, jelöléseket a további munkához. A terület, amit választottam nagyobb, érdekesebb, mint először gondoltam, jóval több tájékozódást és munkát igényel a részemről, mint számítottam, viszont szándékomban áll mélységében áttekinteni és a hiányzó részeket kidolgozni. A hiányzó fejezeteket a következő időszakban illetve a Szakdolgozat II. tágy keretein belül fogom befejezni.

Mike Grant: Principles of Programming Languages (2018)

https://pl.cs.jhu.edu/pl/book/book.pdf https://book.huihoo.com/programming-languages/book/html/main.html#mainli1.html

Collection of resources for studying type theory

https://github.com/jozefg/learn-tt

static vs dynamic

https://softwareengineering.stackexchange.com/questions/122205/what-is-the-supposed-productivity-gain-of-dynamic-typing

The Oregon Programming Languages Summer School links

links at bottom of github readme: - https://github.com/jozefg/learn-tt#learn-tt

This is incredible... many of the researchers I cited in my thesis have given lectures here!

Thesis structure - really good notes!

https://seamk.libguides.com/instructionsforbachelorsthesis/thesisprocessandstructure

The future: interesting new developments

this guy seems passionate and knowledgeable about types

http://tomasp.net/blog/2015/against-types/

magyar típusrendszer anyagok

https://people.inf.elte.hu/pgj/nytr_msc/ https://www.inf.elte.hu/dstore/document/788/Kaposi_Ambrus_Nyelvek%20t%C3%ADpusrendszere_jegyzet_2017.pdf https://akaposi.github.io/hott_bevezeto.pdf

markdown, latex page numbering

https://stackoverflow.com/a/38768279/1772429

Let's write a type checker - youtube video + slides

https://www.youtube.com/watch?v=oPVTNxiMcSU https://speakerdeck.com/igstan/lets-write-a-type-checker

===

=== IDEA: create small programs for each concept in this section instead of examining languages at Section II separately!

  • example of a type systems feature
  • what would happen if such feature were missing from the language? === === ===

Hypotheses {-}

hagyjuk, ha nem muszáj!

  1. Static type checking can measurably increase programmer productivity. TODO: Likely false, there seems to be no evidence
  2. Using statically typed languages results in more reliable software.
  3. Despite their advantages, languages featuring advanced type systems are rarely used in the industry because of cultural reasons.

\pagebreak

Dynamic languages

TODO: get some ideas from this: "The Unreasonable Effectiveness of Dynamic Typing for Practical Programs"

basic type systems links

https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-type-systems-are-not-inherently-more-open/ https://softwareengineering.stackexchange.com/questions/333643/what-is-a-type-system https://thevaluable.dev/type-system-explained/

RTTI

RTTI is used in the context of some statically typed languages like C++. It means that some information about an object's type is made available to the programmer during run-time.

TODO: C++: dynamic_cast, typeid | Java: instanceof TODO: RTTI and Reflection slides: https://www.cs.huji.ac.il/course/2004/ood/docs/lec08.pdf TODO: connection between RTTI and reflection

Abstraction and types

Abstraction is the principle of reducing something to its essential characteristics, removing everything that is unnecessary to accurately represent it for a particular usage. Abstraction reduces complexity and increases efficiency. [@whatis-abstraction]

TODO: see "Types, abstraction and parametric polymorphism" paper in thesis_papers dir

TODO: summarize CAR Hoare's presentation on NullPointerExceptions (The Billion Dollar Mistake - 2009)

  • https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
  • 31:10 great notes about what to expect from programming languages
  • 31:40 "formal verification"
  • 37:34 "now, the real commercial imperative which requires greater attention paid to formal correctness of the programs is the virus."
    • "it reaches paths of your program that normal execution never reaches"
    • "it's no longer adequate to test your program against all the cases that are likely to arise..."
  • 50:00 great thoughts about the jmp machine instruction

Typescript unsoundness

https://medium.com/@yuhuan/covariance-and-contravariance-in-java-6d9bfb7f6b8e https://blog.daftcode.pl/csi-python-type-system-episode-1-1c2ee1f8047c https://blog.daftcode.pl/csi-python-type-system-episode-2-baf5168038c0 https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science) https://en.wikipedia.org/wiki/Covariant_return_type

Types and operations (removing this part, no real content here)

The next step for a programming langage with regards to type systems would be to define certain basic types and operations for the values in the program. These help reduce the cognitive load on the programmer and make it possible to check (either statically or dynamicall) whether some operation later in the code is considered legal or not. Today we take for granted such a type system but this indeed is a language feature that wasn't there for the first generations of computer programmers.

Assembly

TODO: Explain why assembly has no types! Are there any advantages of not having types?

Typed Assembly Language papers (from around 1999) - Morrisett et al. - http://www.cs.cornell.edu/talc/papers.html - https://www.cs.princeton.edu/~dpw/papers/tal-toplas.pdf - https://www.cis.upenn.edu/~stevez/papers/MCGG99.pdf

TODO: read all of these! good material!

Agda: https://plfa.github.io/

TODO: revise after having tried such a language!

Type systems and software security

TODO: stanford lecture notes on Memory Safety: https://stanford-cs242.github.io/f19/lectures/06-2-memory-safety.html TODO: the linked paper: "affine type system": https://gankra.github.io/blah/linear-rust/ TODO: nice paper: https://sergio.bz/docs/rusty-types-2016.pdf

pdfunite

https://stackoverflow.com/questions/2507766/merge-convert-multiple-pdf-files-into-one-pdf