]]> ]]>
Править | Обсудить | История

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
Логотип Falcon

Примеры:

Hello, World!:

Пример для версий Falcon 0.9.6.6
printl('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.6
a = 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

]]>

Работа программистам