Oberon space
General Category => Общий раздел => Тема начата: valexey_u от Июль 28, 2013, 01:48:39 pm
-
Услышал недавно о замечательной библиотеке для С99: http://libcello.org/ . Привносит в Си элементы современных языков с приятным сахарком. Да, это именно либа, это не внешний препроцессор или какая-то еще тулза.
Пример кода:
/* Example libCello Program */
#include "Cello.h"
int main(int argc, char** argv) {
/* Stack objects are created using "$" */
var int_item = $(Int, 5);
var float_item = $(Real, 2.4);
var string_item = $(String, "Hello");
/* Heap objects are created using "new" */
var items = new(Array, 3, int_item, float_item, string_item);
/* Collections can be looped over */
foreach (item in items) {
/* Types are also objects */
var type = type_of(item);
print("Object %$ has type %$\n", item, type);
}
/* Heap objects destroyed with "delete" */
delete(items);
}
-
Выглядит как JavaScript...
Не знаю... нужен ли такой сахар.
-
Выглядит как JavaScript...
Не знаю... нужен ли такой сахар.
В смысле синтаксиса или в плане семантики? Смущает var?
-
Сомневаюсь, что эта либа будет реально использоваться в сишных проектах:
во-первых, большинство таких проектов тянутся с тех пор ещё, когда си был в лучшем случае версии C89;
во-вторых, вечный аргумент оберонщиков -- неизвестно, какой код и какие накладные расходы даст эта библиотека, а это очень важно для сишных проектов, иначе зачем их делать на сях?
-
Сомневаюсь, что эта либа будет реально использоваться в сишных проектах:
во-первых, большинство таких проектов тянутся с тех пор ещё, когда си был в лучшем случае версии C89;
Понятно что это для новых проектов.
во-вторых, вечный аргумент оберонщиков -- неизвестно, какой код и какие накладные расходы даст эта библиотека, а это очень важно для сишных проектов, иначе зачем их делать на сях?
Фигня там кода мало и он весь элементарный. В плане накладных расходов библиотека абсолютно прозрачна.
-
http://libcello.org/documentation/types
Classes
A Class in Cello is a typeclass - better known as an interface.
These are defined to allow for overloaded or generic functions which can work on multiple data types.
Types
A Type is an object which implements a number of Classes.
Классы типов в сях? о_О Уже интересно...
Жаль что документация не полная -- есть места "Coming Soon..."
-
На счет типов классов и проч советую не обольщаться - у меня ощущение сложилось, что там преимущественно динамическая типизация.