Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 0dd215e

Browse files
authored
[Julia] List out key Concepts (#335)
1 parent bcb6861 commit 0dd215e

File tree

5 files changed

+189
-124
lines changed

5 files changed

+189
-124
lines changed

languages/julia/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Before we publicize requesting contribution for this language, the following ste
1717
- [x] Fill out the [maintainers.md](./maintainers.md) file (e.g. [C#](../csharp/maintainers.md))
1818
- [x] Ensure there is a link to your track's GitHub issues on the [main README.md](../../README.md)
1919
- [ ] [Write a Concept Exercise implementation guide](../../docs/maintainers/writing-a-concept-exercise-github-issue.md)
20-
- [ ] [List out key Concepts for your language](../../docs/maintainers/determining-concepts.md)
20+
- [x] [List out key Concepts for your language](../../docs/maintainers/determining-concepts.md)
2121
- [ ] [Add GitHub issues for 20 Concept Exercises](../../docs/maintainers/writing-a-concept-exercise-github-issue.md)
2222

2323
## Readiness for Launch

languages/julia/README.md.old

Lines changed: 0 additions & 123 deletions
This file was deleted.
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
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+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
- [Start here](/)
2+
- Docs
3+
- [Languages](/languages/README.md)
4+
- [Julia](/languages/julia/README.md)
5+
- [Docs](/languages/julia/docs/README.md)
6+
- [Exercises](/languages/julia/exercises/README.md)
7+
- [Reference](/languages/julia/reference/README.md)
8+
- [Progression](/languages/julia/reference/progression.md)
9+
- [Why do people use Julia?](/languages/julia/reference/why-do-people-use-julia.md)
10+
- Reference
11+
- [Concepts](/reference/concepts/README.md)
12+
- [Paradigms](/reference/paradigms/README.md)
13+
- [Tooling](/reference/tooling/README.md)
14+
- [Types](/reference/types/README.md)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## Why do people use Julia?
2+
3+
Knowing why people use Julia and what users (dis-)like about it can be helpful to determine what aspects of it should be taught, even if those aspects don't fit the definition of a concept.
4+
5+
The source for all information in this paragraph is the [Julia User & Developer Survey June 2019](https://julialang.org/blog/2019/08/2019-julia-survey). Aspects and features that aren't relevant to teaching/learning Julia have been omitted (e.g. an immature ecosystem).
6+
7+
### Most popular technical features
8+
9+
1. Speed, performance
10+
2. Ease of use
11+
3. Open source code is available and can be modified
12+
4. Multiple dispatch
13+
5. Solves the two language problem<sup>1</sup>
14+
7. Integrates well with other language(s)
15+
9. 1-based indexing
16+
17+
### Biggest technical problems
18+
19+
2. It takes too long to generate the first plot<sup>2</sup>
20+
4. Slow compile times
21+
12. 1-based indexing
22+
23+
### If not for Julia, what language would users be using?
24+
25+
This can help in finding out which transitions are the most common.
26+
27+
1. Python
28+
2. C, C++, C#<sup>3</sup>
29+
3. MATLAB
30+
4. R
31+
32+
Under 10% of respondents:
33+
34+
5. Bash/Shell
35+
6. Fortran
36+
37+
Under 5% of respondents:
38+
39+
7. JavaScript
40+
8. SQL
41+
9. Scala
42+
43+
### Footnotes
44+
45+
<sup>1</sup>The two language problem refers to the issue that performance-critical scientific or technical code is often written in a language like C/C++/Fortran but called from a higher-level but slower language like Python or MATLAB. Often this includes prototyping in Python/MATLAB and then translating code into a faster language.
46+
47+
<sup>2</sup>Also known as "time to first plot problem". Certain packages take a really long time to compile when first called. Subsequent calls are fast, therefore it's possible to adapt one's workflow to avoid this problem.
48+
49+
<sup>3</sup>Weird grouping, C# is probably far less common than the other two.

0 commit comments

Comments
 (0)