Русская Википедия:Cobra (язык программирования)
Шаблон:Другие значения Шаблон:Язык программирования
Cobra — высокоуровневый объектно-ориентированным язык программирования общего назначения. Разработан Шаблон:Не переведено 3 для платформ .NET и Mono. Синтаксис языка основывается на синтаксисе Python, используются отступы для синтаксического выделения блоков кода. Язык поддерживает как статическую типизацию, так и динамическую, обеспечивает поддержку контрактного программирования и встроенное модульное тестирование. Имеет возможность использования лямбда-выражений, замыканий, списочных выражений и генераторов. 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)
Слежка за 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[2]
Cobra создавался под влиянием множества языков программирования:
- Python, Ruby — синтаксис
- C#, C++ — производительность работы
- Objective-C, Visual Basic — статические и динамические типы
- Eiffel, Spec# — метод контрактного программирования
- Spec#, iihtdioa, C# — слежка за null во время компиляции
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'
Примечания
Ссылки
Шаблон:Викиучебник Шаблон:Викисловарь
- Домашняя страница языка Cobra Шаблон:Wayback Шаблон:Ref-en
- Сайт проекта Cobra Шаблон:Ref-en
- News and thoughts about the Cobra programming language for .NET and Mono., Блог Чака Эстербрука Шаблон:Ref-en
- В мир открытых кодов вползает Cobra, Дэррил Тафт, PC Week
- «Кобра», потомок «Питона», Открытые системы
Шаблон:Языки программирования Шаблон:DotNET Шаблон:Compu-lang-stub Шаблон:Rq
развернутьПартнерские ресурсы |
---|
- ↑ Шаблон:Cite news
- ↑ Language Presentation at Lang .NET Symposium 2008Шаблон:Недоступная ссылка Cobra Programming Language — Chuck Esterbrook
- Страницы, использующие устаревший тег source
- Русская Википедия
- Объектно-ориентированные языки программирования
- Языки программирования платформы .NET
- Свободные компиляторы и интерпретаторы
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии