Я хочу знать разницу между функциями низкого уровня и функциями верхнего уровня - PullRequest
6 голосов
/ 11 марта 2009

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

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

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

Спасибо

Ответы [ 5 ]

18 голосов
/ 11 марта 2009

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

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

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

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

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);
2 голосов
/ 01 мая 2015

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

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

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

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

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

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

2 голосов
/ 11 марта 2009

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

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

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

$('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. и т. д.

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

1 голос
/ 11 марта 2009

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

0 голосов
/ 11 марта 2009

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

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

Существует другой подход к разработке программного обеспечения и поиску архитектуры.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...