Скачать MetaTrader 5

Спецификаторы доступа

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Dennis Kirichenko
11506
Dennis Kirichenko  

Разработчик MQL5 приблизил функционал языка к аналогу С++.

Есть такой вопрос к нему по спецификаторам. Работают ли в MQL5 следующие утверждения?

1) В  С++ существуют внутренние связи, внешние связи и отсутствие связей.

2) Глобальные переменные имеют внешние связи и это позволяет получить доступ к ним из любой части программы.

3) Если к глобальным переменным добавить спецификатор static, то глобальные переменные утратят внешние связи и будут иметь только внутренние связи, т.е. будут доступны только внутри файла, в котором они были описаны.

4) Локальные переменные не имеют связей и поэтому доступны только внутри блока где они были описаны.


Лично у меня по 2-му 4-му пп вопросов нет. А вот по 3-му есть...

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
Dmitriy Skub
12070
Dmitriy Skub  
denkir:

Разработчик MQL5 приблизил функционал языка к аналогу С++.

Есть такой вопрос к нему по спецификаторам. Работают ли в MQL5 следующие утверждения?

1) В  С++ существуют внутренние связи, внешние связи и отсутствие связей.


Лично у меня по 2-му 4-му пп вопросов нет. А вот по 3-му есть...

У меня по 1-му п. вопрос - что это за хреновина такая? Может имеется в виду область видимости?
Dennis Kirichenko
11506
Dennis Kirichenko  
Dima_S:
У меня по 1-му п. вопрос - что это за хреновина такая? Может имеется в виду область видимости?

Да, практически... но, имхо, корректнее говорить про связь...

Лично сам не слышал такого термина, как внешняя  область видимости... или я не прав?

Dmitriy Skub
12070
Dmitriy Skub  

Чтобы не городить отсебятину, процитирую первоисточник:

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

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

Если имя не находится в описании функции или класса (его обычно называют "глобальным именем"), то область видимости простирается от точки описания до конца файла,

в котором появилось это описание.

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

После выхода из блока прежнее значение имени (если оно было) восстанавливается.


Andrey F. Zelinsky
32497
Andrey F. Zelinsky  
Dima_S:
У меня по 1-му п. вопрос - что это за хреновина такая? Может имеется в виду область видимости?

поддерживаю вопрос и особенно что "мелким шрифтом"

Денис, у вас с именованием понятий явный перебор - помню вашу статью о UML - https://www.mql5.com/ru/articles/304 - там тоже были заморочки с использованием якобы "устоявшейся" терминологии.

понятно, что сейчас преобладает переводная литература и каждый переводчик один и тот же термин переводит по своему.

но ещё задолго до ООП, UML была устоявшаяся и понятная русскому слуху терминология.

но называть "область видимости" - "связями", пусть "внешними свзями", "внутренними связями" и ещё "отсутствием связи" - требует детального пояснения и обоснования.

если Вы вводите новый термин, так поясните что за хреновину вы имеете ввиду

Разработка эксперта средствами UML
Разработка эксперта средствами UML
  • 2011.11.18
  • Dennis Kirichenko
  • www.mql5.com
В статье рассматривается создание торгового советника с помощью графического языка UML, который используется для визуального моделирования объектно-ориентированных программных систем. Основным преимуществом такого подхода является визуализация работы проектировщика. Приведен пример проектирования структуры и свойств советника при помощи программы Software Ideas Modeler.
Dmitriy Skub
12070
Dmitriy Skub  
Возможно, это переводил бывший работник МИДа))

Dennis Kirichenko
11506
Dennis Kirichenko  
Dima_S:

Чтобы не городить отсебятину, процитирую первоисточник:

Dima_S, я спросил у разработчика относительно приведённых утверждений. Накопал их отсюда.

А с вашим первоисточником никак не поспоришь :-)

Согласен, что понятие "видимость" используется чаще. Особенно в среде MQL.

Использование volatile, extern, register, auto, mutable в C++ (обзор)
Использование volatile, extern, register, auto, mutable в C++ (обзор)
  • www.quizful.net
В языке C++ есть квалификаторы и спецификаторы, которые в связи с их не очень частым использованием могут вызвать замешательство у неискушённых и начинающих. В данном коротком очерке я собираюсь пролить свет на данную тему. Начнём с квалификатора volatile Если подходить формально то квалификатор volatile информирует компилятор что переменная...
Dennis Kirichenko
11506
Dennis Kirichenko  
abolk:

поддерживаю вопрос и особенно что "мелким шрифтом"

Денис, у вас с именованием понятий явный перебор - помню вашу статью о UML - https://www.mql5.com/ru/articles/304 - там тоже были заморочки с использованием якобы "устоявшейся" терминологии.

понятно, что сейчас преобладает переводная литература и каждый переводчик один и тот же термин переводит по своему.

но ещё задолго до ООП, UML была устоявшаяся и понятная русскому слуху терминология.

но называть "область видимости" - "связями", пусть "внешними свзями", "внутренними связями" и ещё "отсутствием связи" - требует детального пояснения и обоснования.

если Вы вводите новый термин, так поясните что за хреновину вы имеете ввиду

abolk, я ссылку привёл на терминологию. Эти термины ввёл не я. Просто в описании MQL5 мало инфы по спецификаторам, пытаюсь поэтому что-то выяснить...

А про UML. Всё таки это другой язык, терминология которого по естественным причинам отличается от сишной и mql'евской. Свои аргументы я изложил при ответе на конкретные вопросы. А ваше мнение про заморочки считаю субъективным восприятием проблематики. 

Andrey F. Zelinsky
32497
Andrey F. Zelinsky  
denkir:

Dima_S, я спросил у разработчика относительно приведённых утверждений. Накопал их отсюда.

Мрак. Читаем:

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

Если переменная хранит описание некоего объекта, то применение термина "связь" понятна и обоснована. Через связь получается доступ к информации об объекте.

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

Dmitriy Skub
12070
Dmitriy Skub  
denkir:

Dima_S, я спросил у разработчика относительно приведённых утверждений. Накопал их отсюда.

А с вашим первоисточником никак не поспоришь :-)

Согласен, что понятие "видимость" используется чаще. Особенно в среде MQL.

Это цитата из книги Б. Страуструпа (разработчика С++).

У него, кажется, и сайт есть - так что можете поспорить))

Andrey F. Zelinsky
32497
Andrey F. Zelinsky  
denkir:

я ссылку привёл на терминологию. Эти термины ввёл не я.

а кто сказал, что автор ввёл термины, которые появились с лёкой руки переводчика?

переводчик - это же не автор статьи.

вопрос к Вам: вы можете пояснить сами что спрашиваете?

вот вы написали, что корректней говорить не "область видимости", а "связь":

denkir:

Да, практически... но, имхо, корректнее говорить про связь...

Лично сам не слышал такого термина, как внешняя  область видимости... или я не прав?

 поясните почему так считаете

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий