Falcon
- Дата создания:
- 2003
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .ftd, .fal, .fam
- Реализации и версии (свернуть все | развернуть все):
Falcon (назван в честь Giovanni Falcone, итальянского судьи, убитого мафией) — мультипарадигменный язык программирования. Объединяет в себе шесть основных парадигм, включая довольно редкие табличную и обмен сообщениями.
Прототип языка, скриптовый язык HASTE (от Haste Advanced Simple Text Evaluator) был создан Giancarlo Niccolai в 2002 году. Позднее проект вырос в полноценный язык, и в 2008 году перешел в open source. В настоящее время вокруг языка сформировалось небольшое сообщество активных разработчиков.
Язык предназначен как для создания автономных приложений, так и для встраивания в другие приложения. Код программ транслируется в инструкции для виртуальной машины, которую можно рассматривать и как независимый интерпретатор, и как инструмент для встраивания в программы на других языках.
Парадигмы:
- процедурная. Falcon поддерживает процедуры, именованную/позиционную передачу аргументов и ряд других возможностей, а также стандартный набор операторов: циклы, условные переходы и т.д. “По умолчанию” используется именно эта парадигма.
- функциональная. Falcon — язык второго порядка, т.е. функции в нем являются объектами первого порядка и могут передаваться как аргументы в другие функции. Кроме того, Falcon реализует механизм под названием Sigma-evaluation, позволяющий писать программы в полностью функциональном стиле, без использования процедурных элементов. Функциональные последовательности описываются массивами, что позволяет динамически создавать и изменять их в процессе выполнения программы.
- объектно-ориентированная. Falcon поддерживает классическое объектно-ориентированное программирование с классами, наследованием (множественное наследование допускается при определенных условиях), перегрузкой операторов и т.д. Структура любого экземпляра класса неизменна, но за счет функций первого порядка его поведение можно изменять.
- прототипная. Также Falcon поддерживает разновидность ООП, в которой отсутствует понятие классов, а структура экземпляров может меняться в процессе выполнения программы.
- табличная.
- обмен сообщениями.
Логотип Falcon
Ссылки:
Примеры:
Hello, World!:
Пример для версий Falcon 0.9.6.6printl('Hello, World!')
Факториал:
Пример для версий Falcon 0.9.6.6Используется итеративное определение факториала.
fact = 1
for i in [0:16]
printl (i, "! = ", fact)
fact *= (i+1)
end
Факториал:
Пример для версий Falcon 0.9.6.6Используется рекурсивное определение факториала.
function fact(n)
if n==0: return 1
return n * fact(n-1)
end
for i in [0:16]
printl (i, "! = ", fact(i))
end
Числа Фибоначчи:
Пример для версий Falcon 0.9.6.6Используется рекурсивное определение чисел Фибоначчи.
function fib(n)
if n <= 2 : return 1
return fib(n-1) + fib(n-2)
end
for i in [1:17]
print (fib(i), ", ")
end
printl ("...")
CamelCase:
Пример для версий Falcon 0.9.6.6В этом примере показана посимвольная обработка введенной строки.
text = input().lower()
cc = ""
was_space = true
for i in [ 0 : text.len() ]
if text[i] >= 'a' and text[i] <= 'z'
if was_space
cc += text[i].upper()
else
cc += text[i]
end
was_space = false
else
was_space = true
end
end
printl(cc)
Квадратное уравнение:
Пример для версий Falcon 0.9.6.6a = int(input())
if a == 0
printl("Not a quadratic equation.")
exit()
end
b = int(input())
c = int(input())
d = b ** 2 - 4 * a * c
if d == 0
printl("x = " + (-b / 2.0 / a))
else
if d > 0
printl("x1 = " + ((-b + d**0.5) / 2.0 / a))
printl("x2 = " + ((-b - d**0.5) / 2.0 / a))
else
printl("x1 = (" + (-b / 2.0 / a) + "," + ((-d)**0.5 / 2.0 / a) + ")")
printl("x2 = (" + (-b / 2.0 / a) + "," + (- ((-d)**0.5 / 2.0 / a)) + ")")
end
end
Комментарии
]]>blog comments powered by Disqus
]]>