Konzepte sind die Dinge, die ein Programmierer verstehen muss, um eine Sprache fließend zu beherrschen. Konzepte werden in Konzeptübungen vermittelt und dienen als Voraussetzung für Konzept- und Praxisübungen. Wenn sie den Lernenden angezeigt werden, werden Konzepte auf einer Konzeptkarte platziert.
Die Metadaten eines Konzepts werden im Schlüssel concepts in der config.json-Datei definiert. Die Metadaten definieren unter anderem die UUID und den Slug des Konzepts.
{
"concepts": [
{
"uuid": "b9a421b2-c5ff-4213-bd6d-b886da31ea0d",
"slug": "numbers",
"name": "Numbers"
}
]
}
Jedes Konzept hat ein eigenes Verzeichnis innerhalb des concepts-Verzeichnisses des Tracks. Der Name des Konzeptverzeichnisses muss mit der Eigenschaft slug des Konzepts übereinstimmen, wie sie in der config.json-Datei definiert ist.
Ein Konzept hat zwei Arten von Dateien:
Diese Dateien werden den Lernenden gezeigt, um das Konzept zu erklären.
about.md: liefert Informationen über das Konzept für Lernende, die die zugehörige Konzeptübung abgeschlossen haben, zum Lernen und Nachschlagen (erforderlich)introduction.md: bietet eine kurze Einführung für Lernende, die die zugehörige Konzeptübung noch nicht abgeschlossen haben (erforderlich)links.json: liefert hilfreiche Links mit weiterführender Lektüre oder Informationen zu einem Konzept (erforderlich)Diese Dateien werden den Lernenden nicht angezeigt, sondern dienen dazu, die Metadaten des Konzepts zu definieren.
.meta/config.json: enthält Meta-Informationen zum Konzept (erforderlich)
concepts
└── numbers
├── .meta
| └── config.json
├── about.md
├── introduction.md
└── links.json
Zweck: Ausführlichere Informationen über das Konzept für Lernende, die die zugehörige Konzeptübung abgeschlossen haben, zum Lernen und Nachschlagen.
Vorhandensein: Erforderlich
Nach Abschluss der zugehörigen Konzeptübung (auch als „Lernen“ eines Konzepts bekannt) zeigt die Konzeptseite den Inhalt der about.md-Datei statt der introduction.md-Datei an. Die about.md-Datei sollte den Lernenden umfassende Informationen darüber geben, was sie wissen müssen, um das Konzept fließend zu beherrschen. Mindestens sollte diese Datei alle Informationen enthalten, die in der introduction.md-Datei des Konzepts vorgestellt werden.
Wenn das Konzept neue Syntax einführt, sollten Syntaxbeispiele enthalten sein. Die Lernenden sollten nicht vielen Links folgen müssen, um das Wissen zu erlangen, das die Datei vermitteln soll. Stattdessen sollte die about.md genügend Informationen enthalten, um im jeweiligen Kontext verständlich zu sein.
Die about.md-Datei ist nicht auf den Umfang der zugehörigen Konzeptübung beschränkt. Der Inhalt kann Wissen über andere Konzepte voraussetzen, die erst später eingeführt werden. Wenn andere Konzepte erwähnt werden, sollte auf ihre jeweiligen Einführungen verlinkt werden (siehe interne Verlinkung für Details).
Hier sind einige Beispiele, was behandelt werden könnte.
Es ist nicht das Ziel der about.md-Datei, eine vollständige Sammlung von Informationen über das Konzept zu liefern. Stell dir zum Beispiel eine Sprache vor, die einige ältere Sprachmerkmale hat, von denen erfahrene Programmierer (und vielleicht sogar die offiziellen Docs/Spezifikationen) empfehlen, sie nicht mehr zu verwenden. Details zu solchen Sprachmerkmalen zu liefern, läge außerhalb des Rahmens der about.md-Datei, denn sie sind nicht relevant, um fließende Beherrschung zu erlangen. Maintainer können jedoch beschließen, einen kurzen Abschnitt hinzuzufügen, der die alten Standards erwähnt, falls Lernende häufig in freier Wildbahn auf diese Standards stoßen. Dieser Abschnitt sollte aber als solcher gekennzeichnet sein.
Die about.md-Datei MUSS klar strukturiert sein, besonders wenn sie viele Informationen enthält. In Zukunft wird es außerdem die Möglichkeit geben, Teile als „fortgeschrittene Themen“ zu markieren, um interessierte Lernende darauf hinzuweisen, ohne andere zu überlasten.
# About
There are two different kinds of numbers in Elixir - integers and floats.
Floats are numbers with one or more digits behind the decimal separator. They use the 64-bit double precision floating-point format.
```elixir
float = 3.45
# => 3.45
```
Elixir also supports the scientific notation for floats.
```elixir
1.25e-2
# => 0.0125
```
## Rounding errors
Floats are infamous for their rounding errors.
```elixir
0.1 + 0.2
# => 0.30000000000000004
```
However, those kind of errors are not specific to Elixir. They happen in all programming languages. This is because all data on our computers is stored and processed as binary code. In binary, only fractions whose denominator can be expressed as `2^n` (e.g. `1/4`, `3/8`, `5/16`) can be expressed exactly. Other fractions are expressed as estimations.
```elixir
# 3/4
Float.ratio(0.75)
# => {3, 4}
# 3/5
Float.ratio(0.6)
# => {5404319552844595, 9007199254740992}
```
You can learn more about this problem at [0.30000000000000004.com][0.30000000000000004.com]. The [Float Toy page][evanw.github.io-float-toy] has a nice, graphical explanation how a floating-point number's bits are converted to an actual floating-point value.
Zweck: Bietet eine kurze Einführung für Lernende, die die zugehörige Konzeptübung noch nicht abgeschlossen haben.
Vorhandensein: Erforderlich
Diese Datei wird angezeigt, wenn Lernende die zugehörige Konzeptübung noch nicht abgeschlossen haben. Sie sollte eine kurze Einführung in das Konzept bieten.
about.md-Datei.# Introduction
One of the key aspects of working with numbers in C# is the distinction between integers and floating-point numbers (numbers with zero or more digits after the decimal separator).
The two most commonly used numeric types in C# are `int` (a 32-bit integer) and `double` (a 64-bit floating-point number).
```csharp
int i = 123;
double d = 54.29;
```
Zweck: Bietet hilfreiche Links mit weiterführender Lektüre oder Informationen zu einem Konzept.
Vorhandensein: Erforderlich
Das können offizielle Docs sein, ein gutes Tutorial usw. Diese Links ersetzen nicht die kontextbezogeneren Links in der about.md-Datei eines Konzepts, sondern bieten den Lernenden eine schnelle Sammlung übergreifender Anlaufpunkte.
Jeder Link muss die folgenden Felder enthalten:
url: die URL, auf die verwiesen wird.description: eine Beschreibung des Links, die als Linktext angezeigt wird.Links können außerdem optional ein Feld icon_url haben, mit dem sich das Symbol anpassen lässt, das bei der Anzeige des Links erscheint. Wird es nicht angegeben, wird standardmäßig das Favicon verwendet.
[
{
"url": "https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/intro-to-csharp/numbers-in-csharp-local",
"description": "Numbers in C#"
},
{
"url": "https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/integral-numeric-types",
"description": "Integral numeric types",
"icon_url": "http://test.org/icon.png"
}
]
.meta/config.json
Zweck: Enthält Meta-Informationen zum Konzept.
Vorhandensein: Erforderlich
Diese Datei enthält Meta-Informationen zum Konzept:
authors: Die GitHub-Benutzernamen der Autoren des Konzepts (erforderlich)
contributors: Die GitHub-Benutzernamen der Mitwirkenden des Konzepts (optional)
blurb: Eine kurze Beschreibung dieses Konzepts. Die Länge muss <= 350 sein. Markdown wird nicht unterstützt (erforderlich)Ist jemand sowohl Autor als auch Mitwirkender, führe diese Person nur als Autor auf.
{
"authors": ["FSharpForever"],
"contributors": ["IWantToHelp"],
"blurb": "F# has two types of numbers: integers and floating-point numbers."
}
Beachte: