Wie nach richtigen Libraries suchen?

Trite

Grünschnabel
Moin,

ich bin relativ neu in der Programmierung speziell in C#. In den letzten Wochen bzw. Monaten habe ich mir die Grundlagen von C# angeeignet.
Jetzt komme ich zu dem Punkt, eigene Programmierprojekte umzusetzen zu wollen. Da ist aber mein Problem, dass ich nicht genau weiß wie man am besten nach Libraries suchen soll, die man benötigt.

Sagen wir als Beispiel mal, man will ein Programm schreiben, welches die Wörter eines Textes zählt und am Ende ausgeben soll.

Da wäre mein erster Gedanke, ich muss erstmal eine Benutzeraufforderung machen, sei es mit einer TextBox oder mit Console.WriteLine() bzw. Console.Write(). Das ist auch nicht das Problem. Aber wie würde man jetzt bei dem Beispiel bzw. auch allg. vorgehen um herauszufinden, wie Wörter gezählt werden können.

Mir geht es in erster Linie, um die Methode um die richtigen Libraries zu finden, die man benötigt um die Grundfunktionalitäten des erwünschten Programms umsetzen zu können. Bzw. wie es einen gelingt die richtige Library zu finden die man benötigt. Bspw. auch in größeren Komplexeren Programmen.
 
Sagen wir als Beispiel mal, man will ein Programm schreiben, welches die Wörter eines Textes zählt und am Ende ausgeben soll.
Aus diesem Satz kannst du direkt zwei benötigte Komponenten herauslesen:
  • Input/Output Funktionen
  • String-Manipulations Funktionen
Beide solche Funktionen sind meist Teil der Standardlib von Programmiersprachen. Insofern würde ich mich erstmal dort umgucken. Für Stringmanipulationen in einer OO-basierten Sprache schaut man natürlich erst auf die Methoden der String-Klasse. In JS gibt es da z.B. die split-Methode auf Strings:
Javascript:
// Outputs 2, splits by single space " "
alert( "hello world".split(" ").length );

Sowas gibt's auf der String-Klasse in C# bestimmt auch. Einfach mal in IntelliSense zuerst schauen, indem du " ". tippst und siehst, welche Methoden es gibt.

Jetzt fällt mir gerade ein: halt! Das zählt nur die Anzahl der Dinge, die durch ein Leerzeichen getrennt sind. Das ist eine gute erste Approximation an die Anzahl der Wörter, muss aber nicht immer stimmen. Was ist mit Newlines (\n, \r, \r\n)? Was ist mit Tab-Zeichen (\t) oder generell anderem Whitspace?

Da könnte man einen Regex mit \s benutzen. Aber wenn wir schon bei Regex sind, warum nicht \b? Aber behandelt das auch alle sprachlichen Unterschiede bei den >100 Sprachen auf dieser Welt? Wahrscheinlich nicht.

Du siehst, hier kommen wir in ein komplizierteres Terrain. Es kommt ganz drauf an, wie du Wörter definierst.


PS: Ich finde das eine gute Frage, weil sie nach Hilfe zur Selbsthilfe fragt!
 
Beide solche Funktionen sind meist Teil der Standardlib
Genau, dass ist die Sache, wie finde ich heraus das a) ich genau die String-Manipulations brauche und nicht irgendeine andere Methode und b) wo findet man die Standardlib von .NET bspw.?

Was ist mit Newlines (\n, \r, \r\n)? Was ist mit Tab-Zeichen (\t) oder generell anderem Whitspace?
Bspw. die diesen Tabzeichen usw, hatte ich noch nie richtig Probleme, mir geht es wirklich nur darum, wie ich herausbekomme, welche Methode / Klasse usw. benötige für ein bestimmtes Problem... Weil wenn ich angenommen durch die ganze Lib durchgucke werde ich ja nie fertig..
 
a) ich genau die String-Manipulations brauche
Weil Wörter nun mal als Strings verarbeitet werden. Ich denke, es kommt mit Erfahrung zu wissen, welche Methode man wie braucht.

b) wo findet man die Standardlib von .NET bspw.?
Im Internet. Aber keine sucht nach ".NET library API". Du suchst konkret nach ".NET String class" und bekommst String Class (System). Da kannst du direkt nach Methoden links in der Navbar suchen - und siehe da es gibt eine Split Methode: String.Split Method (System).

Aber ehrlich gesagt suche ich oft genug auch direkt nach dem, was ich tun will, via Google. Etwa ".NET count words". M. E. gibt es folgende Hierachiestufen:

  • Code
  • API-Dokumentation
  • Dokumentation des Herstellers
  • StackOverflow u. ä. Seiten
Nicht immer willst du oben einsteigen, sondern direkt ganz unten.
 
Ok. Als standardlib bezeichnet man doch was in .NET bspw. von System kommt oder?

Du suchst konkret nach ".NET String class" und bekommst String Class (System).
Da ist halt jetzt auch wieder die Sache, bei dem würde man ja jetzt nur nach String Class suchen bzw. googeln, da ich ja vor habe ein Programm zuschreiben, welches bspw. die Wörter zählt oder? Weil Wörter bzw. Zeichenketten Strings sind oder? da es eine Zeichenkette usw... Aber wie ist das dann bei komplexeren Programmen? Wie sucht man dann nach bestimmten Sachen wie bspw. in WPF nach den verschiedenen Events usw?

Und im allgemeinen kann man doch auch sagen, dass die meisten Methoden / Klassen usw.. Sinn machen von der Benennung oder (natürlich auf Englisch)?
 
Da kannst du direkt nach Methoden links in der Navbar suchen - und siehe da es gibt eine Split Methode: String.Split Method (System).

Ach so, angenommen ich habe jetzt die Methode gefunden wie bspw. Split, wie gehe ich dann vor um herauszufinden, wie man diese im Code verwendet? Weil es da ja verschiedene Arten gibt mit verschiedenen Konstruktors usw. (bei Überladung bspw.).

Und wie fern hat man APIs bzw. API-Dokumentationen zu verstehen?
 
Weil Wörter bzw. Zeichenketten Strings sind oder?
Ja.

Und im allgemeinen kann man doch auch sagen, dass die meisten Methoden / Klassen usw.. Sinn machen von der Benennung oder (natürlich auf Englisch)?
Ja.

Ach so, angenommen ich habe jetzt die Methode gefunden wie bspw. Split, wie gehe ich dann vor um herauszufinden, wie man diese im Code verwendet?
Da tut man das Offensichtliche: die von mir verlinkte Seite einfach durchlesen ;) Aus den Beschreibungen der einzelnen Überladungen geht hervor, welche wofür gut ist.

Und wie fern hat man APIs bzw. API-Dokumentationen zu verstehen?
Unter API habe ich oben nur die Funktionssignaturen gemeint. Du siehst also nur
Code:
String.Split(Char[], Int32, StringSplitOptions)

und mehr nicht. Hingegen API-Dokumentation ist all der Text und Beispielcode, der auf der von mir verlinkten Seite zusätzlich anzufinden ist.

Aber wie ist das dann bei komplexeren Programmen? Wie sucht man dann nach bestimmten Sachen wie bspw. in WPF nach den verschiedenen Events usw?
Genauso, z. B. "WPF double click event".
 
Zurück