Programm welches Programmier Befehle vorschlägt?

Gast #5754971
Lesenswert?

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?
Gast #5754989
Lesenswert?

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.
Gast #5756157
Lesenswert?

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
Gast #5756168
Lesenswert?

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
Gast #5756976
Lesenswert?

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.
Moderator #5757338
Lesenswert?

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/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren