Глобальные переменные

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

В паскале имя функции — это …

глобальная переменная И глобальный идентификатор.
2
9%
НЕ глобальная переменная, НО глобальный идентификатор.
9
41%
глобальная переменная И НЕ глобальный идентификатор.
0
Голосов нет
НЕ глобальная переменная И НЕ глобальный идентификатор.
11
50%
 
Всего голосов : 22

Re: Глобальные переменные

Сообщение скалогрыз » 31.12.2015 01:41:04

vitaly_l писал(а):Или быть может салютинки/искры сталкиваются после взрыва? А?

Цепная ядерная реакция?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Глобальные переменные

Сообщение Дож » 31.12.2015 01:52:31

скалогрыз писал(а):
Дож писал(а):Реальная проблема (того, почему компилятор не может тупо применить подобную оптимизацию во всех случаях) есть из-за вот такого
Код: Выделить всё
procedure Swap(const R: TRecord; out Result: TRecord);
begin
  Result.A := R.B;
  Result.B := R.A;
end;


Это уже вопрос органиацзии API.
В целом, когда в функции есть const/var параметры одного типа, следует оговаривать, можно ли передавать одну и туже переменную и как const и как var параметр. Это напрямую зависит от реализации функции.

Вопрос не только к API, но и к тому, что ожидает программист от языковой конструкции. В FPC поведение out-переменных и возвращаемых значений реализовано наиболее ожидаемым образом (в случае Swap(R,R) сразу чувствуется подвох, а в случае с R := Swap(R) едва уловим). Я это поддерживаю, но хотел бы видеть оптимизацию, когда она допустима.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Глобальные переменные

Сообщение скалогрыз » 31.12.2015 01:58:22

Дож писал(а): (в случае Swap(R,R) сразу чувствуется подвох, а в случае с R := Swap(R) едва уловим)

Именно чтобы не было Swap(R,R), пишут Swap(R):
Код: Выделить всё
procedure Swap(var Result: TRecord);
var
  t : integer;
begin
  t:=R.A;
  Result.A := R.B;
  Result.B := t;
end;

либо SwapTo(R,R)
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Глобальные переменные

Сообщение vitaly_l » 31.12.2015 02:06:32

скалогрыз писал(а):Цепная ядерная реакция?

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

.
Последний раз редактировалось vitaly_l 31.12.2015 02:09:37, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Глобальные переменные

Сообщение Дож » 31.12.2015 02:06:53

vitaly_l писал(а):
Снег Север писал(а):красное смещение и считать "разбеганием", это не более чем усреднение, ничто не препятствует галактикам иметь любое направление скорости

Вы салют видели? Точно видели? Уверены что видели? 100% уверены что, видели салют?
А салют, в котором "искры", летят друг другу на встречу - видели? А что касаемо положения галактик в пространстве, то обратитесь к ЛЮБОМУ астроному и он Вам подтвердит. Положение галактик, не соответствует (в смысле противоречит), положению "искр" от взрыва обыкновенного салюта. И кстати об Эйнштейне, он говорил что-то, про истинность и точность и разумность: доказательств, которые изложены на уровне объяснения понятного даже ребёнку...

Вы считаете, что большой взрыв ведёт себя как салют, а галактики зародились в первый момент времени. Это не так. «Большой взрыв» — это только название, реальное природное явление может выглядеть не так, как выглядит взрыв, к которым привыкли какие-то там обезьяны у себя на планете.

Принципиальное отличие состоит, например, в том, что салютинки никак не взаимодействуют друг с другом. А галактики Млечный Путь и Андромеда притягиваются гравитацией https://ru.wikipedia.org/wiki/%D0%9C%D0 ... 0%BF%D0%B0

Из-за гравитации две отдельно взятые галактики могут притянуться друг к другу.

Добавлено спустя 3 минуты 57 секунд:
скалогрыз писал(а):
Дож писал(а): (в случае Swap(R,R) сразу чувствуется подвох, а в случае с R := Swap(R) едва уловим)

Именно чтобы не было Swap(R,R), пишут Swap(R):
Код: Выделить всё
procedure Swap(var Result: TRecord);
var
  t : integer;
begin
  t:=R.A;
  Result.A := R.B;
  Result.B := t;
end;

либо SwapTo(R,R)

И? :) Желание писать красивые выражения со структурами, получать быстрый код и не иметь коллизий входных и выходных аргументов всё равно остаётся, даже если в каких-то там случаях как-то там пишут.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: Глобальные переменные

Сообщение vitaly_l » 31.12.2015 02:29:19

Дож писал(а):Принципиальное отличие состоит, например, в том, что салютинки никак не взаимодействуют друг с другом. А галактики Млечный Путь и Андромеда притягиваются гравитацией https://ru.wikipedia.org/wiki/%D0%9C%D0 ... 0%BF%D0%B0

