IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> TextFuck by FBX, Бредовый язык программирования
FBX
сообщение 05 Jan 2011, 03:13 (Сообщение отредактировал FBX - 07 Jan 2011, 23:13)
Сообщение #1

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Вот делать мне нечего, решил наваять. Я даже не знаю, на что это похоже.
http://mutnosoft.ru/d/textfuck.rar

Основа языка - строки и односимвольные функции.
Инструкция состоит из 1 символа (оператора), аргументов - строк, перечисленных через запятую, и точки с запятой в конце.
Переменные тоже строки. За основу для строк взят делфовский AnsiString - динамические строки неограниченной длины.

Интерпретатор работает в том числе и из командной строки. Справка в исходном коде:

CODE

//интерпретатор нехитрого языка
//язык состоит из односимвольных операторов, и текстовых параметров через ''
//все остальные символы игнорируются
//запись: # '','', ... ,'';
// 'abc''def' означает строку abc'def
//если оператор требует несколько входных значений, они записываются через ,
//точка с запятой финализирует запись
//операторы являются по сути функциями, и их результат такой же текстовый
//строки в аргументе конкатенируются при последовательной записи
//можно указывать голый текст и вызов функций
//пример записи вложенного вызова: # 'abc',(# 'fff','321','333';);
//скобки изначально игнорируются интерпретатором и служат для наглядности

//операторы можно перегружать на вызов функции с определенным именем
//перегрузить можно любой из 256 символов

//@ - символ разметки функций в модуле
// # func, ? , ... , ? ; - вызов функции func , далее идут аргументы
// = var, value; - присвоение переменной var значения value (результат = value)
//(все переменные текстовые) (если переменной нет, она создается)
//извлечение из ? номера перем. - цифры означает обращение к аргументу функции
//нумерация аргументов - с нуля, результат сохраняется в нулевой
//единственный способ записать результат: =,result; - первый аргумент пустой
// = var; - уничтожение переменной (либо ничего, если ее нет)
// =; - очистка локальных переменных функции
// при вызове функции число переменных сохраняется, все переменные, что были
// созданы под номерами выше этого числа, уничтожаются
// самоочистки не происходит!
// = var, value, ; - создать переменную даже если такая уже существует
// \ text; - вывод на экран текста text
// ^; - получить результат ввода
// ? var; - извлечение значения переменной var
// ?; - извлечь код текущей функции
// ?'0'; ?'1'; и т.д. - извлечь аргумент функции (возвр. пуст.стр. если его нет)
// ?'-1'; - извлечь количество аргументов функции (любое отрицательное число)
// ? func,(); - извлечь код функции
// ! op,func; - переопределить op[1] на функцию func (возвращает бывшую функцию)
// ! op; - обнулить переопределение (возвращает бывшую функцию)
// $ name; - загрузить функции модуля name и выполнить его код, если он есть
// в модуле сначала идет код, потом @funcname1; @funcname2; и т.д. (разметка)
// ~ func, code; - создать или перезаписать код функции
// ~ func; - уничтожение функции (либо ничего, если ее нет)
// | code; - запускает код, указанный в code
// | str, code; - если строка не пустая, запускает code
// | str1, str2, code; - если str1 равно str2, запускается code
// | str1, str2, code, else; - то же самое, но else запускается если не равны
// _; - ничего не делает
// _ str; - если строка не пустая, прерывает функцию
// _ str1, str2; - если строки равны, прерывает функцию
// _ str1, str2, ; - если строки не равны, прерывает функцию
// /; - возвращает перевод строки
// / num; - возвращает символ с кодом num (по модулю 256)
// / str,count; - возвращает str, повторяющийся count раз
// / str,pos,char; - возвращает str, в котором символ pos заменен на char
// : symb; - возвращает код символа
// : sub, str; - возвращает позицию подстроки в строке (0 если нет)

// * o, args, ... , args; - тут будут системные функции
// & o, args, ... , args; - тут будут вещественные функции
// . str; - возвращает длину строки
// . str,pos; - возвращает символ с номером pos (нумерация с единицы)
// . str,pos,len; - возвращает подстроку начиная с pos длины len
// 0; 1; ... 9; - извлечь значение строковых "регистров"
// 0,value; 1,value; ... 9,value; - изменить значение строковых "регистров"

// > cond, str, code; - цикл с предусловием:
// пока (результат выполнения cond) не равен (str), выполнять code
// < cond, str, code; - цикл с послеусловием:
// выполнять code, если (результат выполнения cond) = (str), выйти

// не использованы: [, ], +, -

// целочисленные (работают через 64bit signed):
// % a,'+',b; - сложение
// % a,'-',b; - вычитание
// % a,'*',b; - умножение
// % a,'/',b; - целочисленное деление
// % a,'%',b; - остаток от деления
// % a,'&',b; - логическое и
// % a,'|',b; - логическое или
// % a,'^',b; - исключающее или
// % a,'\',b; - исключающее или (синоним)
// % a,'>>',b; - битовый сдвиг вправо
// % a,'<<',b; - битовый сдвиг влево
// % a,'>',b; - проверка (если больше, то возвращает '1', иначе '0')
// % a,'>=',b;
// % a,'<',b;
// % a,'<=',b;
// % a,'<>',b;
// % a,'><',b;


--------------------
using namespace fbx;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
ChASnock
сообщение 05 Jan 2011, 12:37
Сообщение #2

Geoff Snock | 茶スノック
Сообщений: 533
Спасибо сказали: 248 раз




И что вас сподвигло на создание данного яп и этой темы?


--------------------
гномов сопротивляются заклинанию!

Цитата
Фейспалмы свои себе в сракотан засуньте, если больше сказать нечего.
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 05 Jan 2011, 14:53
Сообщение #3

Etoprostostatus
Сообщений: 8 569
Спасибо сказали: 15932 раза




Захотел - создал. Некоторым бОльшего и не надо.


--------------------
- Да ну!?
- Horn of the Argali гну!


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Aleee
сообщение 05 Jan 2011, 15:06
Сообщение #4

Immortal
Сообщений: 2 149
Спасибо сказали: 697 раз




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


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 05 Jan 2011, 16:19
Сообщение #5

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Обновил. Впринципе, на нем уже можно реализовывать длинную арифметику crazy.gif
Первый пост лень обновлять.


--------------------
using namespace fbx;


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 06 Jan 2011, 11:08
Сообщение #6

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




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


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
tolich
сообщение 06 Jan 2011, 11:18
Сообщение #7

😸🧡✊✌️
Сообщений: 16 368
Спасибо сказали: 3187 раз




Упущенная выгода относится к издержкам, не?


--------------------
Я слежу за тобой!
* tolic.narod.ru

Цитата
Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел.
Борис "Бонус" Репетур, "От винта!", выпуск 38.
Go to the top of the pageAdd Nick
 
+Quote Post
Aleee
сообщение 06 Jan 2011, 12:14
Сообщение #8

Immortal
Сообщений: 2 149
Спасибо сказали: 697 раз




Так вот кто там оставляет отзывы о моем курсаче smile.gif

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

FBX, оченно извинияюся за превращение темы в полигон псевдонаучных дебатов.
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 06 Jan 2011, 13:21
Сообщение #9

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




А все из-за того, что польза от этого проекта неочевидна.

Ну да и фиг с ней. Проще надо как-то относиться.

SQL
@delete;
= 's',?'0';,(); //save A (LOCAL)
=,(.(??'s';;),(?'1';),(?'2';)););
= (?'s';),
(. (??'s';;),'1',(% (?'1';),'-','1';);)
(. (??'s';;),(% (?'1';),'+',(?'2';);),(.??'s';;;);)
;
=; //delete locals


Вот то же самое на псевдо-коде:

1) {create always} s = get_value (arg(0))
2) result = copy ( get_value ( get_value (s)), arg(1), arg (2) )
3) get_value (s) = copy (get_value (get_value (s)), 1, get_value(1) - 1) + copy (get_value (get_value (s)), arg(1) + arg(2) , str_len (get_value (get_value (s))) )
4) delete local variables


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
Berserker
сообщение 06 Jan 2011, 17:04
Сообщение #10

Immortal
Сообщений: 1 468
Спасибо сказали: 1153 раза




Цитата
Так вот кто там оставляет отзывы о моем курсаче

Внимательно читал. У тебя литературный талант. Вместо шняги простой и понятный текст, умеренно изобилующий англицкими терминами ) Хотя про развитую демократичную страну Беларусь был явный загиб. Но плюс за то, что применена математика, в частности, корреляционный анализ.

Цитата
я просто говорю, что польза - она разная бывает

В целом да, интерпритаторы - это хорошо, но когда они не брейнфаковские (


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 07 Jan 2011, 23:17
Сообщение #11

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Доработал малость, исправил ошибки.
В модулях реализованы некоторые функции:

long_add (длинное сложение)
long_sub (длинное вычитание с дополнением)
long_mul (длинное умножение на число до 2^63)
long_fac (длинный факториал)

fac (обычный факториал)

delete, insert для работы со строками

inc, dec (увеличить/уменьшить)
div (разделить нацело с остатком)
loop, loop_down (циклы)


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 08 Jan 2011, 13:49
Сообщение #12

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата(FBX @ 07 Jan 2011, 23:17) *
на число до 2^63
маловато будет.
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 08 Jan 2011, 20:21
Сообщение #13

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Это умножение длинного числа на короткое


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
Etoprostoya
сообщение 08 Jan 2011, 20:36
Сообщение #14

Etoprostostatus
Сообщений: 8 569
Спасибо сказали: 15932 раза




А что, умножение длинного на длинное не организуешь? smile.gif


--------------------
- Да ну!?
- Horn of the Argali гну!
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 08 Jan 2011, 21:39
Сообщение #15

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




Да лень что-то...


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 08 Jan 2011, 23:34
Сообщение #16

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




и какое диапазон чисел можно поместить в твои длинные числа?
Go to the top of the pageAdd Nick
 
+Quote Post
FBX
сообщение 09 Jan 2011, 00:41 (Сообщение отредактировал FBX - 29 Aug 2012, 23:37)
Сообщение #17

🐓🐓🐓🐓🐓🐓🐓
Сообщений: 1 845
Спасибо сказали: 1570 раз




любой, насколько памяти хватит..

666! вычисляется 30 секунд, пичаль.


--------------------
using namespace fbx;
Go to the top of the pageAdd Nick
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30 June 2025 - 19:18
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика