Interested Article - Cobra (язык программирования)

Cobra высокоуровневый объектно-ориентированным язык программирования общего назначения. Разработан (англ.) для платформ .NET и Mono . Синтаксис языка основывается на синтаксисе Python , используются отступы для синтаксического выделения блоков кода. Язык поддерживает как статическую типизацию , так и динамическую , обеспечивает поддержку контрактного программирования и встроенное модульное тестирование . Имеет возможность использования лямбда-выражений , замыканий , списочных выражений и генераторов . Cobra обеспечивает быструю разработку и высокую производительность .

Реализация языка Cobra имеет открытый исходный код , выпущена под лицензией MIT 29 февраля 2008 года, позволяющей беспрепятственное использование и модификацию кода.

Синтаксис и семантика

Строки документации

Cobra предлагает механизм документирования кода DocString.

class Utils
    shared
        def countChars(s as String, c as char) as int
            """
            Возвращает количество символов c в строке s.
            """
            count = 0
            for ch in s
                if ch == c
                    count += 1
            return count

Модульное тестирование

Позволяет проверить на корректность отдельные класс, свойство или метод исходного кода программы.

class Utils
    shared
        def countChars(s as String, c as char) as int
            """
            Возвращает количество символов c в строке s
            """
            test
                assert Utils.countChars('', c'x') == 0
                assert Utils.countChars('x', c'x') == 1
                assert Utils.countChars('X', c'x') == 0
                assert Utils.countChars(' ! ! ', c'!') == 2
            body
                count = 0
                for ch in s
                    if ch == c
                        count += 1
                return count

Контрактное программирование

Обеспечивает корректные входные данные вызываемому компоненту, помогая поймать ошибки раньше, когда они легче диагностируются.

class Customer
    var _contacts as List<of Contact>
    get contacts from var
    def addContact(contact as Contact)
        require
            contact not in .contacts
            contact.name
            contact.customer is nil
        ensure
            contact.customer == this
            .contacts.count == old .contacts.count + 1
        body
            contact.customer = this
            _contacts.add(contact)

Слежка за null во время компиляции

Позволяет избежать во многих случаях ошибки нулевого указателя во времени выполнения. В Cobra null может быть передан если разрешен nullable тип: один суффикс знака вопроса (?).

class Foo
    def bar(s as String?)
        if s # same as "if s is not nil"
            print Utils.countChars(s, c'x')

Влияние других языков на Cobra

Cobra создавался под влиянием множества языков программирования:

IDE

Пример

Пример «Hello world»:

class Hello
    def main
        print 'Hello, world!'

Пример генератора чисел Фибоначчи:

class Fib
    def compute(count as int) as List<of int> is shared 
        list = List<of int>()
        a, b = 0, 1
        for i in count
            list.add(b)
            a, b = b, a + b
        return list

class Program
    def main
        i = 1
        for n in Fib.compute(10)
            print '[i]. [n]'
            i += 1

Пример класса:

class Person

    var _name as String
    var _age as int

    cue init(name as String, age as int)
        _name, _age = name, age

    def toString as String is override
        return 'My name is [_name] and I am [_age] years old'

Примечания

  1. Krill, Paul (2008-02-07). . InfoWorld . из оригинала 8 июня 2011 . Дата обращения: 31 августа 2010 .
  2. (недоступная ссылка) Cobra Programming Language — Chuck Esterbrook

Ссылки


Источник —

Same as Cobra (язык программирования)