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