23-10-2023
Класс языка: | |
---|---|
Появился в: | |
Автор(ы): | |
Расширение файлов: |
.cobra |
Релиз: | |
Типизация данных: | |
Основные реализации: | |
Испытал влияние: |
Python, Eiffel, C#, Objective-C, D |
Лицензия | |
Сайт: |
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)
Позволяет избежать во многих случаях ошибки нулевого указателя во времени выполнения. В 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 создавался под влиянием множества языков программирования:
Пример «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'
Основные языки программирования (сравнение • IDE • история • хронология) | |
---|---|
Используемые в разработке |
Ада • APL • Язык ассемблера • ActionScript • ABAP/4 • AutoIt • AWK • Бейсик • Си • Кобол • C++ • C# • Cω • Clarion • Clojure • ColdFusion • Common Lisp • D • dBase • Delphi • Eiffel • Erlang • Euphoria • F# • Форт • Фортран • Gambas • Go • Groovy • HAL/S • Haskell • Icon • Java • JavaScript • Limbo • Lua • Модула-3 • Object Pascal • Objective-C • OCaml • Oz • Parser • Паскаль • Компонентный Паскаль • Perl • PHP • PowerBASIC • Python • ПЛ/1 • Пролог • Ruby • Scala • Scheme • Smalltalk • SQL • PL/SQL • Tcl • Vala • Visual Basic (.NET) |
Академические | |
IEC 61131-3 |
Instruction List • ST • FBD • Ladder Diagram (LD) • SFC |
Прочие | |
Эзотерические | |
Визуальные |
Это заготовка статьи о компьютерных языках. Вы можете помочь проекту, исправив и дополнив её. |
Cobra (язык программирования).