Ich weiß nicht, ob andere das Problem auch haben, aber ich vergesse
manchmal den Anfang von nicht oft benutzten Befehlen beim Programmieren.
Ich wollte deshalb fragen, ob jemand eine Art Hilfsprogramm kennt das
einem durch Kategorieauswahl Befehle auflistet?
Beispielsweise ist in javascript Math.round() etwas was ich selten
benutze, und wo ich dann meistens mit kleinem m anfange (wenn ich den
Anfang überhaupt weiß), und dann gibt mir die IDE (Netbeans) keine
Vorschläge aus (klar, es fängt ja auch mit großem M an).
Also googeln, Kopf -> Tisch, und weitermachen.
Ich kann mir auch cheatsheets ausdrucken, aber beim Laptop arbeiten ist
das meist etwas umständlich.
Oder kann mir jemand verraten, wie Profi-Programmierer das machen?
Ja, netbeans macht das auch. Man muss halt den richtigen Anfang finden
oder sich überhaupt erstmal an den Anfang eines Wortes erinnern.
Keine Ahnung warum mir das so schwer fällt, kann mir aber auch Namen
extrem schlecht merken.
Wenn ich mal den Anfang hab, geht es, aber genau das macht glaub ich
keine IDE, dass sie eine kategorische Auswahl ermöglicht.
Das kann ja dann mit eigenen Methoden, Klassen usw auch ausarten bzw
unmöglich werden eine Kategorie zu finden.
Wir nutzen den Resharper das geht schon richtig gut. Aber selbst da
sollte man schon in etwa wissen was man will...
Bernd schrieb:> und dann gibt mir die IDE (Netbeans) keine> Vorschläge aus (klar, es fängt ja auch mit großem M an).
Sollte man unter "Code Completion" einstellen können.
Da ist irgendwo auch ein Haken für "Groß- und Kleinschreibung".
Bernd schrieb:> Wenn ich mal den Anfang hab, geht es, aber genau das macht glaub ich> keine IDE, dass sie eine kategorische Auswahl ermöglicht.
Aber ja doch: bei Borland z.B. gibt es in der Hilfe eine "Wurzel" mit
"Prozeduren und Funktionen" oder so ähnlich, da findet man dann
Druckfunktionen, Bildschirmfunktionen, Threadverwaltung usw. usw. und
von da hangelt man sich durch bis zu dem was man gerade braucht, wie
z.B. Senden über Comport.
Georg
Bernd schrieb:> Beispielsweise ist in javascript Math.round() etwas was ich selten> benutze, und wo ich dann meistens mit kleinem m anfange (wenn ich den> Anfang überhaupt weiß)
Da rufe ich eben die Hilfe-Seite für die Math-Library auf, das steht
i.A. auf der ersten Seite eine Linkliste mit den wichtigsten Kategorien
wie Trigonometrie, da findet sich Sinus, Cosinus usw. wo ist denn da das
Problem?
Georg
Suchmaschinen, Foren und Doku-Seiten zu verwendeten libs gehört zum
Programmieralltag.
Dein einziges Problem an der Stelle ist wohl, dass du selbst damit
unzufrieden bist.
Bernd schrieb:> Oder kann mir jemand verraten, wie Profi-Programmierer das machen?
2 oder mehr Bildschirme (ggf virtuell) und eine Suchmaschine, z.b.
Google.
Bernd schrieb:> Oder kann mir jemand verraten, wie Profi-Programmierer das machen?
Naja, die wissen das halt. Die Methoden der Standard-Klassenbibliothek
muss man halt kennen. Wie soll man sonst auch programmieren anstatt
probieren?
Thomas M. schrieb:> Visual Studio, Delphi, Lazarus Pascal können das perfekt
Keine IDE kann das, was der TO will: Etwas vorschlagen, von dem er gar
nicht weiß, wie es heißt.
Oliver
Abgesehen davon, wenn man etwas benutzt was man gar nicht kennt sollte
man eh die Beschreibung lesen (Abhängigkeiten, Einschränkungen,
Verhalten im Fehlerfall usw.).
Einfach blind irgendwas nutzen was sich vom Nen her irgendwie richtig
anhört ist nicht schön.
Oliver S. schrieb:> Thomas M. schrieb:>> Visual Studio, Delphi, Lazarus Pascal können das perfekt>> Keine IDE kann das, was der TO will: Etwas vorschlagen, von dem er gar> nicht weiß, wie es heißt.>> Oliver
Aber zumindest VSCode kann etwas vorschlagen von dem man nur so ungefähr
weiß wie es heißt. Das ist extrem praktisch.
Matthias
Oliver S. schrieb:> Keine IDE kann das, was der TO will: Etwas vorschlagen, von dem er gar> nicht weiß, wie es heißt.
Doch, gibt es, nur nicht für jede Programmiersprache.
So gibt es bspw. für Haskell das Tool Hoogle, das Funktionen nicht nur
anhand ihres Namens (oder Teilen davon), sondern auch anhand ihres Typs
(Signatur) sucht.
Der Typ einer Funktion besteht dabei aus den Argumenttypen (entweder
konkret oder als Typvariable), dem Ergebnistyp und optional einem
Kontext als Nebenbedingung für die verwendeten Typvariablen.
Das Tool sucht in über 2300 Bibliotheken mit insgesamt zigtausenden
Funktionen. Dabei werden auch Funktionen gefunden, deren Typ etwas von
der Vorgabe abweicht (bspw. andere Reihenfolge der Argumente, leichte
Abweichungen der Argumenttypen oder des Ergebnistyps, fehlender Kontext
usw.). Man kann es online oder lokal benutzen, außerdem gibt es Plugins
für IDEs (bspw. Eclipse) oder Texteditoren (bspw. Emacs oder Vim).
Da in Funktionalsprachen wie Haskell der Typ einer Funktion recht viel
über deren Zweck aussagt, funktioniert diese Suche trotz des riesigen
Suchraums erstaunlich gut.
Beispiele:
Ich suche die logische Nicht-Funktion. Das einzige Argument und das
Ergebnis sind beide vom Typ Bool. Die Funktion ist also vom Typ
Bool -> Bool
Die ersten beiden Treffer sind not und das dazu synonyme ¬.
Oder ich suche die Funktion, die die Länge einer Liste liefert. Da die
Länge für Listen mit beliebigem Elementtyp definiert ist, lasse ich
diesen variabel und benutze dafür einen Variablennamen, bspw. a. Der
Ergebnistyp ist logischerweise ein Integer-Wert:
[a] -> Int
Hoogles erster Treffer ist length.
Etwas komplizierter: Ich suche eine Funktion, die diejenigen Elemente
einer Liste zählt, die eine gegebene Bedingung erfüllen. Die Liste ist
dabei wieder vom Typ [a], die Bedingung ist eine Funktion vom Typ
a->Bool:
[a] -> (a -> Bool) -> Int
Die ersten beiden Treffer sind findIndexJust und count, die aber vom
Typ (a->Bool)->[a]->Int sind, d.h. ich muss die beiden Argumente
vertauschen. Der Name count legt nahe, dass von den beiden Treffern
dieses die gesuchte Funktion ist.
Wenn ich eine Sortierfunktion mit
[a] -> [a]
suche, werden erst einmal jede Menge exakter Treffer angezeigt, aber
nicht das, wonach ich suche. Das liegt daran, dass die Sortierfunktion
nicht auf beliebige Listen anwendbar ist, sondern nur auf solche, für
deren Elemente Ordnungsrelationen (<, > usw.) definiert sind, d.h. a
muss der Typklasse Ord angehören. Eine erneute Suche mit einem
zusätzlichen Kontext
Ord a => [a] -> [a]
liefert die gesuchte Funktion sort.
Hier ist die Online-Version des Tools, falls jemand damit herumspielen
möchte:
https://hoogle.haskell.org/