|
| 1 | +# Julia reference |
| 2 | + |
| 3 | +## Concepts |
| 4 | + |
| 5 | +The Julia concept exercises are based on concepts. The list below contains the concepts that have been identified for the Julia language. |
| 6 | + |
| 7 | +**The concepts are not sorted in any particular order.** See [progression.md](progression.md) for planning the progression order of the Julia track. |
| 8 | + |
| 9 | +This list is neither complete nor final. |
| 10 | + |
| 11 | +### Key paradigm |
| 12 | + |
| 13 | +- [Multiple Dispatch](../../../reference/concepts/multiple-dispatch.md) |
| 14 | + |
| 15 | +### Uncategorised concepts |
| 16 | + |
| 17 | +- [Mutability](../../../reference/concepts/mutation.md) |
| 18 | +- [Immutability](../../../reference/concepts/immutability.md) |
| 19 | +- [Type inference](../../../reference/concepts/type_inference.md) |
| 20 | +- [REPL](../../../reference/concepts/repl.md) |
| 21 | +- Package Management |
| 22 | +- Unicode identifiers |
| 23 | +- Iterators |
| 24 | +- Type Unions |
| 25 | +- In-place modification |
| 26 | +- Broadcasting |
| 27 | +- Enumeration |
| 28 | +- Error handling |
| 29 | +- Ranges |
| 30 | +- Views |
| 31 | +- Modules |
| 32 | +- `import` vs `using` |
| 33 | +- Scopes |
| 34 | +- Docstrings |
| 35 | + |
| 36 | +### Strings |
| 37 | + |
| 38 | +- String interpolation |
| 39 | +- String multiplication |
| 40 | + |
| 41 | +### Testing |
| 42 | + |
| 43 | +- Testsets |
| 44 | +- Tests |
| 45 | +- Doctests |
| 46 | + |
| 47 | +### Functions and methods |
| 48 | + |
| 49 | +- Named arguments |
| 50 | +- Optional arguments |
| 51 | +- Operators are functions |
| 52 | +- Method signatures |
| 53 | +- [Higher-order functions](../../../reference/concepts/higher_order_functions.md) |
| 54 | +- [Nested functions](../../../reference/concepts/nested_functions.md) |
| 55 | +- [Anonymous functions](../../../reference/concepts/anonymous_functions.md) |
| 56 | + |
| 57 | +### [Metaprogramming](../../../reference/concepts/metaprogramming.md) |
| 58 | + |
| 59 | +- Symbols |
| 60 | +- Expressions (Expr) |
| 61 | +- Generated functions |
| 62 | +- Using [Macros](../../../reference/concepts/macros.md) |
| 63 | +- Writing [Macros](../../../reference/concepts/macros.md) |
| 64 | +- String literals |
| 65 | + |
| 66 | +### Type system |
| 67 | + |
| 68 | +- Abstract types |
| 69 | +- Type unions |
| 70 | +- Structs |
| 71 | +- External Constructors |
| 72 | +- Internal Constructors |
| 73 | +- Type parameters |
| 74 | +- Type stability |
| 75 | +- Type piracy |
| 76 | + |
| 77 | +### Code analysis |
| 78 | + |
| 79 | +- Performance analysis |
| 80 | +- Benchmarking |
| 81 | +- Profiling |
| 82 | +- Code inspection tools (`@code_llvm`, `@code_warntype`, `@code_native` etc) |
| 83 | +- Debugging using a Debugger (non-stdlib) |
| 84 | + |
| 85 | +### Arrays, vectors and matrices |
| 86 | + |
| 87 | +- 1-based indexing |
| 88 | +- Arbitrary indexing |
| 89 | +- Multidimensional arrays |
| 90 | +- Matrices |
| 91 | +- Vectors |
| 92 | + |
| 93 | +### Types |
| 94 | + |
| 95 | +- Abstract type |
| 96 | +- Struct |
| 97 | +- Tuple |
| 98 | +- [Array](../../../reference/types/array.md) |
| 99 | +- Dict |
| 100 | +- Symbol |
| 101 | +- `Expr`ession |
| 102 | +- Nothing |
| 103 | +- Missing |
| 104 | +- Union |
| 105 | +- [String](../../../reference/types/string.md) |
| 106 | + |
| 107 | +### Useful bonus knowledge |
| 108 | + |
| 109 | +- DataFrames (non-stdlib) |
| 110 | +- Plotting (non-stdlib) |
| 111 | +- StaticArrays (non-stdlib) |
| 112 | +- Traits |
| 113 | +- Language interoperability |
| 114 | +- Units |
| 115 | + |
| 116 | +## Julia Manual |
| 117 | + |
| 118 | +The Julia Manual's ToC can also serve a list of concepts. Not all of the concepts from the Manual are listed above yet. |
| 119 | + |
| 120 | +## Resources used |
| 121 | + |
| 122 | +- https://julialang.org/ |
| 123 | +- https://docs.julialang.org/en/v1/index.html |
| 124 | +- Lauwens, B., & Downey, A. B. (2018). Think Julia: How to Think Like a Computer Scientist. Retrieved from https://benlauwens.github.io/ThinkJulia.jl/latest/book.html |
| 125 | + |
0 commit comments