Oberon space

General Category => Общий раздел => Тема начата: valexey_u от Июль 28, 2013, 01:48:39 pm

Название: [C99] High level programming in C.
Отправлено: 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);
}
Название: Re: [C99] High level programming in C.
Отправлено: Madzi от Июль 28, 2013, 02:45:43 pm
Выглядит как JavaScript...
Не знаю... нужен ли такой сахар.
Название: Re: [C99] High level programming in C.
Отправлено: valexey_u от Июль 28, 2013, 03:17:00 pm
Выглядит как JavaScript...
Не знаю... нужен ли такой сахар.
В смысле синтаксиса или в плане семантики? Смущает var?
Название: Re: [C99] High level programming in C.
Отправлено: Geniepro от Июль 30, 2013, 08:09:54 am
Сомневаюсь, что эта либа будет реально использоваться в сишных проектах:

во-первых, большинство таких проектов тянутся с тех пор ещё, когда си был в лучшем случае версии C89;

во-вторых, вечный аргумент оберонщиков -- неизвестно, какой код и какие накладные расходы даст эта библиотека, а это очень важно для сишных проектов, иначе зачем их делать на сях?
Название: Re: [C99] High level programming in C.
Отправлено: valexey_u от Июль 30, 2013, 08:21:20 am
Сомневаюсь, что эта либа будет реально использоваться в сишных проектах:

во-первых, большинство таких проектов тянутся с тех пор ещё, когда си был в лучшем случае версии C89;

Понятно что это для новых проектов.

Цитировать
во-вторых, вечный аргумент оберонщиков -- неизвестно, какой код и какие накладные расходы даст эта библиотека, а это очень важно для сишных проектов, иначе зачем их делать на сях?
Фигня там кода мало и он весь элементарный. В плане накладных расходов библиотека абсолютно прозрачна.
Название: Re: [C99] High level programming in C.
Отправлено: Geniepro от Июль 30, 2013, 05:00:09 pm
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..."
Название: Re: [C99] High level programming in C.
Отправлено: valexey_u от Июль 30, 2013, 06:13:52 pm
На счет типов классов и проч советую не обольщаться - у меня ощущение сложилось, что там преимущественно динамическая типизация.