LINUX.ORG.RU

Язык программирования Crystal 0.6.0

 , ,


1

2

Состоялся выпуск версии 0.6.0 языка программирования Crystal.

Язык программирования Crystal разрабатывается с такими целями:

  • идентичный Ruby синтаксис, либо же максимально схожий с ним
  • отсутствие необходимости указания типов переменных и аргументов методов
  • вызов кода на Си с помощью биндингов, написанных на Crystal
  • проверка и генерация кода во время компиляции
  • компиляция в эффективный нативный код

Ответы авторов Crystal на вопрос «для чего это всё?»:

  • нам нравится производительность при написании кода на Ruby
  • нам нравится производительность при выполнении кода на Си
  • мы хотим объединить лучшее из этих двух миров
  • мы хотим, чтобы компилятор понимал, что мы имеем в виду без указания типов
  • мы хотим полный ООП
  • и да, мы не хотим писать код на Си только для того, чтобы он работал быстрее

Внешний вид:

# Compute prime numbers up to 100 with the Sieve of Eratosthenes

max = 100

sieve = Array.new(max + 1, true)
sieve[0] = false
sieve[1] = false

(2...max).each do |i|
  if sieve[i]
    (2 * i).step(max, i) do |j|
      sieve[j] = false
    end
  end
end

sieve.each_with_index do |prime, number|
  puts number if prime
end

Текущее состояние:

  • язык в стадии pre-alpha, архитектура языка в активной разработке
  • компилятор языка Crystal написан на языке Crystal
  • используется традиционный Boehm-Demers-Weiser's сборщик мусора, что будет изменено в будущем

В версии 0.6.0, кроме исправления ошибок, следующие изменения:

  • Function переименован в Proc
  • Pointer и Tuple теперь подразумеваются компилятором как struct
  • потоко-безопасные магические переменные

Исходный код на GitHub

Для установки на GNU/Linux доступны пакеты для Debian, Ubuntu, RedHat и CentOS.
Для системы OS X доступна установка через homebrew.
Так же доступен универсальный бинарник, который можно просто скачать, запустить и пользоваться.

>>> Подробности



Проверено: beastie ()
Последнее исправление: CYB3R (всего исправлений: 7)

Ответ на: комментарий от slovazap

«The moral is obvious. You can't trust code that you did not totally create yourself. (Especially code from companies that employ people like me.) No amount of source-level verification or scrutiny will protect you from using untrusted code. In demonstrating the possibility of this kind of attack, I picked on the C compiler. I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect. A well installed microcode bug will be almost impossible to detect.»

http://cm.bell-labs.com/who/ken/trust.html

semantics
()
Ответ на: комментарий от slovazap

Не обязательно блоб, например http://goran.krampe.se/2014/10/15/bootstrapping-nim/ В кратце - автор имеет компилятор ним, изначально написанный на паскале, кстати, и компилит им новый компилятор в сишные исходники, которые уже заливает на гитхаб, из которых ты собираешь себе собственный компилятор в несколько фаз.

loz ★★★★★
()
Последнее исправление: loz (всего исправлений: 1)
Ответ на: комментарий от semantics

Раскройте пожалуйста, что вы этой цитатой хотели сказать, с чем вы лично согласны, а с чем поспорили бы. Неплохо бы в двух словах показать что автор не безграмотный школьник. А потом поговорим про то, каким она вообще боком к обсуждаемой новости.

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 1)
Ответ на: комментарий от Hertz

> скобки кстати тоже дерьмо

Неадекват и неосилятор в треде.

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

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

Об этом и речь, что код гораздо больше читается, чем пишется. Скобки за то и полюбил (конкретно – кложуру), что код читается легко и при том гибок и компактен. Так и выходит, что для чьёго то восприятия лучше даётся си-подобный код, для других – что-либо другое. Помимо человеческого восприятия в дело идут и редакторы. Каким то удобнее править одно, другим – другое. Таким образом, «говно - неговно» – это дело вкуса, субъективной оценки, а не объективная констатация того, что какой-либо язык «пальцем деланый».

Hertz ★★★★★
()
Ответ на: комментарий от RevenantX

Так кто ж ей мешает код выполнить? Rubymine что-то похожее и пытается делать. Получается не всегда хорошо, но таки получается.

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

rubinius не умеет делать нативного кода, только байткод. это можно назвать компилируемым только в том смысле, в котором можно назвать комприлируемым java. да и mri с версии 1.9 тоже сначала компилирует в байткод, правда даже если его и получится сдампить из оперативки, выполнить его потом вряд ли возможно. rubinius интересен только тем, что даёт возможность не поставлять заказчику исходный код (что очень нравится бизнесу). но самое мерзкое, что для сборки рубиниуса нужен питон (как зависимость llvm), поэтому вряд ли у него есть какое-то будущее, тем более, что руби сообщество таки осознало значимость байт-кода.

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

есть убожественный Python с его PyPy.есть божественный Python с его PyPy.

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

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

Надо же по всем возможным веткам пройти. А это далеко не всегда возможно прямо после запуска.

RevenantX ★★★★
()
Ответ на: комментарий от st4l1k

python-php программист с фултаймом в < 5 лет я полагаю?

не угадал :)

php - самое дерьмовое дерьмо из всего что существует, слава богу что не пришлось марать руки об него

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

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

A-234 ★★★★★
()
Ответ на: комментарий от anonymous

про пхп не угадал, а вот про питон и время в профессии угадал

st4l1k ★★
()

Валидация кода, автоматический анализ паттернов доступа к памяти и оптимизация memory layout есть? Нет? Унесите.

ranka-lee
()

Чем бы дитя...

Ну а по теме: Хотелки к языку в виде «хотим как у ZZZ, но без это 1, это 2 и это 3» на практике приводит к тому, что получится XXX, в котором таки будет это 1, это 2 и это 3, но реализованные хуже, чем в ZZZ потому как их реализация изначально в дизайне не учитывалась.

Очередноe NIH-поделие. Удачи авторам, успехов пользователям.

dr_dobermann
()
Ответ на: комментарий от redhat

там для jruby создается шесть ниток, а для остальных четыре

anonymous
()

Вот еще раз убеждаюсь, что вместо того, что бы заниматься делом, народ склонен заниматься тремя бесполезными вещами:

  • плодить системы контроля версий (к счастью, мода прошла);
  • плодить дистрибутивы (мода еще продолжается, см. недавние новсти о признании «кошерным» очередного непонятно чего);
  • клонировать существующие языки программирования.

Ну что же, ждем бесполезного (в отличии от оригинала) форка Lua под названием Selena, к примеру.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)

Ваууу. Новый язык!! Как же его не хватало!!! Кстати уже спрашивали чем оно отлично от Ним? Ну кроме того что у ним ублюдочные отступы вместо синтаксиса?

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

About Crystal

Hi, Crystal author here.

Just note that Crystal is not a Ruby implementation: it's a whole new language. We don't have 100% Ruby compatibility. It's not dynamic: it's statically typed. If you make a mistake the compiler will tell you. Refactoring code is easy exactly because of this (something that doesn't happen in Ruby). We will also have good concurrency support.

Saying Crystal is another Ruby implementation is like saying Rust or Go are just C implementations because they have semicolons and curly braces. Crystal is just heavily inspired by Ruby :-)

As to why we are creating it: there's no such language yet, we believe. It's also fun to do, and we learn a lot. We don't want everyone to start using it. But if someone finds it interesting they can use it, and maybe help.

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

клонировать существующие языки программирования

Стандартизация языка - нет не слышал. Иди еще поплачь, что у js столько интерпретаторов, лол.

Больше руби веселых и разных!

пс Кстати товарищи от rubinius проделали не мало работы стандартизуя язык в виде юнит-тестов. Так что пожалуйста, пиши свою реализацию.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от special-k

Больше руби веселых и разных!

Перед твоим комментом цитата автора, что кристалл ни разу не руби, просто подмазался к его либам за счет совместимого синтаксиса.

Virtuos86 ★★★★★
()
Ответ на: комментарий от special-k

Ну вот еще — плакать... Да сколько интерпретаторов — дело 18е, это-то как раз не важно. По факту, используется один — тот, что в броузере. :) Ну или несколько, — по числу броузеров. И если NoScript не включен :)

Там другое странно, придумывают всякие языки типа scal'ы, которые транслируются в джаваскрипт, вот что странно... Как язык, scala может даже и интересна, но вот в качестве прокладки, — только нагружать связку «клиент-сервер» на интерпретацию несчастной страницы и увеличивать время обработки.

А руби — ну и хрен с ним, с руби... Жаль, что у авторов не хватает фантазии и видения проблем для того, что бы действительно сделать что-то полезное.

Это все «холостой ход». А потом выясняется, что «сообщество» написало дохрена компиляторов, интерпретаторов, синтакс-чекеров и прочих библиотек, только вот не знает, для чего оно это все сделало.

Кирпичей-то много навалили, а вот дома строить из них так толком и не научились. Вашу бы энергию — да в мирных бы целях.

См. недавний опрос на тему «чего не хватает в линуксе».

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

Ну это ладно, сочтем упражнениями по программированию. Надо же на чем-то учиться. :)

gns ★★★★★
()
Ответ на: комментарий от matumba

по всей видимости, для сборки компилятора нужен собранный компилятор. okay.jpg

гыгыггы :) unrar.rar!

Почему-то требование gcc для сборки gcc (а также mono для сборки mono, sbcl для сборки sbcl, и т.д.) никого не удивляет, а тут сразу гыгы-гага.

