2010-08-18 2 views
4

Есть ли какие-либо языки, на которых есть статический тип проверки, как в C++, с современным синтаксисом, как в Python, и не имеет GIL?Ищете сильный/явно типизированный язык без GIL

Я верю, Python 3 с возможностью явного объявления типа каждой переменной будет «почти там», но GIL меня огорчает.

Java хороший, но мне нужно что-то более «встраиваемое» без громоздких JRE.

Обновление: Все, что связано с .NET или не является открытым исходным кодом, является не-go.

Update2: Мне нужен явный + сильный ввод текста для написания безопасного кода за счет скорости разработки. GIL важен, так как код будет достаточно обширным и будет работать на многоядерных серверах, поэтому он должен эффективно использовать несколько процессоров.

Update3: Целевая платформа Linux (Debian) на x86

+2

Почему «статическая проверка типа» так важна? Какая у вас проблема, которая на самом деле решена этим? Можете ли вы быть конкретными в отношении проблем, которые у вас есть? Python очень, очень строго типизирован, и типы явно являются частью каждого объекта. Нет возможности броска и нет размытости в отношении того, какой тип объекта имеет. –

+1

Отсутствие статической типизации является частью силы Питона. Кроме того, GIL в 99% случаев является наименьшей проблемой. +1 в противном случае, я бы хотел использовать язык, который не имел неприятного синтаксиса '{}' и ';', это вряд ли необходимо для современного языка. –

+0

@ S.Lott: Он сказал, что статически напечатано, а не строго напечатано. –

ответ

2

Я думаю GO будет соответствовать вашим требованиям.

Это мое личное чувство, но go код очень похож на код python.

Он по-прежнему имеет классический подход к компиляции, но google разработает некоторый интерпретатор.

С сайтом Google:

Go является языком общего назначения разработан с системным программированием в виде. Он строго типизирован и сбор мусора и имеет явную поддержку для параллельного программирования. Программы построены из пакетов , свойства которых позволяют эффективно управлять зависимостями . В существующих реализациях используется традиционная модель компиляции/ссылки для генерировать исполняемые двоичные файлы.

+0

GO экспериментальный, его можно убить точно так же, как Google Wave. Кроме того, ему не хватает поддержки WIndows, которая является сущностной, поскольку разработка в основном основана на платформе Windows. – BarsMonster

+0

есть проект порта для окон http://code.google.com/p/go-windows/ – bua

4

Boo

Boo является объектно-ориентированным, статический типизированным языком программирования, который стремится использовать поддержку общеязыкового ИНФРАСТРУКТУРЫ для Unicode, интернационализации и веб приложений, в то время как используя синтаксис , основанный на Python, и особый акцент на языке и компиляторе расширяемость. Некоторые особенности примечания включают в себя вывод типа, генераторы, multimethods, необязательный утиный набор, макросы, истинные замыкания, currying и первоклассные функции. Boo был активно развивается с 2003 года.

cython

Cython это язык, который делает расширения написания C для языка Python так же легко, как и сам Python. Cython основан на хорошо известном Pyrex, но поддерживает больше режущей кромки функциональности и оптимизации.

Cython язык очень близок к язык Python, но Cython дополнительно поддерживает вызов C функции и объявления типов C на переменных и атрибутов класса. Этот позволяет компилятору генерировать очень эффективный код C из кода Cython.

+0

+1 Я также хотел рекомендовать Boo. Это похоже на Python и имеет невероятно много функций, включая расширяемый синтаксис. Он использует VM, хотя это и «.NET», но это бесплатное программное обеспечение. – Eike

+0

Я не могу заблокировать окна, и я не готов полагаться на моно. – BarsMonster

4

Все, что угодно в семье ML, может сработать для вас. Ocaml - отличное место для начала, но у него действительно есть прекрасная глобальная GC, которую я смотрел. Haskell известен как лаборатория инновационных моделей параллелизма. Понимание Python происходило из Haskell, где они удобны для синтаксиса некоторых очень фундаментальных идей. И Erlang сильно динамически типизирован, забавна для записи и делает параллелизм лучше, чем кто-либо другой.

+0

+1 для ML/Haskell, если параллелизм настолько важен, вам лучше использовать функциональный язык. И их системы типов столь же статичны/сильны, как и получают, но в то же время чрезвычайно выразительны. – delnan

+0

У OCaml есть GIL. – bfontaine

2

После прочтения вашей обновленной спецификации:

мне нужен явный + сильный ввод текста, чтобы писать безопасный код в счет скорости развития. GIL важен как кода будет достаточно вычислительным обширной и будет работать на многоядерных серверах, поэтому он должен эффективно использовать несколько процессоров

Что именно «вычислительное обширны» означает? Какая проблемная область? Что используют другие, работающие в этой проблемной области? Если вы являетесь серьезными с данной спецификацией, вы не можете делать много чего, кроме использования C++ в сочетании с хорошо протестированными библиотеками для многопоточности и численных вычислений.

мой $ 0,02

БВУ

+0

Это клиент-серверное приложение с тысячами клиентов, где я собираюсь иметь часть кода бизнес-логики, совместно используемого между клиентом и сервером. Все это должно быть обновляемо «на лету». Производительность имеет решающее значение в основном на стороне сервера. Я не могу доставить и/или обновить бинарные файлы C + на лету или создать их из источника на клиентах. Но предоставление обновленного модуля байт-кода и его замена на лету - вот что мне нужно. – BarsMonster

+0

Python с многопроцессорной обработкой? В любом случае вы не должны делать тяжелые операции ввода-вывода в одном процессе, есть узкие места в ОС, которые вы не можете учитывать при потоковой передаче в пользовательском пространстве. –

3

Ada является строго типизированный, компилируемый язык с современным, легким для чтения синтаксисом и проверенной надежности для многоядерных вычислений. Ada была разработана для использования в больших критически важных системах реального времени, где ПО ДОЛЖНО работать любой ценой.

«Ada поддерживает проверки времени выполнения для защиты от доступа к нераспределенной памяти, ошибки переполнения буфера, ошибки, связанные с доступом к серверу, ошибки доступа к массиву и другие обнаруживаемые ошибки. Эти проверки могут быть отключены в интересах эффективности выполнения , но их часто можно эффективно компилировать, а также включать средства для проверки программы. По этим причинам Ada широко используется в критических системах, где любая аномалия может привести к очень серьезным последствиям, например, к случайной смерти или травме. Используется Ада: авионика, системы оружия (включая термоядерное оружие) и космические аппараты ». (цитата из статьи Википедии, приведенная выше).

Ada свободно доступен как часть GCC/GNAT и должен быть простой «apt-get install» на Debian.Вы также можете найти современные компиляторы и библиотеки (как поддерживаемые сообществом GPL-лицензированные, так и коммерчески поддерживаемые пакеты) по адресу http://libre.adacore.com/libre/

Ada может скомпилировать Java-байт-код для использования в JVM или скомпилировать его в двоичном формате, металла или встроенного использования.

Смежные вопросы