LINUX.ORG.RU

Нубские вопросы

 ,


0

1

Здравствуйте многоуважаемые. Зарегался таки я на лоре и буду доставать вас своими нубскими вопросами. Не судите строго. Просто хочется все понять и смочь. Объясните пожалуйста доступным языком что такое scope и traits например в языке D2. Заранее спасибо.



Последнее исправление: asargis (всего исправлений: 1)

Ответ на: комментарий от anonymous

Уже читал. Хотелось бы понять когда это все применяется. То же самое с mixins. Из документации понял что микшины позволяют строку компилировать в код. Это что-то вроде сишных макросов? В документации сказано что с помощью микшинов можно релизовать множественное наследование. Каким образом? Хотелось бы это все понять и по полкам разложить. А то каша какая-то :)

asargis
() автор топика

Я сам нуб, и мне тоже не хваиает таких вот объяснений на пальцах, как и тебе. Но степени моего понимания, вроде бы достаточно, для того, чтобы объяснить простыми словами смысл понятия скоп.

Скоп, это некая структура данных, вроде хеш-таблицы, где имена переменных связаны с их значениями. В простейшем случае мы имеем один скоп - глобальный. Например, ты связал с именем а значение 1. Далее оперделил функцию, которая использует эту а. При вызове этой функции твой интерпретатор ищет данное имя в твоем скопе, находит, и «вычисляет», т.е. выдает связанное с ним значение.

В реальных современных языках программирования как правило имеется более чем один скоп. Например в языках с поддержкой замыканий свой собственный скоп создается для каждого замыкания, создается неявно, самим интерпретатором. Это лексический скоп. При вызове функции, созданной в замыкании, все имена использованные в теле функции интерпретатор будет искать в первую очередь в этом локальном скопе, в контексте которого была создана данная функция. Аналогично обстоят дела с поддержкой локальных блоков.

Существует также понятие динамического скопа. В этом случае, функция при вызове ищет имена своих свободных переменных, т.е. имен использованных в ее теле в скопе того блока кода, в котором вызывается, т.е она не «запоминает» контекст, в котором создавалась. Это называется динамическое связывание. Однако, динамическое связывание сейчас не модно и мало где используется. Из современных немаргинальных языков - только CL(наряду с лексическим), Emacs-lisp, Perl.

Но понятие лексический/динамический скоп - это не совсем корректное определение. Скоп он и есть скоп - т.е. таблица ключ - значение. Правильней все таки говорить о связывании - т.е. из какого конкретно скопа функция при вызове тащит свои внутренние имена.

anonimous
()
Ответ на: комментарий от anonimous

в моем понимании скоп это что-то вроде адресного пространства для каждой программы, только относительно переменных и объектов программы. То есть область видимости? Получается что эти скопы создаются компилятором и по сути заранее спроектированы и программист не может, так сказать, объявить свой скоп?

asargis
() автор топика
Ответ на: комментарий от asargis

scope - область видимости переменной, просто термин.
В разных ЯП бывают разные типы областей видимости (разные скоупы).

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Я в общем то так и понял. А не могли бы еще объяснить всю прелесть микшинов в D. Просто многие хвалят D именно из-за микшинов. Я понял что с помощью микшинов можно реализовать множественное наследование. Но почему изначально не сделать возможность множественного наследования? Полюбому суть не только в этом. Вот не могу уловить для чего так хороши эти микшины.

asargis
() автор топика
Ответ на: комментарий от asargis

Получается что эти скопы создаются компилятором и по сути заранее спроектированы и программист не может, так сказать, объявить свой скоп?

Может. Например в JS в качестве скопа ты можешь использовать объекты, которые там являются хешами. А так да, неявно, принудительно.

anonimous
()
Ответ на: комментарий от anonimous

Тебе уже много раз говорили, что у тебя каша в голове, а ты еще и объяснять другим пытаешься.))

скоупы это ... можно сказать, набор правил описывающих действие области видимости.

Например в JS в качестве скопа ты можешь использовать объекты, которые там являются хешами.

Это хеши в js являются объектами, а точнее там нету хешей и вместо них используются объекты.

TDrive ★★★★★
()

Буду изучать матчасть и практиковаться:) Иначе наверно трудно будет понять все это.

asargis
() автор топика
Ответ на: комментарий от TDrive

можно сказать, набор правил описывающих действие области видимости.

Это с точки зрения тебя, пользователя, это является набором правил, для тебя, мля все есть набор правил. Но этого недостаточно для понимания. А есть еще такое понятие как реализация.

И ты уж определись, словоблуд,

Это хеши в js являются объектами

ИЛИ

там нету хешей

anonimous
()
Последнее исправление: anonimous (всего исправлений: 1)
Ответ на: комментарий от anonimous

Это с точки зрения тебя, пользователя, это является набором правил, для тебя, мля все есть набор правил. Но этого недостаточно для понимания. А есть еще такое понятие как реализация.

ТС, что спросил? Как реализуется логика скопов при создании компиляторов?

Ты уж определись, словоблуд,

Попробуй прочитать предложение целиком, или тебе сложно воспринимать больше 5 слов за раз?

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Попробуй прочитать предложение целиком
Это хеши в js являются объектами

В js нет вообще такого понятия как хеши. А обектная система - это не просто набор хешей. Я правильно выразился, когда сказал

использовать объекты, которые там являются хешами

В том контексте, котором было это произнесено. Там объекты действительно являются набором ключ - значение. Но они обладают и другими свойствами, в рамках объектной системы. Ты же почему то полез поправлять.

anonimous
()
Ответ на: комментарий от anonimous

В js нет вообще такого понятия как хеши. А обектная система - это не просто набор хешей.

4 раза прочитал так и не понял, что ты хотел сказать.

Там объекты действительно являются набором ключ - значение. Но они обладают и другими свойствами, в рамках объектной системы.

Раз они обладают функционалом большем чем должен быть у хешей значит это не хеш, а объект.
Можно сказать хеш частный случай объекта, если тебе так будет понятнее.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

Ну а счем ты спорил тогда, я не пойму, с тенью своей чтоли. И что ты не понял? Что в стандарте экма скрипт не определен термин хеш?

anonimous
()
Ответ на: комментарий от TDrive

объекты, которые там являются <в том числе, по-сути> хешами <но не только ими>. И все, я сворачиваю дискуссию ни о чем.

anonimous
()
Ответ на: комментарий от anonimous

объекты, которые там являются <в том числе, по-сути> хешами <но не только ими>.

Не «являются», а «применяются в качестве».

TDrive ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.