Home
entries friends calendar user info
yurikravchik

Advertisement

Add to Memories
Tell a Friend
Add to Memories
Tell a Friend
Почему скрипты?
(в контексте геймдева)

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

Какие факты обычно приводят в защиту использования скриптов?
1. Фичи языка - first-class functions, dynamic/static typing, garbage collection, closures, proper tail calls, coercion (automatic conversion between string and number values at run time), coroutines (нарезка свойств для луа) и др.
2. Загрузка/выгрузка "на лету"
3. Простота

Попробую поспорить:

1. Фичи языка используются далеко не всегда. Часто скриптовый язык - является подмножеством С и несёт более ограниченный функционал чем С и С++. Даже с Lua - часто не используется ни одна её фича которой нет в С или С++. Т.е. - этот "плюс использования скриптов" - как минимум применим НЕ ко всем случаям применения скриптов.
2. Загружать на лету можно и DLL. Всё что отделяет написанный .c файл - от интеграции в приложение без перезагрузки - это .bat файл, который его компилит и кладёт куда нужно. Плюс некоторая обвязка, которая нужна и при использовании скрипта. Этот "плюс" - тоже имхо не совсем состоятелен.
3. Простота - это немного противоречит пункту о фичах. В любом случае программист пишущий на С++ или С - на скрипте не будет писать быстрее или "проще" - на скрипте пишут так, как привыкли. Возможно - на скрипты можно посадить более слабых программистов... Но всё же - не убедительно.

Но что же делать с фактами? Использование скриптов становится всё популярнее. Причем с давних времён :). И не только в гейм-деве. Что это означает?

* Мы имеем много success stories проектов с использованием скриптования

Что еще? Объективно - ничего. Это единственный факт, с которым поспорить не получится. Дальше может быть три варианта:

* Это ни о чем не говорит, и возможно процент success со скриптами такой-же как и success проектов без скриптов. Приму без доказательства - что это не так. Имхо "это жжж - неспроста".
* Использование скриптов даёт какой-то плюс проекту.
* Другое - разделение программистов на скриптовиков и не-скриптовиков, тех. процесс, и т.д.

Поспекулирую именно на тему того, что скрипт всё таки что то даёт проекту. Что это всё таки может быть? Перечисленные вначале причины - слишком спорны чтобы создать тренд - отброшу их сразу. Что еще осталось не упомянутым - так это влияние скрипта - на архитектуру. Точнее - влияние самого факта наличия скрипта на архиектуру. Архитектурно - приходится решать - что должно быть на стороне С++ (к примеру), а что - на стороне скрипта. Это как бы искуственная граница разделения проекта - на две части - скриптовую и движковую. Отмечу еще - что считаю архитектуру - жизненно важным фактором, качество которого - может быть множителем в формуле успеха проекта (и/или его стоимости :) ).

Сделаю отсюда свой вывод - скрипты популярны именно потому что они навязывают "правильную" архитектуру.

Tags: , ,

Add to Memories
Tell a Friend
http://2bz.ru/argentina.htm
Шокирует следующее. Мы привыкли слушать о голоде, разбоях и др. - о неразвитых странах или в прошлом. Но здесь? DVD, Maglite, XBox 360, 4x4, школы, выдача прав, фондовый рынок... Всё такое знакомое. И страна довольно похожа - 40млн население. Площадь значительно больше. В начале века входила в десятку самых богатых стран мира... Население? Подавляющее большинство - испанцы и итальянцы. Это никак не банановая республика. И такое...

А здесь обсуждение на русском, применительно к Украние: http://www.2000.net.ua/print?a=%2Fa%2F60558

Я говорил раньше о происходящем с точки зрения заговора. На самом деле всё банальнее - просто международный лохотрон/мошенничество. Просто в ролях уже не люди/группировки - а страны/международные организации (хотя там в руководстве всё равно те же люди).

Current Mood: angry

Add to Memories
Tell a Friend
Новость: "Международный валютный фонд предоставит Украине кредит в размере 16,5 млрд долл. на 15 лет под 4% годовых."
http://novosti.ua/economic/41546

Т.е. за 15 лет мы должны будем заплатить около 21,5 млрд долл. (если выплачивать каждый год примерно поровну).

В идеальном мире - это не бесполезно: можно построить 10 огромных, 100 средних или 1000 мелких заводов. Думается, что такие объемы производства - отобьют гораздо больше чем 4% годовых.
(стоимости некоторых заводов: Peugeot Citroen, Стоимость проекта составит €300 млн. Стоимость завода по переработке природного газа оценивается в $1 млрд. Гугление поможет найти и другие цены).

В реальности:
* за тем на что тратить деньги - будет следить тот же МВФ
* предположительно тратиться они будут на капитализации/эмиссии/поддержки банков
* т.е. реально - осядут на счетах, кредитах, уйдут за границу в виде оплаты за товары и услуги
* а проценты с чего платить?

Так что это? Хомут или помощь? Или я чего то непонимаю?

Tags: , ,
Current Mood: sad

Add to Memories
Tell a Friend
То, какие роли сочетаются с какими объектами, зависит от мира, в котором используется язык. Напримр, у нас, направление – это вверх вниз, запад, и т.д. Трудно представить цвет в роли направления. Но в мире, например, рыб, можно было бы говорить идти к синему (вверх), идти к черному (вниз). Также следует, что для разных условий применения языка, для разных предикатов, естественными (не требующими дополнительных уточнений) могут быть разные роли. Одни роли могут иметь короткие слова (часто применяемые), или строиться путем изменения слова (опять же для быстроты употребления). Для быстроты употребления некоторых ролей, так же может использоваться позиционирование. В общем и «default» значение, и длина слова, и изменение слова, и позиционность – всё это может использоваться для того, чтобы сделать одни роли и предикаты – более легко применимыми чем другие.

Во многих книгах связанных с тренировкой мотивации, указывается, что то, какие слова вы употребляете, влияет на то, что и о чем вы думаете. Например говорится, что для позитивного настроя – нужно забыть «плохие» слова, и пользоваться «хорошими». На вопрос «как дела» - отвечать «хорошо», «лучше с каждым днем», и т.д. Т.о. язык может программировать НАСТРОЙ человека – делая некоторые слова более удобными, чем другие. Именно настрой, а не логику или правильность мышления.

Tags: , ,

Add to Memories
Tell a Friend
Структура минимального языка для описания явлений. Каждое выражение – это роль объекта, объект, и список его описаний.

Выражение:
1. Роль - предикат
2. Объект - предикат
3. Список дочерних выражений

Роль объекта и объект – это предикаты («ходить», «человек», «количество», «цвет», «действие»). Список описаний – это просто список выражений. Роль в дочернем выражении – указывает какую роль играет объект для родительского выражения.

Например: человек идет. Базовое выражение – «человек» с ролью «объект», в его списке есть выражение с объектом «ходить» с ролью «действие» (и с пустым списком) и выражение с ролью «когда» и объектом «сейчас» (для указания времени). Человек идет быстро. Здесь для выражения действие-ходить, добавляется дочернее выражение как-быстро. Естественно, некоторые вещи должны считаться «текущими», например, если время не указано – то оно неопределенное. Или наглядно:

{кто? Человек {действие? Идет {когда? сейчас};{как? быстро}}}

Tags: , ,

Add to Memories
Tell a Friend
Изучение логлана стало для меня некоторым откровением. Поделюсь почему. Это конечно могут быть известные вещи, но я не языковед, и для меня это стало открытием.LJ-Cut
Логлан (и ложбан) показал мне, что человек реально использует неограниченное число предикатов, и некоторый набор вспомогательных слов (указатели времени, числа, рода, союзы, вопросы). Самое интересное - это предикаты. Они могут выступать в любой роли - в роли существительных, глаголов, определений и этих самых, вспомогательных слов (это уже, правда, не Логлан).
Задача языка - дать возможность выразить какую роль играет в данном случае предикат, с каким предикатом он связан в этой роли
Из (например) истории развития чисел, известно: что числа можно строить применяя различные способы обозначения разрядов (роли отдельных чисел) - применяя позиционность (как в современных числах), применяя различные значки для определения роли (десятки, сотни). В разных системах разных народов - было по разному. Для чисел - самой удобной оказалась позиционная система.
Отсюда можно продлить аналогию: для того, чтобы определить роль предиката, в разных языках так же используют различные способы. Этих способов 2:
1. относительное положение (в английском: cold weather - cold играет роль прилагательного, т.к. стоит перед другим "предикатом", так же артикли – вспомогательные слова должны стоять перед определяемым словом)
2. изменяя само слово (холодная погода, погода холодная - от положения уже ничего не зависит, мы видим из слова холодная, что оно описывает существиетельное женского рода).
Отсюда видно - что отличие логлана от других языков - состоит по сути всего лишь в способе определения ролей. Этот способ - именно позиционность, тогда как обычно, в языках смешанная система (walk – ходить, walker – ходок, т.е. изменяется слово, чтобы показать его новую роль, walk man – идущий человек – позиционность. Это для английского).
Сказать что этот способ самый эффективный - нельзя. Есть случаи, когда фраза короче на другом языке, и есть случаи, когда короче именно на логлане. Здесь играет роль то, как мы выбрали расположение для вспомогательных предикатов вокруг "определяемого" предиката в зависимости от их ролей. Возможно, что для разных (даже) профессий (военный/повар/медик) - оптимальными - будут разные варианты взаимных расположений.
Сказать, что этот вариант оптимален для компьютера - так же нельзя. Я (как программист) обосную это:
1. Потеря одного слова - чревата непониманием всей фразы, т.к. нарушается структура.
2. Нельзя (просто) выразить отношение предикатов, незаложенное в структуру. Например:
godzi X1 идет в X2(куда) из X3(откуда) по X4(путь)
Здесь видно, что мы не можем сказать КАК человек идет (быстро, медленно), не можем сказать что он при этом делает (идет жуя семечки). Для этих выражений придется строить другие фразы (я не достаточно хорошо знаю язык чтобы их построить).
Есть предикаты, для которых вообще определен только один X1. Это подразумевает, что применять описание других аспектов - не получится:
gokru X1 есть крюк
неизвестно чей, неизвестно какой. Выражение нужно менять, чтобы это выразить.
Насчет приведенных примеров - готов спорить, обсуждать, корректировать.
Но суть остается таковой: в структуре зависимостей предиката - жестко задано на какие вопросы можно ответить, описывая его. Эту структуру нельзя сделать достаточно полной, т.к. всегда найдется роль, предикату в которой, не найдется места в существующей структуре. Для некоторых предикатов (тот же godzi указано аж 4 роли, это значит, что нам придется вставлять два лишних слова если мы хотим сказать что действие ходить происходит по дороге).
Другой вариант: это применение дополнительных слов к каждому предикату. Это разновидность позиционности, но несколько обобщенная. Пример:
([что делать?]ходить;[как?]медленно;[откуда?]дом)
Здесь [что делать?], [как?], [откуда?] - это нечто вроде артиклей, указатели на роль предиката.
Здесь порядок следования слов уже не так важен в целом, важен он только для пар. Потеряв одно любое слово (не расслышав) - мы не потеряем структуру предложения, мы получим искажение, но не такое фатальное, как в случае позиционной системы (это при условии, что мы знаем какие пары роль-объект, чаще всего применяются).
Я хочу сказать, что такая структура - предпочтительнее для задания данных в компьютере. Здесь слово указатель - это название члена, а предикат (который им описывается) - это значение члена. Последовательность имеет значение только внутри пары (чтобы не перепутать кто – роль, а кто – объект).
И, наконец, вариант с изменением самого слова - рассматривать не буду, т.к. с ним мы все хорошо знакомы. Обучить ему компьютер - сложно.
В естественных языках - часто используются комбинации обоих методов. Возможно это более эффективно, чем использование только одного метода.

Итоги:
видно, что структура мышления не меняется от такого рода выбора способа выражения мыслей (позиционность, или изменение слов). Меняется лишь способ их выражений :).
Для компьютера считаю естественным применения дополнительного идентификатора для каждого предиката, т.к. в таком стиле УЖЕ построены все языки программирования (тип переменной/значение переменной).
Речь не идет о том, что язык ущербен. На нем можно выразить всё. Но некоторые простые зависимости – можно выразить только сложно. И что для компьютера – это лишние сложности, т.к. в одних языках одни и те же зависимости могут быть простыми, а в других – сложными. Внутренний язык – должен давать возможность описывать ПРОСТО любые связи (даже кажущиеся абсурдными). Это даст бОльшую общность и простоту устройства внутреннего языка. Компьютеру будет удобнее использовать более формальный язык (в котором указана каждая, даже очевидная роль), чем иметь кучу дополнительных правил (очевидностей). Второй случай удобнее использовать человеку. Причем в разных ситуациях – очевидности разные.

Tags: , , , ,

profile
yurikravchik
Name: yurikravchik
calendar
Back December 2008
123456
78910111213
14151617181920
21222324252627
28293031
page summary
tags

Advertisement

Customize