2016-11-30 8 views
-2

Я использовал для кодирования в VB.NET в колледже (UK College), где было два способа инкапсуляции кода: методом и функцией. Метод просто выполнит некоторый код; функция, с другой стороны, имела то преимущество, что возвращала значение.Есть ли в процедурных языках функции, возвращающие значения?

Теперь я кодирую, используя процедурный стиль для курса в Javascript.

Вопрос в том, являются ли функции в процедурных языках, способных возвращать значения? Или это просто объектно-ориентированная функция? Или это универсальная функция среди всех языков?

+0

короткий ответ: да. Длинный ответ: да, но не обязательно :) Все языки, имеющие функции, могут возвращать значения. И мне жаль, что вы начали учиться с VB, пришло время отучить все. – xShirase

+0

Солидарность. По крайней мере, я могу отслеживать IP-адреса людей. Благодарю. – Rehaan

+2

JavaScript - это объектно-ориентированный язык. – Quentin

ответ

0

Возможность вернуть значение из вызова полностью ортогонально процедурной/функциональной/ООП/что у вас есть.

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

Нет такой вещи, как «процедурный стиль». Точно так же, как нет «функционального стиля» или «стиля ООП» или «реляционного стиля». Это просто чрезвычайно яркие ярлыки без объективного фона. Подумайте, что вам нужно сделать, и найдите способ сделать это. Единственный случай, когда эти метки похожи на то, когда кто-то хочет навязать вам особый стиль - в этом случае спросите, что именно они означают - мы не можем вам помочь, это в их голове.

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

«Объектно-ориентированное программирование» означает «отправка сообщений взад-вперед» - оригинальная бумага ООП даже не имела возвращаемых значений, вы должны были просто слушать «ответное сообщение», если вам нужен ответ , В конце концов, целевой объект может ответить гораздо позже или никогда вообще (например, когда он получает ответ ввода-вывода). У него определенно не было какой-либо формы статического ввода (и можно было бы утверждать, что на самом деле не было понятия типов) - вместо этого у вас были объекты, которые слушали сообщения. Когда пришло сообщение, объект выяснил, что с ним делать - все объекты были динамическими. Единственными публичными интерфейсами были эти сообщения - все остальное было только внутренними деталями объекта. Неудивительно, что распределенные системы оживляют популярность подобных подходов, поскольку модель по своей сути асинхронна и довольно слабо связана.

Javascript не поддерживает классы, конечно. Но классы полностью ортогональны ООП - это всего лишь один из способов реализации типизации и (что более важно) подтипов на языке. Прототипы не лучше или хуже классов; функции не лучше или хуже классов. Все три являются вполне обоснованными подходами к ООП (и программированию в целом), так как игнорируют типизацию полностью, что в основном делает Javascript. Хотя у вас есть способы отслеживания типов объектов, в конечном счете, действительно имеет значение только фактический экземпляр объекта.

Эти термины в основном бесполезны, используются чаще всего для издевательства стиля, который вам не нравится :) В лучшем случае они представляют собой некоторое время, когда данная интерпретация этого слова была популярна в некоторых кругах - обязательно сообщите, что на самом деле означает данный термин.«Процедурный» может означать «не использовать объекты», «не использовать функции», «использовать глобальные переменные для всего», любое количество вещей. Мы не можем сказать, что ваш руководитель/учитель/босс считает «процедурным» - только он может.

+0

Не то, чтобы он менял любой аргумент, сделанный выше, JS теперь имеет классы: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes –

 Смежные вопросы

  • Нет связанных вопросов^_^