Опять Вы мне приводите, пример от адептов злого Ктулху-Кащея... Давайте так: Попробуйте, поставить две "царь пушки" и выстрелить из них в космосе... Разница, направлений должна быть 0.00001 градуса... Соответственно выстрел практически параллельный... А теперь объясните, как две галактики через 13 миллиардов лет стали притягиваться под действием сил гравитации, а все остальные по прежнему летят в своих направлениях???? Гравитация разная и для каждой "пары" галактик своя? Или же введём новое и странное понятие "JET" см. чёрная дыра + принцип полёта ракеты...

И вот ещё: векторы движений галактик, указывают на то что, взрывов было как минимум: 360 градусов в плоскости XY, умноженное на 360 градусов в плоскости XZ , умноженное на 360 градусов в плоскости YZ. Но и это мелочи, чтобы понять мой юмор, нужно знать расположение видимых галактик в пространстве, именно это сейчас сканируют/определяют "все" телескопы мира. Когда они увидят структуру, злой Ктулху-Кащей - лопнет...
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Глобальные переменные

Сообщение скалогрыз » 31.12.2015 07:45:52

Дож писал(а):И? :) Желание писать красивые выражения со структурами, получать быстрый код и не иметь коллизий входных и выходных аргументов всё равно остаётся, даже если в каких-то там случаях как-то там пишут.

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

...в предыдущей раз спор был между "трёх-адресным ассемблером" и перегрузкой операторов.
Сейчас к этому можно добавить класс helper-ы, так что можно сравнить эффективность.

vitaly_l писал(а):Когда они увидят структуру, злой Ктулху-Кащей - лопнет.

скорей бы Raise of Tomb Raider на PC вышел!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Глобальные переменные

Сообщение sign » 31.12.2015 08:10:16

vitaly_l писал(а):
Pavia писал(а):Математика наука точная.

Математика точная????? <==== Это ЛОЖЬ!!!!!!!!!!!!!! ===>> Математика самая виртуальная наука из всех наук! Достаточно изменить любую "глобальную переменную", типа "Pi - 3.14..." <==== и это в корне поменяет ВСЮ математику!
.

Увы вам.
Нельзя изменить Pi, поскольку это соотношение из физической реальности, а не аксиома или произвольно установленное значение переменной для удобства.

Но, я согласен, вам, художникам, сие непонятно! :?
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Глобальные переменные

Сообщение Снег Север » 31.12.2015 09:42:59

vitaly_l писал(а): А теперь объясните, как две галактики через 13 миллиардов лет стали притягиваться под действием сил гравитации, а все остальные по прежнему летят в своих направлениях????

Потому, что у вас каша в голове. Галактики летят в произвольных направлениях, просто среднее расстояние между ними возрастает. Если вы не можете без наглядных аналогий, то вот: был наперсток газа в вакууме, его открыли, облако газа стало расширяться. Среднее расстояние между молекулами газа увеличивается. Но любые молекулы в этом облаке имеют любые направления скорости и траектории, в т.ч. какие-то молекулы сближаются и сталкиваются, какие-то - расходятся. Количество галактик, которые мы наблюдаем, весьма невелико, а определения их траекторий более чем приблизительно. Так что ваши представления о БВ совершенно не соответствуют реальности.
И, кстати, произвольно изменить число пи или "е" нельзя.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Глобальные переменные

Сообщение sign » 31.12.2015 09:50:49

vitaly_l писал(а):Давайте так: Попробуйте, поставить две "царь пушки" и выстрелить из них в космосе...

Ваша беда в том, что вы в слова "Большой взрыв" вкладываете своё обыденное понимание.
Т.е., типа аки супер-пупер-мега-ахренеть нечто такое бабахнуло и вот наш мир...

Большой взрыв, в общем-то, не есть взрыв.
Кодовое слово при понимании теории БВ - пропуск в мир реальной физики - инфляция.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: Глобальные переменные

Сообщение vitaly_l » 31.12.2015 13:35:25

скалогрыз писал(а):скорей бы Raise of Tomb Raider на PC вышел!

Ну конечно, сбежал в мир виртуальный и отлынивает от холивара... хитрец!
Смотри далее про уран (он тяжёлый элемент)...

sign писал(а):Нельзя изменить Pi, поскольку это соотношение из физической реальности. Но, я согласен, вам, художникам, сие непонятно!

