Flamberg - это компилируемый в машинный код строго типизированный императивный язык программирования. Его модель памяти, владения и управления временем жизни не использует сборщик мусора. В общем, он в одной нише с Си, С++ и Rust.
Примеры
Hello worldКуда же без него:
"Hello world"
Более сложный пример - сделать запрос в mysql и вывести результат в консоль
mySql.connect dbName user password
..query "
select name, id
from users
limit 100, {request.page}
..map: u "
<li id="u_{u.id}">
{u.name}
</li>
..echo
Или инвертировать старший бит в памяти по адресу 0x12345
+unsafe ptr(0x12345).byte ^= 0x80
Или сделать графическую сцену приложения и нарисовать ее на экране
+canvas
; определим классы
Circle = : x y r color #
paint: canv
canv.fillEllipse x-r y-r x+r y+r color
Rectangle = : x y w h color #
paint: canv
canv.fillRect x y x+w y+h color
Group = x y items #
paint: canv
canv.translate x y
for items: i
i.paint canv
canv.translate -x -y
; создадим объекты
root = Group 10 10 []
Circle 100 100 40 color.red
Group 100 100 []
Rectangle 5 5 20 40 color.black
Circle 20 20 20 color.red
root.paint desktopWindow.canvas
Вначале пара слов о названии.
Фламбергом называется меч или шпага с волнистым (огненным) лезвием.
Утонченное эффективное оружие средневековья и нового времени.
Вначале запрещенное католической церковью а ныне ставшее церемониальным оружием ватиканской гвардии.
Меч фламберг мог прорубить рыцарский доспех.
Фламберги наносили страшные незаживающие раны и считались крайне негуманным оружием.
Итак фламберг - элегантное и жестокое оружие былых времен.
В далекой-далекой галактике фламбергом вооружен Кайло Рен.
Язык программирования. Што, опять?
Новый язык программирования появляется каждый второй день. И каждый новый язык приносит какие-то новые фишки и идеи.
Я решил построить новый язык не на добавлении новых фич, а на максимальном сокращении количества концепций. Пока удается обойтись пятью базовыми строительными блоками:
- именование элементов и обращение к элементу по имени
- определение и вызов функции-замыканий
- атомы и диспетчеризация
- модули и импорт
- строгая типизация и приведение типа по образцу
Через эти пять концепций определяются управляющие конструкции, вложенные области видимости, все виды переменных и ссылок, структуры данных, классы и интерфейсы.
Но обо всем этом по порядку в следующих постах.
В каком состоянии проект
Дизайн языка в общих чертах закончен.
Начата разработка компилятора.
В следующих постах будет освещаться прогресс работы и основные концепции языка.
Еще пара примеров
; fizz-buzz
for 0..101: i
echo
if i%3:
if i%5 :i.toString :"buzz"
else:
if i%5 :"fizz" :"fizzbuzz"
;
; parse text file, filter its content, order by rules and format output as xml
;
inputFile "text.txt"
..readLines
..map: line
name = line.getTill "|"
age = line.getInt
##
..filter: r r.age > 30
..orderBy: r r.name
..map: r "
<tr>
<th>{r.name}</th>
<td>{r.age}</td>
</tr>
..echo
No comments:
Post a Comment