Я хочу знать разницу между функциями низкого уровня и функциями верхнего уровня

Чарльз Симони представил идею " организации действительно больших команд программного обеспечения путем создания одного супер-пупер-программиста uber, пишущего функции верхнего уровня, передавая реализацию функций нижнего уровня команде младших программистов grunt по мере необходимости. Они называли эту должность менеджером программы."

Я хочу знать, каковы функции верхнего уровня, и как я могу его идентифицировать? Мой язык-Javascript. До сих пор это единственный язык, который я знаю, поэтому, пожалуйста дайте мне примеры использования JavaScript, пожалуйста.

кстати, цитата выше взята из Джоэла Спольски. Ознакомьтесь с его блогом и прочитайте, как быть менеджером программ.

спасибо

5 ответов


чем ближе он к человеческому языку, тем выше уровень функции.

чем ближе к машинному языку, тем ниже уровень функции.

Я просто, но вот несколько примеров:

функции высокого уровня:

Car.Start()
Car.MoveTo(Home)

низкоуровневые функции:

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

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

когда мы говорим о" высоком уровне "и" низком уровне " в программировании, это обычно относится к уровню абстракции. Функция высокого уровня-это функция, которая абстрагирует детали, вот пример абстракции высокого уровня:

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

этот фрагмент из jQuery JavaScript framework, он демонстрирует очень сложную задачу, но позволяет инициировать ее очень легко. Абстракция более низкого уровня была бы чем-то вроде этого:

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

Это еще jQuery, но больше деталей участвуют, это более низкий уровень. Конечно, вы можете получить еще ниже:

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

(используя пользовательский метод анимации)

Etc. так далее.

оптимальный уровень абстракции всегда находится под тяжелыми дебатами. Идти слишком высоко может вызвать утечка абстракции но переход на низкий уровень может быть неэффективным и пустой тратой времени, особенно если существуют более высокие абстракции.


функция верхнего уровня - термин, описывающий написание программного кода вне sub или функции. Существуют различные уровни от объявления материала до фактического запуска программного кода, такого как vbs/jscript.

обычно это не рекомендуется или не разрешено на языках, которые, как ожидается, будут сложными. Например, VB разрешает только const и объявляет и dim. C# не позволяет ничего верхнего уровня.

мы обычно использую более высокий уровень для описания абстракции a язык.

в некоторых языках термин будет методом верхнего уровня.

Я помню, что читал это давным-давно.

http://blogs.msdn.com/b/ericlippert/archive/2009/06/22/why-doesn-t-c-implement-top-level-methods.aspx какие ссылки на этот сайт почему C# не разрешает функции, не являющиеся членами, такие как c++


Это относится к тому, как далеко вниз по стеку вызовов функции находится. При запуске программы операционная система вызывает main() или top level, который состоит из вызовов функций следующего нижнего уровня. Каждый в свою очередь вызывает другие функции для выполнения более основных задач, которые в конечном итоге вызывают функции в операционной системе, например, чтобы открыть файл. Функции низкого уровня-это функции в вашей программе, которые не вызывают никаких других функций, которые вы написали (но используете операционную систему или основой для вычисления их результатов и т. д.).


на простой вопрос можно ответить всего несколькими словами, но основная тема охватывает целые книги. Однако это не связано с Javascript, так как Javascript может использоваться для создания функций.

Мистер Вальдес прав.. все зависит от уровня абстракции, который определяет ваша функция.

есть другой подход к разработке программного обеспечения и архитектуре look em up

у этого есть раздел, который отвечает на ваш вопрос довольно мило

на этой странице обсуждается тема с более широкой точки зрения