Конституция Армении: Статья 18.1
Конституция Армении (Статья 18.1) закрепляет «исключительную миссию Армянской Апостольской Святой Церкви как национальной церкви в духовной жизни армянского народа, в деле развития его национальной культуры и сохранения его национальной самобытности»:
Cobra (язык программирования)

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

Материал из Википедии — свободной энциклопедии

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

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

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

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

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

class Utilsshareddef countChars(sasString,caschar)asint            """            Возвращает количество символов c в строке s.            """count=0forchinsifch==ccount+=1returncount

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

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

class Utilsshareddef countChars(sasString,caschar)asint            """            Возвращает количество символов c в строке s            """testassertUtils.countChars('',c'x')==0assertUtils.countChars('x',c'x')==1assertUtils.countChars('X',c'x')==0assertUtils.countChars(' ! ! ',c'!')==2bodycount=0forchinsifch==ccount+=1returncount

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

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

class Customervar_contactsasList<ofContact>getcontactsfrom vardef addContact(contactasContact)requirecontactnotin.contactscontact.namecontact.customerisnilensurecontact.customer==this.contacts.count==old.contacts.count+1bodycontact.customer=this_contacts.add(contact)

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

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

class Foodef bar(sasString?)ifs# same as "if s is not nil"printUtils.countChars(s,c'x')

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

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

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

Пример

Пример «Hello world»:

class Hellodef mainprint'Hello, world!'

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

class Fibdef compute(countasint)asList<ofint>issharedlist=List<ofint>()a,b=0,1foriincountlist.add(b)a,b=b,a+breturnlistclass Programdef maini=1forninFib.compute(10)print'[i]. [n]'i+=1

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

class Personvar_nameasStringvar_ageasintcueinit(nameasString,ageasint)_name,_age=name,agedef toStringasStringisoverridereturn'My name is [_name] and I am [_age] years old'

Примечания

  1. Krill, Paul (7 февраля 2008). Cobra language slithering to open source. InfoWorld. Архивировано 8 июня 2011. Дата обращения: 31 августа 2010.
  2. Language Presentation at Lang .NET Symposium 2008 (недоступная ссылка) Cobra Programming Language — Chuck Esterbrook

Ссылки

Cobra
Класс языкамультипарадигмальный:
объектно-ориентированный
Появился в2006
АвторЧак Эстербрук
Расширение файлов.cobra
Выпуск0.9.6 (23 декабря2013)
Система типовстатическая, строгая, динамическая, с автовыведением типов
Основные реализации.NET Framework, Mono
Испытал влияниеPython, Eiffel, C#, Objective-C, D
ЛицензияMIT
Сайтcobra-language.com