<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9567&amp;type=atom" />
	<updated>2014-05-04T20:51:36Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=9567</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82663#p82663" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>я просто не понимаю, почему там в статье стек это &quot;к сожалению&quot;.</p></blockquote></div><p>Возможно к тому, что нет возможности сделать это отдельно от «setlocal», а не про сам стек собственно.</p><div class="quotebox"><blockquote><p>P.S. (извиняюсь, просто небольщой офф-топ, не мог удержаться <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />) …</p></blockquote></div><p>Да, это именно стек. В теории алгоритмов и в программировании стек является одним из важнейших инструментов. И на уровне машинной логики, и на уровне микропрограмм.</p><p>Для таких ЯВУ, как С и ему наследующие, стек является образующей технологией обработки функций — аргументы функций помещаются в стек в обратном порядке, что позволяет прозрачно использовать функции с переменным числом аргументов.</p><p>Есть даже такой потрясающий ЯВУ (ещё более «низкоуровневый», нежели С), как Forth (<a href="http://ru.wikipedia.org/wiki/Forth">Форт (язык программирования) — Википедия</a>), где вся идеология полностью построена на стеке и постфиксной записи.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-05-04T20:51:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82663#p82663</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82661#p82661" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Стек в данном случае организуется не отложенным раскрытием, а самой командой «setlocal».</p></blockquote></div><p>Да это я понял, что дело в «setlocal», я просто не понимаю, почему там в статье стек это &quot;к сожалению&quot;. А без «setlocal» стек не используется что ли? Я вот щас что-то припоминаю, что бывает какое-то &quot;переполнение стека&quot; — может имеется в виду это? Я извиняюсь, если вопросы тупые, просто я не программист и очевидные для других моменты для меня бывают непонятны.</p><p>P.S. (извиняюсь, просто небольщой офф-топ, не мог удержаться :)) вообще, у меня слово &quot;стек&quot; ассоциируется с такими (если кто помнит) тупыми советскими программируемыми калькуляторами 1980-х годов, они программировались на идиотской, так называемой &quot;обратной польской бесскобочной логике&quot;, там числа сначала загонялись в стек, а потом вводились команды. Я как ни бился башкой об стену, но так к этой &quot;бесскобочности&quot; привыкнуть не смог, так что слово &quot;стек&quot; вызывает у меня сугубо негативные эмоции :)</p>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2014-05-04T19:09:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82661#p82661</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82660#p82660" />
			<content type="html"><![CDATA[<p>Ага. Ну, данной статье можно верить почти во всём. На самом деле не «обновлялись бы именно в момент изменения, а не при выходе за &quot;скобки&quot; », как у Вас, и не «проблема с раскрытием переменных только после выхода из самого внешнего оператора скобки», как в оригинале. Проблема как раз напротив, состоит в том, что переменные окружения, обрамлённые символами «%», раскрываются командным процессором <strong>до</strong> входа в скобки (точнее в момент входа). Именно потому мы «видим» вместо них то значение, которое было в них <strong>до</strong> входа в скобки.</p><p>Теперь именно по первому вопросу:<br /></p><div class="quotebox"><blockquote><p>Но я в одном месте прочитал мельком, что включение этого режима не только хорошо (так как удобно), но и плохо, потому что в этом режиме &quot;все переменные помещаются в стек&quot;. Разъясните, пожалуйста, что такое &quot;стек&quot; и почему плохо, что в него помещаются переменные?</p></blockquote></div><p>Стек в данном случае организуется не отложенным раскрытием, а самой командой «setlocal». Ну, вот так реализовали. Вся «плохость» состоит только в этом.</p><p>Как это выглядит? Как обычный стек, FILO, «первым пришёл — последним ушёл». Кладётся на вершину стека по использованию команды setlocal, снимается по команде endlocal или завершению контекста текущего пакетного файла.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-05-04T18:31:07Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82660#p82660</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82658#p82658" />
			<content type="html"><![CDATA[<p><a href="http://www.rsdn.ru/article/winshell/NTCommandProcessor.xml#EKZAE">ссылка</a> — там «<span style="color: brown">К сожалению, и данный способ содержит недостаток, а именно, “двойной эффект”, и, кроме “включения” оператора “!”, сохраняет все переменные в стек (см. описание команд setlocal/endlocal далее).</span>»</p>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2014-05-04T17:01:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82658#p82658</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82655#p82655" />
			<content type="html"><![CDATA[<p>Приведите ссылку на «одно место».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2014-05-04T15:55:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82655#p82655</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Теоретический вопрос по enabledelayedexpansion]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=82649#p82649" />
			<content type="html"><![CDATA[<p>Как известно, команда <span style="color: brown">SETLOCAL ENABLEDELAYEDEXPANSION</span> включает так наз. режим &quot;отложенного раскрытия переменных&quot;, то есть чтобы переменные, измененные внутри &quot;скобок&quot; (типа FOR … DO (вот тут) …) обновлялись бы именно в момент изменения, а не при выходе за &quot;скобки&quot; (при этом к переменным надо обращаться через восклицательный знак: <span style="color: brown">!SomeVar!</span>, а не через процент, как обычно) — это всё понятно. Но я в одном месте прочитал мельком, что включение этого режима не только хорошо (так как удобно), но и плохо, потому что в этом режиме &quot;все переменные помещаются в стек&quot;. Разъясните, пожалуйста, что такое &quot;стек&quot; и почему плохо, что в него помещаются переменные?</p>]]></content>
			<author>
				<name><![CDATA[EgorS]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=30564</uri>
			</author>
			<updated>2014-05-04T10:56:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=82649#p82649</id>
		</entry>
</feed>
