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

Cobra (язык программирования)
Cobra
Класс языка:

мультипарадигмальный:
объектно-ориентированный

Появился в:

2006

Автор(ы):

Чак Эстербрук

Расширение файлов:

.cobra

Релиз:

0.9.3 (1 декабря 2012)

Типизация данных:

статическая, строгая, динамическая, с автовыведением типов

Основные реализации:

.NET Framework, Mono

Испытал влияние:

Python, Eiffel, C#, Objective-C, D

Лицензия

MIT

Сайт:

http://cobra-language.com/

Cobra — высокоуровневый объектно-ориентированным язык программирования общего назначения. Разработан Чаком Эстербруком (англ. Charles Esterbrook) для платформ .NET и Mono. Синтаксис языка основывается на синтаксисе Python, используют отступы для синтаксического выделения блоков кода. Язык поддерживает как статическую типизацию, так и динамическую, обеспечивает поддержку контрактного программирования и встроенное модульное тестирование. Имеет возможность использования лямбда-выражений, замыканий, списочных выражений (англ. list comprehension) и генераторов (англ. generators). Cobra обеспечивает быструю разработку и высокую производительность[1].

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)

Cлежка за nil во время компиляции

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

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

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

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

  • Python, Ruby — синтаксис
  • C#, C++ — производительность работы
  • Objective-C, Visual Basic — статические и динамические типы
  • Eiffel, Spec# — метод контрактного программирования
  • Spec#, iihtdioa, C# — слежка за nil во время компиляции

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. Cobra language slithering to open source, InfoWorld (Feb 7, 2008). Проверено 31 августа 2010.
  2. Language Presentation at Lang .NET Symposium 2008 Cobra Programming Language — Chuck Esterbrook

Ссылки

Логотип Викисловаря
В Викисловаре есть статья «cobra»



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Cobra (язык программирования)" в других словарях:

  • Scala (язык программирования) — У этого термина существуют и другие значения, см. Scala. Scala Класс языка: Мультипарадигмальный: функ …   Википедия

  • Компилируемый язык программирования — Компилируемый язык программирования  язык программирования, исходный код которого преобразуется компилятором в машинный код и записывается в файл, с особым заголовком и/или расширением, для последующей идентификации этого файла, как… …   Википедия

  • Cobra (значения) — Cobra: Cobra язык программирования. Cobra алгоритм симметричного блочного шифрования …   Википедия

  • Список языков программирования — Списки языков программирования Алфавитный По категориям Хронологический Генеалогический Цель этого алфавитного списка языков программирования состоит в том, чтобы дать полный перечень всех существующих языков программирования, как используемых в… …   Википедия

  • Список .NET-языков — Эта страница информационный список. Языки программирования .NET (Языки с поддержкой CLI или CLI языки)  компьютерные языки программирования, используемые для создания библиотек и программ, удовлетворяющих требованиям Comm …   Википедия

  • C Sharp — У этого термина существуют и другие значения, см. C. Правильный заголовок этой статьи  C#. Он показан некорректно из за технических ограничений. C# Семантика: императивный Класс языка: мультипарадигменный: объектно ориентированный,… …   Википедия

  • F Sharp — У этого термина существуют и другие значения, см. F (значения). Правильный заголовок этой статьи  F#. Он показан некорректно из за технических ограничений. F# Класс языка: мультипарадигменный: функциональное, объектно ориентированное,… …   Википедия

  • DuAL — Семантика: Предметно ориентированный язык программирования Появился в: 2004 Автор(ы): Тимченко Максим Типизация данных: динамическая Испытал влияние …   Википедия

  • .NET Framework — Для термина «.NET» см. другие значения. .NET Framework Тип Комп …   Википедия

  • Boo — Семантика: объектно ориентированная Появился в: 2003 Автор(ы): Родриго Баррето де Оливейра Релиз: 0.9.4 / 21 янв …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»