Родилась идея создать язык:
А) Простой
Б) Ультракороткий
Для начала давайте определим, для чего вообще нужен еще один из тысяч языков.
Основная цель — это создать очень компактный, черезвычайно легкий в понимании и отладке и при этом мощный язык программирования. На мой взгляд существующие языки в этом классе неоправданно сложны, напоминают шифр и просто мало популярны.
Кодить на нем будет действительно просто и быстро. Ну скажем микро программки вроде реверса, палиндрома, фибоначчи или факториала до 1 минуты.
А закодить шахматы займет ну может 1 час.
Пренебречь можно — скоростью работы интерпретатора, основная цель это разработка синтаксиса. Хороший и быстрый интерпретатор можно отложить на перспективу.
Условия разработки — проект интерпретатора будет разрабатываться как опен сорс на шарпе.
Использоваться будет — пока что в академических целях
ВВОДНАЯ В ЯЗЫК
Традиционно знакомство с создания простейшей программы начинается с Hello World!
На языке RS это будет выглядеть так:
'Hello World!
Но можно записать и короче ( это же ультракороткий язык ).
[Пустая строка]
Эта строка тоже выведет фразу Hello World!
Основные арифметические операции будут выглядеть традиционно:
(2+3)*8/2+1
Примечание: скобки пока в интерпретаторе не поддерживаются сделаю попозже
Обьявить обычную переменную можно так
Х:=5
Здесь мы обьявляем переменную и присваиваем ей значение 5
Обьявить массив целых чисел, допустим от 1 до 9 можно так:
1..9
Можно и динамически указать диапазон массива.
Х:=5
Arr:=1..X
Теперь мы можем написать свою первую программу, например нахождения факториала.
1..5\*
ДРУГИЕ ПРИМЕРЫ
Еще примеры программ:
//2. фибоначчи
E X:=1..10
E X.(I+2):=X.I+X.(I+1)
E X
//3. сортировка пузырьком
E X:=1..10
E X.I>X.J?X.I:=:X.J
E X
//4. палиндром
E X:=1,2,3,2,1
E B:=True
E B:=B&(X.(5/2-I)=X.(5/2+I))
E B
//5. revers
E X:=1..5
E X.(5/2-I):=:X.(5/2+I))
E X
//6. проверка на простое число
E X:=6
E X%2..(X-1)\<
23.12.10 14:12: Перенесено модератором из 'Философия программирования' — kochetkov.vladimir
26.09.11 16:41: Перенесено из 'Компьютерные священные войны'
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>Основная цель — это создать очень компактный, черезвычайно легкий в понимании и отладке и при этом мощный язык программирования. На мой взгляд существующие языки в этом классе неоправданно сложны, напоминают шифр и просто мало популярны. PC_>Кодить на нем будет действительно просто и быстро. Ну скажем микро программки вроде реверса, палиндрома, фибоначчи или факториала до 1 минуты. PC_>А закодить шахматы займет ну может 1 час.
Вот так появился перл...
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
PC_>>Основная цель — это создать очень компактный, черезвычайно легкий в понимании и отладке и при этом мощный язык программирования. На мой взгляд существующие языки в этом классе неоправданно сложны, напоминают шифр и просто мало популярны. PC_>>Кодить на нем будет действительно просто и быстро. Ну скажем микро программки вроде реверса, палиндрома, фибоначчи или факториала до 1 минуты. PC_>>А закодить шахматы займет ну может 1 час. O>Вот так появился перл...
На Перле можно закодить шахматы, например, за 1 час студенческой не набитой рукой ?
А пузырек, пускай пример и примитивный, можно закодить и протестить за одну минуту ?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, ononim, Вы писали:
PC_>>Основная цель — это создать очень компактный, черезвычайно легкий в понимании и отладке и при этом мощный язык программирования. На мой взгляд существующие языки в этом классе неоправданно сложны, напоминают шифр и просто мало популярны. PC_>>Кодить на нем будет действительно просто и быстро. Ну скажем микро программки вроде реверса, палиндрома, фибоначчи или факториала до 1 минуты. PC_>>А закодить шахматы займет ну может 1 час. O>Вот так появился перл...
Взял тут примерчики от перла
@array = (1,2,3,4); # записали в массив @array четыре элемента
print $array[2]; # напечатать третий элемент
у меня примерно так
array:= 1,2,3,4
array.2
Кстате шифтовые символы стараюсь не использовать, жалею программистов
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>На Перле можно закодить шахматы, например, за 1 час студенческой не набитой рукой ? PC_>А пузырек, пускай пример и примитивный, можно закодить и протестить за одну минуту ?
А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой?
По теме, думается такое чрезмерное сокращение синтаксиса не добавит программе понятности.
Получится еще один APL или типа того.
Вот пример краткого и понятного языка (на изучение уйдет минут 20),
создан для решения code-golf задач. Несмотря на то, что язык прост, программы на нем придется долго курить
Здравствуйте, diver_ru, Вы писали:
_>Здравствуйте, PC_2, Вы писали:
PC_>>На Перле можно закодить шахматы, например, за 1 час студенческой не набитой рукой ? PC_>>А пузырек, пускай пример и примитивный, можно закодить и протестить за одну минуту ?
_>А на вашем языке можно закодить шахматы за 1 час студенческой ненабитой рукой?
Я к этому иду. Даже есть приблизительные наброски. Код шахмат займет от 300 байт до 1 кб.
_>По теме, думается такое чрезмерное сокращение синтаксиса не добавит программе понятности. _>Получится еще один APL или типа того.
Поэтому APL, K, J языки ущербны. Они достаточно кратки чтобы выписать квик сорт в 40 байт, но "птичьи".
Используют юникод, может торчать вполне незакрывающаяся скобка и тп.
_>Вот пример краткого и понятного языка (на изучение уйдет минут 20), _>создан для решения code-golf задач. Несмотря на то, что язык прост, программы на нем придется долго курить
Вот возможность одновременно и простого (для кодинга) и короткого по обьемам исходников языка хотелось бы и обсудить.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, diver_ru, Вы писали:
_>Вот пример краткого и понятного языка (на изучение уйдет минут 20), _>создан для решения code-golf задач. Несмотря на то, что язык прост, программы на нем придется долго курить
Здравствуйте, Sinix, Вы писали:
S>Здравствуйте, diver_ru, Вы писали:
_>>Вот пример краткого и понятного языка (на изучение уйдет минут 20), _>>создан для решения code-golf задач. Несмотря на то, что язык прост, программы на нем придется долго курить
S>Это _до_ обфускатора, да? S>
Да, это ДО обфускатора.
Это недоязыки, ничего общего не имеющего с проста+краткость
Например Квик Сорт у меня выглядит примерно вот так, хоть пока и не работает в трансляторе:
//7. квик сорт
E ( S.I.J<S.I.(S.I.Len/2)?
S.(I*2+1):
S.(I*2+2)
),=S.I.J
Это ультрапонятный короткий и лаконичный код
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
E ( S.I.J<S.I.(S.I.Len/2)?
S.(I*2+1):
S.(I*2+2)
),=S.I.J
PC_>Это ультрапонятный короткий и лаконичный код
Без обид, но скобочки выше выглядят серьёзней
Если серьёзно, читаемость кода _без_ детального изучения спецификации куда важнее сэкономленных пикселей на экране. И лично я абракадабре выше предпочту
PC_>Например Квик Сорт у меня выглядит примерно вот так, хоть пока и не работает в трансляторе:
PC_>//7. квик сорт PC_>E ( S.I.J<S.I.(S.I.Len/2)? PC_> S.(I*2+1): PC_> S.(I*2+2) PC_> ),=S.I.J
PC_>Это ультрапонятный короткий и лаконичный код
Что в нем понятного? Такая же невменяемая каша. Имхо
PC_>>Это ультрапонятный короткий и лаконичный код S>Без обид, но скобочки выше выглядят серьёзней
Ну это чисто твое субьективное мнение.
Даже если у тебя на листике будет код той программы, 2 минуты тебе не хватит чтобы все эти закарючки просто без ошибочно набрать.
У меня же квик сорт можно написать за 2 минуты, с нуля. На пузырек мне например хватит 30 секунд. И это факт, я считаю.
S>Если серьёзно, читаемость кода _без_ детального изучения спецификации куда важнее сэкономленных пикселей на экране. И лично я абракадабре выше предпочту S>
S>list.Sort();
S>
S>Не так круто, да. Зато удобно и понятно.
А что мешает мне оформить функцию Сорт в функцию и ее также использовать ?
Просто код библиотеки будет занимать например не 1000 строк, а 200.
И написана будет быстрее раз в пять... И багов будет меньше, потому что код лаконичный, а не стеково-адресная арифметика в говнокоде...
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, Mamut, Вы писали:
PC_>>Например Квик Сорт у меня выглядит примерно вот так, хоть пока и не работает в трансляторе:
PC_>>//7. квик сорт PC_>>E ( S.I.J<S.I.(S.I.Len/2)? PC_>> S.(I*2+1): PC_>> S.(I*2+2) PC_>> ),=S.I.J
PC_>>Это ультрапонятный короткий и лаконичный код
M>Что в нем понятного? Такая же невменяемая каша. Имхо
Сейчас нет времени обьяснять, но обьяснить код можно на пальцах. Уж поверьте. Все очень и очень просто.
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
PC_>Ну это чисто твое субьективное мнение. PC_>Даже если у тебя на листике будет код той программы, 2 минуты тебе не хватит чтобы все эти закарючки просто без ошибочно набрать. PC_>У меня же квик сорт можно написать за 2 минуты, с нуля. На пузырек мне например хватит 30 секунд. И это факт, я считаю.
На любом популярном языке можно написать квиксорт за 2 минуты. И пузырек за 30 секунд. При чем тут вообще синтаксис?
Здравствуйте, Vintik_69, Вы писали:
PC_>>Ну это чисто твое субьективное мнение. PC_>>Даже если у тебя на листике будет код той программы, 2 минуты тебе не хватит чтобы все эти закарючки просто без ошибочно набрать. PC_>>У меня же квик сорт можно написать за 2 минуты, с нуля. На пузырек мне например хватит 30 секунд. И это факт, я считаю.
V_>На любом популярном языке можно написать квиксорт за 2 минуты. И пузырек за 30 секунд. При чем тут вообще синтаксис?
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН
Здравствуйте, PC_2, Вы писали:
PC_>Здравствуйте, Mamut, Вы писали:
PC_>>>//7. квик сорт PC_>>>E ( S.I.J<S.I.(S.I.Len/2)? PC_>>> S.(I*2+1): PC_>>> S.(I*2+2) PC_>>> ),=S.I.J
PC_>>>Это ультрапонятный короткий и лаконичный код
M>>Что в нем понятного? Такая же невменяемая каша. Имхо
PC_>Сейчас нет времени обьяснять, но обьяснить код можно на пальцах. Уж поверьте. Все очень и очень просто.
Т.е. ультрапонятности все-таки нет, раз нет времени на объяснение ультрапонятных вещей.
Здравствуйте, samius, Вы писали:
S>Здравствуйте, PC_2, Вы писали:
PC_>>Здравствуйте, Mamut, Вы писали:
PC_>>>>//7. квик сорт PC_>>>>E ( S.I.J<S.I.(S.I.Len/2)? PC_>>>> S.(I*2+1): PC_>>>> S.(I*2+2) PC_>>>> ),=S.I.J
PC_>>>>Это ультрапонятный короткий и лаконичный код
M>>>Что в нем понятного? Такая же невменяемая каша. Имхо
PC_>>Сейчас нет времени обьяснять, но обьяснить код можно на пальцах. Уж поверьте. Все очень и очень просто.
S>Т.е. ультрапонятности все-таки нет, раз нет времени на объяснение ультрапонятных вещей.
я же ответил, что этот пример пока не работает.
Могу обьяснить любой другой пример который работает на трансляторе.
Просто Квик Сорт я хочу переписать в терминах аспектной парадигмы, которую надеюсь внедрить в этом языке.
Это позволит действительно фантастически быстро кодить программы
"Вся страна играть в футбол умеет, лишь мы 11 человек играть не умеем"(с)КВН