Сегодня на Hacker News наткнулся на пост о (похоже очень) новом языке "ooc". Бросил на день все дела, занялся ковырятельством — уж больно интересно выглядит.
Итак, "ooc — это современный, объектно-ориентированный,функционально(ватый) , высокоуровневый, низкоуровневый, секси язык программирования". (Именно секси его и представляют разработчики, ну а я бы добавил что еще и "компилируемый")
По сути — ooc — транслятор языка высокого уровня в C со сборщиком мусора.
Как выразился один из посетителей сайта: "ooc для C, — это как Scala для Java" (jimbokun@HN).
Обязательный «Hello, World» на ooc:
hello.ooc:
на выходе hello.c и hello.exe.
ooc-компилятор транслирует это в c-код и использует доступный c компилятор (gcc, mingw, icc, tinycc) чтобы сделать из этого hello.exe (или ./hello). Поддержка tinycc заявлена, но в реальности ждем поддержки C99 в самом tinycc (автор обещал сделать обходные пути, но пока не работает), поэтому наслждаемся пока что довольно неслабого размера .exe'шниками (gcc от mingw других не делает).
Итак, что у нас уже есть в языке: классы, объекты, строгая типизация, угадывание типов (
Как сказал товарищ varjag@HN: «Я думаю это розыгрыш, сделанный пользователями Ruby, но нигде этого в тексте не вижу.» Нет, этот язык существует на самом деле. Примеры, линки, установка, подводные коряги — под катом…
Итак, "ooc — это современный, объектно-ориентированный,
По сути — ooc — транслятор языка высокого уровня в C со сборщиком мусора.
Как выразился один из посетителей сайта: "ooc для C, — это как Scala для Java" (jimbokun@HN).
Обязательный «Hello, World» на ooc:
hello.ooc:
"Hi, softer world =)" println()
на выходе hello.c и hello.exe.
ooc-компилятор транслирует это в c-код и использует доступный c компилятор (gcc, mingw, icc, tinycc) чтобы сделать из этого hello.exe (или ./hello). Поддержка tinycc заявлена, но в реальности ждем поддержки C99 в самом tinycc (автор обещал сделать обходные пути, но пока не работает), поэтому наслждаемся пока что довольно неслабого размера .exe'шниками (gcc от mingw других не делает).
Итак, что у нас уже есть в языке: классы, объекты, строгая типизация, угадывание типов (
n := "Beer" length()
), chaining (.dothis().dothat()
), совместимость с c-библиотеками, абстрактные классы, шаблоны из C++, списки, разреженные(sparse) списки, хеши (ArrayList, SparseList, HashMap), for (i in list) { ... }
, обертки для c-шных функций и классов, перегрузка операторов, полиморфизм, сборщик мусора (отключаемый), import file/name (не нужны .h, но .h можно использовать как extern), closures, eiffel's contracts, исключения, reflections, pattern matching, ranges, ternary operator, bindings, generics, coroutines, GTK, SDL, OpenGL, GLU, GLUT bindings… Как сказал товарищ varjag@HN: «Я думаю это розыгрыш, сделанный пользователями Ruby, но нигде этого в тексте не вижу.» Нет, этот язык существует на самом деле. Примеры, линки, установка, подводные коряги — под катом…