Pull to refresh
51
0
Владислав Фролов@frol

Пользователь

Send message
Скачал практически все приложения, которые у них там в списке… Скорость запуска, видимо, к большому сожалению никак не пофиксить. Складывается ощущение, что для хоть сколько-нибудь неубогого внешнего виду нужно потеть, так как нормальным интерфейсом обладают 2-3 приложения. На диске и в памяти, после моих экспериментов с Cordova («HTML5») приложений, Kyvi не выглядит прям ужасным монстром. Хоть скорость работы самих приложений радует (после загрузки).

Подводя итог, к моему глубокому сожалению (я очень люблю Python), приложение для реальных пользователей на Kyvi лучше не писать.
Дайте, пожалуйста, подсказку как найти ваше приложение. Я пробовал давно-давно Kyvi, но тогда меня останавливали три нюанса: приложение долго запускалось, кушало много памяти (ОЗУ, да и место на диске), не было ощущения «нативности» ни в каком виде. Что-нибудь улучшилось теперь?
В статье есть ссылка на benchmark'и, но вот повторю её здесь: github.com/logicchains/LPATHBench/blob/master/writeup.md
Вы называете Nim сложным и тут же в противовес выдвигаете Haskell? У меня нет опыта с Haskell, но мне кажется, что он посложнее будет. Кроме того, Nim показывается 3.75х лучшую производительность, чем Haskell на представленном синтетическом тесте, так что у него будет своя ниша, я уверен.
Кстати, в Nim скобки для аргументов функций тоже опциональны (тогда запятые ставить не нужно): nim-lang.org/docs/manual.html#procedures-command-invocation-syntax
Согласен с вами. Цель смутная, но радует тот факт, что у языка всё равно есть сильные стороны (производительсность, опциональный GC и другое). Тем не менее, мне кажется, что свой синтаксис таки помогает решать ряд архитектурных проблем, да и многие из популярных статически типизированных языков проигрывают по лаконичности синтаксиса Nim, так что может оно и правильно.

Однако, использование уже имеющихся модулей и наработок является очень здравой мыслью, поэтому, к счастью, есть такие проекты как Nuitka (LLVM компилятор Python кода), Pyston (полностью новая реализация Python 2 от команды Dropbox) и другие.
Ваша проблема связана с плохой обработкой ошибки тем ЯП, а не пробелами-отступами. Например, я вот взял сейчас код на C и удалил одну закрывающуюся скобку, я думаю вы знаете, что компилятор меня отправил в конец файла и вывалил совершенно неадекватную ошибку: error: expected declaration or statement at end of input

В то же время, я взял Python код и убрал один пробел или заменил пробелы в одном месте на табы и Python указал ровно ту строку, где у меня ошибка с вот такой понятной ошибкой: IndentationError: unexpected indent
Зачем доводить до абсурда?
На счёт синтаксиса на пробелах — это киллер фича. Я не понимаю зачем дублировать определение блоков скобочками. Используйте отступ в 4 пробела и проблем не будет:

class BankAccount(object):

    def __init__(self, initial_balance=0):
        self.balance = initial_balance

    def deposit(self, amount):
        self.balance += amount

    def withdraw(self, amount):
        self.balance -= amount

    def overdrawn(self):
        return self.balance < 0


my_account = BankAccount(15)
my_account.withdraw(5)
print my_account.balance

Неужели вам хочется видеть:

class BankAccount(object):
{
    def __init__(self, initial_balance=0):
    {
        self.balance = initial_balance
    }

    def deposit(self, amount):
    {
        self.balance += amount
    }

    def withdraw(self, amount):
    {
        self.balance -= amount
    }

    def overdrawn(self):
    {
        return self.balance < 0
    }
}

my_account = BankAccount(15)
my_account.withdraw(5)
print my_account.balance

Правда хочется скобочек?

На счёт приоритета операций в зависимости от пробелов — это действительно жесть, надеюсь эта экспериментальная фича не пойдёт в релиз.

Статья и так объёмная, да и документация немаленькая, всю не переведёшь сразу. К тому же, мне хватило пока макросов и шаблонов.
Я даже в этой публикации использовал подсветку синтаксиса от ruby :)
Во-первых, заголовок я сохранил авторский.
Во-вторых, я бы назвал ключевые особенности такого рода: производительность программ на уровне С/С++ при «интересном» синтаксисе и возможностях языка, возможность транслирования кода в C/C++/JS.
Перефразировал предложение про призводительность. Действительно, дал маху. Спасибо, что обратили внимание.

На счёт синтаксиса — да, мне тоже кажется, что слишком много фич, но я не берусь судить пока. Unified Call Syntax — это кошмар, я очень надеюсь на здравость рассудка людей чтобы это не попало в C++. При первом знакомстве мне показалось, что всё хорошо, но когда я начал копать примеры и проекты на Nim, я понял, что чтение у меня вызывает трудности сравнимые с Ruby. Python для меня является образцом, но и там впиливают всё больше магии с asyncio прямо в синтаксис и меня это расстраивает.
Автор оригинальной статьи отметил, что так же был портирован NES эмулятор с Go: hookrace.net/blog/porting-nes-go-nim (демо: hookrace.net/nimes)
Dennis Felsing (автор статьи оригинальной статьи) ответил (перевод):
Да, Nim позволяет программировать низкоуровневые вещи:

github.com/dom96/nimkernel
github.com/ckkashyap/rustix/issues/8 (отказ от Rust в пользу Nim в портировании Unix ядра)
hookrace.net/blog/nim-binary-size
github.com/def-/nim-small-coreutils

Ещё был вопрос какие проекты уже были написаны на Nim:

hookrace.net/blog/porting-nes-go-nim
Я задал вопрос про отключение кучи на github: github.com/Araq/Nim/issues/2746
Я задал вопрос про отключение кучи на github: github.com/Araq/Nim/issues/2746
Кроме Aporia IDE я больше ничего не знаю.
Самое главное, что уже написан пакетный менеджер Nimble)))

Вот список пакетов — github.com/nim-lang/packages/blob/master/packages.json
Я не очень разбираюсь в этом нюансе. Подскажите, пожалуйста, чем куча плоха?

Вот приведу цитату с сайта Nim:
Beneath a nice infix/indentation based syntax with a powerful (AST based, hygienic) macro system lies a semantic model that supports a soft realtime GC on thread local heaps. Asynchronous message passing is used between threads, so no «stop the world» mechanism is necessary. An unsafe shared memory heap is also provided for the increased efficiency that results from that model.

Мне кажется, что это значит, что если выключить GC, то всё равно будет использоваться общая куча. Однако, может и её можно выключить.
Я познакомился с Nim вчера утром после прочтения статьи о Rust 1.0 (спасибо kstep), после прочтения которой я заинтересовался как о нём отзываются в сравнении с Go, D и прочими, вот так я наткнулся среди прочих на ЯП Nim после чего провёл практически целый день с ним :)

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity