Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Сергей

Pages: [1]
1
Архив / Ошибка PRINT c $ знаком
« on: December 07, 2012, 09:37:56 PM »
Функция PRINT не выводит строки в которых содержится символ "$". Выкидывает ошибку.
При этом
Code: (clickermann) [Select]
PRINT("$somevar") тоже не работает, даже если есть такая переменная.
Было бы неплохо если бы PRINT("$somevar") работало, и при этом можно было бы напечатать "$" знак.
Например с использованием экранирования:
Code: (clickermann) [Select]
PRINT("\$")

2
Предложения / Макросы
« on: November 13, 2012, 06:11:26 PM »
Макросы позволяют пользователю расширять синтаксис языка. Хоть они и сложны в реализации, их полезность очевидна.
Пример макроса:

Code: (clickermann) [Select]
#define echo printТут макросом просто создается псевдоним для функции print.

Code: (clickermann) [Select]
#define slclick(\1,\2,\3) lclick(\1,\2)\
waitms(\3)\
lclick(\1,\2)\
waitms(\3)

slclick(1000,1000,30)
А это уже пример по-сложнее.

Слеши с цифрами - переменные макроса. Можно ставить любое значение, в до 10.
Слеши в конце строки - перевод строки без потери "фокуса" макроса. Т.е. без них перенос строки означает конец макроса.

При запуске скрипта, препроцессором все это переводится в вид:
Code: (clickermann) [Select]
lclick(1000,1000)
waitms(30)
lclick(1000,1000)
waitms(30)
И уже исполняется.

В наше время, когда макросы есть даже в ассемблере, хотелось бы видеть их и в кликермане.
Да и какая-никакая замена пользовательских фун-ий.
Конечно навряд ли явтор сделает эту фичу в ближайших версиях, но пусть тут все равно висит эта "хотелка"  ::)

3
Предложения / Вкладки в редакторе
« on: November 05, 2012, 11:47:30 PM »
Предлагаю сделать в редакторе вкладки, чтобы можно было открывать несколько файлов.
А то если у тебя несколько инклудов, тебе приходится открывать или новый процесс кликермана, или пользоваться другим редактором.
Вот как например в нотепаде++:

4
Предложения / Конструкции break, continue
« on: November 04, 2012, 12:14:46 PM »
Собственно сабж.
break - выход из цикла
continue - переход к следующей итерации без завершения текущей

Намного удобней использования переменных-флагов и лишних условий.

5
Предложения / Синтаксический сахар
« on: October 29, 2012, 07:33:53 PM »
Хотелось бы видеть в языке такие операторы:
*= умножает переменную на заданное число
/= делит переменную на заданное число
+= прибавляет к переменной число
-= отнимает от переменной число

логические операторы:
<= оператор меньше-равно
>= оператор больше-равно

Ну и ещё блочные комментарии /* */

Да, знаю что есть кнопочки "добавить/удалить комментарий", но это все же удобней :). Как и все остальное.

6
Архив / (fixed) ROUND
« on: October 29, 2012, 05:44:26 PM »
ROUND(0.5) возвращает 0 вместо 1.
При этом ROUND(1.5) возвращает правильно, 2. 
ROUND(2.5) опять неправильно, 2 вместо 3
ROUND(4.5) возвращает правильно, 4
И так далее.

Прямо скачки какие-то.

7
Просто мастхев. Сейчас код можно разбить на части лишь подпрограммами, но они значений возвращать не могут. С помощью функций можно будет писать сторонние библиотеки расширяющие функционал, не внося изменения в саму реализацию языка.
Примерный синтаксис:
Code: [Select]
FUNC FACTORIAL($n)
   $i = 1
   $result = 1
   FOR($i, $i < ($n + 1))
      $result = $result * ($i - 1)
   END_CYC
   RETURN $result
END_FUNC

Несколько аргументов:
Code: [Select]
FUNC POW($value, $power)
   $i = 1
   $result = $value
   FOR($i, $i < $power)
      $result = $result * $value
   END_CYC
   RETURN $result
END_FUNC

Использование:
Code: [Select]
$value = FACTORIAL(7)
print($value)//5040

$value = POW(3, 3)
print($value)//27

8
Предложения / ELSE_IF
« on: October 19, 2012, 12:39:33 PM »
Конструкция "иначе если". Использование:
Code: [Select]
IF($somevar = 1)
   //code
ELSE_IF($somevar = 2)
   //code
ELSE_IF($somevar = 3)
   //code
END_IF
Удобно и красиво. Придаст языку больше законченности.

9
Как насчет нее? http://ru.wikipedia.org/wiki/Тернарная_условная_операция
Очень удобно, не надо лишних условий и временных переменных городить. Постоянно юзаю.

Пример:

Code: [Select]
$value = (($some_bool = 1) | ($second_bool = 1))  ? "Yes" : " No"

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

Для начала:
atan2($x, $y) - Для вычисление угла между точками. Использование: $angle = atan2($x1-$x2, $y1-$y2)
tan($angle) - Тангенс. Косинус и синус есть, а без тангенса куда?
atan($value) - Обратный тангенс. Как в лучших языках Европы.
acos($value) - Обратный косинус.
asin($vlaue) - Обратный синус.

C тригонометрическими разобрались. Теперь алгебраические:
abs($value) - Модуль числа. Очень удобно вычислить его одной функцией.
floor($value, $prec) - Округляет число вниз. round есть, а floor нету, как же так? $prec - точность как и в round($value, $prec).
ceil($value, $prec) - Округляет число вверх. Тоже в дополнение к round. $prec - точность.
min($value1, $value2[, ...]) - Возвращает самое маленькое число из всех переданных аргументов.
max($value1, $value2[, ...]) - Возвращает самое большое число из всех переданных аргументов.

Необязательные функции, наличие которых не критично, но хотелось бы:
pow($value, $exponent) - Возведение числа в степень.
nthrt($value, $n) - $n-ный корень числа. Вроде как и не нужен, но если вдруг понадобится то придется ужасные велосипеды городить.
ln($value) - Натуральный логарифм. Не знаю зачем он тут может пригодится, но во многих языках есть.

Так же в добавок ко всему этому хотелось бы в файле констант по умолчанию видеть:
PI - Число пи.

Необязательно:
PI_2 - Половина числа пи.
SQRT2 - Квадратный корень из двух. Используется достаточно часто, хоть можно вычислять напрямую с помощью функции sqrt.
SQTR1_2 - Квадратный корень из 1/2. Ещё может быть вычислен как sin(45). Из той же оперы.

Pages: [1]