Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
К курсу →
Слышал. На нем скрипты во флеш пишутся. Знаю.Знаю. Неплохо, но к нему должен прилагатся видео редактор. B)
Давай тогда лучше вроде пхп напишим.
Давай тогда лучше вроде пхп напишим.
он стековый, то есть вся работа с памятью устроена по принципу стека
для наглядности приведу небольшую прогу на пс
2 3.14 sin add
она эквивалентна следующему:
2+sin(3.14)
интерпретатор перебирает все выражения слева направо.
если там стоит число, то он его кладёт на вершину стека
то есть сначала стек пуст, потом в нём 2, потом 2 и 3 (3 на вершине).
после этого он встречает команду sin, которая берёт из стека число,
удаляет его оттуда и кладёт туда синус трёх то есть 0.
потом команда add берёт из стека 2 числа и кладёт туда их сумму
надеюсь вы знаете что есть стек?
нет Gamlet, ты не совсем понял, я предлагаю сделать язык, похожий по синтаксису на постскрипт, а именно использующий стек и обратную польскую нотацию при записи кода
и написать EXE на постскрипте нельзя, он работает только с графикой, и интерпретируется принтером при печати, или спец средой
для наглядности приведу небольшую прогу на пс
2 3.14 sin add
она эквивалентна следующему:
2+sin(3.14)
интерпретатор перебирает все выражения слева направо.
если там стоит число, то он его кладёт на вершину стека
то есть сначала стек пуст, потом в нём 2, потом 2 и 3 (3 на вершине).
после этого он встречает команду sin, которая берёт из стека число,
удаляет его оттуда и кладёт туда синус трёх то есть 0.
потом команда add берёт из стека 2 числа и кладёт туда их сумму
надеюсь вы знаете что есть стек?
нет Gamlet, ты не совсем понял, я предлагаю сделать язык, похожий по синтаксису на постскрипт, а именно использующий стек и обратную польскую нотацию при записи кода
и написать EXE на постскрипте нельзя, он работает только с графикой, и интерпретируется принтером при печати, или спец средой
Конечно нельзя. Знаешь флеш игры? Вот они на нем пишутся.и написать EXE на постскрипте нельзя, он работает только с графикой, и интерпретируется принтером при печати, или спец средой
По моему они пишутся в Macromedia Flash (или чё-то такое). Я смотрел код флешек, но там (как мне кажется) ни чего общего с постскриптами
Вот я решил написать пару слов о моих идеях.
Типы данных.
В нашем языке будет множество различных типов данных, которые условно можно разделить на записываемые непосредственно ввиде текста и создаваемые только командами языка
В первую группу входят числа, строки, ключи, массивы, исполняемые массивы.
Число - это самое обычное число, может быть записано в разных системах счисления.
Строка - последовательность символов начинающаяся и заканчивающаяся символом "
Для того, чтобы вставить в строку символ " надо написать ""
В строку могут входить символы пробела и переноса строки
Ключ - последовательность символов начинающаяся и заканчивающаяся символом \
Для того, чтобы вставить в ключ символ \ надо написать \\
В ключ не могут входить символы пробела и переноса строки
Пустой ключ существовать не будет.
Ключи предназначены для работы со словарями
Запись \+\ отличается от + тем, что если встречается \+\, то интерперетатор сразу кладёт в стек +, а не ищет команду в словаре и не выполняет её.
Массив - последовательность выражений начинающаяся с символа [ и заканчивающаяся символом ]
Между ними могут находиться любые выражения. Всё, что находится между квадратными скобками сначала выполняется, а потом уже создаётся массив.
В массиве могут содержаться элементы любого типа, в том числе и типа массив
Примеры:
[ 1 5 3 465 ]
[ "hello world" "
" ]
[ [ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ] ]
Для доступа к элементам массива используются специальные команды.
Исполняемый массив - последовательность выражений начинающаяся с символа { и заканчивающаяся символом }
Между ними могут находиться любые выражения. Всё, что находится между фигурными скобками не выполняется на этапе создания массива.
Для выполнения массива используются специальные команды.
На самом деле исполняемый массив - это конструкция подобная begin .. end в паскале.
Во вторую группу входят словари, стеки, файлы и т.д.
Я рассмотрю словари и стеки.
Словарь-это набор пар ключ-объект.
Когда программа встречает какое-либо выражение, то она сначала просматривает весь словарь и ищет его определение.
Если определение найдено, то если под данным ключом хранится испоняемый массив, то он выполняется, иначе в стек кладётся
соответсвующее выражение.
Стек-массив, у которого можно работать с верхними элементами (удалять и добавлять)
В языке будет несколько стеков:
стек данных-стек, где хранятся все объекты
запись
3 4 +
кладёт свои данные на вершину стека данных.
стек словарей-стек, где хранятся все словари.
То есть определений функции + может быть несколько: в стандартном словаре и в новом словаре, но программа выберет определение из самого верхнего
словаря в стеке, таким образом можно переопределить функцию +.
Алгоритмические структуры.
В каждом языке программирования есть структуры типа if .. then .. else .. , for .. ,while .. и тому подобное.
Наш язык не будет исключением.
вот пример условия
a 2 > { "a > b" message } if
это эквивалентно
if a>b then message("a > b")
Это пока всё, что я хотел рассказать!
Типы данных.
В нашем языке будет множество различных типов данных, которые условно можно разделить на записываемые непосредственно ввиде текста и создаваемые только командами языка
В первую группу входят числа, строки, ключи, массивы, исполняемые массивы.
Число - это самое обычное число, может быть записано в разных системах счисления.
Строка - последовательность символов начинающаяся и заканчивающаяся символом "
Для того, чтобы вставить в строку символ " надо написать ""
В строку могут входить символы пробела и переноса строки
Ключ - последовательность символов начинающаяся и заканчивающаяся символом \
Для того, чтобы вставить в ключ символ \ надо написать \\
В ключ не могут входить символы пробела и переноса строки
Пустой ключ существовать не будет.
Ключи предназначены для работы со словарями
Запись \+\ отличается от + тем, что если встречается \+\, то интерперетатор сразу кладёт в стек +, а не ищет команду в словаре и не выполняет её.
Массив - последовательность выражений начинающаяся с символа [ и заканчивающаяся символом ]
Между ними могут находиться любые выражения. Всё, что находится между квадратными скобками сначала выполняется, а потом уже создаётся массив.
В массиве могут содержаться элементы любого типа, в том числе и типа массив
Примеры:
[ 1 5 3 465 ]
[ "hello world" "
[ [ 1 2 3 ] [ 4 5 6 ] [ 7 8 9 ] ]
Для доступа к элементам массива используются специальные команды.
Исполняемый массив - последовательность выражений начинающаяся с символа { и заканчивающаяся символом }
Между ними могут находиться любые выражения. Всё, что находится между фигурными скобками не выполняется на этапе создания массива.
Для выполнения массива используются специальные команды.
На самом деле исполняемый массив - это конструкция подобная begin .. end в паскале.
Во вторую группу входят словари, стеки, файлы и т.д.
Я рассмотрю словари и стеки.
Словарь-это набор пар ключ-объект.
Когда программа встречает какое-либо выражение, то она сначала просматривает весь словарь и ищет его определение.
Если определение найдено, то если под данным ключом хранится испоняемый массив, то он выполняется, иначе в стек кладётся
соответсвующее выражение.
Стек-массив, у которого можно работать с верхними элементами (удалять и добавлять)
В языке будет несколько стеков:
стек данных-стек, где хранятся все объекты
запись
3 4 +
кладёт свои данные на вершину стека данных.
стек словарей-стек, где хранятся все словари.
То есть определений функции + может быть несколько: в стандартном словаре и в новом словаре, но программа выберет определение из самого верхнего
словаря в стеке, таким образом можно переопределить функцию +.
Алгоритмические структуры.
В каждом языке программирования есть структуры типа if .. then .. else .. , for .. ,while .. и тому подобное.
Наш язык не будет исключением.
вот пример условия
a 2 > { "a > b" message } if
это эквивалентно
if a>b then message("a > b")
Это пока всё, что я хотел рассказать!
Для: gerich
Ндам. Мне идея DB как то ближе. Помниш я тебе учебник присылал. ДБ это язык для самых обычных прльзователей. Он прост. А ты хочешь сделать мощный но сложный язак. Может интерфейс от ДБ , но стековая система?
А то

А еще лучше создать полувизуальный язык. Я видел как то визуальный компилятор ассемблера. Нечто вроде этого неплохая мысль. Язык невизуальный, но визуально настраиваемый (видны функции, но не обьекты типа кнопок.)
Ндам. Мне идея DB как то ближе. Помниш я тебе учебник присылал. ДБ это язык для самых обычных прльзователей. Он прост. А ты хочешь сделать мощный но сложный язак. Может интерфейс от ДБ , но стековая система?
А то
как то убито. Встречались с этом в С++. Не очень весело.a 2 > { "a > b" message } if
А еще лучше создать полувизуальный язык. Я видел как то визуальный компилятор ассемблера. Нечто вроде этого неплохая мысль. Язык невизуальный, но визуально настраиваемый (видны функции, но не обьекты типа кнопок.)
Как ты это предлагаешь сделать?Может интерфейс от ДБ , но стековая система
Объясняю.
Стек-это список состоящий из нескольких элементов, в котором разрешено работать с последним элементом.
То есть это массив, у которого нельзя взять произвольный элемент
вот пример стека
4
8
34
57
Мы можем положить на вершину стека какие-либо данные, например 67, тогда он будет таким
67
4
8
34
57
Для того, чтобы добраться до числа 8 надо убрать с вершины 67 и 4.
Когда кладёшь в стек число это называется push
А когда выталкиваешь с вершины число - pop
Вот в принципе и всё!
Стек-это список состоящий из нескольких элементов, в котором разрешено работать с последним элементом.
То есть это массив, у которого нельзя взять произвольный элемент
вот пример стека
4
8
34
57
Мы можем положить на вершину стека какие-либо данные, например 67, тогда он будет таким
67
4
8
34
57
Для того, чтобы добраться до числа 8 надо убрать с вершины 67 и 4.
Когда кладёшь в стек число это называется push
А когда выталкиваешь с вершины число - pop
Вот в принципе и всё!
Не знаю, интересно ли кому, но я уже по-немногу пишу язык на С++ (я его недели 2 назад изучил))).
Назову Redef, так как у него есть большие возможности по переопределению самого языка, в принципе его можно переопределить до синтаксиса любого языка, то есть там будет набор стандартных правил интерпретации кода, к которым можно добавлять свои. Вот так.
Просьба, если кто заинтерисован-пишите в контакт(www.vkontakte.ru Сергей [Герыч] Герасимов)
Назову Redef, так как у него есть большие возможности по переопределению самого языка, в принципе его можно переопределить до синтаксиса любого языка, то есть там будет набор стандартных правил интерпретации кода, к которым можно добавлять свои. Вот так.
Просьба, если кто заинтерисован-пишите в контакт(www.vkontakte.ru Сергей [Герыч] Герасимов)
Веселые вы ребята
)))
ИТОГО
хотите сделать "программу для расширения возможностей любого приложения"
Если обобщить постинги, то это значит:
1. Обеспечить по нажатию на клаву вызов вашей программы
2. Программа будет написана на вашем языке (в графическом либо текстовом представлении - дискуссия затянулась)
3. Программа будет иметь возможность вызывать сторонние ActiveX
Это все, что вы хотите сделать????
ИТОГО
хотите сделать "программу для расширения возможностей любого приложения"
Если обобщить постинги, то это значит:
1. Обеспечить по нажатию на клаву вызов вашей программы
2. Программа будет написана на вашем языке (в графическом либо текстовом представлении - дискуссия затянулась)
3. Программа будет иметь возможность вызывать сторонние ActiveX
Это все, что вы хотите сделать????
Для: GROMILA
Нет, они пытаются написать скриптовый движок, который можно прицепить к существующему приложению.
Нет, они пытаются написать скриптовый движок, который можно прицепить к существующему приложению.
Хм, нет?Нет, они пытаются написать скриптовый движок.
а чем "скриптовый движок" отличается от тех функций, которые я перечислил?
пункт 2 это и есть
это пункт 1который можно прицепить к существующему приложению
для чего? - это пункт 3
<!--QuoteBegin-GROMILA+21:10:2007, 17:50 -->
<span class="vbquote">(GROMILA @ 21:10:2007, 17:50 )</span><!--QuoteEBegin-->а чем "скриптовый движок" отличается от тех функций, которые я перечислил?
IMHO, бесполезная трата времени.
<span class="vbquote">(GROMILA @ 21:10:2007, 17:50 )</span><!--QuoteEBegin-->а чем "скриптовый движок" отличается от тех функций, которые я перечислил?
[snapback]82531" rel="nofollow" target="_blank[/snapback]
[/quote]Под твое описание подходит система плагинов. А создателям Redef очень хочется сделать именно макросы IMHO, бесполезная трата времени.
если хочется пусть делают, опыт создания прог всегда пригодится... и мне в том числе)
Ещё по теме
2
Поделиться: