Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.08.2011, 01:33
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Глобальным в принципе может быть то, что не нужно менять (т.е. не переменные), а функции, например, которые не зависят от контекста (parseInt - в любом месте программы должна делать одно и то же и всегда вернет один и тот же результат, буде один и тот же ввод). Цифры символы строк, элементы энумераторов и т.п. могут быть глобальными т.как нет смысла делать 2 разных. Там, где в принципе может быть два разных, глобальные лучше не делать.
Если вы хотите немного глубже понять проблему - есть такой тезис, что переменные, вообще, как таковые - один из главных источников ошибок программ. Т.о. существует понятие программ без побочных эффектов - очень грубо говоря, программ, в которых переменные не используются в принципе (в теории, так можно действительно написать любую программу, но это очень непрактично). В любом случае, количество переменных нужно стараться сводить к минимуму т.как переменные хранят состояние, а это значит, что функции становятся зависимыми от состояния и на ваши плечи ложится ответсвенность за то, чтобы протестировать функции во всех возможных состояниях, что, очень часто не возможно в принципе. Но вы можете с этим бороться сводя область использования каждой конкретной переменной к минимуму - таким образом уменьшая количество вариантов, которые нужно тестировать, и, таким образом, вы пишете более надежный код.
__________________
Hell is the possibility of sanity

Старый 15.08.2011, 02:08
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
в теории, так можно действительно написать любую программу, но это очень непрактично
Я бы посмотрел даже на саму простейшую программу без переменных ))) Ну не считая такую
Код AS3:
public class Main extends Sprite 
	{
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
		}
__________________
Марк Tween

Старый 15.08.2011, 02:29
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 3  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Уже пошло as-кунг-фу.
Например функцию вычисления факториала, можно написать без переменных?

Старый 15.08.2011, 03:08
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Да не ну бред яж сказал) Просто wvxvw товаришь начитанный, умный, давно на форуме, и как говорится не лыком шыт, но в данный момент - его слова стоят под глубочайшим сомнением))) Хотя меня коробит слово в ТЕОРИИ , может он и хотел сказать , что в теории и бог существует, только его никто не видел
__________________
Марк Tween

Старый 15.08.2011, 04:05
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 5  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Господа. Может, всё таки, потрудитесь открыть новую тему для выяснения этого вопроса? Вы название темы то читали?

@wvxvw. Не уверен, что всё понял. То есть ты считаешь, что контекстная зависимость объектов, в случае с глобальными полями, и "мусор" в родительских объектах при протаскивании данных в дочерние - это вопросы "десятые", так? Главное - сохранять контроль над изменением значений переменных (параметризующих приложение, например)?

Старый 15.08.2011, 13:31
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Т.о. существует понятие программ без побочных эффектов - очень грубо говоря, программ, в которых переменные не используются в принципе
Эрланг, в теории не использует переменных вообще - это его фишка. Правда на реализации связи с сервером и БД - пришлось немного этим поступиться и глобальные псевдопеременные всё же есть там.
Функция принимает одни параметры и возвращает другие. Переменных в языке нет вообще - только константы.
Цитата:
Например функцию вычисления факториала, можно написать без переменных?
да
Код AS3:
fact(0) -> 1;
fact(N) -> N * fact(N-1).
аналог (не проверял, написал тут прям)

Код AS3:
public function factorial(n:uint):uint{
if(n==0) return 1;
else
return n*factorial(n-1);
}
Переменных нет - только параметры - Я думаю разница между этими двумя понятиями ясна.
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 15.08.2011 в 13:37.
Старый 15.08.2011, 14:38
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Да, это в принципе особенность всех декларативных языков такого плана, Erlang, ML (и наследники CaML / Obj-CamML), Scheme и т.п. в них не используются переменные. Если вы будете размышлять логично, то значение любой вашей переменной вычисляется (т.е. его можно описать функцией), либо задается один раз (константа). Проблема которую решают переменные заключается в том, что иногда не практично много раз вызывать функцию (т.как результат уже один раз был получен). Но, хороший код старается избегать повторных вызовов функций (конечно, иногда это неизбежно), но, тем не менее, к этому нужно стремится

fish_r:
Это теория немного другого плана, отношение к глобальным переменным в ней - это следствие (одно из). Следуя ей, естесственным образом не будет возникать проблем с глобальными переменными т.как контекст переменной будет всегда определятся областью, в которой она может быть только одна, и, естесственным образом же, не будет возможных конфликтов, когда `кто-то неизвестный меняет значение'. Но это теория, а не практическое руководство к действию. Ее нужно осознать и сделать максимально похоже
__________________
Hell is the possibility of sanity

Старый 15.08.2011, 15:28
saikspaik вне форума Посмотреть профиль Отправить личное сообщение для saikspaik Найти все сообщения от saikspaik
  № 8  
Ответить с цитированием
saikspaik

Регистрация: Nov 2009
Сообщений: 300
Цитата:
Переменных нет - только параметры - Я думаю разница между этими двумя понятиями ясна.
Суть - одно и то же.
Вот сдесь:
Код AS3:
public function factorial(n:uint)
Фактически создается переменная n, разве нет?

Старый 15.08.2011, 15:32
carrotoff вне форума Посмотреть профиль Отправить личное сообщение для carrotoff Найти все сообщения от carrotoff
  № 9  
Ответить с цитированием
carrotoff
 
Аватар для carrotoff

Регистрация: May 2010
Сообщений: 543
Цитата:
Фактически создается переменная n, разве нет?
Нет, здесь передается именно параметр. Это такое значение, которое в теле функции меняться не будет.
От параметра зависит результат работы функции, но сам он остается неизменным.
__________________
Вы грабите бедных людей. Парень со свирелью накажет вас. Хонгильдон (с)

Старый 15.08.2011, 15:37
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 10  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
carrotoff да ну нафиг?

Код AS3:
public function factorial(n:uint) {
   n = 500;
   trace(n) // 500
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 20:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:34.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.