К основному контенту

Сообщения

Сообщения за декабря 15, 2019

Clojure

Удивительно простой для изучения язык семейства LISP, автор языка Рич Хикки провел фундаментальные исследования проблем программирования и сфокусировал свой язык на их решении. В результате язык получился простым и выразительным. Тем кто хочет начать изучать LISP, но не решается, предлагаю начать с clojure. Для начала установите любую JVM(рекомендую graalVM от Oracle). пропишите путь к java(exe) в переменную PATH. Скачайте lein.bat (Windows) и положите его в путь указанный в PATH(например в jdk\bin). в ubuntu: sudo apt install leiningen. После этого откройте в терминале любой каталог и выполните команду lein new app firstApp если все было выполнено правильно у вас появится каталог firstApp перейдите в каталог cd firstApp и выполните приложение: lein run программа напечатает HEllo, world! далее запустите REPL lein repl появится приглашение после которого можно вводить и выполнять код clojure, например: (+ 1 1) => 2 ((fn [e] println e) "Hello, world!") =...

Производительность некоторых видов программ

Сегодня я попробовал оценить производительность dotnet core 3.1 (C#, F#) Clojure (uberjar, openJDK) Nemerle (mono) C# (mono-roslyn) Pure Java(openJDK) Маскимальную производительность показала Java, после обработки модулем - native-image из GraalVM. Данный модуль генерирует двоичный исполняемый файл по формату скорее всего такой же как c, т.к. требует на ubuntu glibc-dev и gcc. Что удивительно, преобразование Clojure программы в native-image практически не изменило скорость работы ПО. Да программа была простейшей, вывод строки на консоль. Поэтому скорее замерялась загрузку программы и ее запуск, а не фактическое быстродействие. Но для меня чисто психологически это очень важный показатель. То что работает из коробки это C# (mono-roslyn), ему в спину дышит Nemerle,  java отстала в 1,5 раза, dotnet отстал от java в 2 раза. кложа не зависимо от способа сборки старует более секунды, против 40 мс того же корэ.