2009-03-11 12 views
6

Charles Simonyi przedstawił ideę "organizowania naprawdę dużych zespołów programowych, tworząc jednego superużytkownika programistę piszącego funkcje najwyższego poziomu, a jednocześnie przekazując wdrożenie funkcji niskiego poziomu do zespołu młodszych programistów w razie potrzeby. Nazwali tego menedżera programu pozycji. "Chcę poznać różnicę między niskopoziomowymi funkcjami a funkcjami najwyższego poziomu

Chcę wiedzieć, jakie są funkcje najwyższego poziomu i jak mogę je zidentyfikować? Mój język to JavaScript. Do tej pory jest to jedyny język, jaki znam, proszę podać przykłady używając JavaScript.

BTW, cytat powyżej pochodzi od Joela Spolsky'ego. Sprawdź jego blog i przeczytaj artykuł Jak zostać kierownikiem programu.

Dzięki

Odpowiedz

14

Im bliżej jest do języka ludzkiego, wyższego poziomu funkcja jest.

Im bliższy jest język maszyny, tym niższa jest ta funkcja.

mam simplyfying ale oto kilka przykładów:

Wysokie funkcje poziom:

Car.Start() 
Car.MoveTo(Home) 

niski poziom funkcje:

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

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

+1 bardzo zwięzły –

0

Proste pytanie można odpowiedzieć w kilku słowach ale podstawowy temat obejmuje całe książki. Jednak nie jest to związane z JavaScript na powiedzieć, tylko że JavaScript może być używany do tworzenia funkcji.

Pan Valdez ma rację. Wszystko zależy od poziomu abstrakcji, który określa twoja funkcja.

Istnieją inne podejście do Desing oprogramowania i architektury wygląd chodzone

This one has a section that answer your question quite nicely

This page discuss the subject with a broader perspective

2

Kiedy mówimy o „wysokim poziomie” i „niskim poziomie” w programowaniu to zwykle odnoszące się do poziom abstrakcji. Funkcja wysoki poziom jest taki, który abstrahuje dala szczegóły, oto przykład poziomie abstrakcji wysokiego:

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

To urywek jest z ram jQuery JavaScript, pokazuje bardzo skomplikowane zadanie, ale pozwala inicjować go bardzo z łatwością. Abstrakcja na niższym poziomie może wyglądać mniej więcej tak:

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

To wciąż jQuery, ale więcej szczegółów jest zaangażowanych, to niższy poziom. Oczywiście, można uzyskać jeszcze niższe:

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

(przy użyciu metody niestandardowe budowy ożywiony)

Itd itp

Optymalny poziom abstrakcji jest zawsze pod ciężkim debaty.Zbyt wysokie wartości mogą spowodować, że stan na niskim poziomie może być nieefektywny i strata czasu, zwłaszcza jeśli istnieją wyższe abstrakcje.

1

Odnosi się to do tego, w jakim stopniu znajduje się stos wywołań funkcji. Gdy program się uruchamia, system operacyjny wywołuje główny() lub najwyższy poziom, który składa się z wywołań do następnych funkcji niższego poziomu. Każda z kolei wywołuje inne funkcje do wykonywania bardziej podstawowych zadań, które kończą wywoływanie funkcji w systemie operacyjnym, np. W celu otwarcia pliku. Funkcje niskiego poziomu to funkcje w twoim programie, które nie wywołują żadnych innych funkcji, które napisałeś (ale używasz systemu operacyjnego lub frameworka do obliczania ich wyników itp.).

2

Funkcja najwyższego poziomu to termin opisujący pisanie kodu programu poza podmenu lub funkcją. Istnieje wiele poziomów od deklarowania rzeczy do faktycznie działającego kodu programu, jak vbs/jscript.

Zazwyczaj odradza się lub nie zezwala na języki, które mogą być skomplikowane. VB na przykład zezwala tylko na const, deklaruje i przyciemnia. C# nie pozwala na najwyższy poziom.

Zazwyczaj używamy wyższego poziomu do opisania abstrakcji języka.

W niektórych językach terminem będzie metoda najwyższego poziomu.

Pamiętam, że czytałem to dawno temu.

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

Powiązane problemy