2009-03-11 3 views
6

Charles Simonyi führte die Idee ein, "wirklich große Software-Teams zu organisieren, indem man einen Super-Entwickler über die Top-Level-Funktionen erstellt und gleichzeitig die Implementierung übergibt von den untergeordneten Funktionen nach Bedarf zu einem Team grunzter Junior-Programmierer. Sie haben diesen Positionsprogramm-Manager genannt. "Ich möchte den Unterschied zwischen Low-Level-Funktionen und Top-Level-Funktionen kennen

Ich möchte wissen, was sind die Top-Level-Funktionen, und wie kann ich es identifizieren? Meine Sprache ist Javascript. Bisher ist das die einzige Sprache, die ich kenne. Bitte geben Sie mir Beispiele mit JavaScript.

BTW, das Zitat oben ist von Joel Spolsky übernommen. Schau dir seinen Blog an und lies Wie man ein Programmmanager ist.

Dank

Antwort

14

Je näher es auf die menschliche Sprache, die auf höherer Ebene die Funktion ist.

Je näher es an der Maschinensprache ist, desto niedriger ist die Funktion.

ich simplyfying bin aber hier sind einige Beispiele:

Hohe Funktionen:

Car.Start() 
Car.MoveTo(Home) 

Low-Level-Funktionen:

Car.Insert(Key); 
if (Car.IsKeyInserted() == False) 
    return False; 

Car.StartEngine(); 
Car.ApplyAccelerator(0.1f); 
Car.ChangeGear(); 
Car.RotateWheel(-25); 
+0

+1 sehr prägnanten –

0

Einfache Frage in wenigen Worten beantwortet werden konnten aber das zugrunde liegende Thema umfasst ganze Bücher. Es ist jedoch nicht mit Javascript pro sagen, nur dass Javascript verwendet werden könnte, um die Funktionen zu erstellen.

Herr Valdez hat Recht, aber es hängt alles von der Ebene der Abstraktion ab, die Ihre Funktion definiert.

Es gibt andere Herangehensweise an Software Desing und Architektur Blick em

This one has a section that answer your question quite nicely

This page discuss the subject with a broader perspective

2

Wenn wir über "high level" und "low level" in der Programmierung sprechen es in der Regel ist auf das vorlegende Ebene der Abstraktion. Eine hohe Funktion ist eine, die die Details abstrahiert, hier ist ein Beispiel für eine hohe Abstraktion:

$('div#foo p').show('fast'); 

Das Snippet aus der jQuery JavaScript-Framework ist, ist es eine sehr komplizierte Aufgabe zeigt, sondern ermöglicht es Ihnen, es ist sehr zu initiieren leicht. Eine untere Ebene Abstraktion wäre so etwas wie dieses:

$('div#foo p').animate({height: 'show', width: 'show', opacity: 1}, 200); 

Es ist immer noch jQuery aber mehr Details beteiligt werden, sie niedriger Ebene ist. Natürlich kann man bekommt sogar noch niedriger:

animate(document.getElementById('foo').getElementsByTagName('p'), { 
    height: 300, width: 600, opacity: 1, alphaFilter: 1 
}, 200); 

(eine speziell angefertigten belebte Methode)

etc. etc.

Das optimale Abstraktionsniveau immer unter schwerer Debatte.Ein zu hoher Wert kann eine abstraction leak verursachen, aber ein niedriger Wert kann ineffizient und Zeitverschwendung sein, insbesondere wenn höhere Abstraktionen existieren.

1

Dies bezieht sich darauf, wie weit die Call-Stack-Funktion entfernt ist. Wenn ein Programm gestartet wird, ruft das Betriebssystem die main() - oder oberste Ebene auf, die aus Aufrufen der Funktionen auf der nächst niedrigeren Ebene besteht. Jeder wiederum ruft andere Funktionen auf, um grundlegendere Aufgaben zu erledigen, die dazu führen, dass Funktionen im Betriebssystem aufgerufen werden, zB um eine Datei zu öffnen. Die Low-Level-Funktionen sind die Funktionen in Ihrem Programm, die keine anderen Funktionen aufrufen, die Sie geschrieben haben (aber das Betriebssystem oder das Framework zum Berechnen ihrer Ergebnisse usw. verwenden).

2

Top-Level-Funktion ist ein Begriff, der das Schreiben von Programmcode außerhalb von Sub- oder Funktion beschreibt. Es gibt verschiedene Ebenen von der Deklaration bis zum eigentlichen Programmcode wie vbs/jscript.

Es wird normalerweise von Sprachen abgeraten oder nicht erlaubt, von denen erwartet wird, dass sie komplex sind. VB erlaubt zum Beispiel nur const und deklariert und dim. C# erlaubt nichts Top Level.

Normalerweise verwenden wir höhere Ebene, um die Abstraktion einer Sprache zu beschreiben.

In einigen Sprachen wird der Begriff Top-Level-Methode sein.

Ich erinnere mich, dies vor einer langen Zeit zu lesen.

http://blogs.msdn.com/b/ericlippert/archive/2009/06/22/why-doesn-t-c-implement-top-level-methods.aspx die Why C# is not allowing non-member functions like C++

Links zu dieser Website zurück
Verwandte Themen