LINUX.ORG.RU

Новый язык программирования


0

0

Вот пишу субж (и не отговаривайте).
В идеале - наш ответ COM'у - возможность замены библиотек
+ кросплатформенность и все такое.
Уже на 1/2 написал - он уже работает и компиляется.

Вопрос в том кто считает чего должно быть в языке
(у него сейчас совсем минимальный набор функциональности)
- нужны ли templates, preprocessor и тд
- как должен он соединяться с C.
- стоит ли делать аналоги int * (прямых реальных указателей)
★★★

может запейстишь спеку?

lg ★★
()

Спецификации пока жестко написанной нету
Вратце:
работает через механизм позднего связывания.
то есть загружаются библиотеки после чего связывается
все что нужно выстраивается vtable (в C++ vtable
строится во время компиляции)
Приду домой -(при себе просто нету) - закачаю yacc'овский
файл.

Щас есть ::std::vector (хранит потомков ::std::object) - вопрос 
надо ли делать ::std::vector_int хранящий непосредственно int *
По скорости это должно помочь но как отразится на
самом языке...

vahvarh ★★★
() автор топика

шаблоны нужнейшая вещь :)

anonymous
()

Посмотри на Eiffel (www.eiffel.com) - там есть много правильных идей которые могут тебе пригодиться и в твоем языке.

anonymous
()

По поводу кошерной реализации generic programming, более правильной, чем всякие там позорные шаблоны - смотреть на Lua и Forth. Так же ОБЯЗАТЕЛЬНО знакомство с ML (именно из него Страус тырил идеи, да только херово у страуса получилось, глуповат дядька оказался).

Antichrist
()

To antichrist: Вот уж кого не ожидал услышать! ;) Дай что ли ссылки тогда уж на ML

To anoymous1: Шаблоны - это красиво - но ты хоть раз смотрел на размер откомпилированной программы? Шаблоны - это именно что _шаблоны_ по которым строятся классы - в результате vector<int> и vector<unsigned int> - это два разных класса каждый из которых занимает место. Кроме того vector<int> в c1.cpp и vector<int> в c2.cpp - это (зачастую) два "разных" класса - в резултьтате программа весит вместо 20 кил пол-мега. Если ты предложишь хороший метод воплощения шаблонов чтобы при этом не страдал размер файлов - буду только рад.

To anonymous2: Насчет eiffel - что конкретно - у меня (к сожалению) нет времени разбираться в новом языке от начала до конца (особенно в его фичах - научиться писать на новом языке можно за неделю а научиться на нем писать используя его особенности - это год нужен).

Заранее всем спасибо!

vahvarh ★★★
() автор топика

Во всем языке разбираться не надо, там в разделе документации основные особенности перечислены. В eiffel используется парадигма design by contract - возможность задания предусловий, постусловий и инвариантов для всех операций. По сути продвинутые assert'ы, позволяющие делать меньше ошибок. Продвинутое множественное наследование, которое не боится циклов (в отличае от c++). Продвинутое generic программирование, не имеющих проблем шаблонов в c++. Garbage collector, который можно отключать. Все является объектами, даже простейшие переменные вроде INTEGER, но благодаря использованию expanded классов это не приводит к тормозам.

А вообще полезно почитать вот этот документ:

http://atlas.web.cern.ch/Atlas/GROUPS/SOFTWARE/OO/tools/java/misc/ACritiqueOf...

чтобы не допускать тех же ошибок.

anonymous
()
Ответ на: комментарий от vahvarh

Ссылки... Ну, к примеру, http://caml.inria.fr/ - читать про статическую типизацию, вывод типов по Хиндли-Миллнеру, SML-образную систему модулей (функторы и всё такое прочее) - всё это имеет непосредственное отношение к generic programming. Ну и, опять же, Форт и Lua так же заслуживают пристального внимания. И, конечно же, нельзя обойти стороной и http://www.haskell.org/. Как я понимаю, dragon book уже прочитан, так что в эту сторону посылать не стану, а вот поискать в сети работы Луки Карделли (Luca Cardelli) - таки рекомендую.

Antichrist
()

Я думаю если ты ищещь применение своему языку обраться к ребятам которые заняты проектом 1:L в архиве за прошлый месяц о них писали, там-же и ссылка.

cushe
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.