2009-03-11 5 views
6

Charles Simonyi a présenté l'idée d '«organiser de très grandes équipes logicielles en créant un super programmeur uber qui écrit les fonctions de haut niveau, tout en transmettant la mise en œuvre des fonctions de niveau inférieur à une équipe de jeunes programmeurs juniors au besoin.Ils ont appelé ce gestionnaire de programme de poste. "Je veux connaître la différence entre les fonctions de bas niveau et les fonctions de haut niveau

Je veux savoir quelles sont les fonctions de niveau supérieur, et comment puis-je l'identifier? Ma langue est Javascript. Jusqu'à présent, c'est la seule langue que je connais, s'il vous plaît donnez-moi des exemples en utilisant JavaScript s'il vous plaît.

Par ailleurs, la citation ci-dessus provient de Joel Spolsky. Consultez son blog et lisez Comment être un gestionnaire de programme.

Merci

Répondre

14

Plus il est proche de la langue humaine, le plus haut niveau de la fonction est.

Plus le langage machine est proche, plus la fonction est basse.

Je suis simplyfying, mais voici quelques exemples:

fonctions de haut niveau:

Car.Start() 
Car.MoveTo(Home) 

fonctions de bas niveau:

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

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

+1 très succincte –

0

question simple pourrait répondre en quelques mots mais le sujet sous-jacent couvre des livres entiers. Cependant, il n'est pas lié à Javascript par exemple, juste que Javascript pourrait être utilisé pour créer les fonctions.

M. Valdez a raison cependant ... tout dépend du niveau d'abstraction défini par votre fonction.

Il existe d'autres approche de logiciel desing et l'architecture regard em up

This one has a section that answer your question quite nicely

This page discuss the subject with a broader perspective

2

Quand on parle de « haut niveau » et « bas niveau » dans la programmation, il est habituellement référence à la niveau d'abstraction. Une fonction de haut niveau est celui qui fait abstraction des détails, voici un exemple d'une abstraction de haut niveau:

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

cet extrait est du framework JavaScript jQuery, il démontre une tâche très compliquée, mais vous permet de lancer très facilement. Une abstraction de niveau inférieur serait quelque chose comme ceci:

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

Il est encore jQuery, mais plus de détails sont impliqués, il est niveau inférieur. Bien sûr, vous pouvez obtenir encore plus bas:

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

(en utilisant une méthode Animer sur mesure)

Etc etc.

Le niveau optimal d'abstraction est toujours sous débat lourd.Aller trop haut peut causer un abstraction leak mais aller trop bas peut être inefficace et une perte de temps, surtout si des abstractions plus élevées existent.

1

Ceci fait référence à la distance de la pile d'appels dans la fonction. Lorsqu'un programme démarre, le système d'exploitation appelle le niveau principal() ou supérieur, qui consiste en des appels aux fonctions de niveau inférieur suivantes. Chacun à son tour appelle d'autres fonctions pour faire plus de tâches de base, qui finissent par appeler des fonctions dans le système d'exploitation, par exemple pour ouvrir un fichier. Les fonctions de bas niveau sont les fonctions de votre programme qui n'appellent aucune des autres fonctions que vous avez écrites (mais utilisent le système d'exploitation ou le framework pour calculer leurs résultats, etc.).

2

La fonction de niveau supérieur est un terme qui décrit l'écriture d'un code de programme en dehors de la sous-fonction ou de la fonction. Il existe différents niveaux allant de la déclaration à l'exécution du code de programme comme vbs/jscript.

Normalement déconseillé ou interdit sur les langages qui sont supposés être complexes. VB par exemple autorise uniquement const et déclare et dim. C# ne permet rien de haut niveau.

Nous utilisons normalement de niveau supérieur pour décrire l'abstraction d'une langue.

Dans certaines langues, le terme sera la méthode de premier niveau. Je me souviens d'avoir lu ça il y a longtemps.

http://blogs.msdn.com/b/ericlippert/archive/2009/06/22/why-doesn-t-c-implement-top-level-methods.aspx qui établit un lien avec ce site Why C# is not allowing non-member functions like C++

Questions connexes