man bootstrap

Sectoid ★★★★★
()

Думаю теперь уж точно напишут крузис для линекса.

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

Жаль, что у авторов не хватает фантазии и видения проблем для того, что бы действительно сделать что-то полезное.

Кто-то пишет языки программирования, кто-то пишет на них программы, мне даже интересно, каким образом могло бы быть иначе.

Кирпичей-то много навалили

Рано или поздно количество перейдет в качество.
А что, просто нужен более быстрый руби. У тебя такой есть? Вот и все.

Я вообще фигею со всех этих разработок. Вот взять ruby: во-первых сходу нормально спроектировали хотя бы API, потом махом перешли на 1.9. А что творится в питоне, до сих пор куча либ не переписана на тройку, уж сколько лет-то прошло. Взять rails, написали, покурили, отрефакторили до 3-ки (API тройки всех устраивает), перенесли все джемы. Мне, лично, очевидно что нормально рефакторится, а что нет.

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: комментарий от RevenantX

поменять какое-либо поле или проперти или название метода

Это все довольно спорно. Когда говорят о статически типизированных языках, обычно, прежде всего, упоминают скорость.

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

special-k ★★★★
()
Ответ на: комментарий от special-k

Ну, судя по тому, что авторы заявляют отсутствие полной совместимости руби и кристалла, то рассматривать кристалл как «быстрый руби» уже не совсем получается. Codebase будет разным, расти будет возможно и методом перекрестного опыления «cut-n-paste». Что породит странное поведение из-за разной семантики.

Собственно, не наблюдается особого успеха языков Go или Rust. Им суждено остаться «внутрикорпоративными», как в свое время было с тем же BLISSом.

Ruby имеет некоторый самоценный codebase. Посмотрим, что будет с Crystal.

Полезно иногда посмотреть список существующих языков программирования и отметить для себя три категории — «я на этом писал, пусть и три строки в жизни», «я на этом или про это читал хоть раз в жизни», «я про это где-то слышал». Ну а вот остальное — это или академические проекты или «корпоративный маразм» или just for fun или prof of concept, или ... или тот самый «холостой ход».

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)

А крафтить чё из кристала доспех там?

Woofywoof
()
Ответ на: комментарий от st4l1k

Ну в гугле взлетел. Как и Rust в Амазоне, что-ли...

Можно ли назвать Objective С «взлетевшим»? Не знаю. Успешный язык одной платформы. Ну а Го — успешный язык одной корпорации. Релиз 1.0 (с библиотеками и дебаггером (tm)) вышел в 2012м. Ну, то есть, тому два с половиной года назад, примерно. Посмотрим, что будет лет через пять. Гугл пытается его «внедрять в массы», ну так они все своё пытаются внедрять в массы. :)

Вокруг себя лично я вижу код на си и плюсах, фортране, перле, яве, питоне, руби, шарпе, яваскрипте... вот Objective С еще, А, да, — лисп, окамл, хаскель и эрганг. При том, что с кодом на руби лично я столкнулся только недавно и «по работе». Но я не вижу вокруг себя кода на Го. Не встречал, знаете-ли. Protobuf — встречал, а Го — нет. Хотя — от задачи зависит. Как-то так...

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от st4l1k

P.S. Я вот поискал, что в моей бубунте зависит от golang. Таки он зависит сам от себя. Прикладухи никакой нет. Есть какой-то пакет golang-dns-dev По-моему — ответ очевиден :(

«А что до грядущей за этим зари, Товарищ, не верь, — не взойдет!»

gns ★★★★★
()
Ответ на: комментарий от gns

Вы неправы. Go уже конкретно популярен на гитхабе. Из 10 новых проектов - 3 на гоу. Скоро будет бум консольного софта на гоу.

menangen ★★★★★
()
Ответ на: комментарий от menangen

Ну посмотрим, сколько этих проектов выживет и окажется полезными кому-то, кроме авторов. :) Я же сказал, подождем еще лет пять.

Гугл пытается все свои творения «внедрять в массы». Массы оказываются восприимчивыми. Ну интересно поиграть в новую игрушку. :)

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)
Ответ на: комментарий от gns

Ну, вот докер, к примеру. Написан на гоу. Очень популярен. Сейчас на всех уважающих себя хостерах стоят образы виртуалок с докером, и в дальнейшем будут использовать CoreOS на хост серверах.

menangen ★★★★★
()
Ответ на: комментарий от menangen

Ну, то есть один — есть! :) Ну в добрый час, как бы. Будет еще  — хорошо. Не будет — скажем спасибо гуглю и забудем язык за ненадобностью.

На всяком языке должно быть написано хоть что-то полезное. Ибо зачем нужен язык, на котором и сказать-то нечего :)

gns ★★★★★
()

Ребята, посылайте критиков лесом. Пилите язык - молодцы, пилите дальше!

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