html.json (3554B)
1 { 2 "hash": "62731caa9e8022bd99086c48ea5611c5", 3 "result": { 4 "engine": "knitr", 5 "markdown": "---\nengine: knitr\ntitle: Introduction\n---\n\n# ️✅ Learning objectives\n\n## LOs for the entire book\n\n- Improve programming skills.\n- Develop a deep understanding of R language fundamentals.\n- Understand what functional programming means.\n- Understand object-oriented programming as applied in R.\n- Understand metaprogramming while developing in R.\n- Be able to identify what to optimize and how to optimize it.\n\n## LOs for this chapter\n\n- Recognize the differences between the 1st and 2nd edition of this book.\n- Describe the overall structure of the book.\n- Decide whether this book is right for you.\n\n# What's new?\n\n## Hadley's goals\n\n- Improve coverage of concepts Hadley understood better after 1e\n- Reduce coverage of unimportant topics\n- Easier to understand (including many more diagrams)\n\n## Base vs rlang\n\n- [1e](http://adv-r.had.co.nz) used base R almost exclusively\n- 2e uses {[rlang](https://rlang.r-lib.org/)}, {[purrr](https://purrr.tidyverse.org/)}, etc\n\n# What we'll learn\n\n## The 5 sections\n\n- **Foundations:** (7 chapters) Building blocks of R\n- **Functional programming:** (3 chapters) Treating functions as objects (that can be args in functions)\n- **Object-oriented programming:** (5 chapters + 1) The many object systems of R (we'll add S7)\n- **Metaprogramming:** (5 chapters) Generating code with code\n- **Techniques:** (4 chapters) Debugging, measuring performance, improving performance\n\n::: notes\n- Might be useful to open TOC here.\n:::\n\n## Why R?\n\n- Diverse & welcoming community\n- Many packages for stats & modeling, ML, dataviz, data wrangling\n- Rmarkdown / Quarto\n- RStudio / Positron\n- Often used in science\n- Functional programming powerful for data\n- Metaprogramming\n- Ease of connection to C, C++, etc\n\n## R imperfections\n\n- Much code by non-coders (messy)\n- Community more about results than programming best practices\n- Metaprogramming can lead to weird failures\n- Inconsistency from > 30 years of evolution\n- Poorly written R code runs very poorly\n\n## Who should read Advanced R?\n\n- Intermediate (and up) R programmers who want to really understand R\n- Programmers from other langs who want to know why R is weird\n- Prereqs:\n - You've written lots of code\n - You understand basics of data analysis\n - You can install CRAN packages\n\n## What this book is not\n\n- [R for Data Science](https://r4ds.hadley.nz/)\n- [R Packages](https://r-pkgs.org/)\n\n## Meta-techniques\n\n- Read source code\n - F2 to see code in RStudio/Positron (with RStudio bindings)\n- Adopt a scientific mindset\n - Don't understand something? Hypothesize & experiment\n\n## Other books\n\n- The Structure and Interpretation of Computer Programs (Abelson, Sussman, and Sussman, 1996) [PDF](https://web.mit.edu/6.001/6.037/sicp.pdf)\n- Concepts, Techniques and Models of Computer Programming (Van Roy & Haridi, 2003) [PDF](https://webperso.info.ucl.ac.be/~pvr/VanRoyHaridi2003-book.pdf)\n- The Pragmatic Programmer (Hunt & Thomas, 1990) [buy eBook](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/)\n\n::: notes\n- As far as I can tell, first 2 PDFs are legal.\n- I don't think a legal, free version of The Pragmatic Programmer is available.\n:::\n", 6 "supporting": [], 7 "filters": [ 8 "rmarkdown/pagebreak.lua" 9 ], 10 "includes": {}, 11 "engineDependencies": {}, 12 "preserve": {}, 13 "postProcess": true 14 } 15 }