Физической или же всё таки геометрической???
Хотя, безусловно Вами приведён: Весомый аргумент, но Вы заблуждаетесь.
Смотрите, меняю Пи и затем меняю в корне "всю" математику.
Допустим: Пи теперь не 3.14, а 6.28 (сокращено до 2 знака).
Теперь осмыслим: точность геометрии сохранится? <== Да/нет?
Безусловно ответ "Да", т.к. я всего лишь увеличил Пи в два раза.

А что станет с математикой???
Правильно! Все формулы, "придётся" переделать под новое Пи, которое теперь равно 6.28, а не 3.14...

А что это нам даёт?

Правильно, мы доказали что математика изменилась.... ( а именно это и требовалось доказать Вам программистам )
И кто из нас оторван от реальности? Художники или программисты? А? Ага...

sign писал(а): вы в слова "Большой взрыв" вкладываете своё обыденное понимание.
при понимании теории БВ - пропуск в мир реальной физики - инфляция.

Я напомню, что мы холиварим: "о глобальных переменных"... И рассматриваем большой взрыв как зарождение вселенной.
А до большого взрыва "компьютер" был выключен и вселенной не существовало? <=== Правильно?
Или же вернёмся к реальности и увидим, что есть ещё скорость света, которая...
инфляция вход? А дефляция - тогда это я так понимаю выход? Да?

Снег Север писал(а):кстати, произвольно изменить число пи или "е" нельзя.

Ну это вообще позор для физика... Утверждать что число "е" изменить нельзя... Где Вы учились? :wink:
Это ещё больший позор чем утверждение, что нельзя превратить 3.14 в 6.28, т.к. "е" равно "м" "с квадрат", но этот секрет я Вам пока не раскрою, т.к. цепная реакция возможна только в среде тяжёлых элементов, а они(тяжёлые элементы) зарождаются после перерождения звёзд...




.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Глобальные переменные

Сообщение SAK » 31.12.2015 15:21:20

vitaly_l писал(а):Допустим: Пи теперь не 3.14

Вы хотите сказать, что у Вас есть такая окружность у которой отношение длины к диаметру не равно 3,14...? Это число не является заданным какими-либо соглашениями, поэтому и изменить его Вы не можете.
vitaly_l писал(а): "е" равно "м" "с квадрат"
Вообще-то, насколько я понимаю, имелось ввиду совсем другое "e": основание натурального логарифма e=2,7182818284590452353602874713527… Его Вы тоже не можете поменять поскольку только для этого числа производная e^x равна e^x.

Что касается функций: если функция является переменной, то приведите пример как воспользоваться этой переменной для присвоения ей значения. И да, результат функции не обязан лежать на вершине стека, в большинстве случаев, например для числовых типов, он возвращается в регистрах.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Глобальные переменные

Сообщение vitaly_l » 31.12.2015 15:45:11

SAK писал(а):Вы хотите сказать, что у Вас есть такая окружность у которой отношение длины к диаметру не равно 3,14...? Это число не является заданным какими-либо соглашениями, поэтому и изменить его Вы не можете.

Ну конечно... размечтался, хитрец "уран 285"... Нападаешь на радикала? С формулами, которым более 2000 лет?
Вы ещё на танк с шашкой и на коне попробуйте...

Кто Вам сказал что Пи нужно вычислять, как: "отношение длины к диаметру"??? ... <== Вас "обманули" одурачили в школе!
Вычисляйте Пи как: "отношение длинны к радиусу" и Вам полегчает... Уважаемый "уран 285"... <== Познайте силу крохотного радикала...

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

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


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Глобальные переменные

Сообщение Лекс Айрин » 31.12.2015 15:45:51

Дож писал(а):Как видим, в трёх случаях ни разу значение не возвращалось через стек.


Что ж, ошибся. Про регистры то я и забыл... Впрочем, это, на самом деле, мало что меняет -- если присмотреться, то все переменные хранятся в стеке. (содержимое ebp практически сразу же становится равным esp ). А после присваивания принадлежащий функции участок стека удаляется.

Добавлено спустя 6 минут:
SAK писал(а):если функция является переменной, то приведите пример как воспользоваться этой переменной для присвоения ей значения.


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

Код: Выделить всё
:=(in ):out;
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Глобальные переменные

Сообщение vitaly_l » 31.12.2015 15:59:07

Лекс Айрин писал(а):Что ж, ошибся. Про регистры то я и забыл...

Наоборот, Вы получили необходимую информацию. <=== Это не "ошибка" - это "корректировка".

PS для SAK:
И заметь-те, при Пи равном 6.28 <== длину окружности нужно будет вычислять не 2ПиR, а просто ПиR...

Добавлено спустя 2 минуты 22 секундs:
Для программиста Пи равное: 6.28 <== ускорит процесс на несколько итераций... (с)


...
Последний раз редактировалось vitaly_l 01.01.2016 17:49:00, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru